3 Commits 79fbc0348f ... 1dd3df452d

Tác giả SHA1 Thông báo Ngày
  JammeyJiang 1dd3df452d 调整作废上次项目成本计算记录的时机 10 tháng trước cách đây
  JammeyJiang 50e5eea39e 添加参数控制是否开启全院通用项目的项目成本计算功能 11 tháng trước cách đây
  wangyongsheng accfa93483 自定义报表添加小数位与千分号处理 11 tháng trước cách đây

+ 5 - 0
src/main/java/com/kcim/common/constants/ParameterConstant.java

@@ -37,5 +37,10 @@ public interface ParameterConstant {
      */
     Long USER_REPORT_AUTHOR_ABLE = 1862419414851391488L;
 
+    /**
+     * 项目成本计算是否启用全院通用项目计算功能
+     */
+    Long USER_HOSP_ITEM_CALC=1889925898824716288L;
+
 
 }

+ 0 - 5
src/main/java/com/kcim/dao/repository/OrderCostDetailRepository.java

@@ -1,15 +1,11 @@
 package com.kcim.dao.repository;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kcim.common.util.UserContext;
 import com.kcim.dao.mapper.OrderCostDetailMapper;
-import com.kcim.dao.model.ComputeClinicalPathwayCostDetail;
-import com.kcim.dao.model.ComputeGroupCostDetail;
 import com.kcim.dao.model.OrderCostDetail;
 import org.springframework.stereotype.Repository;
-import org.springframework.util.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -53,7 +49,6 @@ public class OrderCostDetailRepository extends ServiceImpl<OrderCostDetailMapper
             this.update(updateWrapper);
         }
 
-
     }
 
     static  Integer MAX_NUMBER = 500;

+ 2 - 1
src/main/java/com/kcim/service/impl/CenterServiceImpl.java

@@ -14,6 +14,7 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -99,7 +100,7 @@ public class CenterServiceImpl implements CenterService {
         try {
             Object dict = endPoint.getParameter(LOCAL_SYSTEM_ID, parameterCode);
             CommonParameterVo commonParameterVo = JSON.parseObject(JSON.toJSONString(dict), CommonParameterVo.class);
-            if(ObjectUtils.isEmpty(commonParameterVo)||ObjectUtils.isEmpty(commonParameterVo.getValue())) {
+            if(ObjectUtils.isEmpty(commonParameterVo)|| StringUtils.isEmpty(commonParameterVo.getValue())) {
                 return Constant.EMPTY_STR;
             }
             return  commonParameterVo.getValue();

+ 20 - 15
src/main/java/com/kcim/service/impl/ProjectCostServiceImpl.java

@@ -257,8 +257,13 @@ public class ProjectCostServiceImpl implements ProjectCostService {
      */
     @Override
     public void computeItemCost(String computeDate){
-        //项目成本分摊计算
-        calcItemCostAllocation(computeDate);
+        //根据参数判断是否走新的计算流程
+        if(NumberConstant.ONE_S.equals(centerService.getParameterValue(ParameterConstant.USER_HOSP_ITEM_CALC))){
+            //项目成本分摊计算
+            calcItemCostAllocation(computeDate);
+        }else{
+            computeItemCostACtion(computeDate);
+        }
         log.info("项目成本分摊计算完成开始执行后续处理脚本");
         //执行后续处理脚本
         execItemCostSQL(computeDate);
@@ -443,11 +448,7 @@ public class ProjectCostServiceImpl implements ProjectCostService {
         if (shareCount == 0) {
             throw new CostException("未进行项目分摊参数计算,请先进行项目分摊参数计算,当前计算中止");
         }
-        //医疗服务项目字典
-        List<Item> itemList = itemRepository.getList();
-        if (CollectionUtils.isEmpty(itemList)) {
-            throw new CostException("医疗服务项目未维护,请先添加医疗服务项目再进行计算,当前计算中止");
-        }
+
         //月度患者收费项目信息
         List<PatientItemDepartmentGroupVo> ptChargeItems = importPatientItemRepository.getByDepartGroupComputeDateItem(computeDate, currentUser);
         if (CollectionUtils.isEmpty(ptChargeItems)){
@@ -460,23 +461,21 @@ public class ProjectCostServiceImpl implements ProjectCostService {
             throw new CostException("没有项目分摊配置信息无法分摊,请联系管理员");
         }
 
-        //作废上次计算记录
-        repository.removeByComputeDate(computeDate, currentUser);
-        detailRepository.removeByComputeDate(computeDate, currentUser);
-        groupDetailRepository.removeByComputeDate(computeDate, currentUser);
+        //获取科室损益报表数据
+        List<CostDepartmentProfit> costDepartmentProfits = costDepartmentProfitRepository.getDepartmentProfit(computeDate);
+        if (CollectionUtils.isEmpty(costDepartmentProfits)){
+            throw new CostException("未进行科室损益计算,请先进行科室损益计算,当前计算中止");
+        }
+
 
         //项目成本分摊配置主表信息(项目成本列配置)
         List<ShareParamCost> ShareParamCosts = shareParamCostRepository.getList(null);
-        //科室责任中心对照信息
-        List<ResponsibilityDepartIdVO> responsibilityDeptMaps = responsibilityDepartmentService.getResponsibilityDepart();
         //分摊参数信息
         List<ComputeShareParamDetailVo> computeShareParamDetails = computeShareParamRepository.getComputeShareParamDetail(computeDate);
         //分摊参数按责任中心汇总信息
         List<ComputeShareParamDetailVo> computeShareParamDetailGroup = computeShareParamRepository.getComputeShareParamDetailGroup(computeDate);
         //要计算的科室收费项目
         List<ComputeShareParamDetailVo> computeResponsibilityItems = computeShareParamRepository.getComputeResponsibilityItem(computeDate);
-        //获取科室损益报表数据
-        List<CostDepartmentProfit> costDepartmentProfits = costDepartmentProfitRepository.getDepartmentProfit(computeDate);
 
         //开始项目成本分摊计算
         List<ComputeProjectCost> computeProjectCosts=new ArrayList<>();
@@ -526,6 +525,12 @@ public class ProjectCostServiceImpl implements ProjectCostService {
         if (CollectionUtils.isEmpty(computeProjectCosts)) {
             throw new CostException("没有任何可保存的数据");
         }
+
+        //作废上次计算记录
+        repository.removeByComputeDate(computeDate, currentUser);
+        detailRepository.removeByComputeDate(computeDate, currentUser);
+        groupDetailRepository.removeByComputeDate(computeDate, currentUser);
+
         //保存项目分摊主表对象数据
         repository.saveBatch(computeProjectCosts, 500);
         if (!CollectionUtils.isEmpty(computeProjectCostDetails)) {

+ 27 - 17
src/main/java/com/kcim/service/impl/ReportServiceImpl.java

@@ -191,19 +191,20 @@ public class ReportServiceImpl implements ReportService {
                         }else {
                             handleSql = MatchParameter(sql, keyParameter,new HashMap<>());
                         }
-                        Integer dataType = col.getDataType();
                         Object o = sqlRunner(handleSql);
-                        if(dataType != null&&dataType.equals(NumberConstant.THREE)){
-                            Integer decimalPlace = col.getDecimalPlace();
-                            if(o.equals("")){
-                                vo.setValue(BigDecimal.ZERO.setScale(decimalPlace,RoundingMode.HALF_UP));
-                            }else {
-                                BigDecimal value = new BigDecimal(o.toString());
-                                vo.setValue(value.setScale(decimalPlace,RoundingMode.HALF_UP));
-                            }
-                        }else {
+//                        Integer dataType = col.getDataType();
+//
+//                        if(dataType != null&&dataType.equals(NumberConstant.THREE)){
+//                            Integer decimalPlace = col.getDecimalPlace();
+//                            if(o.equals("")){
+//                                vo.setValue(BigDecimal.ZERO.setScale(decimalPlace,RoundingMode.HALF_UP));
+//                            }else {
+//                                BigDecimal value = new BigDecimal(o.toString());
+//                                vo.setValue(value.setScale(decimalPlace,RoundingMode.HALF_UP));
+//                            }
+//                        }else {
                             vo.setValue(o);
-                        }
+//                        }
                         dataVo.add(vo);
                     }
                 }
@@ -238,13 +239,13 @@ public class ReportServiceImpl implements ReportService {
                         CostColumn col = costColumnMap.get(column.getColumnCode());
                         String formula = col.getFormula();
                         BigDecimal formulaData = getFormulaData(formula, dataVo,column);
-                        Integer dataType = col.getDataType();
-                        if(dataType != null&&dataType.equals(NumberConstant.THREE)){
-                            Integer decimalPlace = col.getDecimalPlace();
-                            vo.setValue(formulaData.setScale(decimalPlace, RoundingMode.HALF_UP));
-                        }else {
+//                        Integer dataType = col.getDataType();
+//                        if(dataType != null&&dataType.equals(NumberConstant.THREE)){
+//                            Integer decimalPlace = col.getDecimalPlace();
+//                            vo.setValue(formulaData.setScale(decimalPlace, RoundingMode.HALF_UP));
+//                        }else {
                             vo.setValue(formulaData);
-                        }
+//                        }
                         dataVo.add(vo);
                     }
                 }
@@ -455,6 +456,15 @@ public class ReportServiceImpl implements ReportService {
         CostColumn computeColumn = map.get(Long.valueOf(column));
         if(Objects.nonNull(computeColumn)){
             vo.setDataType(computeColumn.getDataType());
+            vo.setDecimalPlace(computeColumn.getDecimalPlace());
+            String permil = computeColumn.getPermil();
+            if(StringUtils.isEmpty(permil)){
+                vo.setPermil(false);
+            }else {
+                vo.setPermil(permil.equals(NumberConstant.ONE_S));
+            }
+
+
         }
         List<String> primary = new ArrayList<>();
         if(reportCodeModifyVo.getReportCode() != null){

+ 8 - 2
src/main/java/com/kcim/service/impl/ShareParamServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kcim.common.constants.Constant;
 import com.kcim.common.constants.NumberConstant;
+import com.kcim.common.constants.ParameterConstant;
 import com.kcim.common.constants.SQLParameter;
 import com.kcim.common.enums.CustomSqlTypeEnum;
 import com.kcim.common.exception.CostException;
@@ -149,8 +150,13 @@ public class ShareParamServiceImpl implements ShareParamService {
      */
     @Override
     public void computeShareParamCost(String computeDate){
-        //完全法项目分摊参数计算
-        calcShareParamCost(computeDate);
+        //根据参数判断是否走新的计算流程
+        if(NumberConstant.ONE_S.equals(centerService.getParameterValue(ParameterConstant.USER_HOSP_ITEM_CALC))){
+            //完全法项目分摊参数计算
+            calcShareParamCost(computeDate);
+        }else{
+            computeShareParamCostAction(computeDate);
+        }
         //执行完全法项目分摊参数计算后续处理脚本
         execShareParamCostSQL(computeDate);
     }

+ 4 - 0
src/main/java/com/kcim/vo/ReportTitleVo.java

@@ -36,6 +36,10 @@ public class ReportTitleVo {
 
     private Integer freeze;
 
+    private Integer decimalPlace;
+
+    private boolean permil = false;
+
     private List<RedirectData> redirectData;
 
     private List<CommonTitleVo> childTitle;

+ 4 - 0
src/main/java/com/kcim/vo/SessionUserVO.java

@@ -39,4 +39,8 @@ public class SessionUserVO {
     private Long currentLoginHospId;
 
     // TODO: 2022/1/4 按业务需求新增
+
+    private Long orgnId;
+
+    private String orgnName;
 }