Przeglądaj źródła

项目成本分摊计算及项目分摊参数计算的后续脚本处理添加

JammeyJiang 7 miesięcy temu
rodzic
commit
f8dda6a3e1

+ 40 - 140
src/main/java/com/kcim/service/impl/ProjectCostServiceImpl.java

@@ -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) {

+ 39 - 11
src/main/java/com/kcim/service/impl/ShareParamServiceImpl.java

@@ -132,13 +132,24 @@ public class ShareParamServiceImpl implements ShareParamService {
         return response;
     }
 
+    /**
+     * 完全法项目分摊参数计算
+     * @param computeDate
+     */
+    @Override
+    public void computeShareParamCost(String computeDate){
+        //完全法项目分摊参数计算
+        computeShareParamCostAction(computeDate);
+        //执行完全法项目分摊参数计算后续处理脚本
+        execShareParamCostSQL(computeDate);
+    }
+
     /**
      * 项目分摊参数计算
      *
      * @param computeDate 核算年月
      */
-    @Override
-    public void computeShareParamCost(String computeDate) {
+    public void computeShareParamCostAction(String computeDate) {
         SessionUserVO currentUser = UserContext.getCurrentUser();
         //获取收费项目数据(项目)
         checkItemCount(computeDate, currentUser);
@@ -217,17 +228,17 @@ public class ShareParamServiceImpl implements ShareParamService {
                     detailRepository.saveBatch(saveCostDetails, 500);
                 }
             }
-
         }
+    }
 
-
+    /**
+     * 执行完全法项目分摊参数计算后续处理脚本
+     * @param computeDate
+     */
+    public void execShareParamCostSQL(String computeDate){
         Map<String,String> sqlParameter = new HashMap<>();
         sqlParameter.put(SQLParameter.COMPUTE_DATE_CODE,computeDate);
         sqlService.autoExecuteSql(CustomSqlTypeEnum.FULL_PROJECT_PARAM_CALC.getCode(),sqlParameter);
-
-
-        //
-
     }
 
 
@@ -315,13 +326,24 @@ public class ShareParamServiceImpl implements ShareParamService {
         returnList.add(dataList);
     }
 
+    /**
+     * 标准法项目分摊参数计算
+     * @param computeDate
+     */
+    @Override
+    public void computeStandShareParamCost(String computeDate){
+        //标准法项目分摊参数计算
+        computeStandShareParamCostAction(computeDate);
+        //执行标准法项目分摊参数计算后续处理脚本
+        execStandShareParamCostSQL(computeDate);
+    }
+
     /**
      * 计算标准项目分摊参数
      *
      * @param computeDate 核算年月
      */
-    @Override
-    public void computeStandShareParamCost(String computeDate) {
+    public void computeStandShareParamCostAction(String computeDate) {
         SessionUserVO currentUser = UserContext.getCurrentUser();
         //把当月需要计算数据置成0
 //        importPatientItemRepository.updateGroupCalculateFlag(computeDate, currentUser);
@@ -400,8 +422,14 @@ public class ShareParamServiceImpl implements ShareParamService {
                     computeStandShareParamDetailRepository.saveBatch(saveCostDetails, 500);
                 }
             }
-
         }
+    }
+
+    /**
+     * 执行标准法项目分摊参数计算后续处理脚本
+     * @param computeDate
+     */
+    public void execStandShareParamCostSQL(String computeDate){
         Map<String,String> sqlParameter = new HashMap<>();
         sqlParameter.put(SQLParameter.COMPUTE_DATE_CODE,computeDate);
         sqlService.autoExecuteSql(CustomSqlTypeEnum.STAND_PROJECT_PARAM_CALC.getCode(),sqlParameter);