3 Commits 79fbc0348f ... 1dd3df452d

Autor SHA1 Mensagem Data
  JammeyJiang 1dd3df452d 调整作废上次项目成本计算记录的时机 há 5 meses atrás
  JammeyJiang 50e5eea39e 添加参数控制是否开启全院通用项目的项目成本计算功能 há 6 meses atrás
  wangyongsheng accfa93483 自定义报表添加小数位与千分号处理 há 6 meses atrás

+ 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;
 }