Prechádzať zdrojové kódy

标准成本报表-DRG报表/病种报表接口添加

JammeyJiang 2 mesiacov pred
rodič
commit
0d2b461fcb

+ 7 - 0
src/main/java/com/kcim/dao/model/ComputeProjectCost.java

@@ -10,6 +10,7 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -74,6 +75,12 @@ public class ComputeProjectCost implements Serializable {
 	 * 责任中心名称
 	 */
 	private String responsibilityName;
+
+	/**
+	 * 数量
+	 */
+	private BigDecimal quantity;
+
 	/**
 	 * 创建人
 	 */

+ 1 - 4
src/main/java/com/kcim/dao/model/ComputeProjectCostAccount.java

@@ -55,10 +55,7 @@ public class ComputeProjectCostAccount implements Serializable {
 	 * 会计科目类别
 	 */
 	private String accountType;
-	/**
-	 * 数量
-	 */
-	private BigDecimal quantity;
+
 	/**
 	 * 计算结果
 	 */

+ 100 - 43
src/main/java/com/kcim/service/impl/StandardReportServiceImpl.java

@@ -814,12 +814,12 @@ public class StandardReportServiceImpl implements StandardReportService {
             }
             BigDecimal respParamValue = getParamValue(respShareParamValues, visitsBedDaysParamCode[NumberConstant.ZERO]);
             item.setServiceCount(respParamValue);
-            //计算每诊次的医疗全成本
-            item.setHospitalFullCost(getPercent(item.getHospitalFullCost(),bedDaysParamValue));
             //计算每诊次的医疗成本
             item.setMedicalCost(getPercent(item.getMedicalCost(),bedDaysParamValue));
+            //计算每诊次的医疗全成本
+            item.setMedicalFullCost(getPercent(item.getMedicalFullCost(),bedDaysParamValue));
             //计算每诊次的医院全成本
-            item.setHospitalFullCost(getPercent(item.getMedicalFullCost(),bedDaysParamValue));
+            item.setHospitalFullCost(getPercent(item.getHospitalFullCost(),bedDaysParamValue));
             // 将各科室金额累加到总计对象
             addBigDecimalFields(item, grandTotal);
         }
@@ -852,8 +852,6 @@ public class StandardReportServiceImpl implements StandardReportService {
         if(CollectionUtils.isEmpty(projectCostAccountList)){
             throw new CostException("请先计算项目成本");
         }
-        // 获取所有的标准字典数据
-        StandCostDictMapVO standCostDictMaps = getStandCostDictMaps();
 
         List<Map<String, StandItem>> standItemMapDict = getStandItemMapDict(standItemList);
         // 记录项目类别对象
@@ -865,8 +863,8 @@ public class StandardReportServiceImpl implements StandardReportService {
                 continue;
             }
             //按项目类型累加数据
-            DictDataVo costType = standCostDictMaps.getCostTypeMap().get(projectCostAccount.getCostType());
-            HospitalServiceProjectCostVO vo = new HospitalServiceProjectCostVO();
+            String costType = projectCostAccount.getCostType();
+            HospitalServiceProjectCostVO vo ;
             //已有的项目类别
             if (projectCostMap.containsKey(projectItemType.getCode())) {
                 vo = projectCostMap.get(projectItemType.getCode());
@@ -875,12 +873,16 @@ public class StandardReportServiceImpl implements StandardReportService {
                 vo = convertToHospitalServiceProjectCostVO(projectItemType);
                 projectCostMap.put(projectItemType.getCode(), vo);
             }
+            //没有数据时跳过
+            if(ObjectUtils.isEmpty(projectCostAccount.getComputeResult())){
+                continue;
+            }
             // 医疗成本
-            if ("1".equals(costType.getExpandOne())) {
+            if ("1".equals(costType)) {
                 vo.setMedicalCost(vo.getMedicalCost().add(projectCostAccount.getComputeResult()));
             }
             // 医疗全成本
-            if (!"3".equals(costType.getExpandOne())) {
+            if (!"3".equals(costType)) {
                 vo.setMedicalFullCost(vo.getMedicalFullCost().add(projectCostAccount.getComputeResult()));
             }
             // 医院全成本
@@ -903,33 +905,59 @@ public class StandardReportServiceImpl implements StandardReportService {
         if(CollectionUtils.isEmpty(projectCostAccountList)){
             throw new CostException("请先计算项目成本");
         }
-        // 获取所有的标准字典数据
-        StandCostDictMapVO standCostDictMaps = getStandCostDictMaps();
         // 记录项目类别对象
         Map<String, HospitalServiceProjectCostVO> projectCostMap = new HashMap<>();
         for (HospitalServiceProjectCostVO projectCostAccount : projectCostAccountList) {
             //按项目类型累加数据
-            DictDataVo costType = standCostDictMaps.getCostTypeMap().get(projectCostAccount.getCostTypeCode());
+            String costType = projectCostAccount.getCostTypeCode();
             HospitalServiceProjectCostVO vo = new HospitalServiceProjectCostVO();
             //已有的项目类别
             if (projectCostMap.containsKey(projectCostAccount.getItemCode())) {
                 vo = projectCostMap.get(projectCostAccount.getItemCode());
             } else {
                 //新建一个项目类别对象
-                projectCostMap.put(projectCostAccount.getItemCode(), projectCostAccount);
+                vo = BeanUtil.convertObj(projectCostAccount, HospitalServiceProjectCostVO.class) ;
+                // 初始化所有费用字段为0
+                BeanUtil.initBigDecimalFieldsToZero(vo);
+                projectCostMap.put(projectCostAccount.getItemCode(), vo);
+            }
+            //没有数据时跳过
+            if(ObjectUtils.isEmpty(projectCostAccount.getHospitalFullCost())){
+                continue;
             }
             // 医疗成本
-            if ("1".equals(costType.getExpandOne())) {
+            if ("1".equals(costType)) {
                 vo.setMedicalCost(vo.getMedicalCost().add(projectCostAccount.getHospitalFullCost()));
             }
             // 医疗全成本
-            if (!"3".equals(costType.getExpandOne())) {
+            if (!"3".equals(costType)) {
                 vo.setMedicalFullCost(vo.getMedicalFullCost().add(projectCostAccount.getHospitalFullCost()));
             }
             // 医院全成本
             vo.setHospitalFullCost(vo.getHospitalFullCost().add(projectCostAccount.getHospitalFullCost()));
+            //服务量
+            if(!ObjectUtils.isEmpty(projectCostAccount.getServiceVolume())){
+                vo.setServiceVolume(projectCostAccount.getServiceVolume());
+            }
+
         }
         List<HospitalServiceProjectCostVO> medServiceCostDetailList =new ArrayList<>(projectCostMap.values());
+        // 计算每项目成本
+        for (HospitalServiceProjectCostVO item : medServiceCostDetailList) {
+            BigDecimal serviceVolume = item.getServiceVolume();
+            if(ObjectUtils.isEmpty(serviceVolume)){
+                item.setMedicalCost(BigDecimal.ZERO);
+                item.setMedicalFullCost(BigDecimal.ZERO);
+                item.setHospitalFullCost(BigDecimal.ZERO);
+                continue;
+            }
+            //计算每项目的医疗成本
+            item.setMedicalCost(getPercent(item.getMedicalCost(),serviceVolume));
+            //计算每项目的医疗全成本
+            item.setMedicalFullCost(getPercent(item.getMedicalFullCost(),serviceVolume));
+            //计算每项目的医院全成本
+            item.setHospitalFullCost(getPercent(item.getHospitalFullCost(),serviceVolume));
+        }
         return medServiceCostDetailList;
     }
 
@@ -957,8 +985,14 @@ public class StandardReportServiceImpl implements StandardReportService {
             if (diseaseCostMap.containsKey(projectCostAccount.getItemCode())) {
                 vo = diseaseCostMap.get(projectCostAccount.getItemCode());
             } else {
+                vo= BeanUtil.convertObj(projectCostAccount, DiseaseCostDetailVO.class) ;
+                BeanUtil.initBigDecimalFieldsToZero(vo);
                 //新建一个项目类别对象
-                diseaseCostMap.put(projectCostAccount.getItemCode(), projectCostAccount);
+                diseaseCostMap.put(projectCostAccount.getItemCode(), vo);
+            }
+            //没有数据时跳过
+            if(ObjectUtils.isEmpty(projectCostAccount.getHospitalFullCost())){
+                continue;
             }
             // 医疗成本
             if ("1".equals(costType.getExpandOne())) {
@@ -970,16 +1004,23 @@ public class StandardReportServiceImpl implements StandardReportService {
             }
             // 医院全成本
             vo.setHospitalFullCost(vo.getHospitalFullCost().add(projectCostAccount.getHospitalFullCost()));
-            // 服务量
-            vo.setServiceVolume(projectCostAccount.getServiceVolume());
+            if(!ObjectUtils.isEmpty(projectCostAccount.getServiceVolume())){
+                // 服务量
+                vo.setServiceVolume(projectCostAccount.getServiceVolume());
+            }
         }
         List<DiseaseCostDetailVO> medServiceCostDetailList =new ArrayList<>(diseaseCostMap.values());
-        //计算单个病种的成本
-        medServiceCostDetailList.forEach(vo -> {
-            vo.setMedicalCost(getPercent(vo.getServiceVolume(),vo.getMedicalCost()));
-            vo.setMedicalFullCost(getPercent(vo.getServiceVolume(),vo.getMedicalFullCost()));
-            vo.setHospitalFullCost(getPercent(vo.getServiceVolume(),vo.getHospitalFullCost()));
-        });
+        try {
+            //计算单个病种的成本
+            medServiceCostDetailList.forEach(vo -> {
+                vo.setMedicalCost(getPercent(vo.getServiceVolume(),vo.getMedicalCost()));
+                vo.setMedicalFullCost(getPercent(vo.getServiceVolume(),vo.getMedicalFullCost()));
+                vo.setHospitalFullCost(getPercent(vo.getServiceVolume(),vo.getHospitalFullCost()));
+            });
+        }catch (Exception e){
+            log.error("计算病种成本时发生异常",e);
+        }
+
         return medServiceCostDetailList;
     }
 
@@ -996,25 +1037,25 @@ public class StandardReportServiceImpl implements StandardReportService {
         if(CollectionUtils.isEmpty(projectCostAccountList)){
             throw new CostException("请先计算患者成本");
         }
-        // 获取所有的标准字典数据
-        StandCostDictMapVO standCostDictMaps = getStandCostDictMaps();
         // 记录项目类别对象
         Map<String, DiseaseCostDetailVO> diseaseCostMap = new HashMap<>();
         for (DiseaseCostDetailVO projectCostAccount : projectCostAccountList) {
             //按项目类型累加数据
-            DictDataVo accountType = standCostDictMaps.getAccountingTypeMap().get(projectCostAccount.getCostTypeCode());
-            DiseaseCostDetailVO vo = new DiseaseCostDetailVO();
+            String accountType = projectCostAccount.getCostTypeCode();
+            DiseaseCostDetailVO vo ;
             //已有的项目类别
             if (diseaseCostMap.containsKey(projectCostAccount.getItemCode())) {
                 vo = diseaseCostMap.get(projectCostAccount.getItemCode());
             } else {
+                vo = new DiseaseCostDetailVO();
                 vo.setItemCode(projectCostAccount.getItemCode());
                 vo.setItemName(projectCostAccount.getItemName());
+                BeanUtil.initBigDecimalFieldsToZero(vo);
                 //新建一个项目类别对象
                 diseaseCostMap.put(projectCostAccount.getItemCode(), vo);
             }
             //按会计科目类型累加费用
-            addAccountTypeExpense(accountType.getExpandOne(), projectCostAccount.getHospitalFullCost(), vo);
+            addAccountTypeExpense(accountType, projectCostAccount.getHospitalFullCost(), vo);
             //累加数量
             vo.setServiceVolume(vo.getServiceVolume().add(projectCostAccount.getServiceVolume()));
         }
@@ -1052,13 +1093,16 @@ public class StandardReportServiceImpl implements StandardReportService {
         Map<String, ReportFormCustomVo> diseaseCostMap = new HashMap<>();
         // 遍历每个项目生成科室金额
         for (DiseaseCostDetailVO costItem : projectCostAccountList) {
-            ReportFormCustomVo itemVo = new ReportFormCustomVo();
+            ReportFormCustomVo itemVo ;
             if(diseaseCostMap.containsKey(costItem.getItemCode())){
                 itemVo=diseaseCostMap.get(costItem.getItemCode());
             }else{
+                itemVo = new ReportFormCustomVo();
                 itemVo.setReportName(costItem.getItemName());
+                itemVo.setReportCode(costItem.getItemCode());
                 itemVo.setData(new ArrayList<>());
                 itemVo.setTotalValue(BigDecimal.ZERO);
+                diseaseCostMap.put(costItem.getItemCode(),itemVo);
             }
             //金额对象
             ReportVo amountReportVo = new ReportVo();
@@ -1078,7 +1122,9 @@ public class StandardReportServiceImpl implements StandardReportService {
             if(CollectionUtils.isEmpty(costItem.getData())){
                 continue;
             }
-            for (ReportVo amountReportVo : costItem.getData()) {
+            List<ReportVo> dataList =new ArrayList<>();
+            dataList.addAll(costItem.getData());
+            for (ReportVo amountReportVo : dataList) {
                 //占比对象
                 ReportVo percentReportVo = new ReportVo();
                 percentReportVo.setCode(amountReportVo.getCode());
@@ -1115,13 +1161,19 @@ public class StandardReportServiceImpl implements StandardReportService {
         for (DiseaseCostDetailVO projectCostAccount : projectCostAccountList) {
             //按项目类型累加数据
             DictDataVo costType = standCostDictMaps.getCostTypeMap().get(projectCostAccount.getCostTypeCode());
-            DiseaseCostDetailVO vo = new DiseaseCostDetailVO();
+            DiseaseCostDetailVO vo ;
             //已有的项目类别
             if (drgeCostMap.containsKey(projectCostAccount.getItemCode())) {
                 vo = drgeCostMap.get(projectCostAccount.getItemCode());
             } else {
+                vo=BeanUtil.convertObj(projectCostAccount,DiseaseCostDetailVO.class);
+                BeanUtil.initBigDecimalFieldsToZero(vo);
                 //新建一个项目类别对象
-                drgeCostMap.put(projectCostAccount.getItemCode(), projectCostAccount);
+                drgeCostMap.put(projectCostAccount.getItemCode(), vo);
+            }
+            //没有数据时跳过
+            if(ObjectUtils.isEmpty(projectCostAccount.getHospitalFullCost())){
+                continue;
             }
             // 医疗成本
             if ("1".equals(costType.getExpandOne())) {
@@ -1139,9 +1191,9 @@ public class StandardReportServiceImpl implements StandardReportService {
         List<DiseaseCostDetailVO> drgeCostDetailList = new ArrayList<>(drgeCostMap.values());
         //计算单个DRG的成本
         drgeCostDetailList.forEach(vo -> {
-            vo.setMedicalCost(getPercent(vo.getServiceVolume(), vo.getMedicalCost()));
-            vo.setMedicalFullCost(getPercent(vo.getServiceVolume(), vo.getMedicalFullCost()));
-            vo.setHospitalFullCost(getPercent(vo.getServiceVolume(), vo.getHospitalFullCost()));
+            vo.setMedicalCost(getPercent( vo.getMedicalCost(),vo.getServiceVolume()));
+            vo.setMedicalFullCost(getPercent(vo.getMedicalFullCost(),vo.getServiceVolume()));
+            vo.setHospitalFullCost(getPercent(vo.getHospitalFullCost(),vo.getServiceVolume()));
         });
         return drgeCostDetailList;
     }
@@ -1157,25 +1209,25 @@ public class StandardReportServiceImpl implements StandardReportService {
         if(CollectionUtils.isEmpty(projectCostAccountList)){
             throw new CostException("请先计算患者成本");
         }
-        // 获取所有的标准字典数据
-        StandCostDictMapVO standCostDictMaps = getStandCostDictMaps();
         // 记录项目类别对象
         Map<String, DiseaseCostDetailVO> diseaseCostMap = new HashMap<>();
         for (DiseaseCostDetailVO projectCostAccount : projectCostAccountList) {
             //按项目类型累加数据
-            DictDataVo accountType = standCostDictMaps.getAccountingTypeMap().get(projectCostAccount.getCostTypeCode());
-            DiseaseCostDetailVO vo = new DiseaseCostDetailVO();
+            String accountType = projectCostAccount.getCostTypeCode();
+            DiseaseCostDetailVO vo ;
             //已有的项目类别
             if (diseaseCostMap.containsKey(projectCostAccount.getItemCode())) {
                 vo = diseaseCostMap.get(projectCostAccount.getItemCode());
             } else {
+                vo = new DiseaseCostDetailVO();
                 vo.setItemCode(projectCostAccount.getItemCode());
                 vo.setItemName(projectCostAccount.getItemName());
+                BeanUtil.initBigDecimalFieldsToZero(vo);
                 //新建一个项目类别对象
                 diseaseCostMap.put(projectCostAccount.getItemCode(), vo);
             }
             //按会计科目类型累加费用
-            addAccountTypeExpense(accountType.getExpandOne(), projectCostAccount.getHospitalFullCost(), vo);
+            addAccountTypeExpense(accountType, projectCostAccount.getHospitalFullCost(), vo);
             //累加数量
             vo.setServiceVolume(vo.getServiceVolume().add(projectCostAccount.getServiceVolume()));
         }
@@ -1213,13 +1265,16 @@ public class StandardReportServiceImpl implements StandardReportService {
         Map<String, ReportFormCustomVo> diseaseCostMap = new HashMap<>();
         // 遍历每个项目生成科室金额
         for (DiseaseCostDetailVO costItem : projectCostAccountList) {
-            ReportFormCustomVo itemVo = new ReportFormCustomVo();
+            ReportFormCustomVo itemVo ;
             if(diseaseCostMap.containsKey(costItem.getItemCode())){
                 itemVo=diseaseCostMap.get(costItem.getItemCode());
             }else{
+                itemVo = new ReportFormCustomVo();
                 itemVo.setReportName(costItem.getItemName());
+                itemVo.setReportCode(costItem.getItemCode());
                 itemVo.setData(new ArrayList<>());
                 itemVo.setTotalValue(BigDecimal.ZERO);
+                diseaseCostMap.put(costItem.getItemCode(), itemVo);
             }
             //金额对象
             ReportVo amountReportVo = new ReportVo();
@@ -1239,7 +1294,9 @@ public class StandardReportServiceImpl implements StandardReportService {
             if(CollectionUtils.isEmpty(costItem.getData())){
                 continue;
             }
-            for (ReportVo amountReportVo : costItem.getData()) {
+            List<ReportVo> dataList =new ArrayList<>();
+            dataList.addAll(costItem.getData());
+            for (ReportVo amountReportVo :dataList) {
                 //占比对象
                 ReportVo percentReportVo = new ReportVo();
                 percentReportVo.setCode(amountReportVo.getCode());

+ 4 - 2
src/main/java/com/kcim/vo/ReportFormCustomVo.java

@@ -15,10 +15,12 @@ import java.util.List;
 @Data
 public class ReportFormCustomVo extends ReportForm {
 
+    private String reportCode ;
+
+    private BigDecimal totalValue ;
+
     private List<ReportVo> data;
 
     private List<ReportFormCustomVo> children;
 
-    private BigDecimal totalValue ;
-
 }

+ 18 - 0
src/main/java/com/kcim/web/StandardReportController.java

@@ -112,4 +112,22 @@ public class StandardReportController extends AbstractController {
     public Result getDeptDiseaseCostCompositionDetail(@RequestParam String computeDate) {
         return Result.ok(standardReportService.getDeptDiseaseCostCompositionDetail(computeDate));
     }
+
+    @ApiOperation("医院DRG成本明细表")
+    @GetMapping("/getDrgCostDetail")
+    public Result getDrgCostDetail(@RequestParam String computeDate) {
+        return Result.ok(standardReportService.getDrgCostDetail(computeDate));
+    }
+
+    @ApiOperation("医院DRG成本构成明细表")
+    @GetMapping("/getDrgCostCompositionDetail")
+    public Result getDrgCostCompositionDetail(@RequestParam String computeDate) {
+        return Result.ok(standardReportService.getDrgCostCompositionDetail(computeDate));
+    }
+
+    @ApiOperation("医院服务单元DRG成本构成明细表")
+    @GetMapping("/getDeptDrgCostCompositionDetail")
+    public Result getDeptDrgCostCompositionDetail(@RequestParam String computeDate) {
+        return Result.ok(standardReportService.getDeptDrgCostCompositionDetail(computeDate));
+    }
 }

+ 30 - 24
src/main/resources/mapper/ComputePatientCostAccountMapper.xml

@@ -24,11 +24,11 @@
 
     <select id="getDiseaseCostDetailList" resultType="com.kcim.vo.DiseaseCostDetailVO">
         SELECT
-            a.`primary_diag_code` as itemCode,
-            a.`primary_diag_name` as itemName ,
+            c.`primary_diag_code` as itemCode,
+            c.`primary_diag_name` as itemName ,
             b.cost_type as costTypeCode,
-            SUM( b.quantity ) AS serviceVolume,
-            SUM( b.compute_result ) AS hospitalTotalCost
+            COUNT(1) AS serviceVolume,
+            SUM( b.compute_result ) AS hospitalFullCost
         FROM
             compute_patient_cost a
                 INNER JOIN compute_patient_cost_account b ON a.id = b.patient_cost_id
@@ -38,6 +38,7 @@
                 AND c.hosp_id = #{hospId,jdbcType=BIGINT}
                 AND c.del_flag = 0
                 AND c.compute_date = #{computeDate,jdbcType=VARCHAR}
+                AND IFNULL(c.`primary_diag_code`,'')!=''
         WHERE
             a.del_flag = 0
           AND a.hosp_id = #{hospId,jdbcType=BIGINT}
@@ -48,11 +49,11 @@
     </select>
     <select id="getDiseaseCostCompositionDetail" resultType="com.kcim.vo.DiseaseCostDetailVO">
         SELECT
-            a.`primary_diag_code` as itemCode,
-            a.`primary_diag_name` as itemName ,
+            c.`primary_diag_code` as itemCode,
+            c.`primary_diag_name` as itemName ,
             b.account_type as costTypeCode,
-            SUM( b.quantity ) AS serviceVolume,
-            SUM( b.compute_result ) AS hospitalTotalCost
+            COUNT(1) AS serviceVolume,
+            SUM( b.compute_result ) AS hospitalFullCost
         FROM
             compute_patient_cost a
                 INNER JOIN compute_patient_cost_account b ON a.id = b.patient_cost_id
@@ -62,6 +63,7 @@
                 AND c.hosp_id = #{hospId,jdbcType=BIGINT}
                 AND c.del_flag = 0
                 AND c.compute_date = #{computeDate,jdbcType=VARCHAR}
+                AND IFNULL(c.`primary_diag_code`,'')!=''
         WHERE
             a.del_flag = 0
           AND a.hosp_id = #{hospId,jdbcType=BIGINT}
@@ -72,12 +74,12 @@
     </select>
     <select id="getDeptDiseaseCostCompositionDetail" resultType="com.kcim.vo.DiseaseCostDetailVO">
         SELECT
-            a.`primary_diag_code` as itemCode,
-            a.`primary_diag_name` as itemName ,
+            c.`primary_diag_code` as itemCode,
+            c.`primary_diag_name` as itemName ,
             a.department_code as departmentCode,
             a.department_name as departmentName,
-            SUM( b.quantity ) AS serviceVolume,
-            SUM( b.compute_result ) AS hospitalTotalCost
+            COUNT(1) AS serviceVolume,
+            SUM( b.compute_result ) AS hospitalFullCost
         FROM
             compute_patient_cost a
                 INNER JOIN compute_patient_cost_account b ON a.id = b.patient_cost_id
@@ -87,6 +89,7 @@
                 AND c.hosp_id = #{hospId,jdbcType=BIGINT}
                 AND c.del_flag = 0
                 AND c.compute_date = #{computeDate,jdbcType=VARCHAR}
+                AND IFNULL(c.`primary_diag_code`,'')!=''
         WHERE
             a.del_flag = 0
           AND a.hosp_id = #{hospId,jdbcType=BIGINT}
@@ -97,11 +100,11 @@
     </select>
     <select id="getDrgCostDetailList" resultType="com.kcim.vo.DiseaseCostDetailVO">
         SELECT
-            a.`group_code` as itemCode,
-            a.`group_name` as itemName ,
+            c.`group_code` as itemCode,
+            c.`group_name` as itemName ,
             b.cost_type as costTypeCode,
-            SUM( b.quantity ) AS serviceVolume,
-            SUM( b.compute_result ) AS hospitalTotalCost
+            COUNT(1) AS serviceVolume,
+            SUM( b.compute_result ) AS hospitalFullCost
         FROM
             compute_patient_cost a
                 INNER JOIN compute_patient_cost_account b ON a.id = b.patient_cost_id
@@ -111,6 +114,7 @@
                 AND c.hosp_id = #{hospId,jdbcType=BIGINT}
                 AND c.del_flag = 0
                 AND c.compute_date = #{computeDate,jdbcType=VARCHAR}
+                AND IFNULL(c.`group_code`,'')!=''
         WHERE
             a.del_flag = 0
           AND a.hosp_id = #{hospId,jdbcType=BIGINT}
@@ -121,11 +125,11 @@
     </select>
     <select id="getDrgCostCompositionDetail" resultType="com.kcim.vo.DiseaseCostDetailVO">
         SELECT
-            a.`group_code` as itemCode,
-            a.`group_name` as itemName ,
+            c.`group_code` as itemCode,
+            c.`group_name` as itemName ,
             b.account_type as costTypeCode,
-            SUM( b.quantity ) AS serviceVolume,
-            SUM( b.compute_result ) AS hospitalTotalCost
+            COUNT(1) AS serviceVolume,
+            SUM( b.compute_result ) AS hospitalFullCost
         FROM
             compute_patient_cost a
                 INNER JOIN compute_patient_cost_account b ON a.id = b.patient_cost_id
@@ -135,6 +139,7 @@
                 AND c.hosp_id = #{hospId,jdbcType=BIGINT}
                 AND c.del_flag = 0
                 AND c.compute_date = #{computeDate,jdbcType=VARCHAR}
+                AND IFNULL(c.`group_code`,'')!=''
         WHERE
             a.del_flag = 0
           AND a.hosp_id = #{hospId,jdbcType=BIGINT}
@@ -145,12 +150,12 @@
     </select>
     <select id="getDeptDrgCostCompositionDetail" resultType="com.kcim.vo.DiseaseCostDetailVO">
         SELECT
-            a.`group_code` as itemCode,
-            a.`group_name` as itemName ,
+            c.`group_code` as itemCode,
+            c.`group_name` as itemName ,
             a.department_code as departmentCode,
             a.department_name as departmentName,
-            SUM( b.quantity ) AS serviceVolume,
-            SUM( b.compute_result ) AS hospitalTotalCost
+            COUNT(1) AS serviceVolume,
+            SUM( b.compute_result ) AS hospitalFullCost
         FROM
             compute_patient_cost a
                 INNER JOIN compute_patient_cost_account b ON a.id = b.patient_cost_id
@@ -160,6 +165,7 @@
                 AND c.hosp_id = #{hospId,jdbcType=BIGINT}
                 AND c.del_flag = 0
                 AND c.compute_date = #{computeDate,jdbcType=VARCHAR}
+                AND IFNULL(c.`group_code`,'')!=''
         WHERE
             a.del_flag = 0
           AND a.hosp_id = #{hospId,jdbcType=BIGINT}

+ 1 - 1
src/main/resources/mapper/ComputeProjectCostAccountMapper.xml

@@ -28,7 +28,7 @@
             a.`code` as itemCode,
             a.`name` as itemName ,
             b.cost_type as costTypeCode,
-            SUM( b.quantity ) AS serviceVolume,
+            a.quantity  AS serviceVolume,
             SUM( b.compute_result ) AS hospitalFullCost
         FROM
             compute_project_cost a