Forráskód Böngészése

Merge branch 'dev/20201224_2.0.1' into jsfwb/2021_2.0.1

liuqq 4 éve
szülő
commit
ebc3ad84e3

+ 6 - 4
doc/030.20201224v2.0.1/qc_initv2.0.0.sql

@@ -10,25 +10,27 @@ INSERT INTO `sys_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`,
 --开放菜单
 INSERT INTO `sys_role_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `menu_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '50', NULL);
 INSERT INTO `sys_role_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `menu_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '1', '50', NULL);
---开放权限报表
-INSERT INTO `sys_menu_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `order_nu`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '50', '125', NULL, '病历质控报表');
 
 --开添加权限
 INSERT INTO `sys_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `code`, `permissionUrl`, `method`, `descritpion`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病历质控报表', '', '/console/qualityControl', 'ALL', '病历质控报表', NULL);
 INSERT INTO `sys_role_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '125', NULL);
 INSERT INTO `sys_role_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '1', '125', NULL);
 
+--开放权限报表
+INSERT INTO `sys_menu_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `order_nu`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '50', '125', NULL, '病历质控报表');
+
 --科室
 INSERT INTO `sys_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病历质控报表', '18', 'YH-KSZR-BLZK_XQ', '1', '1', '13', '用户-科室主任-病历质控报表-详情');
 --开放菜单
 INSERT INTO .`sys_role_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `menu_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '53', NULL);
 INSERT INTO .`sys_role_menu` (, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `menu_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '2', '53', NULL);
---开放权限报表
-INSERT INTO `sys_menu_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `order_nu`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '53', '126', NULL, '病历质控报表-科室');
 
 --开添加权限
 INSERT INTO .`sys_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `code`, `permissionUrl`, `method`, `descritpion`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病历质控报表', '', '/consoleByDept/qualityControlByDept', 'ALL', '病历质控报表(科室)', NULL);
 INSERT INTO `sys_role_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '126', NULL);
 INSERT INTO `sys_role_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '2', '126', NULL);
 
+--开放权限报表
+INSERT INTO `sys_menu_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `order_nu`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '53', '126', NULL, '病历质控报表-科室');
+
 

+ 16 - 69
src/main/java/com/diagbot/dto/QualityControlDTO.java

@@ -52,7 +52,7 @@ public class QualityControlDTO {
     /**
      * 科室名称
      */
-    @Excel(name = "科室名称", width = 16, orderNum = "4",mergeVertical = true)
+    @Excel(name = "科室名称", width = 16, orderNum = "4")
     private String deptName;
 
     /**
@@ -64,7 +64,7 @@ public class QualityControlDTO {
     /**
      * 出院时间
      */
-    @Excel(name = "出院日期", width = 25, orderNum = "5", exportFormat = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "出院时间", width = 25, orderNum = "5", exportFormat = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date leaveHospitalDate;
 
@@ -72,98 +72,88 @@ public class QualityControlDTO {
      * 病案首页--
      */
     @Excel(name = "病案首页", width = 30, orderNum = "6")
-    private String medHomePage;
+    private String medHomePage = "无缺陷";
     /**
      * 病案首页扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "7")
     private Double medHomePageScore= 0d;
-    private Double medHomePageScoreOn= 0d;
-    private Double medHomePageScoreTw= 0d;
+
     /**
      * 入院记录--
      */
     @Excel(name = "入院记录",width = 30, orderNum = "8")
-    private String admissionNote;
+    private String admissionNote = "无缺陷";
 
     /**
      * 入院记录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "9")
     private Double admissionNoteScore= 0d;
-    //非单项否决扣分
-    private Double admissionNoteScoreOn= 0d;
-    //扣分项总和
-    private Double admissionNoteScoreTw= 0d;
 
     /**
      * 首次病程录--
      */
     @Excel(name = "首次病程录",width = 30, orderNum = "10")
-    private String firstCourseNote;
+    private String firstCourseNote = "无缺陷";
 
     /**
      * 首次病程录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "11")
     private Double firstCourseNoteScore= 0d;
-    private Double firstCourseNoteScoreOn= 0d;
-    private Double firstCourseNoteScoreTw= 0d;
+
     /**
      * 病程记录--
      */
     @Excel(name = "病程记录",width = 30, orderNum = "12")
-    private String courseRecord;
+    private String courseRecord = "无缺陷";
 
     /**
      * 病程记录扣分
      */
     @Excel(name = "扣分", width = 12,orderNum = "13")
     private Double courseRecordScore= 0d;
-    private Double courseRecordScoreOn= 0d;
-    private Double courseRecordScoreTw= 0d;
+
     /**
      * 手术信息--
      */
     @Excel(name = "手术信息",width = 30, orderNum = "14")
-    private String  operationInfo;
+    private String  operationInfo = "无缺陷";
 
     /**
      * 手术信息扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "15")
     private Double operationInfoScore= 0d;
-    private Double  operationInfoScoreOn= 0d;
-    private Double  operationInfoScoreTw= 0d;
+
     /**
      * 出院记录--
      */
     @Excel(name = "出院记录",width = 30, orderNum = "16")
-    private String  dischargeNote;
+    private String  dischargeNote = "无缺陷";
     /**
      * 出院记录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "17")
     private Double  dischargeNoteScore= 0d;
-    private Double  dischargeNoteScoreOn= 0d;
-    private Double  dischargeNoteScoreTw= 0d;
+
     /**
      * 医嘱单--
      */
     @Excel(name = "医嘱单",width = 30, orderNum = "18")
-    private String  docAdviceNote;
+    private String  docAdviceNote = "无缺陷";
     /**
      * 医嘱单扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "19")
     private Double docAdviceNoteScore= 0d;
-    private Double  docAdviceNoteScoreOn= 0d;
-    private Double  docAdviceNoteScoreTw= 0d;
+
     /**
      * 其他
      */
     @Excel(name = "其他",width = 30, orderNum = "20")
-    private String  otherCase;
+    private String  otherCase = "无缺陷";
     /**
      * 其他扣分
      */
@@ -192,47 +182,4 @@ public class QualityControlDTO {
     @Excel(name = "病历检查者",width = 12, orderNum = "25")
     private String chName;
 
-
-    /**
-     * 病案首页模块总分
-     */
-    private Double medHomePageTolScore =0d;
-
-
-    /**
-     * 入院记录模块总分
-     */
-    private Double admissionNoteTolScore=0d;
-
-    /**
-     * 首次病程录模块总分
-     */
-    private Double firstCourseNoteTolScore=0d;
-
-    /**
-     * 病程记录模块总分
-     */
-    private Double courseRecordTolScore=0d;
-
-
-    /**
-     * 手术信息模块总分
-     */
-    private Double operationInfoTolScore=0d;
-
-
-    /**
-     * 出院记录模块总分
-     */
-    private Double dischargeNoteTolScore=0d;
-
-
-
-    /**
-     * 医嘱单模块总分
-     */
-    private Double docAdviceNoteTolScore=0d;
-
-
-
 }

+ 18 - 67
src/main/java/com/diagbot/dto/QualityControlDeptDTO.java

@@ -41,7 +41,7 @@ public class QualityControlDeptDTO {
     /**
      * 医生姓名
      */
-    @Excel(name = "主治医生", width = 12, orderNum = "3",mergeVertical = true)
+    @Excel(name = "主治医生", width = 12, orderNum = "3")
     private String doctorName;
 
     /**
@@ -51,7 +51,7 @@ public class QualityControlDeptDTO {
     /**
      * 科室名称
      */
-    @Excel(name = "科室名称", width = 16, orderNum = "4",mergeVertical = true)
+    @Excel(name = "科室名称", width = 16, orderNum = "4")
     private String deptName;
 
     /**
@@ -63,7 +63,7 @@ public class QualityControlDeptDTO {
     /**
      * 出院时间
      */
-    @Excel(name = "出院日期", width = 25, orderNum = "5", exportFormat = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "出院时间", width = 25, orderNum = "5", exportFormat = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date leaveHospitalDate;
 
@@ -71,98 +71,89 @@ public class QualityControlDeptDTO {
      * 病案首页--
      */
     @Excel(name = "病案首页", width = 30, orderNum = "6")
-    private String medHomePage;
+    private String medHomePage = "无缺陷";
     /**
      * 病案首页扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "7")
     private Double medHomePageScore= 0d;
-    private Double medHomePageScoreOn= 0d;
-    private Double medHomePageScoreTw= 0d;
+
     /**
      * 入院记录--
      */
     @Excel(name = "入院记录",width = 30, orderNum = "8")
-    private String admissionNote;
+    private String admissionNote = "无缺陷";
 
     /**
      * 入院记录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "9")
     private Double admissionNoteScore= 0d;
-    //非单项否决扣分
-    private Double admissionNoteScoreOn= 0d;
-    //扣分项总和
-    private Double admissionNoteScoreTw= 0d;
+
 
     /**
      * 首次病程录--
      */
     @Excel(name = "首次病程录",width = 30, orderNum = "10")
-    private String firstCourseNote;
+    private String firstCourseNote = "无缺陷";
 
     /**
      * 首次病程录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "11")
     private Double firstCourseNoteScore= 0d;
-    private Double firstCourseNoteScoreOn= 0d;
-    private Double firstCourseNoteScoreTw= 0d;
+
     /**
      * 病程记录--
      */
     @Excel(name = "病程记录",width = 30, orderNum = "12")
-    private String courseRecord;
+    private String courseRecord = "无缺陷";
 
     /**
      * 病程记录扣分
      */
     @Excel(name = "扣分", width = 12,orderNum = "13")
     private Double courseRecordScore= 0d;
-    private Double courseRecordScoreOn= 0d;
-    private Double courseRecordScoreTw= 0d;
+
     /**
      * 手术信息--
      */
     @Excel(name = "手术信息",width = 30, orderNum = "14")
-    private String  operationInfo;
+    private String  operationInfo = "无缺陷";
 
     /**
      * 手术信息扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "15")
     private Double operationInfoScore= 0d;
-    private Double  operationInfoScoreOn= 0d;
-    private Double  operationInfoScoreTw= 0d;
+
     /**
      * 出院记录--
      */
     @Excel(name = "出院记录",width = 30, orderNum = "16")
-    private String  dischargeNote;
+    private String  dischargeNote = "无缺陷";
     /**
      * 出院记录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "17")
     private Double  dischargeNoteScore= 0d;
-    private Double  dischargeNoteScoreOn= 0d;
-    private Double  dischargeNoteScoreTw= 0d;
+
     /**
      * 医嘱单--
      */
     @Excel(name = "医嘱单",width = 30, orderNum = "18")
-    private String  docAdviceNote;
+    private String  docAdviceNote = "无缺陷";
     /**
      * 医嘱单扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "19")
     private Double docAdviceNoteScore= 0d;
-    private Double  docAdviceNoteScoreOn= 0d;
-    private Double  docAdviceNoteScoreTw= 0d;
+
     /**
      * 其他
      */
     @Excel(name = "其他",width = 30, orderNum = "20")
-    private String  otherCase;
+    private String  otherCase = "无缺陷";
     /**
      * 其他扣分
      */
@@ -192,46 +183,6 @@ public class QualityControlDeptDTO {
     private String chName;
 
 
-    /**
-     * 病案首页模块总分
-     */
-    private Double medHomePageTolScore =0d;
-
-
-    /**
-     * 入院记录模块总分
-     */
-    private Double admissionNoteTolScore=0d;
-
-    /**
-     * 首次病程录模块总分
-     */
-    private Double firstCourseNoteTolScore=0d;
-
-    /**
-     * 病程记录模块总分
-     */
-    private Double courseRecordTolScore=0d;
-
-
-    /**
-     * 手术信息模块总分
-     */
-    private Double operationInfoTolScore=0d;
-
-
-    /**
-     * 出院记录模块总分
-     */
-    private Double dischargeNoteTolScore=0d;
-
-
-
-    /**
-     * 医嘱单模块总分
-     */
-    private Double docAdviceNoteTolScore=0d;
-
 
 
 }

+ 56 - 57
src/main/java/com/diagbot/dto/QualityControlNullDTO.java

@@ -19,25 +19,71 @@ public class QualityControlNullDTO {
 
 
 
+    /**
+     * 病案首页--
+     */
+
+    private String medHomePage;
+
+    /**
+     * 入院记录--
+     */
+
+    private String admissionNote;
+
+
+
+    /**
+     * 首次病程录--
+     */
+
+    private String firstCourseNote;
+
+
+    /**
+     * 病程记录--
+     */
+
+    private String courseRecord;
 
 
+    /**
+     * 手术信息--
+     */
+
+    private String  operationInfo;
+
+
+    /**
+     * 出院记录--
+     */
+
+    private String  dischargeNote;
+
+    /**
+     * 医嘱单--
+     */
+
+    private String  docAdviceNote;
+
+    /**
+     * 其他
+     */
+
+    private String  otherCase;
+
     /**
      * 病案首页扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "7")
     private Double medHomePageScore;
-    private Double medHomePageScoreOn;
-    private Double medHomePageScoreTw;
+
 
     /**
      * 入院记录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "9")
     private Double admissionNoteScore;
-    //非单项否决扣分
-    private Double admissionNoteScoreOn;
-    //扣分项总和
-    private Double admissionNoteScoreTw;
 
 
 
@@ -46,8 +92,6 @@ public class QualityControlNullDTO {
      */
     @Excel(name = "扣分",width = 12, orderNum = "11")
     private Double firstCourseNoteScore;
-    private Double firstCourseNoteScoreOn;
-    private Double firstCourseNoteScoreTw;
 
 
     /**
@@ -55,32 +99,28 @@ public class QualityControlNullDTO {
      */
     @Excel(name = "扣分", width = 12,orderNum = "13")
     private Double courseRecordScore;
-    private Double courseRecordScoreOn;
-    private Double courseRecordScoreTw;
+
 
     /**
      * 手术信息扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "15")
     private Double operationInfoScore;
-    private Double  operationInfoScoreOn;
-    private Double  operationInfoScoreTw;
+
 
     /**
      * 出院记录扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "17")
     private Double  dischargeNoteScore;
-    private Double  dischargeNoteScoreOn;
-    private Double  dischargeNoteScoreTw;
+
 
     /**
      * 医嘱单扣分
      */
     @Excel(name = "扣分",width = 12, orderNum = "19")
     private Double docAdviceNoteScore;
-    private Double  docAdviceNoteScoreOn;
-    private Double  docAdviceNoteScoreTw;
+
 
     /**
      * 其他扣分
@@ -95,46 +135,5 @@ public class QualityControlNullDTO {
     private Double  totalScore;
 
 
-    /**
-     * 病案首页模块总分
-     */
-    private Double medHomePageTolScore;
-
-
-    /**
-     * 入院记录模块总分
-     */
-    private Double admissionNoteTolScore;
-
-    /**
-     * 首次病程录模块总分
-     */
-    private Double firstCourseNoteTolScore;
-
-    /**
-     * 病程记录模块总分
-     */
-    private Double courseRecordTolScore;
-
-
-    /**
-     * 手术信息模块总分
-     */
-    private Double operationInfoTolScore;
-
-
-    /**
-     * 出院记录模块总分
-     */
-    private Double dischargeNoteTolScore;
-
-
-
-    /**
-     * 医嘱单模块总分
-     */
-    private Double docAdviceNoteTolScore;
-
-
 
 }

+ 3 - 3
src/main/java/com/diagbot/facade/ConsoleByDeptExportFacade.java

@@ -388,7 +388,7 @@ public class ConsoleByDeptExportFacade {
         behospitalPageVO.setSearchCount(false);
         Date startDate = behospitalPageVO.getLeaveHosDateStart();
         Date endDate = behospitalPageVO.getLeaveHosDateEnd();
-        orderMethod(behospitalPageVO);
+      //  orderMethod(behospitalPageVO);
         //时间间隔30天
         long interval = 30 * 24l * 60l * 60l * 1000l;
         if (endDate.getTime() < startDate.getTime()) {
@@ -397,9 +397,9 @@ public class ConsoleByDeptExportFacade {
         if (endDate.getTime() - startDate.getTime() > interval) {
             throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于30天");
         }
-        String  fileName = "病历质控报表科室详情.xls";
+        String  fileName = "病历质控报表.xls";
         IPage<QualityControlDeptDTO> records = consoleByDeptFacade.qualityControlByDept(behospitalPageVO);
-        ExcelUtils.exportExcel(records.getRecords(), null, "sheet1", QualityControlDeptDTO.class, fileName, response, 26.8f);
+        ExcelUtils.exportExcel(records.getRecords(), "病历质控报表", "sheet1", QualityControlDeptDTO.class, fileName, response, 26.8f);
     }
 
     static void orderMethod(BehospitalPageVO behospitalPageVO){

+ 248 - 331
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java

@@ -1063,7 +1063,6 @@ public class ConsoleByDeptFacade {
      */
     public IPage<QualityControlDeptDTO> qualityControlByDept(@Param("filterVO")  BehospitalPageVO behospitalPageVO) {
         behospitalPageSet(behospitalPageVO);
-        DecimalFormat df=new DecimalFormat("0.0");
         IPage<QualityControlDeptDTO> records = behospitalInfoFacade.qualityControlByDept(behospitalPageVO);
         List<QualityControlDeptDTO> qualityControlDTOs = records.getRecords();
         CaseScoreVO caseScoreVO = new CaseScoreVO();
@@ -1071,29 +1070,6 @@ public class ConsoleByDeptFacade {
         List<CaseScoreDTO>caseScoreDTOS= behospitalInfoFacade.getQualityCaseSorce(caseScoreVO);
         if(ListUtil.isNotEmpty(qualityControlDTOs)){
             qualityControlDTOs.forEach(qualityControlDTO->{
-                Double rePlaceTolScore = qualityControlDTO.getTotalScore();
-                StringBuffer admissionNote = new StringBuffer();
-                StringBuffer firstCourseNote = new StringBuffer();
-                StringBuffer dischargeNote = new StringBuffer();
-                StringBuffer medHomePage = new StringBuffer();
-                StringBuffer docAdviceNote = new StringBuffer();
-                StringBuffer operationInfo = new StringBuffer();
-                StringBuffer courseRecord = new StringBuffer();
-                StringBuffer otherCase = new StringBuffer();
-                Double admissionNoteScoreOn = 0d;
-                Double admissionNoteScoreTw = 0d;
-                Double firstCourseNoteScoreOn = 0d;
-                Double firstCourseNoteScoreTw = 0d;
-                Double dischargeNoteScoreOn = 0d;
-                Double dischargeNoteScoreTw = 0d;
-                Double medHomePageScoreOn = 0d;
-                Double medHomePageScoreTw = 0d;
-                Double docAdviceNoteScoreOn = 0d;
-                Double docAdviceNoteScoreTw = 0d;
-                Double operationInfoScoreOn = 0d;
-                Double operationInfoScoreTw = 0d;
-                Double courseRecordScoreOn = 0d;
-                Double courseRecordScoreTw = 0d;
                 if(ListUtil.isNotEmpty(caseScoreDTOS)){
                     AlgorithmVO algorithmVO = new AlgorithmVO();
                     BeanUtil.copyProperties(behospitalPageVO,algorithmVO);
@@ -1103,253 +1079,19 @@ public class ConsoleByDeptFacade {
                         if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
                                 StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
                                 qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
-                            double targetScore =  Double.valueOf(df.format(caseScoreDTO.getScore()));
-
                             QcResultAlgVO qcResultAlgVO = new QcResultAlgVO();
                             BeanUtil.copyProperties(caseScoreDTO,qcResultAlgVO);
                             qcResultAlgVO.setIsReject(Integer.valueOf(caseScoreDTO.getIsReject()));
                             qcResultAlgVO.setScore(new BigDecimal(caseScoreDTO.getScore()));
                             qcResultAlgVO.setCasesScore(new BigDecimal(caseScoreDTO.getCasesScore()));
                             qcResultAlgVOList.add(qcResultAlgVO);
-
-                            switch (caseScoreDTO.getModelId()) {
-                                case "1":
-                                    String admissionMsg = caseScoreDTO.getMsg() + ";";
-                                    admissionNote.append(admissionMsg);
-                                    //对单个modeId进行扣分总和计算
-                                    //非单项否决总分
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        admissionNoteScoreOn += targetScore;
-                                        admissionNoteScoreOn = Double.valueOf(df.format(admissionNoteScoreOn));
-                                    }
-
-                                    //扣分总和
-                                    admissionNoteScoreTw += targetScore;
-                                    admissionNoteScoreTw = Double.valueOf(df.format(admissionNoteScoreTw));
-                                    qualityControlDTO.setAdmissionNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "2":
-                                    String firstCourseNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    firstCourseNote.append(firstCourseNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        firstCourseNoteScoreOn +=targetScore;
-                                        firstCourseNoteScoreOn = Double.valueOf(df.format(firstCourseNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    firstCourseNoteScoreTw += targetScore;
-                                    firstCourseNoteScoreTw = Double.valueOf(df.format(firstCourseNoteScoreTw));
-                                    qualityControlDTO.setFirstCourseNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "5":
-                                    String dischargeNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    dischargeNote.append(dischargeNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        dischargeNoteScoreOn += targetScore;
-                                        dischargeNoteScoreOn = Double.valueOf(df.format(dischargeNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    dischargeNoteScoreTw += targetScore;
-                                    dischargeNoteScoreTw = Double.valueOf(df.format(dischargeNoteScoreTw));
-                                    qualityControlDTO.setDischargeNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "6":
-                                    String medHomePageMsg = caseScoreDTO.getMsg() + ";";
-                                    medHomePage.append(medHomePageMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        medHomePageScoreOn += targetScore;
-                                        medHomePageScoreOn = Double.valueOf(df.format(medHomePageScoreOn));
-                                    }
-                                    //扣分总和
-                                    medHomePageScoreTw += targetScore;
-                                    medHomePageScoreTw = Double.valueOf(df.format(medHomePageScoreTw));
-                                    qualityControlDTO.setMedHomePageTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "8":
-                                    String docAdviceNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    docAdviceNote.append(docAdviceNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        docAdviceNoteScoreOn += targetScore;
-                                        docAdviceNoteScoreOn = Double.valueOf(df.format(docAdviceNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    docAdviceNoteScoreTw += targetScore;
-                                    docAdviceNoteScoreTw = Double.valueOf(df.format(docAdviceNoteScoreTw));
-                                    qualityControlDTO.setDocAdviceNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "17":
-                                    String operationInfoMsg = caseScoreDTO.getMsg() + ";";
-                                    operationInfo.append(operationInfoMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        operationInfoScoreOn += targetScore;
-                                        operationInfoScoreOn = Double.valueOf(df.format(operationInfoScoreOn));
-                                    }
-                                    //扣分总和
-                                    operationInfoScoreTw += targetScore;
-                                    operationInfoScoreTw = Double.valueOf(df.format(operationInfoScoreTw));
-                                    qualityControlDTO.setOperationInfoTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "56":
-                                    String courseRecordMsg = caseScoreDTO.getMsg() + ";";
-                                    courseRecord.append(courseRecordMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        courseRecordScoreOn += targetScore;
-                                        courseRecordScoreOn = Double.valueOf(df.format(courseRecordScoreOn));
-                                    }
-                                    //扣分总和
-                                    courseRecordScoreTw += targetScore;
-                                    courseRecordScoreTw = Double.valueOf(df.format(courseRecordScoreTw));
-                                    qualityControlDTO.setCourseRecordTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-
-                            }
-
-                            String modelId = caseScoreDTO.getModelId();
-                            if(!(modelId.equals("1")||modelId.equals("2")||modelId.equals("5")||modelId.equals("6")||
-                                    modelId.equals("8")||modelId.equals("17")||modelId.equals("56"))){
-                                String otherCaseMsg = caseScoreDTO.getMsg() + ";";
-                                otherCase.append(otherCaseMsg);
-                            }
-                            //未评分
-                        }
-                        if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
-                            QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
-                            BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
-                            break;
-                        }
-                    };
-                    algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
-                    Double toltalScore = getScoreForCx(algorithmVO).doubleValue();
-                    qualityControlDTO.setTotalScore(toltalScore);
-                    qualityControlDTO.setAdmissionNoteScoreOn(admissionNoteScoreOn);
-                    qualityControlDTO.setAdmissionNoteScoreTw(admissionNoteScoreTw);
-                    qualityControlDTO.setFirstCourseNoteScoreOn(firstCourseNoteScoreOn);
-                    qualityControlDTO.setFirstCourseNoteScoreTw(firstCourseNoteScoreTw);
-                    qualityControlDTO.setDischargeNoteScoreOn(dischargeNoteScoreOn);
-                    qualityControlDTO.setDischargeNoteScoreTw(dischargeNoteScoreTw);
-                    qualityControlDTO.setMedHomePageScoreOn(medHomePageScoreOn);
-                    qualityControlDTO.setMedHomePageScoreTw(medHomePageScoreTw);
-                    qualityControlDTO.setDocAdviceNoteScoreOn(docAdviceNoteScoreOn);
-                    qualityControlDTO.setDocAdviceNoteScoreTw(docAdviceNoteScoreTw);
-                    qualityControlDTO.setOperationInfoScoreOn(operationInfoScoreOn);
-                    qualityControlDTO.setOperationInfoScoreTw(operationInfoScoreTw);
-                    qualityControlDTO.setCourseRecordScoreOn(courseRecordScoreOn);
-                    qualityControlDTO.setCourseRecordScoreTw(courseRecordScoreTw);
-
-                    String admissionNoteString = StringUtils.isEmpty(admissionNote) == true ?"无缺陷" : admissionNote.toString().substring(0,  admissionNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setAdmissionNote(admissionNoteString);
-                    String firstCourseNoteString = StringUtils.isEmpty(firstCourseNote) == true ?"无缺陷" :firstCourseNote.toString().substring(0,  firstCourseNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setFirstCourseNote(firstCourseNoteString);
-                    String dischargeNoteString = StringUtils.isEmpty(dischargeNote) == true ?"无缺陷" : dischargeNote.toString().substring(0,  dischargeNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setDischargeNote(dischargeNoteString);
-                    String medHomePageString = StringUtils.isEmpty(medHomePage) == true ?"无缺陷" : medHomePage.toString().substring(0,  medHomePage.toString().lastIndexOf(";"));
-                    qualityControlDTO.setMedHomePage(medHomePageString);
-                    String docAdviceNoteString = StringUtils.isEmpty(docAdviceNote) == true ?"无缺陷" : docAdviceNote.toString().substring(0,  docAdviceNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setDocAdviceNote(docAdviceNoteString);
-                    String operationInfoString = StringUtils.isEmpty(operationInfo) == true ?"无缺陷" : operationInfo.toString().substring(0,  operationInfo.toString().lastIndexOf(";"));
-                    qualityControlDTO.setOperationInfo(operationInfoString);
-                    String courseRecordString = StringUtils.isEmpty(courseRecord) == true ?"无缺陷" : courseRecord.toString().substring(0,  courseRecord.toString().lastIndexOf(";"));
-                    qualityControlDTO.setCourseRecord(courseRecordString);
-                    String otherCaseString = StringUtils.isEmpty(otherCase) == true ?"无缺陷" : otherCase.toString().substring(0,  otherCase.toString().lastIndexOf(";"));
-                    qualityControlDTO.setOtherCase(otherCaseString);
-
-
-                    for (CaseScoreDTO caseScoreDTO : caseScoreDTOS) {
-                        if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
-                                StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
-                                qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
-                            switch (caseScoreDTO.getModelId()) {
-                                case "1":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((admissionNoteScoreOn-qualityControlDTO.getAdmissionNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setAdmissionNoteScore(qualityControlDTO.getAdmissionNoteTolScore()+(admissionNoteScoreTw-admissionNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setAdmissionNoteScore(admissionNoteScoreOn+(admissionNoteScoreTw-admissionNoteScoreOn));
-                                    }
-                                    break;
-                                case "2":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((firstCourseNoteScoreOn-qualityControlDTO.getFirstCourseNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setFirstCourseNoteScore(qualityControlDTO.getFirstCourseNoteTolScore()+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setFirstCourseNoteScore(firstCourseNoteScoreOn+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
-                                    }
-                                    break;
-                                case "5":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((dischargeNoteScoreOn-qualityControlDTO.getDischargeNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setDischargeNoteScore(qualityControlDTO.getDischargeNoteTolScore()+(dischargeNoteScoreTw-dischargeNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setDischargeNoteScore(dischargeNoteScoreOn+(dischargeNoteScoreTw-dischargeNoteScoreOn));
-                                    }
-                                    break;
-                                case "6":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((medHomePageScoreOn-qualityControlDTO.getMedHomePageTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setMedHomePageScore(qualityControlDTO.getMedHomePageTolScore()+(medHomePageScoreTw-medHomePageScoreOn));
-                                    }else{
-                                        qualityControlDTO.setMedHomePageScore(medHomePageScoreOn+(medHomePageScoreTw-medHomePageScoreOn));
-                                    }
-                                    break;
-                                case "8":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((docAdviceNoteScoreOn-qualityControlDTO.getDocAdviceNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setDocAdviceNoteScore(qualityControlDTO.getDocAdviceNoteTolScore()+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setDocAdviceNoteScore(docAdviceNoteScoreOn+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
-                                    }
-                                    break;
-                                case "17":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((operationInfoScoreOn-qualityControlDTO.getOperationInfoTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setOperationInfoScore(qualityControlDTO.getOperationInfoTolScore()+(operationInfoScoreTw-operationInfoScoreOn));
-                                    }else{
-                                        qualityControlDTO.setOperationInfoScore(operationInfoScoreOn+(operationInfoScoreTw-operationInfoScoreOn));
-                                    }
-                                    break;
-                                case "56":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((courseRecordScoreOn-qualityControlDTO.getCourseRecordTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setCourseRecordScore(qualityControlDTO.getCourseRecordTolScore()+(courseRecordScoreTw-courseRecordScoreOn));
-                                    }else{
-                                        qualityControlDTO.setCourseRecordScore(courseRecordScoreOn+(courseRecordScoreTw-courseRecordScoreOn));
-                                    }
-                                    break;
-
-                            }
-
-
-
-                        } if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
-                            QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
-                            BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
                         }
-
-                    };
-                    Double otherScore = new Double(0d);
-                    Double mainScore = new Double(0d);
-                    Double otherCaseScore = null;
-                    Double res = new Double(120d);
-                    Double resPr = new Double(100d);
-                    String scoreType = "0";
-                    mainScore =  qualityControlDTO.getMedHomePageScore()+qualityControlDTO.getAdmissionNoteScore()+qualityControlDTO.getFirstCourseNoteScore()+
-                            qualityControlDTO.getCourseRecordScore()+qualityControlDTO.getOperationInfoScore()+qualityControlDTO.getDischargeNoteScore()+qualityControlDTO. getDocAdviceNoteScore();
-                    scoreType = sysHospitalSetFacade.getScoreType(behospitalPageVO.getHospitalId());
-                    if ("1".equals(scoreType)) {
-                        otherScore = (resPr-qualityControlDTO.getTotalScore()-mainScore);
-                    } else if ("0".equals(scoreType)) {
-                        otherScore = res-(qualityControlDTO.getTotalScore()*res/resPr)-mainScore;
                     }
-                    otherCaseScore =  Double.valueOf(df.format(otherScore));
-                    qualityControlDTO.setOtherCaseScore(otherCaseScore == null ? 0d : otherCaseScore  );
-                    qualityControlDTO.setTotalScore(rePlaceTolScore);
-                }else{
+                    algorithmVO.setType(0);
+                    algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+                    getScoreForCx(algorithmVO,qualityControlDTO);
+                }
+                if(qualityControlDTO.getLevel().equals("未评分")){
                     QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
                     BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
                 }
@@ -1624,7 +1366,7 @@ public class ConsoleByDeptFacade {
      * @param algorithmVO 操作条目的所有信息
      * @return 评结果分数
      */
-    private BigDecimal getScoreForCx(AlgorithmVO algorithmVO) {
+    private void getScoreForCx(AlgorithmVO algorithmVO,QualityControlDeptDTO qualityControlDTO) {
         List<QcResultAlgVO> qcResultAlgHomePage = new ArrayList<>();
         List<QcResultAlgVO> qcResultAlgHomePageExt = new ArrayList<>();
         for (QcResultAlgVO qcResultAlgVO : algorithmVO.getQcResultAlgVOList()) {
@@ -1636,47 +1378,19 @@ public class ConsoleByDeptFacade {
                 qcResultAlgHomePageExt.add(qcResultAlgVO);
             }
         }
-        List<MedQcresultCasesVO> medQcresultCasesVOList = new ArrayList<>();
+
         //病案首页
         AlgorithmVO homePage = new AlgorithmVO();
         BeanUtil.copyProperties(algorithmVO, homePage);
         homePage.setQcResultAlgVOList(qcResultAlgHomePage);
         homePage.setIsHomePage(true);
-        BigDecimal homePageRes = cal(homePage);
-        String level = getHomePageLevel(homePageRes);
-        MedQcresultCasesVO medQcresultCasesVOHp = new MedQcresultCasesVO();
-        medQcresultCasesVOHp.setHospitalId(algorithmVO.getHospitalId());
-        medQcresultCasesVOHp.setBehospitalCode(algorithmVO.getBehospitalCode());
-        medQcresultCasesVOHp.setCasesId(243L);
-        medQcresultCasesVOHp.setScoreRes(homePageRes);
-        medQcresultCasesVOHp.setLevel(level);
-        medQcresultCasesVOList.add(medQcresultCasesVOHp);
+        cal(homePage, qualityControlDTO);
+
         //病案首页以外
         AlgorithmVO homePageExt = new AlgorithmVO();
         BeanUtil.copyProperties(algorithmVO, homePageExt);
         homePageExt.setQcResultAlgVOList(qcResultAlgHomePageExt);
-        BigDecimal homePageExtRes = cal(homePageExt);
-        MedQcresultCasesVO medQcresultCasesVOHpExt = new MedQcresultCasesVO();
-        medQcresultCasesVOHpExt.setHospitalId(algorithmVO.getHospitalId());
-        medQcresultCasesVOHpExt.setBehospitalCode(algorithmVO.getBehospitalCode());
-        medQcresultCasesVOHpExt.setCasesId(0L);
-        medQcresultCasesVOHpExt.setScoreRes(homePageExtRes);
-        medQcresultCasesVOHpExt.setLevel("");
-        medQcresultCasesVOList.add(medQcresultCasesVOHpExt);
-        algorithmVO.setMedQcresultCasesVOList(medQcresultCasesVOList);
-        //计算分数
-        BigDecimal res = homePageRes
-                .add(homePageExtRes)
-                .multiply(new BigDecimal(100))
-                .divide(new BigDecimal(120), 2, RoundingMode.HALF_UP);
-        // 判断是否是百分制
-        if (sysHospitalSetFacade.getScoreType(algorithmVO.getHospitalId()).equals("1")
-                ||(algorithmVO.getHospitalId().intValue() == 1
-                && StringUtil.isNotBlank(algorithmVO.getIsPlacefile())
-                && algorithmVO.getIsPlacefile().equals("0"))) {
-            res = cal(algorithmVO);
-        }
-        return res;
+        cal(homePageExt,qualityControlDTO);
     }
 
     /**
@@ -1685,31 +1399,38 @@ public class ConsoleByDeptFacade {
      * @param algorithmVO 操作条目的所有信息
      * @return 评分分数
      */
-    private BigDecimal cal(AlgorithmVO algorithmVO) {
-        BigDecimal res = new BigDecimal(100);
-        //统一为长兴的算法
-        if (algorithmVO.getIsHomePage().equals(true)) {
-            res = new BigDecimal(20);
-        }
+    private void cal(AlgorithmVO algorithmVO ,QualityControlDeptDTO qualityControlDTO) {
+
         //模块总分
         Map<Long, BigDecimal> casesMap = new HashMap<>();
         //单票否决计分
-        BigDecimal rejectScore = BigDecimal.ZERO;
+        Map<Long, BigDecimal> rejectScoreMap = new HashMap<>();
         //模块计分
         Map<Long, BigDecimal> casesScoreMap = new HashMap<>();
+        //模块缺陷统计
+        Map<Long, String> casesNameMap = new HashMap<>();
+        //扣分统计
+        Map<Long, BigDecimal> scoreMap = new HashMap<>();
 
         List<QcResultAlgVO> qcResultAlgVOList = algorithmVO.getQcResultAlgVOList();
         if (ListUtil.isNotEmpty(qcResultAlgVOList)) {
             for (QcResultAlgVO qcResultAlgVO : qcResultAlgVOList) {
                 if (!casesMap.containsKey(qcResultAlgVO.getCasesId())) {
+                    //模块总分
                     casesMap.put(qcResultAlgVO.getCasesId(), qcResultAlgVO.getCasesScore());
                 }
                 if (!casesScoreMap.containsKey(qcResultAlgVO.getCasesId())) {
                     casesScoreMap.put(qcResultAlgVO.getCasesId(), BigDecimal.ZERO);
+                    rejectScoreMap.put(qcResultAlgVO.getCasesId(), BigDecimal.ZERO);
+                    casesNameMap.put(qcResultAlgVO.getCasesId(),"");
                 }
                 //单票否决计分
                 if (qcResultAlgVO.getIsReject().equals(1)) {
-                    rejectScore = rejectScore.add(qcResultAlgVO.getScore());
+                    if (rejectScoreMap.containsKey(qcResultAlgVO.getCasesId())) {
+                        BigDecimal casesScore = rejectScoreMap.get(qcResultAlgVO.getCasesId());
+                        casesScore = casesScore.add(qcResultAlgVO.getScore());
+                        rejectScoreMap.put(qcResultAlgVO.getCasesId(), casesScore);
+                    }
                 } else {
                     //非单票否决计分
                     if (casesScoreMap.containsKey(qcResultAlgVO.getCasesId())) {
@@ -1718,40 +1439,236 @@ public class ConsoleByDeptFacade {
                         casesScoreMap.put(qcResultAlgVO.getCasesId(), casesScore);
                     }
                 }
+                String casesName = casesNameMap.get(qcResultAlgVO.getCasesId());
+                if(StringUtils.isEmpty(casesName)){
+                    casesName =  casesName + qcResultAlgVO.getMsg();
+                }else{
+                    casesName =  casesName + ";" + qcResultAlgVO.getMsg();
+                }
+                casesNameMap.put(qcResultAlgVO.getCasesId(),casesName);
             }
 
-            //结果先减去单票否决计分总和
-            res = res.subtract(rejectScore);
-            //结果小于0按0计算
-            if (BigDecimalUtil.lt(res, BigDecimal.ZERO)) {
-                return BigDecimal.ZERO;
-            } else {
-                //模块计分
-                for (Map.Entry<Long, BigDecimal> casesScore : casesScoreMap.entrySet()) {
-                    BigDecimal allSccore = casesMap.get(casesScore.getKey());
-                    if (BigDecimalUtil.le(allSccore, casesScore.getValue())) {
-                        //模块标准分小于等于模块减分总和就用模块标准分
-                        res = res.subtract(allSccore);
-                    } else {
-                        //模块标准分大于模块减分总和就用模块减分总和
-                        res = res.subtract(casesScore.getValue());
-                    }
+
+            //模块计分
+            for (Map.Entry<Long, BigDecimal> casesScore : casesScoreMap.entrySet()) {
+                BigDecimal allSccore = casesMap.get(casesScore.getKey());
+                if (BigDecimalUtil.le(allSccore, casesScore.getValue())) {
+                    //模块标准分小于等于模块减分总和就用模块标准分
+                    allSccore = allSccore.add(rejectScoreMap.get(casesScore.getKey()));
+                } else {
+                    //模块标准分大于模块减分总和就用模块减分总和
+                    allSccore =casesScore.getValue().add(rejectScoreMap.get(casesScore.getKey()));
+
+                }
+                if (BigDecimalUtil.lt(allSccore, BigDecimal.ZERO)) {
+                    allSccore = BigDecimal.ZERO;
                 }
+                scoreMap.put(casesScore.getKey(),allSccore);
+            }
+
+
+            DecimalFormat df=new DecimalFormat("0.0");
+
+            if(StringUtils.isNotEmpty(casesNameMap.get(237L))){
+                qualityControlDTO.setAdmissionNote(casesNameMap.get(237L));
+            }
+            if( scoreMap.get(237L) != null){
+                qualityControlDTO.setAdmissionNoteScore( Double.valueOf(df.format(scoreMap.get(237L))));
+            }
+
+
+
+            if(StringUtils.isNotEmpty(casesNameMap.get(238L))){
+                qualityControlDTO.setFirstCourseNote(casesNameMap.get(238L));
+            }
+            if( scoreMap.get(238L) != null){
+                qualityControlDTO.setFirstCourseNoteScore( Double.valueOf(df.format(scoreMap.get(238L))));
             }
-            //结果小于0按0计算
-            if (BigDecimalUtil.lt(res, BigDecimal.ZERO)) {
-                res = BigDecimal.ZERO;
+
+
+
+            if(StringUtils.isNotEmpty(casesNameMap.get(242L))){
+                qualityControlDTO.setDischargeNote(casesNameMap.get(242L));
+            }
+            if( scoreMap.get(242L) != null){
+                qualityControlDTO.setDischargeNoteScore( Double.valueOf(df.format(scoreMap.get(242L))));
+            }
+
+
+
+            if(StringUtils.isNotEmpty(casesNameMap.get(243L))){
+                qualityControlDTO.setMedHomePage(casesNameMap.get(243L));
+            }
+            if( scoreMap.get(243L) != null){
+                qualityControlDTO.setMedHomePageScore( Double.valueOf(df.format(scoreMap.get(243L))));
+            }
+
+
+
+            if(StringUtils.isNotEmpty(casesNameMap.get(280L))){
+                qualityControlDTO.setDocAdviceNote(casesNameMap.get(280L));
             }
+            if( scoreMap.get(280L) != null){
+                qualityControlDTO.setDocAdviceNoteScore( Double.valueOf(df.format(scoreMap.get(280L))));
+            }
+
+
+            String operationInfo = "";
+            if(StringUtils.isNotEmpty(casesNameMap.get(248L))){
+                operationInfo = "围手术期病历讨论:"+casesNameMap.get(248L);
+            }
+            if(StringUtils.isNotEmpty(casesNameMap.get(249L))){
+                operationInfo = operationInfo+";"+"术前讨论制度:"+casesNameMap.get(249L);
+            }
+            if(operationInfo.contains(";")){
+                String[] split = operationInfo.split(";");
+                if(StringUtils.isEmpty(split[0])){
+                    operationInfo = split[1];
+                }
+            }
+
+            qualityControlDTO.setOperationInfo(StringUtils.isEmpty(operationInfo)==true?"无缺陷":operationInfo);
+
+            Double score_248 = 0d;
+            Double score_11 = 0d;
+            Double score_249 = 0d;
+            if( scoreMap.get(248L) != null){
+                score_248 = Double.valueOf(df.format(scoreMap.get(248L)));
+            }
+            if( scoreMap.get(11L) != null){
+                score_11 =  Double.valueOf(df.format(scoreMap.get(11L)));
+            }
+            if( scoreMap.get(249L) != null){
+                score_249 = Double.valueOf(df.format(scoreMap.get(249L)));
+            }
+            qualityControlDTO.setOperationInfoScore(score_248+score_11+score_249);
         }
-        return res;
-    }
-    private String getHomePageLevel(BigDecimal score) {
-        String level = "不合格";
-        //得分≥18分为甲级
-        if (BigDecimalUtil.ge(score, new BigDecimal(18))) {
-            level = "合格";
+
+        String courseRecord = "";
+        if(StringUtils.isNotEmpty(casesNameMap.get(239L))){
+            courseRecord = "死亡病例讨论制度:"+casesNameMap.get(239L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(240L))){
+            courseRecord = courseRecord+";"+"疑难病例讨论制度:"+casesNameMap.get(240L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(241L))){
+            courseRecord =courseRecord+";"+ "三级查房制度:"+casesNameMap.get(241L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(244L))){
+            courseRecord =courseRecord+";"+ "会诊制度:"+casesNameMap.get(244L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(245L))){
+            courseRecord =courseRecord+";"+ "分级护理制度:"+casesNameMap.get(245L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(246L))){
+            courseRecord = courseRecord+";"+"值班及交接班制度:"+casesNameMap.get(246L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(247L))){
+            courseRecord = courseRecord+";"+"临床用血审核制度:"+casesNameMap.get(247L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(250L))){
+            courseRecord =courseRecord+";"+ "死亡记录:"+casesNameMap.get(250L);
+        }
+        if(courseRecord.contains(";")) {
+            String[] courseRecordSplit = courseRecord.split(";");
+            if (StringUtils.isEmpty(courseRecordSplit[0])) {
+                courseRecord = courseRecordSplit[1];
+            }
+        }
+        qualityControlDTO.setCourseRecord(StringUtils.isEmpty(courseRecord)==true?"无缺陷":courseRecord);
+
+
+        Double score_239 = 0d;
+        Double score_240 = 0d;
+        Double score_241 = 0d;
+        Double score_244 = 0d;
+        Double score_245 = 0d;
+        Double score_246 = 0d;
+        Double score_247 = 0d;
+        Double score_250 = 0d;
+        DecimalFormat df=new DecimalFormat("0.0");
+        if( scoreMap.get(239L) != null){
+            score_239 =  Double.valueOf(df.format(scoreMap.get(239L)));
         }
-        return level;
+        if( scoreMap.get(240L) != null){
+            score_240 =  Double.valueOf(df.format(scoreMap.get(240L)));
+        }
+        if( scoreMap.get(241L) != null){
+            score_241 =  Double.valueOf(df.format(scoreMap.get(241L)));
+        }
+        if( scoreMap.get(244L) != null){
+            score_244 =  Double.valueOf(df.format(scoreMap.get(244L)));
+        }
+        if( scoreMap.get(245L) != null){
+            score_245 =  Double.valueOf(df.format(scoreMap.get(245L)));
+        }
+        if( scoreMap.get(246L) != null){
+            score_246 =  Double.valueOf(df.format(scoreMap.get(246L)));
+        }
+        if( scoreMap.get(247L) != null){
+            score_247 =  Double.valueOf(df.format(scoreMap.get(247L)));
+        }
+        if( scoreMap.get(250L) != null){
+            score_250 =  Double.valueOf(df.format(scoreMap.get(250L)));
+
+        }
+        qualityControlDTO.setCourseRecordScore(score_239+score_240+score_241+score_244+score_245+score_246+score_247+score_250);
+                  /*  qualityControlDTO.setCourseRecord(name_239+";"+name_240
+                                    +";"+name_241+";"+name_244+";"+name_245
+                                    +";"+name_246+";"+name_247+";"+name_250);
+                    qualityControlDTO.setCourseRecordScore(score_239+score_240+score_241+score_244+score_245+score_246
+                            +score_247+score_250);*/
+
+
+
+
+        Double score_262 = 0d;
+        Double score_281 = 0d;
+        Double score_282 = 0d;
+        Double score_283 = 0d;
+        Double score_284 = 0d;
+        if( scoreMap.get(262L) != null){
+            score_262 =  Double.valueOf(df.format(scoreMap.get(262L)));
+        }
+        if( scoreMap.get(281L) != null){
+            score_281 =  Double.valueOf(df.format(scoreMap.get(281L)));
+        }
+        if( scoreMap.get(282L) != null){
+            score_282 =  Double.valueOf(df.format(scoreMap.get(282L)));
+        }
+        if( scoreMap.get(283L) != null){
+            score_283 =  Double.valueOf(df.format(scoreMap.get(283L)));
+        }
+        if( scoreMap.get(284L) != null){
+            score_284 =  Double.valueOf(df.format(scoreMap.get(284L)));
+
+        }
+
+        String otherCase = "";
+        if(StringUtils.isNotEmpty(casesNameMap.get(262L))){
+            otherCase = "危急值报告制度:"+casesNameMap.get(262L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(281L))){
+            otherCase = otherCase +";"+"危急值报告制度:"+casesNameMap.get(281L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(282L))){
+            otherCase = otherCase +";"+ "危急值报告制度:"+casesNameMap.get(282L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(283L))){
+            otherCase = otherCase +";"+ "危急值报告制度:"+casesNameMap.get(283L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(284L))){
+            otherCase = otherCase +";"+ "危急值报告制度:"+casesNameMap.get(284L);
+        }
+        if(otherCase.contains(";")) {
+            String[] otherCaseSplit = otherCase.split(";");
+            if(StringUtils.isEmpty(otherCaseSplit[0])){
+                otherCase = otherCaseSplit[1];
+            }
+        }
+        qualityControlDTO.setOtherCase(StringUtils.isEmpty(otherCase)==true?"无缺陷":otherCase);
+        qualityControlDTO.setOtherCaseScore(score_262+score_281+score_282+score_283+score_284);
+
     }
 
 }

+ 2 - 2
src/main/java/com/diagbot/facade/ConsoleExportFacade.java

@@ -621,13 +621,13 @@ public class ConsoleExportFacade {
         behospitalPageVO.setCurrent(1L);
         behospitalPageVO.setSize(Long.MAX_VALUE);
         behospitalPageVO.setSearchCount(false);
-        orderMethod(behospitalPageVO);
+      //  orderMethod(behospitalPageVO);
 
         IPage<QualityControlDTO> page = consoleFacade.getQualityControlExport(behospitalPageVO);
         List<QualityControlDTO> records = page.getRecords();
 
         String fileName = "病历质控报表详情页.xls";
-        ExcelUtils.exportExcel(records, null, "sheet1", QualityControlDTO.class, fileName, response, 26.8f);
+        ExcelUtils.exportExcel(records, "病历质控报表", "sheet1", QualityControlDTO.class, fileName, response, 26.8f);
     }
 
    static void orderMethod(BehospitalPageVO behospitalPageVO){

+ 245 - 586
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -1255,7 +1255,6 @@ public class ConsoleFacade {
      */
     public IPage<QualityControlDTO> getQualityControl(BehospitalPageVO behospitalPageVO) {
         behospitalPageSet(behospitalPageVO);
-        DecimalFormat df=new DecimalFormat("0.0");
         IPage<QualityControlDTO> records = behospitalInfoFacade.getQualityControl(behospitalPageVO);
         List<QualityControlDTO> qualityControlDTOs = records.getRecords();
         CaseScoreVO caseScoreVO = new CaseScoreVO();
@@ -1263,29 +1262,6 @@ public class ConsoleFacade {
         List<CaseScoreDTO>caseScoreDTOS= behospitalInfoFacade.getQualityCaseSorce(caseScoreVO);
         if(ListUtil.isNotEmpty(qualityControlDTOs)){
         qualityControlDTOs.forEach(qualityControlDTO->{
-            Double rePlaceTolScore = qualityControlDTO.getTotalScore();
-            StringBuffer admissionNote = new StringBuffer();
-            StringBuffer firstCourseNote = new StringBuffer();
-            StringBuffer dischargeNote = new StringBuffer();
-            StringBuffer medHomePage = new StringBuffer();
-            StringBuffer docAdviceNote = new StringBuffer();
-            StringBuffer operationInfo = new StringBuffer();
-            StringBuffer courseRecord = new StringBuffer();
-            StringBuffer otherCase = new StringBuffer();
-            Double admissionNoteScoreOn = 0d;
-            Double admissionNoteScoreTw = 0d;
-            Double firstCourseNoteScoreOn = 0d;
-            Double firstCourseNoteScoreTw = 0d;
-            Double dischargeNoteScoreOn = 0d;
-            Double dischargeNoteScoreTw = 0d;
-            Double medHomePageScoreOn = 0d;
-            Double medHomePageScoreTw = 0d;
-            Double docAdviceNoteScoreOn = 0d;
-            Double docAdviceNoteScoreTw = 0d;
-            Double operationInfoScoreOn = 0d;
-            Double operationInfoScoreTw = 0d;
-            Double courseRecordScoreOn = 0d;
-            Double courseRecordScoreTw = 0d;
             if(ListUtil.isNotEmpty(caseScoreDTOS)){
                 AlgorithmVO algorithmVO = new AlgorithmVO();
               BeanUtil.copyProperties(behospitalPageVO,algorithmVO);
@@ -1295,253 +1271,19 @@ public class ConsoleFacade {
                         if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
                                 StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
                                 qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
-                            double targetScore =  Double.valueOf(df.format(caseScoreDTO.getScore()));
-
                             QcResultAlgVO qcResultAlgVO = new QcResultAlgVO();
                             BeanUtil.copyProperties(caseScoreDTO,qcResultAlgVO);
                             qcResultAlgVO.setIsReject(Integer.valueOf(caseScoreDTO.getIsReject()));
                             qcResultAlgVO.setScore(new BigDecimal(caseScoreDTO.getScore()));
                             qcResultAlgVO.setCasesScore(new BigDecimal(caseScoreDTO.getCasesScore()));
                             qcResultAlgVOList.add(qcResultAlgVO);
-
-                            switch (caseScoreDTO.getModelId()) {
-                                case "1":
-                                    String admissionMsg = caseScoreDTO.getMsg() + ";";
-                                    admissionNote.append(admissionMsg);
-                                    //对单个modeId进行扣分总和计算
-                                    //非单项否决总分
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        admissionNoteScoreOn += targetScore;
-                                        admissionNoteScoreOn = Double.valueOf(df.format(admissionNoteScoreOn));
-                                    }
-
-                                    //扣分总和
-                                    admissionNoteScoreTw += targetScore;
-                                    admissionNoteScoreTw = Double.valueOf(df.format(admissionNoteScoreTw));
-                                    qualityControlDTO.setAdmissionNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "2":
-                                    String firstCourseNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    firstCourseNote.append(firstCourseNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        firstCourseNoteScoreOn +=targetScore;
-                                        firstCourseNoteScoreOn = Double.valueOf(df.format(firstCourseNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    firstCourseNoteScoreTw += targetScore;
-                                    firstCourseNoteScoreTw = Double.valueOf(df.format(firstCourseNoteScoreTw));
-                                    qualityControlDTO.setFirstCourseNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "5":
-                                    String dischargeNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    dischargeNote.append(dischargeNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        dischargeNoteScoreOn += targetScore;
-                                        dischargeNoteScoreOn = Double.valueOf(df.format(dischargeNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    dischargeNoteScoreTw += targetScore;
-                                    dischargeNoteScoreTw = Double.valueOf(df.format(dischargeNoteScoreTw));
-                                    qualityControlDTO.setDischargeNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "6":
-                                    String medHomePageMsg = caseScoreDTO.getMsg() + ";";
-                                    medHomePage.append(medHomePageMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        medHomePageScoreOn += targetScore;
-                                        medHomePageScoreOn = Double.valueOf(df.format(medHomePageScoreOn));
-                                    }
-                                    //扣分总和
-                                    medHomePageScoreTw += targetScore;
-                                   medHomePageScoreTw = Double.valueOf(df.format(medHomePageScoreTw));
-                                    qualityControlDTO.setMedHomePageTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "8":
-                                    String docAdviceNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    docAdviceNote.append(docAdviceNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        docAdviceNoteScoreOn += targetScore;
-                                        docAdviceNoteScoreOn = Double.valueOf(df.format(docAdviceNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    docAdviceNoteScoreTw += targetScore;
-                                    docAdviceNoteScoreTw = Double.valueOf(df.format(docAdviceNoteScoreTw));
-                                    qualityControlDTO.setDocAdviceNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "17":
-                                    String operationInfoMsg = caseScoreDTO.getMsg() + ";";
-                                    operationInfo.append(operationInfoMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        operationInfoScoreOn += targetScore;
-                                        operationInfoScoreOn = Double.valueOf(df.format(operationInfoScoreOn));
-                                    }
-                                    //扣分总和
-                                    operationInfoScoreTw += targetScore;
-                                    operationInfoScoreTw = Double.valueOf(df.format(operationInfoScoreTw));
-                                    qualityControlDTO.setOperationInfoTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "56":
-                                    String courseRecordMsg = caseScoreDTO.getMsg() + ";";
-                                    courseRecord.append(courseRecordMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        courseRecordScoreOn += targetScore;
-                                        courseRecordScoreOn = Double.valueOf(df.format(courseRecordScoreOn));
-                                    }
-                                    //扣分总和
-                                    courseRecordScoreTw += targetScore;
-                                    courseRecordScoreTw = Double.valueOf(df.format(courseRecordScoreTw));
-                                    qualityControlDTO.setCourseRecordTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-
-                            }
-
-                            String modelId = caseScoreDTO.getModelId();
-                            if(!(modelId.equals("1")||modelId.equals("2")||modelId.equals("5")||modelId.equals("6")||
-                                    modelId.equals("8")||modelId.equals("17")||modelId.equals("56"))){
-                                String otherCaseMsg = caseScoreDTO.getMsg() + ";";
-                                otherCase.append(otherCaseMsg);
-                            }
-                            //未评分
-                        }
-                        if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
-                            QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
-                            BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
-                           break;
                         }
-                    };
+            }
+                algorithmVO.setType(0);
                 algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
-                Double toltalScore = getScoreForCx(algorithmVO).doubleValue();
-                qualityControlDTO.setTotalScore(toltalScore);
-                qualityControlDTO.setAdmissionNoteScoreOn(admissionNoteScoreOn);
-             qualityControlDTO.setAdmissionNoteScoreTw(admissionNoteScoreTw);
-             qualityControlDTO.setFirstCourseNoteScoreOn(firstCourseNoteScoreOn);
-             qualityControlDTO.setFirstCourseNoteScoreTw(firstCourseNoteScoreTw);
-             qualityControlDTO.setDischargeNoteScoreOn(dischargeNoteScoreOn);
-             qualityControlDTO.setDischargeNoteScoreTw(dischargeNoteScoreTw);
-             qualityControlDTO.setMedHomePageScoreOn(medHomePageScoreOn);
-             qualityControlDTO.setMedHomePageScoreTw(medHomePageScoreTw);
-             qualityControlDTO.setDocAdviceNoteScoreOn(docAdviceNoteScoreOn);
-             qualityControlDTO.setDocAdviceNoteScoreTw(docAdviceNoteScoreTw);
-             qualityControlDTO.setOperationInfoScoreOn(operationInfoScoreOn);
-             qualityControlDTO.setOperationInfoScoreTw(operationInfoScoreTw);
-             qualityControlDTO.setCourseRecordScoreOn(courseRecordScoreOn);
-             qualityControlDTO.setCourseRecordScoreTw(courseRecordScoreTw);
-
-            String admissionNoteString = StringUtils.isEmpty(admissionNote) == true ?"无缺陷" : admissionNote.toString().substring(0,  admissionNote.toString().lastIndexOf(";"));
-            qualityControlDTO.setAdmissionNote(admissionNoteString);
-            String firstCourseNoteString = StringUtils.isEmpty(firstCourseNote) == true ?"无缺陷" :firstCourseNote.toString().substring(0,  firstCourseNote.toString().lastIndexOf(";"));
-            qualityControlDTO.setFirstCourseNote(firstCourseNoteString);
-            String dischargeNoteString = StringUtils.isEmpty(dischargeNote) == true ?"无缺陷" : dischargeNote.toString().substring(0,  dischargeNote.toString().lastIndexOf(";"));
-            qualityControlDTO.setDischargeNote(dischargeNoteString);
-            String medHomePageString = StringUtils.isEmpty(medHomePage) == true ?"无缺陷" : medHomePage.toString().substring(0,  medHomePage.toString().lastIndexOf(";"));
-            qualityControlDTO.setMedHomePage(medHomePageString);
-            String docAdviceNoteString = StringUtils.isEmpty(docAdviceNote) == true ?"无缺陷" : docAdviceNote.toString().substring(0,  docAdviceNote.toString().lastIndexOf(";"));
-            qualityControlDTO.setDocAdviceNote(docAdviceNoteString);
-            String operationInfoString = StringUtils.isEmpty(operationInfo) == true ?"无缺陷" : operationInfo.toString().substring(0,  operationInfo.toString().lastIndexOf(";"));
-            qualityControlDTO.setOperationInfo(operationInfoString);
-            String courseRecordString = StringUtils.isEmpty(courseRecord) == true ?"无缺陷" : courseRecord.toString().substring(0,  courseRecord.toString().lastIndexOf(";"));
-            qualityControlDTO.setCourseRecord(courseRecordString);
-            String otherCaseString = StringUtils.isEmpty(otherCase) == true ?"无缺陷" : otherCase.toString().substring(0,  otherCase.toString().lastIndexOf(";"));
-            qualityControlDTO.setOtherCase(otherCaseString);
-
-
-            for (CaseScoreDTO caseScoreDTO : caseScoreDTOS) {
-                if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
-                        StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
-                        qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
-                    switch (caseScoreDTO.getModelId()) {
-                        case "1":
-                              //  非单项否决总扣分大于扣分总和
-                            if((admissionNoteScoreOn-qualityControlDTO.getAdmissionNoteTolScore())>=0){
-                                //扣分总和+单项否决总分
-                                qualityControlDTO.setAdmissionNoteScore(qualityControlDTO.getAdmissionNoteTolScore()+(admissionNoteScoreTw-admissionNoteScoreOn));
-                            }else{
-                                qualityControlDTO.setAdmissionNoteScore(admissionNoteScoreOn+(admissionNoteScoreTw-admissionNoteScoreOn));
-                            }
-                            break;
-                        case "2":
-                            //  非单项否决总扣分大于扣分总和
-                            if((firstCourseNoteScoreOn-qualityControlDTO.getFirstCourseNoteTolScore())>=0){
-                                //扣分总和+单项否决总分
-                                qualityControlDTO.setFirstCourseNoteScore(qualityControlDTO.getFirstCourseNoteTolScore()+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
-                            }else{
-                                qualityControlDTO.setFirstCourseNoteScore(firstCourseNoteScoreOn+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
-                            }
-                            break;
-                        case "5":
-                            //  非单项否决总扣分大于扣分总和
-                            if((dischargeNoteScoreOn-qualityControlDTO.getDischargeNoteTolScore())>=0){
-                                //扣分总和+单项否决总分
-                                qualityControlDTO.setDischargeNoteScore(qualityControlDTO.getDischargeNoteTolScore()+(dischargeNoteScoreTw-dischargeNoteScoreOn));
-                            }else{
-                                qualityControlDTO.setDischargeNoteScore(dischargeNoteScoreOn+(dischargeNoteScoreTw-dischargeNoteScoreOn));
-                            }
-                            break;
-                        case "6":
-                            //  非单项否决总扣分大于扣分总和
-                            if((medHomePageScoreOn-qualityControlDTO.getMedHomePageTolScore())>=0){
-                                //扣分总和+单项否决总分
-                                qualityControlDTO.setMedHomePageScore(qualityControlDTO.getMedHomePageTolScore()+(medHomePageScoreTw-medHomePageScoreOn));
-                            }else{
-                                qualityControlDTO.setMedHomePageScore(medHomePageScoreOn+(medHomePageScoreTw-medHomePageScoreOn));
-                            }
-                            break;
-                        case "8":
-                            //  非单项否决总扣分大于扣分总和
-                            if((docAdviceNoteScoreOn-qualityControlDTO.getDocAdviceNoteTolScore())>=0){
-                                //扣分总和+单项否决总分
-                                qualityControlDTO.setDocAdviceNoteScore(qualityControlDTO.getDocAdviceNoteTolScore()+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
-                            }else{
-                                qualityControlDTO.setDocAdviceNoteScore(docAdviceNoteScoreOn+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
-                            }
-                            break;
-                        case "17":
-                            //  非单项否决总扣分大于扣分总和
-                            if((operationInfoScoreOn-qualityControlDTO.getOperationInfoTolScore())>=0){
-                                //扣分总和+单项否决总分
-                                qualityControlDTO.setOperationInfoScore(qualityControlDTO.getOperationInfoTolScore()+(operationInfoScoreTw-operationInfoScoreOn));
-                            }else{
-                                qualityControlDTO.setOperationInfoScore(operationInfoScoreOn+(operationInfoScoreTw-operationInfoScoreOn));
-                            }
-                            break;
-                        case "56":
-                            //  非单项否决总扣分大于扣分总和
-                            if((courseRecordScoreOn-qualityControlDTO.getCourseRecordTolScore())>=0){
-                                //扣分总和+单项否决总分
-                                qualityControlDTO.setCourseRecordScore(qualityControlDTO.getCourseRecordTolScore()+(courseRecordScoreTw-courseRecordScoreOn));
-                            }else{
-                                qualityControlDTO.setCourseRecordScore(courseRecordScoreOn+(courseRecordScoreTw-courseRecordScoreOn));
-                            }
-                            break;
-
-                    }
-
-
-
-                } if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
-                    QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
-                    BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
-                }
-
-            };
-                Double otherScore = new Double(0d);
-                Double mainScore = new Double(0d);
-                Double otherCaseScore = null;
-                Double res = new Double(120d);
-                Double resPr = new Double(100d);
-                String scoreType = "0";
-                mainScore =  qualityControlDTO.getMedHomePageScore()+qualityControlDTO.getAdmissionNoteScore()+qualityControlDTO.getFirstCourseNoteScore()+
-                        qualityControlDTO.getCourseRecordScore()+qualityControlDTO.getOperationInfoScore()+qualityControlDTO.getDischargeNoteScore()+qualityControlDTO. getDocAdviceNoteScore();
-                scoreType = sysHospitalSetFacade.getScoreType(behospitalPageVO.getHospitalId());
-                if ("1".equals(scoreType)) {
-                    otherScore = (resPr-qualityControlDTO.getTotalScore()-mainScore);
-                } else if ("0".equals(scoreType)) {
-                    otherScore = res-(qualityControlDTO.getTotalScore()*res/resPr)-mainScore;
-                }
-                otherCaseScore =  Double.valueOf(df.format(otherScore));
-                qualityControlDTO.setOtherCaseScore(otherCaseScore == null ? 0d : otherCaseScore  );
-                qualityControlDTO.setTotalScore(rePlaceTolScore);
-            }else{
+                 getScoreForCx(algorithmVO,qualityControlDTO);
+            }
+            if(qualityControlDTO.getLevel().equals("未评分")){
                 QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
                 BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
             }
@@ -1558,7 +1300,6 @@ public class ConsoleFacade {
      */
     public IPage<QualityControlDTO> getQualityControlExport(BehospitalPageVO behospitalPageVO) {
         behospitalPageSet(behospitalPageVO);
-        DecimalFormat df=new DecimalFormat("0.0");
         IPage<QualityControlDTO> records = behospitalInfoFacade.getQualityControl(behospitalPageVO);
         List<QualityControlDTO> qualityControlDTOs = records.getRecords();
         CaseScoreVO caseScoreVO = new CaseScoreVO();
@@ -1566,29 +1307,6 @@ public class ConsoleFacade {
         List<CaseScoreDTO>caseScoreDTOS= behospitalInfoFacade.getQualityCaseSorce(caseScoreVO);
         if(ListUtil.isNotEmpty(qualityControlDTOs)){
             qualityControlDTOs.forEach(qualityControlDTO->{
-                Double rePlaceTolScore = qualityControlDTO.getTotalScore();
-                StringBuffer admissionNote = new StringBuffer();
-                StringBuffer firstCourseNote = new StringBuffer();
-                StringBuffer dischargeNote = new StringBuffer();
-                StringBuffer medHomePage = new StringBuffer();
-                StringBuffer docAdviceNote = new StringBuffer();
-                StringBuffer operationInfo = new StringBuffer();
-                StringBuffer courseRecord = new StringBuffer();
-                StringBuffer otherCase = new StringBuffer();
-                Double admissionNoteScoreOn = 0d;
-                Double admissionNoteScoreTw = 0d;
-                Double firstCourseNoteScoreOn = 0d;
-                Double firstCourseNoteScoreTw = 0d;
-                Double dischargeNoteScoreOn = 0d;
-                Double dischargeNoteScoreTw = 0d;
-                Double medHomePageScoreOn = 0d;
-                Double medHomePageScoreTw = 0d;
-                Double docAdviceNoteScoreOn = 0d;
-                Double docAdviceNoteScoreTw = 0d;
-                Double operationInfoScoreOn = 0d;
-                Double operationInfoScoreTw = 0d;
-                Double courseRecordScoreOn = 0d;
-                Double courseRecordScoreTw = 0d;
                 if(ListUtil.isNotEmpty(caseScoreDTOS)){
                     AlgorithmVO algorithmVO = new AlgorithmVO();
                     BeanUtil.copyProperties(behospitalPageVO,algorithmVO);
@@ -1598,253 +1316,19 @@ public class ConsoleFacade {
                         if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
                                 StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
                                 qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
-                            double targetScore =  Double.valueOf(df.format(caseScoreDTO.getScore()));
-
                             QcResultAlgVO qcResultAlgVO = new QcResultAlgVO();
                             BeanUtil.copyProperties(caseScoreDTO,qcResultAlgVO);
                             qcResultAlgVO.setIsReject(Integer.valueOf(caseScoreDTO.getIsReject()));
                             qcResultAlgVO.setScore(new BigDecimal(caseScoreDTO.getScore()));
                             qcResultAlgVO.setCasesScore(new BigDecimal(caseScoreDTO.getCasesScore()));
                             qcResultAlgVOList.add(qcResultAlgVO);
-
-                            switch (caseScoreDTO.getModelId()) {
-                                case "1":
-                                    String admissionMsg = caseScoreDTO.getMsg() + ";";
-                                    admissionNote.append(admissionMsg);
-                                    //对单个modeId进行扣分总和计算
-                                    //非单项否决总分
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        admissionNoteScoreOn += targetScore;
-                                        admissionNoteScoreOn = Double.valueOf(df.format(admissionNoteScoreOn));
-                                    }
-
-                                    //扣分总和
-                                    admissionNoteScoreTw += targetScore;
-                                    admissionNoteScoreTw = Double.valueOf(df.format(admissionNoteScoreTw));
-                                    qualityControlDTO.setAdmissionNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "2":
-                                    String firstCourseNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    firstCourseNote.append(firstCourseNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        firstCourseNoteScoreOn +=targetScore;
-                                        firstCourseNoteScoreOn = Double.valueOf(df.format(firstCourseNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    firstCourseNoteScoreTw += targetScore;
-                                    firstCourseNoteScoreTw = Double.valueOf(df.format(firstCourseNoteScoreTw));
-                                    qualityControlDTO.setFirstCourseNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "5":
-                                    String dischargeNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    dischargeNote.append(dischargeNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        dischargeNoteScoreOn += targetScore;
-                                        dischargeNoteScoreOn = Double.valueOf(df.format(dischargeNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    dischargeNoteScoreTw += targetScore;
-                                    dischargeNoteScoreTw = Double.valueOf(df.format(dischargeNoteScoreTw));
-                                    qualityControlDTO.setDischargeNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "6":
-                                    String medHomePageMsg = caseScoreDTO.getMsg() + ";";
-                                    medHomePage.append(medHomePageMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        medHomePageScoreOn += targetScore;
-                                        medHomePageScoreOn = Double.valueOf(df.format(medHomePageScoreOn));
-                                    }
-                                    //扣分总和
-                                    medHomePageScoreTw += targetScore;
-                                    medHomePageScoreTw = Double.valueOf(df.format(medHomePageScoreTw));
-                                    qualityControlDTO.setMedHomePageTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "8":
-                                    String docAdviceNoteMsg = caseScoreDTO.getMsg() + ";";
-                                    docAdviceNote.append(docAdviceNoteMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        docAdviceNoteScoreOn += targetScore;
-                                        docAdviceNoteScoreOn = Double.valueOf(df.format(docAdviceNoteScoreOn));
-                                    }
-                                    //扣分总和
-                                    docAdviceNoteScoreTw += targetScore;
-                                    docAdviceNoteScoreTw = Double.valueOf(df.format(docAdviceNoteScoreTw));
-                                    qualityControlDTO.setDocAdviceNoteTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "17":
-                                    String operationInfoMsg = caseScoreDTO.getMsg() + ";";
-                                    operationInfo.append(operationInfoMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        operationInfoScoreOn += targetScore;
-                                        operationInfoScoreOn = Double.valueOf(df.format(operationInfoScoreOn));
-                                    }
-                                    //扣分总和
-                                    operationInfoScoreTw += targetScore;
-                                    operationInfoScoreTw = Double.valueOf(df.format(operationInfoScoreTw));
-                                    qualityControlDTO.setOperationInfoTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-                                case "56":
-                                    String courseRecordMsg = caseScoreDTO.getMsg() + ";";
-                                    courseRecord.append(courseRecordMsg);
-                                    if (caseScoreDTO.getIsReject().equals("0")) {
-                                        courseRecordScoreOn += targetScore;
-                                        courseRecordScoreOn = Double.valueOf(df.format(courseRecordScoreOn));
-                                    }
-                                    //扣分总和
-                                    courseRecordScoreTw += targetScore;
-                                    courseRecordScoreTw = Double.valueOf(df.format(courseRecordScoreTw));
-                                    qualityControlDTO.setCourseRecordTolScore(caseScoreDTO.getCasesScore());
-                                    break;
-
-                            }
-
-                            String modelId = caseScoreDTO.getModelId();
-                            if(!(modelId.equals("1")||modelId.equals("2")||modelId.equals("5")||modelId.equals("6")||
-                                    modelId.equals("8")||modelId.equals("17")||modelId.equals("56"))){
-                                String otherCaseMsg = caseScoreDTO.getMsg() + ";";
-                                otherCase.append(otherCaseMsg);
-                            }
-                            //未评分
-                        }
-                        if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
-                            QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
-                            BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
-                            break;
-                        }
-                    };
-                    algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
-                    Double toltalScore = getScoreForCx(algorithmVO).doubleValue();
-                    qualityControlDTO.setTotalScore(toltalScore);
-                    qualityControlDTO.setAdmissionNoteScoreOn(admissionNoteScoreOn);
-                    qualityControlDTO.setAdmissionNoteScoreTw(admissionNoteScoreTw);
-                    qualityControlDTO.setFirstCourseNoteScoreOn(firstCourseNoteScoreOn);
-                    qualityControlDTO.setFirstCourseNoteScoreTw(firstCourseNoteScoreTw);
-                    qualityControlDTO.setDischargeNoteScoreOn(dischargeNoteScoreOn);
-                    qualityControlDTO.setDischargeNoteScoreTw(dischargeNoteScoreTw);
-                    qualityControlDTO.setMedHomePageScoreOn(medHomePageScoreOn);
-                    qualityControlDTO.setMedHomePageScoreTw(medHomePageScoreTw);
-                    qualityControlDTO.setDocAdviceNoteScoreOn(docAdviceNoteScoreOn);
-                    qualityControlDTO.setDocAdviceNoteScoreTw(docAdviceNoteScoreTw);
-                    qualityControlDTO.setOperationInfoScoreOn(operationInfoScoreOn);
-                    qualityControlDTO.setOperationInfoScoreTw(operationInfoScoreTw);
-                    qualityControlDTO.setCourseRecordScoreOn(courseRecordScoreOn);
-                    qualityControlDTO.setCourseRecordScoreTw(courseRecordScoreTw);
-
-                    String admissionNoteString = StringUtils.isEmpty(admissionNote) == true ?"无缺陷" : admissionNote.toString().substring(0,  admissionNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setAdmissionNote(admissionNoteString);
-                    String firstCourseNoteString = StringUtils.isEmpty(firstCourseNote) == true ?"无缺陷" :firstCourseNote.toString().substring(0,  firstCourseNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setFirstCourseNote(firstCourseNoteString);
-                    String dischargeNoteString = StringUtils.isEmpty(dischargeNote) == true ?"无缺陷" : dischargeNote.toString().substring(0,  dischargeNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setDischargeNote(dischargeNoteString);
-                    String medHomePageString = StringUtils.isEmpty(medHomePage) == true ?"无缺陷" : medHomePage.toString().substring(0,  medHomePage.toString().lastIndexOf(";"));
-                    qualityControlDTO.setMedHomePage(medHomePageString);
-                    String docAdviceNoteString = StringUtils.isEmpty(docAdviceNote) == true ?"无缺陷" : docAdviceNote.toString().substring(0,  docAdviceNote.toString().lastIndexOf(";"));
-                    qualityControlDTO.setDocAdviceNote(docAdviceNoteString);
-                    String operationInfoString = StringUtils.isEmpty(operationInfo) == true ?"无缺陷" : operationInfo.toString().substring(0,  operationInfo.toString().lastIndexOf(";"));
-                    qualityControlDTO.setOperationInfo(operationInfoString);
-                    String courseRecordString = StringUtils.isEmpty(courseRecord) == true ?"无缺陷" : courseRecord.toString().substring(0,  courseRecord.toString().lastIndexOf(";"));
-                    qualityControlDTO.setCourseRecord(courseRecordString);
-                    String otherCaseString = StringUtils.isEmpty(otherCase) == true ?"无缺陷" : otherCase.toString().substring(0,  otherCase.toString().lastIndexOf(";"));
-                    qualityControlDTO.setOtherCase(otherCaseString);
-
-
-                    for (CaseScoreDTO caseScoreDTO : caseScoreDTOS) {
-                        if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
-                                StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
-                                qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
-                            switch (caseScoreDTO.getModelId()) {
-                                case "1":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((admissionNoteScoreOn-qualityControlDTO.getAdmissionNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setAdmissionNoteScore(qualityControlDTO.getAdmissionNoteTolScore()+(admissionNoteScoreTw-admissionNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setAdmissionNoteScore(admissionNoteScoreOn+(admissionNoteScoreTw-admissionNoteScoreOn));
-                                    }
-                                    break;
-                                case "2":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((firstCourseNoteScoreOn-qualityControlDTO.getFirstCourseNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setFirstCourseNoteScore(qualityControlDTO.getFirstCourseNoteTolScore()+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setFirstCourseNoteScore(firstCourseNoteScoreOn+(firstCourseNoteScoreTw-firstCourseNoteScoreOn));
-                                    }
-                                    break;
-                                case "5":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((dischargeNoteScoreOn-qualityControlDTO.getDischargeNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setDischargeNoteScore(qualityControlDTO.getDischargeNoteTolScore()+(dischargeNoteScoreTw-dischargeNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setDischargeNoteScore(dischargeNoteScoreOn+(dischargeNoteScoreTw-dischargeNoteScoreOn));
-                                    }
-                                    break;
-                                case "6":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((medHomePageScoreOn-qualityControlDTO.getMedHomePageTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setMedHomePageScore(qualityControlDTO.getMedHomePageTolScore()+(medHomePageScoreTw-medHomePageScoreOn));
-                                    }else{
-                                        qualityControlDTO.setMedHomePageScore(medHomePageScoreOn+(medHomePageScoreTw-medHomePageScoreOn));
-                                    }
-                                    break;
-                                case "8":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((docAdviceNoteScoreOn-qualityControlDTO.getDocAdviceNoteTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setDocAdviceNoteScore(qualityControlDTO.getDocAdviceNoteTolScore()+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
-                                    }else{
-                                        qualityControlDTO.setDocAdviceNoteScore(docAdviceNoteScoreOn+(docAdviceNoteScoreTw-docAdviceNoteScoreOn));
-                                    }
-                                    break;
-                                case "17":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((operationInfoScoreOn-qualityControlDTO.getOperationInfoTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setOperationInfoScore(qualityControlDTO.getOperationInfoTolScore()+(operationInfoScoreTw-operationInfoScoreOn));
-                                    }else{
-                                        qualityControlDTO.setOperationInfoScore(operationInfoScoreOn+(operationInfoScoreTw-operationInfoScoreOn));
-                                    }
-                                    break;
-                                case "56":
-                                    //  非单项否决总扣分大于扣分总和
-                                    if((courseRecordScoreOn-qualityControlDTO.getCourseRecordTolScore())>=0){
-                                        //扣分总和+单项否决总分
-                                        qualityControlDTO.setCourseRecordScore(qualityControlDTO.getCourseRecordTolScore()+(courseRecordScoreTw-courseRecordScoreOn));
-                                    }else{
-                                        qualityControlDTO.setCourseRecordScore(courseRecordScoreOn+(courseRecordScoreTw-courseRecordScoreOn));
-                                    }
-                                    break;
-
-                            }
-
-
-
-                        } if(StringUtils.isEmpty(caseScoreDTO.getBehospitalCode())){
-                            QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
-                            BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
                         }
-
-                    };
-                    Double otherScore = new Double(0d);
-                    Double mainScore = new Double(0d);
-                    Double otherCaseScore = null;
-                    Double res = new Double(120d);
-                    Double resPr = new Double(100d);
-                    String scoreType = "0";
-                    mainScore =  qualityControlDTO.getMedHomePageScore()+qualityControlDTO.getAdmissionNoteScore()+qualityControlDTO.getFirstCourseNoteScore()+
-                            qualityControlDTO.getCourseRecordScore()+qualityControlDTO.getOperationInfoScore()+qualityControlDTO.getDischargeNoteScore()+qualityControlDTO. getDocAdviceNoteScore();
-                    scoreType = sysHospitalSetFacade.getScoreType(behospitalPageVO.getHospitalId());
-                    if ("1".equals(scoreType)) {
-                        otherScore = (resPr-qualityControlDTO.getTotalScore()-mainScore);
-                    } else if ("0".equals(scoreType)) {
-                        otherScore = res-(qualityControlDTO.getTotalScore()*res/resPr)-mainScore;
                     }
-                    otherCaseScore =  Double.valueOf(df.format(otherScore));
-                    qualityControlDTO.setOtherCaseScore(otherCaseScore == null ? 0d : otherCaseScore  );
-                    qualityControlDTO.setTotalScore(rePlaceTolScore);
-                }else{
+                    algorithmVO.setType(0);
+                    algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+                    getScoreForCx(algorithmVO,qualityControlDTO);
+                }
+                if(qualityControlDTO.getLevel().equals("未评分")){
                     QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
                     BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
                 }
@@ -2827,7 +2311,7 @@ public class ConsoleFacade {
      * @param algorithmVO 操作条目的所有信息
      * @return 评结果分数
      */
-    private BigDecimal getScoreForCx(AlgorithmVO algorithmVO) {
+    private void getScoreForCx(AlgorithmVO algorithmVO,QualityControlDTO qualityControlDTO) {
         List<QcResultAlgVO> qcResultAlgHomePage = new ArrayList<>();
         List<QcResultAlgVO> qcResultAlgHomePageExt = new ArrayList<>();
         for (QcResultAlgVO qcResultAlgVO : algorithmVO.getQcResultAlgVOList()) {
@@ -2839,47 +2323,19 @@ public class ConsoleFacade {
                 qcResultAlgHomePageExt.add(qcResultAlgVO);
             }
         }
-        List<MedQcresultCasesVO> medQcresultCasesVOList = new ArrayList<>();
+
         //病案首页
         AlgorithmVO homePage = new AlgorithmVO();
         BeanUtil.copyProperties(algorithmVO, homePage);
         homePage.setQcResultAlgVOList(qcResultAlgHomePage);
         homePage.setIsHomePage(true);
-        BigDecimal homePageRes = cal(homePage);
-        String level = getHomePageLevel(homePageRes);
-        MedQcresultCasesVO medQcresultCasesVOHp = new MedQcresultCasesVO();
-        medQcresultCasesVOHp.setHospitalId(algorithmVO.getHospitalId());
-        medQcresultCasesVOHp.setBehospitalCode(algorithmVO.getBehospitalCode());
-        medQcresultCasesVOHp.setCasesId(243L);
-        medQcresultCasesVOHp.setScoreRes(homePageRes);
-        medQcresultCasesVOHp.setLevel(level);
-        medQcresultCasesVOList.add(medQcresultCasesVOHp);
+        cal(homePage, qualityControlDTO);
+
         //病案首页以外
         AlgorithmVO homePageExt = new AlgorithmVO();
         BeanUtil.copyProperties(algorithmVO, homePageExt);
         homePageExt.setQcResultAlgVOList(qcResultAlgHomePageExt);
-        BigDecimal homePageExtRes = cal(homePageExt);
-        MedQcresultCasesVO medQcresultCasesVOHpExt = new MedQcresultCasesVO();
-        medQcresultCasesVOHpExt.setHospitalId(algorithmVO.getHospitalId());
-        medQcresultCasesVOHpExt.setBehospitalCode(algorithmVO.getBehospitalCode());
-        medQcresultCasesVOHpExt.setCasesId(0L);
-        medQcresultCasesVOHpExt.setScoreRes(homePageExtRes);
-        medQcresultCasesVOHpExt.setLevel("");
-        medQcresultCasesVOList.add(medQcresultCasesVOHpExt);
-        algorithmVO.setMedQcresultCasesVOList(medQcresultCasesVOList);
-        //计算分数
-        BigDecimal res = homePageRes
-                .add(homePageExtRes)
-                .multiply(new BigDecimal(100))
-                .divide(new BigDecimal(120), 2, RoundingMode.HALF_UP);
-        // 判断是否是百分制
-        if (sysHospitalSetFacade.getScoreType(algorithmVO.getHospitalId()).equals("1")
-                ||(algorithmVO.getHospitalId().intValue() == 1
-                && StringUtil.isNotBlank(algorithmVO.getIsPlacefile())
-                && algorithmVO.getIsPlacefile().equals("0"))) {
-            res = cal(algorithmVO);
-        }
-        return res;
+        cal(homePageExt,qualityControlDTO);
     }
 
     /**
@@ -2888,31 +2344,38 @@ public class ConsoleFacade {
      * @param algorithmVO 操作条目的所有信息
      * @return 评分分数
      */
-    private BigDecimal cal(AlgorithmVO algorithmVO) {
-        BigDecimal res = new BigDecimal(100);
-        //统一为长兴的算法
-        if (algorithmVO.getIsHomePage().equals(true)) {
-            res = new BigDecimal(20);
-        }
+    private void cal(AlgorithmVO algorithmVO ,QualityControlDTO qualityControlDTO) {
+
         //模块总分
         Map<Long, BigDecimal> casesMap = new HashMap<>();
         //单票否决计分
-        BigDecimal rejectScore = BigDecimal.ZERO;
+        Map<Long, BigDecimal> rejectScoreMap = new HashMap<>();
         //模块计分
         Map<Long, BigDecimal> casesScoreMap = new HashMap<>();
+        //模块缺陷统计
+        Map<Long, String> casesNameMap = new HashMap<>();
+        //扣分统计
+        Map<Long, BigDecimal> scoreMap = new HashMap<>();
 
         List<QcResultAlgVO> qcResultAlgVOList = algorithmVO.getQcResultAlgVOList();
         if (ListUtil.isNotEmpty(qcResultAlgVOList)) {
             for (QcResultAlgVO qcResultAlgVO : qcResultAlgVOList) {
                 if (!casesMap.containsKey(qcResultAlgVO.getCasesId())) {
+                    //模块总分
                     casesMap.put(qcResultAlgVO.getCasesId(), qcResultAlgVO.getCasesScore());
                 }
                 if (!casesScoreMap.containsKey(qcResultAlgVO.getCasesId())) {
                     casesScoreMap.put(qcResultAlgVO.getCasesId(), BigDecimal.ZERO);
+                    rejectScoreMap.put(qcResultAlgVO.getCasesId(), BigDecimal.ZERO);
+                    casesNameMap.put(qcResultAlgVO.getCasesId(),"");
                 }
                 //单票否决计分
                 if (qcResultAlgVO.getIsReject().equals(1)) {
-                    rejectScore = rejectScore.add(qcResultAlgVO.getScore());
+                    if (rejectScoreMap.containsKey(qcResultAlgVO.getCasesId())) {
+                        BigDecimal casesScore = rejectScoreMap.get(qcResultAlgVO.getCasesId());
+                        casesScore = casesScore.add(qcResultAlgVO.getScore());
+                        rejectScoreMap.put(qcResultAlgVO.getCasesId(), casesScore);
+                    }
                 } else {
                     //非单票否决计分
                     if (casesScoreMap.containsKey(qcResultAlgVO.getCasesId())) {
@@ -2921,40 +2384,236 @@ public class ConsoleFacade {
                         casesScoreMap.put(qcResultAlgVO.getCasesId(), casesScore);
                     }
                 }
+                String casesName = casesNameMap.get(qcResultAlgVO.getCasesId());
+                if(StringUtils.isEmpty(casesName)){
+                    casesName =  casesName + qcResultAlgVO.getMsg();
+                }else{
+                    casesName =  casesName + ";" + qcResultAlgVO.getMsg();
+                }
+                casesNameMap.put(qcResultAlgVO.getCasesId(),casesName);
             }
 
-            //结果先减去单票否决计分总和
-            res = res.subtract(rejectScore);
-            //结果小于0按0计算
-            if (BigDecimalUtil.lt(res, BigDecimal.ZERO)) {
-                return BigDecimal.ZERO;
-            } else {
+
                 //模块计分
                 for (Map.Entry<Long, BigDecimal> casesScore : casesScoreMap.entrySet()) {
                     BigDecimal allSccore = casesMap.get(casesScore.getKey());
                     if (BigDecimalUtil.le(allSccore, casesScore.getValue())) {
                         //模块标准分小于等于模块减分总和就用模块标准分
-                        res = res.subtract(allSccore);
+                        allSccore = allSccore.add(rejectScoreMap.get(casesScore.getKey()));
                     } else {
                         //模块标准分大于模块减分总和就用模块减分总和
-                        res = res.subtract(casesScore.getValue());
+                        allSccore =casesScore.getValue().add(rejectScoreMap.get(casesScore.getKey()));
+
                     }
+                    if (BigDecimalUtil.lt(allSccore, BigDecimal.ZERO)) {
+                        allSccore = BigDecimal.ZERO;
+                    }
+                    scoreMap.put(casesScore.getKey(),allSccore);
+                }
+
+
+            DecimalFormat df=new DecimalFormat("0.0");
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(237L))){
+                    qualityControlDTO.setAdmissionNote(casesNameMap.get(237L));
                 }
+                if( scoreMap.get(237L) != null){
+                qualityControlDTO.setAdmissionNoteScore( Double.valueOf(df.format(scoreMap.get(237L))));
             }
-            //结果小于0按0计算
-            if (BigDecimalUtil.lt(res, BigDecimal.ZERO)) {
-                res = BigDecimal.ZERO;
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(238L))){
+                    qualityControlDTO.setFirstCourseNote(casesNameMap.get(238L));
             }
+            if( scoreMap.get(238L) != null){
+                qualityControlDTO.setFirstCourseNoteScore( Double.valueOf(df.format(scoreMap.get(238L))));
+            }
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(242L))){
+                    qualityControlDTO.setDischargeNote(casesNameMap.get(242L));
+                }
+            if( scoreMap.get(242L) != null){
+                qualityControlDTO.setDischargeNoteScore( Double.valueOf(df.format(scoreMap.get(242L))));
+            }
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(243L))){
+                    qualityControlDTO.setMedHomePage(casesNameMap.get(243L));
+                }
+            if( scoreMap.get(243L) != null){
+                qualityControlDTO.setMedHomePageScore( Double.valueOf(df.format(scoreMap.get(243L))));
+            }
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(280L))){
+                    qualityControlDTO.setDocAdviceNote(casesNameMap.get(280L));
+                }
+            if( scoreMap.get(280L) != null){
+                qualityControlDTO.setDocAdviceNoteScore( Double.valueOf(df.format(scoreMap.get(280L))));
+            }
+
+
+            String operationInfo = "";
+                if(StringUtils.isNotEmpty(casesNameMap.get(248L))){
+                    operationInfo = "围手术期病历讨论:"+casesNameMap.get(248L);
+                }
+                if(StringUtils.isNotEmpty(casesNameMap.get(249L))){
+                    operationInfo = operationInfo+";"+"术前讨论制度:"+casesNameMap.get(249L);
+                }
+                if(operationInfo.contains(";")){
+                    String[] split = operationInfo.split(";");
+                    if(StringUtils.isEmpty(split[0])){
+                        operationInfo = split[1];
+                    }
+                }
+
+                qualityControlDTO.setOperationInfo(StringUtils.isEmpty(operationInfo)==true?"无缺陷":operationInfo);
+
+                Double score_248 = 0d;
+                Double score_11 = 0d;
+                Double score_249 = 0d;
+            if( scoreMap.get(248L) != null){
+                score_248 = Double.valueOf(df.format(scoreMap.get(248L)));
+            }
+            if( scoreMap.get(11L) != null){
+                score_11 =  Double.valueOf(df.format(scoreMap.get(11L)));
+            }
+            if( scoreMap.get(249L) != null){
+                score_249 = Double.valueOf(df.format(scoreMap.get(249L)));
+            }
+                qualityControlDTO.setOperationInfoScore(score_248+score_11+score_249);
+            }
+
+       String courseRecord = "";
+        if(StringUtils.isNotEmpty(casesNameMap.get(239L))){
+            courseRecord = "死亡病例讨论制度:"+casesNameMap.get(239L);
         }
-        return res;
-    }
-    private String getHomePageLevel(BigDecimal score) {
-        String level = "不合格";
-        //得分≥18分为甲级
-        if (BigDecimalUtil.ge(score, new BigDecimal(18))) {
-            level = "合格";
+        if(StringUtils.isNotEmpty(casesNameMap.get(240L))){
+            courseRecord = courseRecord+";"+"疑难病例讨论制度:"+casesNameMap.get(240L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(241L))){
+            courseRecord =courseRecord+";"+ "三级查房制度:"+casesNameMap.get(241L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(244L))){
+            courseRecord =courseRecord+";"+ "会诊制度:"+casesNameMap.get(244L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(245L))){
+            courseRecord =courseRecord+";"+ "分级护理制度:"+casesNameMap.get(245L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(246L))){
+            courseRecord = courseRecord+";"+"值班及交接班制度:"+casesNameMap.get(246L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(247L))){
+            courseRecord = courseRecord+";"+"临床用血审核制度:"+casesNameMap.get(247L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(250L))){
+            courseRecord =courseRecord+";"+ "死亡记录:"+casesNameMap.get(250L);
+        }
+        if(courseRecord.contains(";")) {
+            String[] courseRecordSplit = courseRecord.split(";");
+            if (StringUtils.isEmpty(courseRecordSplit[0])) {
+                courseRecord = courseRecordSplit[1];
+            }
         }
-        return level;
+        qualityControlDTO.setCourseRecord(StringUtils.isEmpty(courseRecord)==true?"无缺陷":courseRecord);
+
+
+        Double score_239 = 0d;
+        Double score_240 = 0d;
+        Double score_241 = 0d;
+        Double score_244 = 0d;
+        Double score_245 = 0d;
+        Double score_246 = 0d;
+        Double score_247 = 0d;
+        Double score_250 = 0d;
+        DecimalFormat df=new DecimalFormat("0.0");
+        if( scoreMap.get(239L) != null){
+            score_239 =  Double.valueOf(df.format(scoreMap.get(239L)));
+        }
+        if( scoreMap.get(240L) != null){
+            score_240 =  Double.valueOf(df.format(scoreMap.get(240L)));
+        }
+        if( scoreMap.get(241L) != null){
+            score_241 =  Double.valueOf(df.format(scoreMap.get(241L)));
+        }
+        if( scoreMap.get(244L) != null){
+            score_244 =  Double.valueOf(df.format(scoreMap.get(244L)));
+        }
+        if( scoreMap.get(245L) != null){
+            score_245 =  Double.valueOf(df.format(scoreMap.get(245L)));
+        }
+        if( scoreMap.get(246L) != null){
+            score_246 =  Double.valueOf(df.format(scoreMap.get(246L)));
+        }
+        if( scoreMap.get(247L) != null){
+            score_247 =  Double.valueOf(df.format(scoreMap.get(247L)));
+        }
+        if( scoreMap.get(250L) != null){
+            score_250 =  Double.valueOf(df.format(scoreMap.get(250L)));
+
+        }
+        qualityControlDTO.setCourseRecordScore(score_239+score_240+score_241+score_244+score_245+score_246+score_247+score_250);
+                  /*  qualityControlDTO.setCourseRecord(name_239+";"+name_240
+                                    +";"+name_241+";"+name_244+";"+name_245
+                                    +";"+name_246+";"+name_247+";"+name_250);
+                    qualityControlDTO.setCourseRecordScore(score_239+score_240+score_241+score_244+score_245+score_246
+                            +score_247+score_250);*/
+
+
+
+
+        Double score_262 = 0d;
+        Double score_281 = 0d;
+        Double score_282 = 0d;
+        Double score_283 = 0d;
+        Double score_284 = 0d;
+        if( scoreMap.get(262L) != null){
+            score_262 =  Double.valueOf(df.format(scoreMap.get(262L)));
+        }
+        if( scoreMap.get(281L) != null){
+            score_281 =  Double.valueOf(df.format(scoreMap.get(281L)));
+        }
+        if( scoreMap.get(282L) != null){
+            score_282 =  Double.valueOf(df.format(scoreMap.get(282L)));
+        }
+        if( scoreMap.get(283L) != null){
+            score_283 =  Double.valueOf(df.format(scoreMap.get(283L)));
+        }
+        if( scoreMap.get(284L) != null){
+            score_284 =  Double.valueOf(df.format(scoreMap.get(284L)));
+
+        }
+
+        String otherCase = "";
+        if(StringUtils.isNotEmpty(casesNameMap.get(262L))){
+            otherCase = "危急值报告制度:"+casesNameMap.get(262L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(281L))){
+            otherCase = otherCase +";"+"危急值报告制度:"+casesNameMap.get(281L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(282L))){
+            otherCase = otherCase +";"+ "危急值报告制度:"+casesNameMap.get(282L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(283L))){
+            otherCase = otherCase +";"+ "危急值报告制度:"+casesNameMap.get(283L);
+        }
+        if(StringUtils.isNotEmpty(casesNameMap.get(284L))){
+            otherCase = otherCase +";"+ "危急值报告制度:"+casesNameMap.get(284L);
+        }
+        if(otherCase.contains(";")) {
+        String[] otherCaseSplit = otherCase.split(";");
+        if(StringUtils.isEmpty(otherCaseSplit[0])){
+            otherCase = otherCaseSplit[1];
+        }
+        }
+            qualityControlDTO.setOtherCase(StringUtils.isEmpty(otherCase)==true?"无缺陷":otherCase);
+            qualityControlDTO.setOtherCaseScore(score_262+score_281+score_282+score_283+score_284);
+
     }
 }
 

+ 4 - 0
src/main/java/com/diagbot/util/ExcelUtils.java

@@ -7,6 +7,7 @@ import cn.afterturn.easypoi.excel.entity.ExportParams;
 import cn.afterturn.easypoi.excel.entity.ImportParams;
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
 import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
+import cn.afterturn.easypoi.excel.export.styler.ExcelExportStylerDefaultImpl;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.ExcelExportStylerUserImpl;
@@ -114,6 +115,9 @@ public class ExcelUtils {
 
     private static void userExport2(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
                                     ExportParams exportParams, float height, Boolean havTitle) {
+        if(exportParams.getTitle().equals("病历质控报表")){
+            exportParams.setTitleHeight(Short.valueOf("20"));
+        };
         Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
         if (workbook != null) {
             Sheet sheet = workbook.getSheetAt(0);

+ 2 - 2
src/main/java/com/diagbot/web/ConsoleByDeptController.java

@@ -516,7 +516,7 @@ public class ConsoleByDeptController {
      * @param behospitalPageVO
      * @return
      */
-    @ApiOperation(value = "病历质控报表[by:cy]",
+    @ApiOperation(value = "病历质控报表-科室[by:cy]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
                     "level: 病历等级 <br>" +
                     "name: 科室名称 <br>" +
@@ -525,7 +525,7 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/qualityControlByDept")
     @SysLogger("qualityControlByDept")
-    public RespDTO<IPage<QualityControlDTO>> qualityControlByDept(@RequestBody BehospitalPageVO behospitalPageVO) {
+    public RespDTO<IPage<QualityControlDeptDTO>> qualityControlByDept(@RequestBody BehospitalPageVO behospitalPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.qualityControlByDept(behospitalPageVO));
     }
 

+ 10 - 10
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -144,10 +144,9 @@
     </select>
 
     <select id="getQualityCaseSorce" resultType="com.diagbot.dto.CaseScoreDTO">
-     SELECT  a.cases_id as casesId,c.cases_entry_id as casesEntryId,c.behospital_code as behospitalCode,a.mode_id as modelId,c.score,c.cases_score as casesScore,c.msg,c.is_reject as isReject
-        FROM `qc_cases_entry` a, med_qcresult_detail c,med_behospital_info e
-        where a.is_deleted = 'N' and c.is_deleted = 'N'AND e.is_deleted = 'N'
-        and a.id = c.cases_entry_id
+     SELECT  c.cases_id as casesId,c.cases_entry_id as casesEntryId,c.behospital_code as behospitalCode,c.score,c.cases_score as casesScore,c.msg,c.is_reject as isReject
+        FROM  med_qcresult_detail c,med_behospital_info e
+        where c.is_deleted = 'N'AND e.is_deleted = 'N'
         AND c.behospital_code = e.behospital_code
         AND c.hospital_id = e.hospital_id
         and c.hospital_id = #{hospitalId}
@@ -172,15 +171,14 @@
         <if test="leaveHosDateEnd != null">
             <![CDATA[ and e.leave_hospital_date < #{leaveHosDateEnd}]]>
         </if>
-        GROUP BY c.behospital_code,a.mode_id,c.cases_entry_id
+        GROUP BY c.behospital_code,c.cases_id,c.cases_entry_id
         order by c.behospital_code
     </select>
 
     <select id="getQualityCaseSorceByDept" resultType="com.diagbot.dto.CaseScoreDTO">
-        SELECT a.cases_id as casesId,c.cases_entry_id as casesEntryId,c.behospital_code as behospitalCode,a.mode_id as modelId,c.score,c.cases_score as casesScore,c.msg,c.is_reject as isReject
-        FROM `qc_cases_entry` a, med_qcresult_detail c,sys_user_dept d,med_behospital_info e
-        where a.is_deleted = 'N' and c.is_deleted = 'N' AND d.is_deleted = 'N' AND e.is_deleted = 'N'
-        and a.id = c.cases_entry_id
+        SELECT c.cases_id as casesId,c.cases_entry_id as casesEntryId,c.behospital_code as behospitalCode,c.score,c.cases_score as casesScore,c.msg,c.is_reject as isReject
+        FROM  med_qcresult_detail c,sys_user_dept d,med_behospital_info e
+        where  c.is_deleted = 'N' AND d.is_deleted = 'N' AND e.is_deleted = 'N'
         AND c.behospital_code = e.behospital_code
         ON d.hospital_id = e.hospital_id
         AND e.beh_dept_id = d.dept_id
@@ -210,13 +208,14 @@
         <if test="leaveHosDateEnd != null">
             <![CDATA[ and e.leave_hospital_date < #{leaveHosDateEnd}]]>
         </if>
-        GROUP BY c.behospital_code,a.mode_id,c.cases_entry_id
+        GROUP BY c.behospital_code,c.cases_id,c.cases_entry_id
         order by c.behospital_code
     </select>
 
     <select id="getQualityControl" resultType="com.diagbot.dto.QualityControlDTO">
         SELECT * FROM (
         select
+        distinct
         t.name AS NAME,
         t.behospital_code AS behospitalCode,
         t.doctor_name AS doctorName,
@@ -307,6 +306,7 @@
     <select id="qualityControlByDept" resultType="com.diagbot.dto.QualityControlDeptDTO">
         SELECT * FROM (
         select
+        distinct
         t.name AS NAME,
         t.behospital_code AS behospitalCode,
         t.doctor_name AS doctorName,