chengyao %!s(int64=4) %!d(string=hai) anos
pai
achega
fc266d7ac7

+ 14 - 67
src/main/java/com/diagbot/dto/QualityControlDTO.java

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

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

@@ -77,18 +77,13 @@ public class QualityControlNullDTO {
      */
     @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;
 
 
 
@@ -97,8 +92,6 @@ public class QualityControlNullDTO {
      */
     @Excel(name = "扣分",width = 12, orderNum = "11")
     private Double firstCourseNoteScore;
-    private Double firstCourseNoteScoreOn;
-    private Double firstCourseNoteScoreTw;
 
 
     /**
@@ -106,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;
+
 
     /**
      * 其他扣分
@@ -146,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;
-
-
 
 }

+ 257 - 572
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,239 +1271,17 @@ 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);
-                            }
                         }
-                    };
+            }
+                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;
-                    }
-                }
-
-            };
-                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);
+                 getScoreForCx(algorithmVO,qualityControlDTO);
             }
             if(qualityControlDTO.getLevel().equals("未评分")){
                 QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
@@ -1546,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();
@@ -1554,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);
@@ -1586,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);
                 }
@@ -2815,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()) {
@@ -2827,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);
     }
 
     /**
@@ -2876,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())) {
@@ -2909,40 +2384,250 @@ 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);
+                }
+
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(237L))){
+                    qualityControlDTO.setAdmissionNote("入院记录:"+casesNameMap.get(237L));
                 }
+                if( scoreMap.get(237L) != null){
+                qualityControlDTO.setAdmissionNoteScore(scoreMap.get(237L).doubleValue());
             }
-            //结果小于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(scoreMap.get(238L).doubleValue());
+            }
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(242L))){
+                    qualityControlDTO.setDischargeNote("出院记录:"+casesNameMap.get(242L));
+                }
+            if( scoreMap.get(242L) != null){
+                qualityControlDTO.setDischargeNoteScore(scoreMap.get(242L).doubleValue());
+            }
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(243L))){
+                    qualityControlDTO.setMedHomePage("病案首页:"+casesNameMap.get(243L));
+                }
+            if( scoreMap.get(243L) != null){
+                qualityControlDTO.setMedHomePageScore(scoreMap.get(243L).doubleValue());
             }
+
+
+
+                if(StringUtils.isNotEmpty(casesNameMap.get(280L))){
+                    qualityControlDTO.setDocAdviceNote("医嘱单:"+casesNameMap.get(280L));
+                }
+            if( scoreMap.get(280L) != null){
+                qualityControlDTO.setDocAdviceNoteScore(scoreMap.get(280L).doubleValue());
+            }
+
+                 String name_248 = "";
+                 String name_249 = "";
+            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(248) != null){
+                score_248 = scoreMap.get(248).doubleValue();
+            }
+            if( scoreMap.get(11) != null){
+                score_11 = scoreMap.get(11).doubleValue();
+            }
+            if( scoreMap.get(249) != null){
+                score_249= scoreMap.get(249).doubleValue();
+            }
+                qualityControlDTO.setOperationInfoScore(score_248+score_11+score_249);
+            }
+
+        String name_239 = "";
+        String name_240 = "";
+        String name_241= "";
+        String name_244 = "";
+        String name_245 = "";
+        String name_246 = "";
+        String name_247 = "";
+        String name_250 = "";
+
+       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);
         }
-        return level;
+        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;
+        if( scoreMap.get(239L) != null){
+            score_239 = scoreMap.get(239L).doubleValue();
+        }
+        if( scoreMap.get(240L) != null){
+            score_240 = scoreMap.get(240L).doubleValue();
+        }
+        if( scoreMap.get(241L) != null){
+            score_241= scoreMap.get(241L).doubleValue();
+        }
+        if( scoreMap.get(244L) != null){
+            score_244= scoreMap.get(244L).doubleValue();
+        }
+        if( scoreMap.get(245L) != null){
+            score_245= scoreMap.get(245L).doubleValue();
+        }
+        if( scoreMap.get(246L) != null){
+            score_246= scoreMap.get(246L).doubleValue();
+        }
+        if( scoreMap.get(247L) != null){
+            score_247= scoreMap.get(247L).doubleValue();
+        }
+        if( scoreMap.get(250L) != null){
+            score_250= scoreMap.get(250L).doubleValue();
+        }
+        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 = scoreMap.get(262L).doubleValue();
+        }
+        if( scoreMap.get(281L) != null){
+            score_281 = scoreMap.get(281L).doubleValue();
+        }
+        if( scoreMap.get(282L) != null){
+            score_282= scoreMap.get(282L).doubleValue();
+        }
+        if( scoreMap.get(283L) != null){
+            score_283 = scoreMap.get(283L).doubleValue();
+        }
+        if( scoreMap.get(284L) != null){
+            score_284 = scoreMap.get(284L).doubleValue();
+
+        }
+        String name_262 = "";
+        String name_281 = "";
+        String name_282 = "";
+        String name_283 = "";
+        String name_284 = "";
+
+        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);
+
     }
 }
 

+ 8 - 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,7 +208,7 @@
         <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>