|
@@ -247,14 +247,26 @@ public class ProjectCostServiceImpl implements ProjectCostService {
|
|
|
return dataVoList.stream().collect(Collectors.toMap(DictDataVo::getCode, DictDataVo::getName, (a, b) -> b));
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 项目成本分摊计算
|
|
|
+ * @param computeDate
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void computeItemCost(String computeDate){
|
|
|
+ //项目成本分摊计算
|
|
|
+ computeItemCostACtion(computeDate);
|
|
|
+ log.info("项目成本分摊计算完成开始执行后续处理脚本");
|
|
|
+ //执行后续处理脚本
|
|
|
+ execItemCostSQL(computeDate);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 计算项目成本 *
|
|
|
*
|
|
|
* @param computeDate 核算年月
|
|
|
*/
|
|
|
- @Override
|
|
|
@Transactional(rollbackFor = Throwable.class, propagation = Propagation.REQUIRED)
|
|
|
- public void computeItemCost(String computeDate) {
|
|
|
+ public void computeItemCostACtion(String computeDate) {
|
|
|
SessionUserVO currentUser = UserContext.getCurrentUser();
|
|
|
|
|
|
//获取收费项目数据(项目)
|
|
@@ -411,76 +423,16 @@ public class ProjectCostServiceImpl implements ProjectCostService {
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 执行项目成本计算后续处理SQL
|
|
|
+ * @param computeDate
|
|
|
+ */
|
|
|
+ public void execItemCostSQL(String computeDate){
|
|
|
Map<String,String> sqlParameter = new HashMap<>();
|
|
|
sqlParameter.put(SQLParameter.COMPUTE_DATE_CODE,computeDate);
|
|
|
sqlService.autoExecuteSql(CustomSqlTypeEnum.FULL_PROJECT_COST_CALC.getCode(),sqlParameter);
|
|
|
-
|
|
|
-// long count = (itemSize + LIMIT - 1) / LIMIT; //计算所有项目明细数据
|
|
|
-// for (int j = 1; j <= count; j++) {
|
|
|
-// List<PatientItemDepartmentGroupVo> items = importPatientItemRepository.getByDepartGroupComputeDateItem(j,LIMIT,computeDate, currentUser);
|
|
|
-// List<ComputeProjectCost> saveCost = new ArrayList<>();
|
|
|
-// List<ComputeProjectCostDetail> saveDetails = new ArrayList<>();
|
|
|
-// List<ComputeProjectGroupCostDetail> saveGroupDetails = new ArrayList<>();
|
|
|
-// if (!CollectionUtils.isEmpty(items)) {
|
|
|
-// for (int i = 0; i < items.size(); i++) {
|
|
|
-// PatientItemDepartmentGroupVo item = items.get(i);
|
|
|
-// ComputeProjectCost itemCost = BeanUtil.convertObj(computeProjectCost, ComputeProjectCost.class);
|
|
|
-// itemCost.setCode(item.getItemCode());
|
|
|
-// itemCost.setName(item.getItemName());
|
|
|
-// Map<String, Item> departmentMap = itemMap.get(item.getExecuteDepartmentCode());
|
|
|
-// if (CollectionUtils.isEmpty(departmentMap)) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// Item itemData = departmentMap.get(item.getItemCode());
|
|
|
-// if (Objects.isNull(itemData)) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// itemCost.setItemType(itemData.getItemType());
|
|
|
-// itemCost.setResponsibilityCode(responsibilityCodeMap.get(item.getExecuteDepartmentCode()));
|
|
|
-// itemCost.setResponsibilityName(result.responsibilityNameMap.get(item.getExecuteDepartmentCode()));
|
|
|
-//
|
|
|
-// itemCost.setIndex(i);
|
|
|
-// saveCost.add(itemCost);
|
|
|
-// costDetail.setIndex(i);
|
|
|
-// groupCostDetail.setIndex(i);
|
|
|
-// List<ComputeProjectCostDetail> computeProjectCostDetails = setDetails(item, costDetail, itemCost, shareParamCostGroup, sharePercent, shareSum, responsibilitySum);
|
|
|
-// saveDetails.addAll(computeProjectCostDetails);
|
|
|
-// saveGroupDetails.addAll(setGroupDetails(groupCostDetail, computeProjectCostDetails));
|
|
|
-// }
|
|
|
-// if (!CollectionUtils.isEmpty(saveCost)) {
|
|
|
-// //保存主表数据 并获取主键
|
|
|
-// repository.saveBatch(saveCost, 500);
|
|
|
-// Map<Integer, Integer> indexId = saveCost.stream().collect(Collectors.toMap(ComputeProjectCost::getIndex, ComputeProjectCost::getId, (a, b) -> b));
|
|
|
-// //保存细项项目成本数据 添加主键关联
|
|
|
-// if (!CollectionUtils.isEmpty(saveDetails)) {
|
|
|
-// Map<Integer, List<ComputeProjectCostDetail>> collectIndex = saveDetails.stream().collect(Collectors.groupingBy(ComputeProjectCostDetail::getIndex));
|
|
|
-// List<ComputeProjectCostDetail> saveCostDetails = new ArrayList<>();
|
|
|
-// collectIndex.keySet().forEach(integer -> {
|
|
|
-// Integer costId = indexId.get(integer);
|
|
|
-// List<ComputeProjectCostDetail> details = collectIndex.get(integer);
|
|
|
-// details.forEach(detail -> detail.setProjectCostId(costId));
|
|
|
-// saveCostDetails.addAll(details);
|
|
|
-// });
|
|
|
-//
|
|
|
-// detailRepository.saveBatch(saveCostDetails, 500);
|
|
|
-// }
|
|
|
-// //处理合并项目成本数据 添加主键关联
|
|
|
-// if (!CollectionUtils.isEmpty(saveGroupDetails)) {
|
|
|
-// Map<Integer, List<ComputeProjectGroupCostDetail>> collectGroupIndex = saveGroupDetails.stream().collect(Collectors.groupingBy(ComputeProjectGroupCostDetail::getIndex));
|
|
|
-// List<ComputeProjectGroupCostDetail> saveGroupCostDetails = new ArrayList<>();
|
|
|
-// collectGroupIndex.keySet().forEach(integer -> {
|
|
|
-// Integer costId = indexId.get(integer);
|
|
|
-// List<ComputeProjectGroupCostDetail> details = collectGroupIndex.get(integer);
|
|
|
-// details.forEach(detail -> detail.setProjectCostId(costId));
|
|
|
-// saveGroupCostDetails.addAll(details);
|
|
|
-// });
|
|
|
-// saveGroupCostDetails.forEach(f -> f.setId(null));
|
|
|
-// groupDetailRepository.saveBatch(saveGroupCostDetails, 500);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
}
|
|
|
|
|
|
private @NotNull Map<String, Map<String, PatientItemDepartmentGroupVo>> getPatientItemGroup(String computeDate, SessionUserVO currentUser, Map<String, String> responsibilityCodeMap) {
|
|
@@ -927,14 +879,25 @@ public class ProjectCostServiceImpl implements ProjectCostService {
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 标准项目成本分摊计算
|
|
|
+ * @param computeDate
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void computeStandItemCost(String computeDate){
|
|
|
+ //标准项目成本分摊计算
|
|
|
+ computeStandItemCostAction(computeDate);
|
|
|
+ //执行标准法项目成本分摊计算后续处理脚本
|
|
|
+ execStandItemCostSQL(computeDate);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 标准项目成本计算
|
|
|
*
|
|
|
* @param computeDate 核算年月
|
|
|
*/
|
|
|
- @Override
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
|
|
- public void computeStandItemCost(String computeDate) {
|
|
|
+ public void computeStandItemCostAction(String computeDate) {
|
|
|
SessionUserVO currentUser = UserContext.getCurrentUser();
|
|
|
//获取收费项目数据(项目)
|
|
|
checkImportItem(computeDate, currentUser);
|
|
@@ -1086,79 +1049,16 @@ public class ProjectCostServiceImpl implements ProjectCostService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 执行标准法项目成本分摊计算后续处理脚本
|
|
|
+ * @param computeDate
|
|
|
+ */
|
|
|
+ public void execStandItemCostSQL(String computeDate){
|
|
|
Map<String,String> sqlParameter = new HashMap<>();
|
|
|
sqlParameter.put(SQLParameter.COMPUTE_DATE_CODE,computeDate);
|
|
|
sqlService.autoExecuteSql(CustomSqlTypeEnum.STAND_PROJECT_COST_CALC.getCode(),sqlParameter);
|
|
|
-
|
|
|
-
|
|
|
-// //计算所有项目明细数据
|
|
|
-// for (int j = 1; j <= count; j++) {
|
|
|
-// List<PatientItemDepartmentGroupVo> items = importPatientItemRepository.getByDepartGroupComputeDateItem(j, LIMIT, computeDate, currentUser);
|
|
|
-// List<ComputeStandProjectCost> saveCost = new ArrayList<>();
|
|
|
-// List<ComputeStandProjectCostDetail> saveDetails = new ArrayList<>();
|
|
|
-// List<ComputeStandProjectGroupCostDetail> saveGroupDetails = new ArrayList<>();
|
|
|
-// if (!CollectionUtils.isEmpty(items)) {
|
|
|
-// for (int i = 0; i < items.size(); i++) {
|
|
|
-// PatientItemDepartmentGroupVo item = items.get(i);
|
|
|
-// ComputeProjectCost itemCost = BeanUtil.convertObj(computeProjectCost, ComputeProjectCost.class);
|
|
|
-// itemCost.setCode(item.getItemCode());
|
|
|
-// itemCost.setName(item.getItemName());
|
|
|
-// Map<String, Item> departmentMap = itemMap.get(item.getExecuteDepartmentCode());
|
|
|
-// if (CollectionUtils.isEmpty(departmentMap)) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// Item itemData = departmentMap.get(item.getItemCode());
|
|
|
-// if (Objects.isNull(itemData)) {
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// itemCost.setItemType(itemData.getItemType());
|
|
|
-// itemCost.setResponsibilityCode(responsibilityCodeMap.get(item.getExecuteDepartmentCode()));
|
|
|
-// itemCost.setResponsibilityName(responsibilityNameMap.get(item.getExecuteDepartmentCode()));
|
|
|
-// itemCost.setIndex(i);
|
|
|
-// ComputeStandProjectCost computeStandProjectCost = BeanUtil.convertObj(itemCost, ComputeStandProjectCost.class);
|
|
|
-// saveCost.add(computeStandProjectCost);
|
|
|
-// costDetail.setIndex(i);
|
|
|
-// groupCostDetail.setIndex(i);
|
|
|
-//
|
|
|
-// List<ComputeProjectCostDetail> computeProjectCostDetails = setDetails(item, costDetail, itemCost, shareParamCostGroup, sharePercent, shareSum, responsibilitySum);
|
|
|
-// List<ComputeStandProjectCostDetail> computeStandProjectCostDetails = BeanUtil.convertList(computeProjectCostDetails, ComputeStandProjectCostDetail.class);
|
|
|
-// saveDetails.addAll(computeStandProjectCostDetails);
|
|
|
-// List<ComputeProjectGroupCostDetail> computeProjectGroupCostDetails = setGroupDetails(groupCostDetail, computeProjectCostDetails);
|
|
|
-// List<ComputeStandProjectGroupCostDetail> computeStandProjectGroupCostDetails = BeanUtil.convertList(computeProjectGroupCostDetails, ComputeStandProjectGroupCostDetail.class);
|
|
|
-//
|
|
|
-// saveGroupDetails.addAll(computeStandProjectGroupCostDetails);
|
|
|
-// }
|
|
|
-// if (!CollectionUtils.isEmpty(saveCost)) {
|
|
|
-// //保存主表数据 并获取主键
|
|
|
-// standProjectCostRepository.saveBatch(saveCost, 500);
|
|
|
-// Map<Integer, Integer> indexId = saveCost.stream().collect(Collectors.toMap(ComputeStandProjectCost::getIndex, ComputeStandProjectCost::getId, (a, b) -> b));
|
|
|
-// //保存细项项目成本数据 添加主键关联
|
|
|
-// if (!CollectionUtils.isEmpty(saveDetails)) {
|
|
|
-// Map<Integer, List<ComputeStandProjectCostDetail>> collectIndex = saveDetails.stream().collect(Collectors.groupingBy(ComputeStandProjectCostDetail::getIndex));
|
|
|
-// List<ComputeStandProjectCostDetail> saveCostDetails = new ArrayList<>();
|
|
|
-// collectIndex.forEach((k, v) -> {
|
|
|
-// v.forEach(detail -> detail.setProjectCostId(indexId.get(k)));
|
|
|
-// saveCostDetails.addAll(v);
|
|
|
-// });
|
|
|
-// standProjectCostDetailRepository.saveBatch(saveCostDetails, 500);
|
|
|
-// }
|
|
|
-// //处理合并项目成本数据 添加主键关联
|
|
|
-// if (!CollectionUtils.isEmpty(saveGroupDetails)) {
|
|
|
-// Map<Integer, List<ComputeStandProjectGroupCostDetail>> collectGroupIndex = saveGroupDetails.stream().collect(Collectors.groupingBy(ComputeStandProjectGroupCostDetail::getIndex));
|
|
|
-// List<ComputeStandProjectGroupCostDetail> saveGroupCostDetails = new ArrayList<>();
|
|
|
-// collectGroupIndex.forEach((k, v) -> {
|
|
|
-// v.forEach(detail -> detail.setProjectCostId(indexId.get(k)));
|
|
|
-// saveGroupCostDetails.addAll(v);
|
|
|
-// });
|
|
|
-// saveGroupCostDetails.forEach(f -> f.setId(null));
|
|
|
-// standProjectGroupCostDetailRepository.saveBatch(saveGroupCostDetails, 500);
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// }
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
private static @NotNull BigDecimal getSharePercent(ComputeShareParamDetailVo detailVo, BigDecimal bigDecimalSum) {
|