|
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.imed.costaccount.common.exception.CostException;
|
|
|
import com.imed.costaccount.common.util.*;
|
|
|
import com.imed.costaccount.constants.NumberConstant;
|
|
|
+import com.imed.costaccount.enums.DateStyleEnum;
|
|
|
import com.imed.costaccount.enums.ErrorCodeEnum;
|
|
|
import com.imed.costaccount.mapper.CostIncomeGroupMapper;
|
|
|
import com.imed.costaccount.model.*;
|
|
@@ -94,8 +95,10 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
|
|
|
// 进行金额合并
|
|
|
List<CostIncomeGroupAllAmountVO> costIncomeGroupAllAmountVoS = baseMapper.countMoney(costIncomeGroupBeforeVOList);
|
|
|
// 对,的金额进行合并
|
|
|
+ BigDecimal totalAmount= null;
|
|
|
costIncomeGroupAllAmountVoS.forEach(i -> {
|
|
|
String allMoney = i.getAllMoney();
|
|
|
+
|
|
|
if (allMoney.contains(StrUtil.COMMA)) {
|
|
|
// 存在,在进行求和
|
|
|
long sum;
|
|
@@ -103,6 +106,7 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
|
|
|
sum = list.stream().mapToLong(m -> m).sum();
|
|
|
i.setAmount(BigDecimal.valueOf(sum));
|
|
|
}
|
|
|
+ //TODO 统计总金额
|
|
|
});
|
|
|
PageUtils pageUtils = new PageUtils(pages);
|
|
|
pageUtils.setList(costIncomeGroupAllAmountVoS);
|
|
@@ -119,7 +123,7 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
|
|
- public Result importIncomeGroup(List<List<Object>> list, Long hospId, MultipartFile file) {
|
|
|
+ public Result importIncomeGroup(List<List<Object>> list, Long hospId, MultipartFile file,Integer year,Integer month) {
|
|
|
// 移除前几行的抬头内容 list的大小对应的就是行数的大小
|
|
|
for (int i = list.size() - 1; i >= 0; i--) {
|
|
|
if (i == NumberConstant.ZERO || i == NumberConstant.ONE || i == NumberConstant.TWO || i == NumberConstant.THREE) {
|
|
@@ -127,7 +131,6 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
|
|
|
}
|
|
|
}
|
|
|
log.info("读取的数据为:{}", list);
|
|
|
- List<CostIncomeGroup> costIncomeGroupList = new ArrayList<>();
|
|
|
List<IncomeErrorMessage> incomeErrorMessageList = new ArrayList<>();
|
|
|
//获取所有的科室 成本项目 责任中心 会计科目
|
|
|
Map<String, Department> departmentMap = departmentService.list(new QueryWrapper<Department>().lambda().eq(Department::getHospId, hospId)).stream().collect(Collectors.toMap(k -> k.getDepartmentCode() + k.getDepartmentName(), synOe -> synOe));
|
|
@@ -146,37 +149,26 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
|
|
|
Map<Long, Long> responsibilityDepMap = responsibilityDepartmentList.stream().collect(Collectors.toMap(ResponsibilityDepartment::getDepartmentId, ResponsibilityDepartment::getResponsibilityId));
|
|
|
Map<Long, Long> accountProMap = accountingProductList.stream().collect(Collectors.toMap(AccountingProduct::getProductId, AccountingProduct::getAccountingId));
|
|
|
List<CostIncomeGroup> costIncomeGroupArrayList = new ArrayList<>();
|
|
|
- // 检验数据
|
|
|
- checkImportData(list, incomeErrorMessageList, costIncomeGroupArrayList, departmentMap, productMap, responsibilityMap, accountingMap, responsibilityDepMap, accountProMap);
|
|
|
-
|
|
|
- if (!CollectionUtils.isEmpty(incomeErrorMessageList)) {
|
|
|
- // 说明存在错误数据
|
|
|
- // TODO 不把数据保存在收入归集表里面 直将信息保存在提交记录里面
|
|
|
+ // 检验数据 TODO 缺少文件Id
|
|
|
+ checkImportData(list, incomeErrorMessageList, costIncomeGroupArrayList, departmentMap, productMap, responsibilityMap, accountingMap, responsibilityDepMap, accountProMap,hospId,year,month);
|
|
|
|
|
|
- } else {
|
|
|
- // 实现数据的存储
|
|
|
- for (int i = 0; i < list.size(); i++) {
|
|
|
- CostIncomeGroup costIncomeGroup = new CostIncomeGroup();
|
|
|
- List<Object> data = list.get(i);
|
|
|
- // 成本项目的代码和名称
|
|
|
- String productCode = data.get(0).toString();
|
|
|
- // 开单科室 执行科室的代码和名称
|
|
|
- String openDepartmentCode = data.get(3).toString();
|
|
|
- String startDepartmentCode = data.get(5).toString();
|
|
|
- BigDecimal beforeMoney = (BigDecimal) data.get(15);
|
|
|
- }
|
|
|
- }
|
|
|
+ // 文件上传
|
|
|
String uploadFile = uploadFile(file, UserContext.getCurrentUser());
|
|
|
- if (StrUtil.isNotBlank(uploadFile)) {
|
|
|
- // 文件上传成功 将文件记录保存
|
|
|
+ // 上传记录保存
|
|
|
+ if (StrUtil.isBlank(uploadFile)){
|
|
|
+ throw new CostException(500,"文件上传异常");
|
|
|
}
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(incomeErrorMessageList)) {
|
|
|
+ // 才将数据保存到收入归集里面
|
|
|
+ }
|
|
|
+
|
|
|
return Result.ok();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 检验数据
|
|
|
- *
|
|
|
- * @param list 表单数据
|
|
|
+ * @param list 表单数据
|
|
|
* @param incomeErrorMessageList 存储错误信息的集合
|
|
|
* @param costIncomeGroupArrayList
|
|
|
* @param departmentMap 科室Map
|
|
@@ -185,14 +177,16 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
|
|
|
* @param accountingMap 会计科目Map
|
|
|
* @param responsibilityDepMap 责任中心科室对照Map
|
|
|
* @param accountProMap 责任中心Map
|
|
|
+ * @param hospId
|
|
|
*/
|
|
|
- private void checkImportData(List<List<Object>> list, List<IncomeErrorMessage> incomeErrorMessageList, List<CostIncomeGroup> costIncomeGroupArrayList, Map<String, Department> departmentMap, Map<String, Product> productMap, Map<Long, Responsibility> responsibilityMap, Map<Long, Accounting> accountingMap, Map<Long, Long> responsibilityDepMap, Map<Long, Long> accountProMap) {
|
|
|
+ private void checkImportData(List<List<Object>> list, List<IncomeErrorMessage> incomeErrorMessageList, List<CostIncomeGroup> costIncomeGroupArrayList, Map<String, Department> departmentMap, Map<String, Product> productMap, Map<Long, Responsibility> responsibilityMap, Map<Long, Accounting> accountingMap, Map<Long, Long> responsibilityDepMap, Map<Long, Long> accountProMap, Long hospId,Integer year,Integer month) {
|
|
|
for (int i = 0; i < list.size(); i++) {
|
|
|
CostIncomeGroup costIncomeGroup = new CostIncomeGroup();
|
|
|
// 用来检验数据合理性的循环
|
|
|
IncomeErrorMessage incomeErrorMessage = new IncomeErrorMessage();
|
|
|
List<Object> data = list.get(i);
|
|
|
log.info("用户输入的数据是{}", data);
|
|
|
+ // TODO 暂时不走循环 直接获取数据的处理
|
|
|
// 成本项目的代码和名称
|
|
|
String productCode = data.get(0).toString();
|
|
|
String productName = data.get(1).toString();
|
|
@@ -216,72 +210,107 @@ public class CostIncomeGroupServiceImpl extends ServiceImpl<CostIncomeGroupMappe
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- // TODO 暂时不走循环 直接获取数据的处理
|
|
|
- // 检验数据是否存在
|
|
|
+ // 检验收入成本项目数据是否存在
|
|
|
Product product = productMap.get(productCode + productName);
|
|
|
Department department = departmentMap.get(openDepartmentCode + openDepartmentName);
|
|
|
Department department1 = departmentMap.get(startDepartmentCode + startDepartmentName);
|
|
|
-// if (!checkNull && !checkOne ){
|
|
|
-// if (StrUtil.isNotBlank(productCode) && StrUtil.isNotBlank(productName)){
|
|
|
-// if (Objects.isNull(product)) {
|
|
|
-// incomeErrorMessage.setTotal(i);
|
|
|
-// incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "成本项目不存在");
|
|
|
-// incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
-// } else {
|
|
|
-// // 检验对应的会计科目是否存在
|
|
|
-// Long id = product.getId();
|
|
|
-// Long accountId = accountProMap.get(id);
|
|
|
-// if (Objects.isNull(accountingMap.get(accountId))) {
|
|
|
-// incomeErrorMessage.setTotal(i);
|
|
|
-// incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "成本项目对应的会计科目不存在");
|
|
|
-// incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
-// } else {
|
|
|
-// costIncomeGroup.setProductCode(productCode);
|
|
|
-// costIncomeGroup.setProductName(productName);
|
|
|
-// costIncomeGroup.setAccountCode(accountingMap.get(accountId).getAccountingCode());
|
|
|
-// costIncomeGroup.setAccountName(accountingMap.get(accountId).getAccountingName());
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
- // 开单科室
|
|
|
- if (Objects.isNull(department)) {
|
|
|
- incomeErrorMessage.setTotal(i);
|
|
|
- incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "开单科室不存在");
|
|
|
- incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
- } else {
|
|
|
- Long id = department.getId();
|
|
|
- Long responsibilityId = responsibilityDepMap.get(id);
|
|
|
- if (Objects.isNull(responsibilityMap.get(responsibilityId))) {
|
|
|
- incomeErrorMessage.setTotal(i);
|
|
|
- incomeErrorMessage.setErrMessage("代码:" + openDepartmentCode + " 名称:" + openDepartmentName + "科室对应的责任中心不存在");
|
|
|
- incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
- } else {
|
|
|
- costIncomeGroup.setOpenDepartmentCode(openDepartmentCode);
|
|
|
- costIncomeGroup.setOpenResponsibilityCode(responsibilityMap.get(responsibilityId).getResponsibilityCode());
|
|
|
+ if (checkNull || checkOne ){
|
|
|
+ if (StrUtil.isNotBlank(productCode) && StrUtil.isNotBlank(productName)){
|
|
|
+ if (Objects.isNull(product)) {
|
|
|
+ incomeErrorMessage.setTotal(i);
|
|
|
+ incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "成本项目不存在");
|
|
|
+ incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
+ } else {
|
|
|
+ // 检验对应的会计科目是否存在
|
|
|
+ Long id = product.getId();
|
|
|
+ Long accountId = accountProMap.get(id);
|
|
|
+ if (Objects.isNull(accountingMap.get(accountId))) {
|
|
|
+ incomeErrorMessage.setTotal(i);
|
|
|
+ incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "成本项目对应的会计科目不存在");
|
|
|
+ incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
+ } else {
|
|
|
+ costIncomeGroup.setProductCode(productCode);
|
|
|
+ costIncomeGroup.setProductName(productName);
|
|
|
+ costIncomeGroup.setAccountCode(accountingMap.get(accountId).getAccountingCode());
|
|
|
+ costIncomeGroup.setAccountName(accountingMap.get(accountId).getAccountingName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ costIncomeGroup.setProductCode(null);
|
|
|
+ costIncomeGroup.setProductName(null);
|
|
|
+ costIncomeGroup.setAccountCode( null);
|
|
|
+ costIncomeGroup.setAccountName(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 检验开单科室
|
|
|
+ if (checkNull || checkOne ){
|
|
|
+ if (StrUtil.isNotBlank(openDepartmentCode) && StrUtil.isNotBlank(openDepartmentName)){
|
|
|
+ // 开单科室
|
|
|
+ if (Objects.isNull(department)) {
|
|
|
+ incomeErrorMessage.setTotal(i);
|
|
|
+ incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "开单科室不存在");
|
|
|
+ incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
+ } else {
|
|
|
+ Long id = department.getId();
|
|
|
+ Long responsibilityId = responsibilityDepMap.get(id);
|
|
|
+ if (Objects.isNull(responsibilityMap.get(responsibilityId))) {
|
|
|
+ incomeErrorMessage.setTotal(i);
|
|
|
+ incomeErrorMessage.setErrMessage("代码:" + openDepartmentCode + " 名称:" + openDepartmentName + "科室对应的责任中心不存在");
|
|
|
+ incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
+ } else {
|
|
|
+ costIncomeGroup.setOpenDepartmentCode(openDepartmentCode);
|
|
|
+ costIncomeGroup.setOpenDepartmentName(openDepartmentName);
|
|
|
+ costIncomeGroup.setOpenResponsibilityCode(responsibilityMap.get(responsibilityId).getResponsibilityCode());
|
|
|
+ costIncomeGroup.setOpenResponsibilityCode(responsibilityMap.get(responsibilityId).getResponsibilityName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ costIncomeGroup.setOpenDepartmentCode(null);
|
|
|
+ costIncomeGroup.setOpenDepartmentName(null);
|
|
|
+ costIncomeGroup.setOpenResponsibilityCode(null);
|
|
|
+ costIncomeGroup.setOpenResponsibilityName(null);
|
|
|
}
|
|
|
}
|
|
|
- //执行科室
|
|
|
- if (Objects.isNull(department1)) {
|
|
|
- incomeErrorMessage.setTotal(i);
|
|
|
- incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "执行科室不存在");
|
|
|
- incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
- } else {
|
|
|
- Long id = department1.getId();
|
|
|
- Long responsibilityId = responsibilityDepMap.get(id);
|
|
|
- if (Objects.isNull(responsibilityMap.get(responsibilityId))) {
|
|
|
- incomeErrorMessage.setTotal(i);
|
|
|
- incomeErrorMessage.setErrMessage("代码:" + openDepartmentCode + " 名称:" + openDepartmentName + "科室对应的责任中心不存在");
|
|
|
- incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
- } else {
|
|
|
- costIncomeGroup.setStartDepartmentCode(startDepartmentCode);
|
|
|
- costIncomeGroup.setStartResponsibilityCode(responsibilityMap.get(responsibilityId).getResponsibilityCode());
|
|
|
+ // 检验执行科室
|
|
|
+ if (checkNull || checkOne ){
|
|
|
+ if (StrUtil.isNotBlank(startDepartmentCode) && StrUtil.isNotBlank(startDepartmentName)){
|
|
|
+ //执行科室
|
|
|
+ if (Objects.isNull(department1)) {
|
|
|
+ incomeErrorMessage.setTotal(i);
|
|
|
+ incomeErrorMessage.setErrMessage("代码:" + productCode + " 名称:" + productName + "执行科室不存在");
|
|
|
+ incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
+ } else {
|
|
|
+ Long id = department1.getId();
|
|
|
+ Long responsibilityId = responsibilityDepMap.get(id);
|
|
|
+ if (Objects.isNull(responsibilityMap.get(responsibilityId))) {
|
|
|
+ incomeErrorMessage.setTotal(i);
|
|
|
+ incomeErrorMessage.setErrMessage("代码:" + openDepartmentCode + " 名称:" + openDepartmentName + "科室对应的责任中心不存在");
|
|
|
+ incomeErrorMessageList.add(incomeErrorMessage);
|
|
|
+ } else {
|
|
|
+ costIncomeGroup.setStartDepartmentCode(startDepartmentCode);
|
|
|
+ costIncomeGroup.setOpenDepartmentName(startDepartmentName);
|
|
|
+ costIncomeGroup.setStartResponsibilityCode(responsibilityMap.get(responsibilityId).getResponsibilityCode());
|
|
|
+ costIncomeGroup.setStartResponsibilityCode(responsibilityMap.get(responsibilityId).getResponsibilityName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ costIncomeGroup.setStartDepartmentCode(null);
|
|
|
+ costIncomeGroup.setStartDepartmentName(null);
|
|
|
+ costIncomeGroup.setStartResponsibilityCode(null);
|
|
|
+ costIncomeGroup.setStartResponsibilityName(null);
|
|
|
}
|
|
|
}
|
|
|
+ costIncomeGroup.setDoctorNumber(Long.parseLong(data.get(6).toString())).setDoctorName(data.get(7).toString())
|
|
|
+ .setPatientId(Long.parseLong(data.get(8).toString())).setOutpatientId(Long.parseLong(data.get(9).toString()))
|
|
|
+ .setPatientName(data.get(10).toString()).setPatientFee(data.get(11).toString()).setReceiptFee(data.get(12).toString())
|
|
|
+ .setTotalNumber(Integer.parseInt(data.get(13).toString())).setUnit(data.get(14).toString())
|
|
|
+ .setFeeDatetime(DateUtils.StringToDate(data.get(16).toString(), DateStyleEnum.YYYY_MM_DD_HH_MM_SS_EN));
|
|
|
+ //
|
|
|
+ costIncomeGroup.setHospId(hospId);
|
|
|
+ costIncomeGroup.setCreateTime(System.currentTimeMillis());
|
|
|
+ costIncomeGroup.setDateYear(year);
|
|
|
+ costIncomeGroup.setDateMonth(month);
|
|
|
costIncomeGroup.setAmount(beforeMoney);
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|