Kaynağa Gözat

质控全院页面修复

chengyao 4 yıl önce
ebeveyn
işleme
4a3b396f76

+ 36 - 0
src/main/java/com/diagbot/dto/QualityBehospitalExportDTO.java

@@ -0,0 +1,36 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/6/2 19:35
+ */
+@Getter
+@Setter
+public class QualityBehospitalExportDTO {
+    @Excel(name = "主管医生", needMerge = true)
+    private String doctorName;
+    @Excel(name = "患者姓名", needMerge = true)
+    private String patName;
+    @Excel(name = "住院号", needMerge = true)
+    private String behospitalCode;
+    @Excel(name = "入院时间", needMerge = true, exportFormat = "yyyy/MM/dd")
+    private Date behospitalDate;
+    @Excel(name = "出院时间", needMerge = true, exportFormat = "yyyy/MM/dd")
+    private Date leaveHospitalDate;
+    @Excel(name = "分数", needMerge = true)
+    private Double score;
+    @Excel(name = "病案首页分数", needMerge = true)
+    private Double scoreBn;
+    @ExcelCollection(name = "")
+    private List<ExportExcelCaseDTO> exportExcelCaseDTOS;
+
+}

+ 24 - 0
src/main/java/com/diagbot/dto/QualityExportExcelDTO.java

@@ -0,0 +1,24 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/6/2 19:00
+ */
+@Getter
+@Setter
+public class QualityExportExcelDTO {
+    @Excel(name = "科室", needMerge = true,orderNum ="4")
+    private String behDeptName;
+    @ExcelCollection(name = "")
+    private List<QualityBehospitalExportDTO> excelBehospitalDTOS;
+
+
+}

+ 275 - 0
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java

@@ -11,6 +11,7 @@ import com.diagbot.exception.CommonException;
 import com.diagbot.util.*;
 import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -1062,7 +1063,281 @@ public class ConsoleByDeptFacade {
      */
     public IPage<QualityControlDTO> qualityControlByDept(@Param("filterVO")  BehospitalPageVO behospitalPageVO) {
         behospitalPageSet(behospitalPageVO);
+        DecimalFormat df=new DecimalFormat("0.0");
         IPage<QualityControlDTO> records = behospitalInfoFacade.qualityControlByDept(behospitalPageVO);
+        List<QualityControlDTO> qualityControlDTOs = records.getRecords();
+        CaseScoreVO caseScoreVO = new CaseScoreVO();
+        BeanUtil.copyProperties(behospitalPageVO,caseScoreVO);
+        List<CaseScoreDTO>caseScoreDTOS= behospitalInfoFacade.getQualityCaseSorce(caseScoreVO);
+        if(ListUtil.isNotEmpty(qualityControlDTOs)){
+            qualityControlDTOs.forEach(qualityControlDTO->{
+                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)){
+                    for (CaseScoreDTO caseScoreDTO : caseScoreDTOS) {
+                        if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
+                                StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
+                                qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
+                            double targetScore =  Double.valueOf(df.format(caseScoreDTO.getScore()));
+                            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;
+                        }
+                    };
+                    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  );
+                }else{
+                    QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
+                    BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
+                }
+            });
+        };
         return records;
     }
 

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

@@ -612,13 +612,13 @@ public class ConsoleExportFacade {
     Date startDate = behospitalPageVO.getLeaveHosDateStart();
     Date endDate = behospitalPageVO.getLeaveHosDateEnd();
     //时间间隔7天
-    long interval = 90 * 24l * 60l * 60l * 1000l;
+//    long interval = 90 * 24l * 60l * 60l * 1000l;
         if (endDate.getTime() < startDate.getTime()) {
         throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
     }
-        if (endDate.getTime() - startDate.getTime() > interval) {
-        throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于90天");
-    }
+//        if (endDate.getTime() - startDate.getTime() > interval) {
+//        throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于90天");
+//    }
 
         behospitalPageVO.setCurrent(1L);
         behospitalPageVO.setSize(Long.MAX_VALUE);

+ 33 - 30
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -1255,17 +1255,13 @@ public class ConsoleFacade {
      */
     public IPage<QualityControlDTO> getQualityControl(BehospitalPageVO behospitalPageVO) {
         behospitalPageSet(behospitalPageVO);
-        long startTime = System.currentTimeMillis();
+        DecimalFormat df=new DecimalFormat("0.0");
         IPage<QualityControlDTO> records = behospitalInfoFacade.getQualityControl(behospitalPageVO);
       //  List<QualityControlDTO> qualityControlDTO = records.getRecords();
         List<QualityControlDTO> qualityControlDTOs = records.getRecords();
-        long endTime1 = System.currentTimeMillis();
-        System.out.println("endTime1 = " + (endTime1-startTime));
         CaseScoreVO caseScoreVO = new CaseScoreVO();
         BeanUtil.copyProperties(behospitalPageVO,caseScoreVO);
         List<CaseScoreDTO>caseScoreDTOS= behospitalInfoFacade.getQualityCaseSorce(caseScoreVO);
-        long endTime2 = System.currentTimeMillis();
-        System.out.println("endTime2 = " + (endTime2-endTime1));
         if(ListUtil.isNotEmpty(qualityControlDTOs)){
         qualityControlDTOs.forEach(qualityControlDTO->{
             StringBuffer admissionNote = new StringBuffer();
@@ -1276,27 +1272,26 @@ public class ConsoleFacade {
             StringBuffer operationInfo = new StringBuffer();
             StringBuffer courseRecord = new StringBuffer();
             StringBuffer otherCase = new StringBuffer();
-            Double admissionNoteScoreOn = qualityControlDTO.getAdmissionNoteScoreOn();
-            Double admissionNoteScoreTw = qualityControlDTO.getAdmissionNoteScoreTw();
-            Double firstCourseNoteScoreOn = qualityControlDTO.getFirstCourseNoteScoreOn();
-            Double firstCourseNoteScoreTw = qualityControlDTO.getFirstCourseNoteScoreTw();
-            Double dischargeNoteScoreOn = qualityControlDTO.getDischargeNoteScoreOn();
-            Double dischargeNoteScoreTw = qualityControlDTO.getDischargeNoteScoreTw();
-            Double medHomePageScoreOn = qualityControlDTO.getMedHomePageScoreOn();
-            Double medHomePageScoreTw = qualityControlDTO.getMedHomePageScoreTw();
-            Double docAdviceNoteScoreOn = qualityControlDTO.getDocAdviceNoteScoreOn();
-            Double docAdviceNoteScoreTw = qualityControlDTO.getDocAdviceNoteScoreTw();
-            Double operationInfoScoreOn = qualityControlDTO.getOperationInfoScoreOn();
-            Double operationInfoScoreTw = qualityControlDTO.getOperationInfoScoreTw();
-            Double courseRecordScoreOn = qualityControlDTO.getCourseRecordScoreOn();
-            Double courseRecordScoreTw = qualityControlDTO.getCourseRecordScoreTw();
+            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)){
             for (CaseScoreDTO caseScoreDTO : caseScoreDTOS) {
                         if (StringUtils.isNotEmpty(qualityControlDTO.getBehospitalCode())&&
                                 StringUtils.isNotEmpty(caseScoreDTO.getBehospitalCode())&&
                                 qualityControlDTO.getBehospitalCode().equals(caseScoreDTO.getBehospitalCode())) {
-                            System.out.println("caseScoreDTO = " + caseScoreDTO);
-                            double targetScore = (double) Math.round(caseScoreDTO.getScore() * 10) / 10;
+                            double targetScore =  Double.valueOf(df.format(caseScoreDTO.getScore()));
                             switch (caseScoreDTO.getModelId()) {
                                 case "1":
                                     String admissionMsg = caseScoreDTO.getMsg() + ";";
@@ -1305,10 +1300,12 @@ public class ConsoleFacade {
                                     //非单项否决总分
                                     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":
@@ -1316,9 +1313,11 @@ public class ConsoleFacade {
                                     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":
@@ -1326,9 +1325,11 @@ public class ConsoleFacade {
                                     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":
@@ -1336,9 +1337,11 @@ public class ConsoleFacade {
                                     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":
@@ -1346,9 +1349,11 @@ public class ConsoleFacade {
                                     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":
@@ -1356,9 +1361,11 @@ public class ConsoleFacade {
                                     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":
@@ -1366,9 +1373,11 @@ public class ConsoleFacade {
                                     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;
 
@@ -1514,21 +1523,15 @@ public class ConsoleFacade {
                 } else if ("0".equals(scoreType)) {
                     otherScore = res-(qualityControlDTO.getTotalScore()*res/resPr)-mainScore;
                 }
-                otherCaseScore = (double) Math.round(otherScore * 10) / 10;
+                otherCaseScore =  Double.valueOf(df.format(otherScore));
                 qualityControlDTO.setOtherCaseScore(otherCaseScore == null ? 0d : otherCaseScore  );
-
-
             }else{
                 QualityControlNullDTO qualityControlNullDTO = new QualityControlNullDTO();
                 BeanUtil.copyProperties(qualityControlNullDTO,qualityControlDTO);
             }
+        });
+        };
 
-
-
-        });};
-        long endTime3 = System.currentTimeMillis();
-        System.out.println("endTime3 = " + (endTime3-endTime2));
-        System.out.println("总 = " + (endTime3-startTime));
         //模块总扣分
  /*       CaseScoreVO caseScoreVO = new CaseScoreVO();
         BeanUtil.copyProperties(behospitalPageVO,caseScoreVO);

+ 7 - 0
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -171,6 +171,13 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public List<CaseScoreDTO> getQualityCaseSorce(CaseScoreVO caseScoreVO);
 
+    /**
+     * 病历质控报表科室-扣分数据
+     *
+     * @param caseScoreVO
+     * @return
+     */
+    public List<CaseScoreDTO> getQualityCaseSorceByDept(CaseScoreVO caseScoreVO);
 
 
     /**

+ 10 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -181,6 +181,16 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      */
     public List<CaseScoreDTO> getQualityCaseSorce(CaseScoreVO caseScoreVO);
 
+    /**
+     * 病历质控报表-科室
+     *
+     * @param caseScoreVO
+     * @return
+     */
+    public List<CaseScoreDTO> getQualityCaseSorceByDept(CaseScoreVO caseScoreVO);
+
+
+
 
     /**
      * 病历质控报表

+ 12 - 0
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -244,6 +244,18 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<CaseScoreDTO> getQualityCaseSorce(CaseScoreVO caseScoreVO) {
         return baseMapper.getQualityCaseSorce(caseScoreVO);
     }
+
+    /**
+     * 病历质控报表科室-扣分数据
+     *
+     * @param caseScoreVO
+     * @return
+     */
+    @Override
+    public List<CaseScoreDTO> getQualityCaseSorceByDept(CaseScoreVO caseScoreVO) {
+        return baseMapper.getQualityCaseSorceByDept(caseScoreVO);
+    }
+
     /**
      * 病历质控报表
      *

+ 43 - 8
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -143,7 +143,7 @@
         </if>
     </select>
 
-    <select id="getQualityCase" resultType="com.diagbot.dto.QualityControlDTO">
+   <!-- <select id="getQualityCase" resultType="com.diagbot.dto.QualityControlDTO">
         SELECT
         m1.* ,
         m2.score_res as totalScore
@@ -297,7 +297,7 @@
         ORDER BY b.order_no, c.grade_type DESC, a.order_no
         )t1 GROUP BY behospital_code
     </select>
-
+-->
 
     <select id="getQualityCaseSorce" resultType="com.diagbot.dto.CaseScoreDTO">
      SELECT c.behospital_code as behospitalCode,a.mode_id as modelId,c.score,c.cases_score as casesScore,c.msg,c.is_reject as isReject
@@ -328,8 +328,43 @@
         <if test="leaveHosDateEnd != null">
             <![CDATA[ and e.leave_hospital_date < #{leaveHosDateEnd}]]>
         </if>
-        <if test="level != null and level != ''">
-            and e.level = #{level}
+        GROUP BY c.behospital_code,a.mode_id,c.cases_entry_id
+        order by c.behospital_code
+    </select>
+
+    <select id="getQualityCaseSorceByDept" resultType="com.diagbot.dto.CaseScoreDTO">
+        SELECT 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
+        AND c.behospital_code = e.behospital_code
+        ON d.hospital_id = e.hospital_id
+        AND e.beh_dept_id = d.dept_id
+        AND c.hospital_id = e.hospital_id
+        and c.hospital_id = #{hospitalId}
+        <if test="deptName != null and deptName != ''">
+            and e.beh_dept_name= #{deptName}
+        </if>
+        <if test="userId != null and userId != ''">
+            and d.user_id = #{userId}
+        </if>
+        <if test="behospitalCode != null and behospitalCode != ''">
+            and e.behospital_code like CONCAT('%',#{behospitalCode},'%')
+        </if>
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and e.is_placefile = #{isPlacefile}
+        </if>
+        <if test="behosDateStart != null">
+            <![CDATA[ and e.behospital_date >= #{behosDateStart}]]>
+        </if>
+        <if test="behosDateEnd != null">
+            <![CDATA[ and e.behospital_date < #{behosDateEnd}]]>
+        </if>
+        <if test="leaveHosDateStart != null">
+            <![CDATA[ and e.leave_hospital_date >= #{leaveHosDateStart}]]>
+        </if>
+        <if test="leaveHosDateEnd != null">
+            <![CDATA[ and e.leave_hospital_date < #{leaveHosDateEnd}]]>
         </if>
         GROUP BY c.behospital_code,a.mode_id,c.cases_entry_id
         order by c.behospital_code
@@ -347,8 +382,8 @@
         t.level,
         t.score_res as totalScore,
         t.is_deleted,
-        g.check_name AS ch_name,
-        h.check_name AS mr_name
+        g.check_name AS chName,
+        h.check_name AS mrName
         from (
         select a.*,
          ifnull(b.level,'未评分') as level,
@@ -432,8 +467,8 @@
         t.leave_hospital_date AS leaveHospitalDate,
         t.level,
         t.is_deleted,
-        g.check_name AS ch_name,
-        h.check_name AS mr_name
+        g.check_name AS chName,
+        h.check_name AS mrName
         from (
         select a.*, ifnull(b.level,'未评分') as level, b.grade_type,d.user_id, b.score_res, b.gmt_create as
         grade_time from med_behospital_info a