Bladeren bron

各科室缺陷占比(组合)查询/导出-台州

chengyao 4 jaren geleden
bovenliggende
commit
3d604ec5a5

+ 221 - 0
src/main/java/com/diagbot/dto/LevelStatisticStrDTO.java

@@ -0,0 +1,221 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:各科室缺陷占比返回结构
+ * @Author:zhaops
+ * @time: 2020/5/19 16:04
+ */
+@Getter
+@Setter
+public class LevelStatisticStrDTO {
+    /**
+     * 科室id(科室编码)
+     */
+//    @Excel(name = "科室编码", orderNum = "0")
+    private String deptId;
+    /**
+     * 科室名称
+     */
+    @Excel(name = "科室名称", width = 30, orderNum = "2")
+    private String deptName;
+    /**
+     * 主管医生id
+     */
+    private String doctorId;
+    /**
+     * 主管医生名称
+     */
+    private String doctorName;
+    /**
+     * 缺陷条目数
+     */
+    @Excel(name = "缺陷总数", orderNum = "3")
+    private String entryNum;
+
+    /**
+     * 同比总数
+     */
+    @Excel(name = "同比总数", orderNum = "4")
+    private Integer sameNum;
+
+    /**
+     * 缺陷条目数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer entrySameNum;
+
+    /**
+     * 质控病历数
+     */
+    @Excel(name = "质控病历数", orderNum = "7")
+    private String mrNum;
+
+    /**
+     * 同比病历数
+     */
+    @Excel(name = "同比质控数", orderNum = "8")
+    private Integer sameMrNum;
+
+    /**
+     * 质控病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer mrSameNum;
+
+    /**
+     * 质控评分(总分)
+     */
+    private Double totleValue;
+
+    /**
+     * 质控评分(平均分)
+     */
+    @Excel(name = "质控平均分", orderNum = "5")
+    private String averageValue;
+
+    /**
+     * 同比评分(平均分)
+     */
+    @Excel(name = "同比平均分", orderNum = "6")
+    private Double sameAvgValue;
+
+    /**
+     * 质控评分现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer avSameValue;
+
+    /**
+     * 甲级病历数/病案首页合格病历数
+     */
+    @Excel(name = "甲级病历数", orderNum = "9")
+    private String firstLevelNum;
+
+    /**
+     * 同比甲级病历数/病案首页合格病历数
+     */
+    @Excel(name = "同比甲级数", orderNum = "10")
+    private Integer sameFirstLevelNum;
+
+    /**
+     * 甲级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer firSameLevelNum;
+
+    /**
+     * 乙级病历数/病案首页不合格病历数
+     */
+    @Excel(name = "乙级病历数", orderNum = "11")
+    private String secondLevelNum;
+
+    /**
+     * 同比乙级病历数/病案首页不合格病历数
+     */
+    @Excel(name = "同比乙级数", orderNum = "12")
+    private Integer sameSecondLevelNum;
+
+    /**
+     * 乙级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer secSameLevelNum;
+
+    /**
+     * 丙级病历数
+     */
+    @Excel(name = "丙级病历数", orderNum = "13")
+    private String thirdLevelNum;
+
+    /**
+     * 同比丙级病历数
+     */
+    @Excel(name = "同比丙级数", orderNum = "14")
+    private Integer sameThirdLevelNum;
+
+    /**
+     * 丙级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer thiSameLevelNum;
+
+    /**
+     * 甲级病历占比/病案首页合格病历占比
+     */
+    private String firstLevelPercent;
+
+    /**
+     * 同比甲级病历占比/病案首页合格病历占比
+     */
+    private Double sameFirstLevelPercent;
+
+    /**
+     * 甲级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer firSameLevelPercent;
+
+    /**
+     * 乙级病历占比/病案首页不合格病历占比
+     */
+    private String secondLevelPercent;
+
+    /**
+     * 同比乙级病历占比/病案首页不合格病历占比
+     */
+    private Double sameSecondLevelPercent;
+
+    /**
+     * 乙级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer secSameLevelPercent;
+
+    /**
+     * 丙级病历占比
+     */
+    private String thirdLevelPercent;
+
+    /**
+     * 同比丙级病历占比
+     */
+    private Double sameThirdLevelPercent;
+
+    /**
+     * 丙级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer thiSameLevelPercent;
+
+    /**
+     * 甲级病历占比(百分比)/病案首页合格病历占比(百分比)
+     */
+    @Excel(name = "甲级率", orderNum = "15")
+    private String firstLevelPercentStr;
+
+    /**
+     * 同比甲级病历占比(百分比)/病案首页合格病历占比(百分比)
+     */
+    @Excel(name = "同比甲级率", orderNum = "16")
+    private String sameFirstLevelPercentStr;
+
+    /**
+     * 乙级病历占比(百分比)/病案首页不合格病历占比(百分比)
+     */
+    @Excel(name = "乙级率", orderNum = "17")
+    private String secondLevelPercentStr;
+
+    /**
+     * 同比乙级病历占比(百分比)/病案首页不合格病历占比(百分比)
+     */
+    @Excel(name = "同比乙级率", orderNum = "18")
+    private String sameSecondLevelPercentStr;
+
+    /**
+     * 丙级病历占比(百分比)
+     */
+    @Excel(name = "丙级率", orderNum = "19")
+    private String thirdLevelPercentStr;
+
+    /**
+     * 同比丙级病历占比(百分比)
+     */
+    @Excel(name = "同比丙级率", orderNum = "20")
+    private String sameThirdLevelPercentStr;
+
+}

+ 41 - 1
src/main/java/com/diagbot/dto/LevelStatisticsDTO.java

@@ -43,7 +43,7 @@ public class LevelStatisticsDTO {
     private Integer sameNum;
 
     /**
-     * 现有数据与同期数据对比(0-降 -1-升)
+     * 缺陷条目数现有数据与同期数据对比(-1-降 0-持平 1-升)
      */
     private Integer entrySameNum;
 
@@ -59,6 +59,11 @@ public class LevelStatisticsDTO {
     @Excel(name = "同比质控数", orderNum = "8")
     private Integer sameMrNum;
 
+    /**
+     * 质控病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer mrSameNum;
+
     /**
      * 质控评分(总分)
      */
@@ -76,6 +81,11 @@ public class LevelStatisticsDTO {
     @Excel(name = "同比平均分", orderNum = "6")
     private Double sameAvgValue;
 
+    /**
+     * 质控评分现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer avSameValue;
+
     /**
      * 甲级病历数/病案首页合格病历数
      */
@@ -88,6 +98,11 @@ public class LevelStatisticsDTO {
     @Excel(name = "同比甲级数", orderNum = "10")
     private Integer sameFirstLevelNum;
 
+    /**
+     * 甲级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer firSameLevelNum;
+
     /**
      * 乙级病历数/病案首页不合格病历数
      */
@@ -100,6 +115,11 @@ public class LevelStatisticsDTO {
     @Excel(name = "同比乙级数", orderNum = "12")
     private Integer sameSecondLevelNum;
 
+    /**
+     * 乙级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer secSameLevelNum;
+
     /**
      * 丙级病历数
      */
@@ -112,6 +132,11 @@ public class LevelStatisticsDTO {
     @Excel(name = "同比丙级数", orderNum = "14")
     private Integer sameThirdLevelNum;
 
+    /**
+     * 丙级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer thiSameLevelNum;
+
     /**
      * 甲级病历占比/病案首页合格病历占比
      */
@@ -122,6 +147,11 @@ public class LevelStatisticsDTO {
      */
     private Double sameFirstLevelPercent;
 
+    /**
+     * 甲级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer firSameLevelPercent;
+
     /**
      * 乙级病历占比/病案首页不合格病历占比
      */
@@ -132,6 +162,11 @@ public class LevelStatisticsDTO {
      */
     private Double sameSecondLevelPercent;
 
+    /**
+     * 乙级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer secSameLevelPercent;
+
     /**
      * 丙级病历占比
      */
@@ -142,6 +177,11 @@ public class LevelStatisticsDTO {
      */
     private Double sameThirdLevelPercent;
 
+    /**
+     * 丙级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer thiSameLevelPercent;
+
     /**
      * 甲级病历占比(百分比)/病案首页合格病历占比(百分比)
      */

+ 1 - 1
src/main/java/com/diagbot/dto/LevelStatisticsTZDTO.java

@@ -11,7 +11,7 @@ import lombok.Setter;
  */
 @Getter
 @Setter
-public class LevelStatisticsTZDTO extends LevelStatisticsDTO {
+public class LevelStatisticsTZDTO extends LevelStatisticStrDTO {
     /**
      * 上级科室id(上级科室编码)
      */

+ 91 - 0
src/main/java/com/diagbot/facade/ConsoleExportFacade.java

@@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -106,10 +107,100 @@ public class ConsoleExportFacade {
      */
     public void levelExport_TZ(HttpServletResponse response, FilterOrderVO filterOrderVO) {
         List<LevelStatisticsTZDTO> records = consoleFacade.levelStatisticsByDeptClass_TZ(filterOrderVO);
+        for (LevelStatisticsTZDTO record : records) {
+            BigDecimalMethod(record);
+        }
         String fileName = "各科室缺陷占比-台州.xls";
         ExcelUtils.exportExcel(records, null, "sheet1", LevelStatisticsTZDTO.class, fileName, response, 12.8f);
     }
 
+    public void BigDecimalMethod(LevelStatisticsTZDTO record){
+        BigDecimal entrySameBigDecimal = getSubtract(new BigDecimal(record.getEntryNum()), new BigDecimal(record.getSameNum() == null? 0:record.getSameNum()));
+
+        if(entrySameBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setEntryNum(record.getEntryNum()+"↑");
+        }else if(entrySameBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setEntryNum( record.getEntryNum()+"↓");
+        }
+
+        BigDecimal sameMrNumBigDecimal = getSubtract(new BigDecimal(record.getMrNum()), new BigDecimal(record.getSameMrNum()  == null? 0:record.getSameMrNum()));
+        if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setMrNum(record.getMrNum()+"↑");
+        }else if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setMrNum(record.getMrNum()+"↓");
+        }
+
+        BigDecimal sameAvgValueDecimal = getSubtract(new BigDecimal(record.getAverageValue()), new BigDecimal(record.getSameAvgValue() == null? 0:record.getSameAvgValue()));
+        if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setAverageValue(record.getAverageValue()+"↑");
+        }else if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setAverageValue(record.getAverageValue()+"↓");
+        }
+
+        BigDecimal SameFirstLevelBigDecimal = getSubtract(new BigDecimal(record.getFirstLevelNum()), new BigDecimal(record.getSameFirstLevelNum() == null? 0:record.getSameFirstLevelNum()));
+        if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setFirstLevelNum(record.getFirstLevelNum()+"↑");
+        }else if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setFirstLevelNum(record.getFirstLevelNum()+"↓");
+        }
+
+        BigDecimal SameSecondLevelBigDecimal = getSubtract(new BigDecimal(record.getSecondLevelNum()), new BigDecimal(record.getSameSecondLevelNum() == null? 0:record.getSameSecondLevelNum()));
+        if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setSecondLevelNum(record.getSecondLevelNum()+"↑");
+        }else if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setSecondLevelNum(record.getSecondLevelNum()+"↓");
+        }
+
+        BigDecimal SameThirdLevelBigDecimal = getSubtract(new BigDecimal(record.getThirdLevelNum()), new BigDecimal(record.getSameThirdLevelNum() == null? 0:record.getSameThirdLevelNum()));
+        if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setThirdLevelNum(record.getThirdLevelNum()+"↑");
+        }else if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setThirdLevelNum(record.getThirdLevelNum()+"↓");
+        }
+
+        BigDecimal SameFirstLevelPeDecimal = getSubtract(new BigDecimal(record.getFirstLevelPercent()), new BigDecimal(record.getSameFirstLevelPercent() == null? 0:record.getSameFirstLevelPercent()));
+        if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setFirstLevelPercentStr(record.getFirstLevelPercentStr()+"↑");
+        }else if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setFirstLevelPercentStr(record.getFirstLevelPercentStr()+"↓");
+        }
+
+        BigDecimal SameSecondLevelPeDecimal = getSubtract(new BigDecimal(record.getSecondLevelPercent()), new BigDecimal(record.getSameSecondLevelPercent() == null? 0:record.getSameSecondLevelPercent()));
+        if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setSecondLevelPercentStr(record.getSecondLevelPercentStr()+"↑");
+        }else if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO)<0){
+            record.setSecondLevelPercentStr(record.getSecondLevelPercentStr()+"↓");
+        }
+
+        BigDecimal SameThirdLevelPeDecimal = getSubtract(new BigDecimal(record.getThirdLevelPercent()), new BigDecimal(record.getSameThirdLevelPercent() == null? 0:record.getSameThirdLevelPercent()));
+        if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setThirdLevelPercentStr(record.getThirdLevelPercentStr()+"↑");
+        }else if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setThirdLevelPercentStr(record.getThirdLevelPercentStr()+"↓");
+        }
+    };
+
+
+    /**
+     * 差值计算
+     *
+     * @param bigDecimalOne
+     * @param bigDecimalTwo
+     * @return
+     */
+    private BigDecimal getSubtract(BigDecimal bigDecimalOne, BigDecimal bigDecimalTwo) {
+        BigDecimal newBigDecimal = new BigDecimal(0);
+        if (null == bigDecimalOne && null != bigDecimalTwo) {
+            newBigDecimal = newBigDecimal.subtract(bigDecimalTwo);
+        } else if (null != bigDecimalOne && null == bigDecimalTwo) {
+            newBigDecimal = bigDecimalOne.subtract(newBigDecimal);
+        } else if (null != bigDecimalOne && null != bigDecimalTwo) {
+            newBigDecimal = bigDecimalOne.subtract(bigDecimalTwo);
+        }
+        return newBigDecimal;
+    }
+
+
     /**
      * 按科室统计平均住院天数导出
      *

+ 112 - 1
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -446,7 +446,8 @@ public class ConsoleFacade {
      * @return
      */
     public List<LevelStatisticsDTO> levelStatistics(FilterOrderVO filterOrderVO) {
-        filterFacade.filterOrderVOSet(filterOrderVO);
+      //  filterFacade.filterOrderVOSet(filterOrderVO);
+        filterFacade.filterOrderVOSame(filterOrderVO);
         List<LevelStatisticsDTO> records = behospitalInfoFacade.levelStatistics(filterOrderVO);
         return records;
     }
@@ -460,9 +461,119 @@ public class ConsoleFacade {
     public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass_TZ(FilterOrderVO filterOrderVO) {
         filterFacade.filterOrderVOSame(filterOrderVO);
         List<LevelStatisticsTZDTO> records = behospitalInfoFacade.levelStatisticsByDeptClass_TZ(filterOrderVO);
+       if(ListUtil.isNotEmpty(records)){
+           for (LevelStatisticsTZDTO record : records) {
+               BigDecimalMethod(record);
+           }
+       }
+
         return records;
     }
 
+    public void BigDecimalMethod(LevelStatisticsTZDTO record){
+        BigDecimal entrySameBigDecimal = getSubtract(new BigDecimal(record.getEntryNum()), new BigDecimal(record.getSameNum() == null? 0:record.getSameNum()));
+
+        if(entrySameBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setEntrySameNum(1);
+        }else if(entrySameBigDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setEntrySameNum(0);
+        }else{
+            record.setEntrySameNum(-1);
+        }
+
+        BigDecimal sameMrNumBigDecimal = getSubtract(new BigDecimal(record.getMrNum()), new BigDecimal(record.getSameMrNum()  == null? 0:record.getSameMrNum()));
+        if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setMrSameNum(1);
+        }else if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setMrSameNum(0);
+        }else{
+            record.setMrSameNum(-1);
+        }
+
+        BigDecimal sameAvgValueDecimal = getSubtract(new BigDecimal(record.getAverageValue()), new BigDecimal(record.getSameAvgValue() == null? 0:record.getSameAvgValue()));
+        if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setAvSameValue(1);
+        }else if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setAvSameValue(0);
+        }else{
+            record.setAvSameValue(-1);
+        }
+
+        BigDecimal SameFirstLevelBigDecimal = getSubtract(new BigDecimal(record.getFirstLevelNum()), new BigDecimal(record.getSameFirstLevelNum() == null? 0:record.getSameFirstLevelNum()));
+        if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setFirSameLevelNum(1);
+        }else if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setFirSameLevelNum(0);
+        }else{
+            record.setFirSameLevelNum(-1);
+        }
+
+        BigDecimal SameSecondLevelBigDecimal = getSubtract(new BigDecimal(record.getSecondLevelNum()), new BigDecimal(record.getSameSecondLevelNum() == null? 0:record.getSameSecondLevelNum()));
+        if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setSecSameLevelNum(1);
+        }else if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setSecSameLevelNum(0);
+        }else{
+            record.setSecSameLevelNum(-1);
+        }
+
+        BigDecimal SameThirdLevelBigDecimal = getSubtract(new BigDecimal(record.getThirdLevelNum()), new BigDecimal(record.getSameThirdLevelNum() == null? 0:record.getSameThirdLevelNum()));
+        if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setThiSameLevelNum(1);
+        }else if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setThiSameLevelNum(0);
+        }else{
+            record.setThiSameLevelNum(-1);
+        }
+
+        BigDecimal SameFirstLevelPeDecimal = getSubtract(new BigDecimal(record.getFirstLevelPercent()), new BigDecimal(record.getSameFirstLevelPercent() == null? 0:record.getSameFirstLevelPercent()));
+        if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setFirSameLevelPercent(1);
+        }else if(SameFirstLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setFirSameLevelPercent(0);
+        }else{
+            record.setFirSameLevelPercent(-1);
+        }
+
+        BigDecimal SameSecondLevelPeDecimal = getSubtract(new BigDecimal(record.getSecondLevelPercent()), new BigDecimal(record.getSameSecondLevelPercent() == null? 0:record.getSameSecondLevelPercent()));
+        if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setSecSameLevelPercent(1);
+        }else if(SameSecondLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setSecSameLevelPercent(0);
+        }else{
+            record.setSecSameLevelPercent(-1);
+        }
+
+        BigDecimal SameThirdLevelPeDecimal = getSubtract(new BigDecimal(record.getThirdLevelPercent()), new BigDecimal(record.getSameThirdLevelPercent() == null? 0:record.getSameThirdLevelPercent()));
+        if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setThiSameLevelPercent(1);
+        }else if(SameThirdLevelPeDecimal.compareTo(BigDecimal.ZERO) == 0){
+            record.setThiSameLevelPercent(0);
+        }else{
+            record.setThiSameLevelPercent(-1);
+        }
+    };
+
+
+    /**
+     * 差值计算
+     *
+     * @param bigDecimalOne
+     * @param bigDecimalTwo
+     * @return
+     */
+    private BigDecimal getSubtract(BigDecimal bigDecimalOne, BigDecimal bigDecimalTwo) {
+        BigDecimal newBigDecimal = new BigDecimal(0);
+        if (null == bigDecimalOne && null != bigDecimalTwo) {
+            newBigDecimal = newBigDecimal.subtract(bigDecimalTwo);
+        } else if (null != bigDecimalOne && null == bigDecimalTwo) {
+            newBigDecimal = bigDecimalOne.subtract(newBigDecimal);
+        } else if (null != bigDecimalOne && null != bigDecimalTwo) {
+            newBigDecimal = bigDecimalOne.subtract(bigDecimalTwo);
+        }
+        return newBigDecimal;
+    }
+
     /**
      * 病案首页合格率占比
      *

+ 491 - 66
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -1295,6 +1295,36 @@
     <select id="levelStatistics" parameterType="com.diagbot.vo.FilterOrderVO"
             resultType="com.diagbot.dto.LevelStatisticsDTO">
         SELECT
+        m1.deptId,
+        m1.deptName,
+        m1.entryNum,
+        m2.sameNum,
+        m1.mrNum,
+        m2.sameMrNum,
+        m1.totleValue,
+        m1.averageValue,
+        m2.sameAvgValue,
+        m1.firstLevelNum,
+        m2.sameFirstLevelNum,
+        m1.secondLevelNum,
+        m2.sameSecondLevelNum,
+        m1.thirdLevelNum,
+        m2.sameThirdLevelNum,
+        m1.firstLevelPercent,
+        m2.sameFirstLevelPercent,
+        m1.secondLevelPercent,
+        m2.sameSecondLevelPercent,
+        m1.thirdLevelPercent,
+        m2.sameThirdLevelPercent,
+        m1.firstLevelPercentStr,
+        m2.sameFirstLevelPercentStr,
+        m1.secondLevelPercentStr,
+        m2.sameSecondLevelPercentStr,
+        m1.thirdLevelPercentStr,
+        m2.sameThirdLevelPercentStr
+        FROM
+        (
+        SELECT
         t1.deptId,
         t1.deptName,
         t2.entryNum,
@@ -1424,46 +1454,203 @@
         ) t2
         WHERE
         t1.deptId = t2.deptId
-        AND t1.deptName = t2.deptName
+        AND t1.deptName = t2.deptName)m1 left join
+        ( SELECT
+        t1.deptId,
+        t1.deptName,
+        t2.entryNum as sameNum,
+        t1.mrNum as sameMrNum,
+        t1.averageValue as sameAvgValue,
+        t1.firstLevelNum as sameFirstLevelNum,
+        t1.secondLevelNum as sameSecondLevelNum,
+        t1.thirdLevelNum as sameThirdLevelNum,
+        t1.firstLevelPercent as sameFirstLevelPercent,
+        t1.secondLevelPercent as sameSecondLevelPercent,
+        t1.thirdLevelPercent as sameThirdLevelPercent,
+        t1.firstLevelPercentStr as sameFirstLevelPercentStr,
+        t1.secondLevelPercentStr as sameSecondLevelPercentStr,
+        t1.thirdLevelPercentStr as sameThirdLevelPercentStr
+        FROM
+        (
+        SELECT
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        count(*) AS mrNum,
+        ROUND( sum( CAST(c.score_res as DECIMAL ( 18, 2 )) ), 2 ) AS totleValue,
+        ROUND( avg( CAST(c.score_res as DECIMAL ( 18, 2 )) ), 2 ) AS averageValue,
+        SUM( c.`level` = '甲' ) AS firstLevelNum,
+        SUM( c.`level` = '乙' ) AS secondLevelNum,
+        SUM( c.`level` = '丙' ) AS thirdLevelNum,
+        ROUND( SUM( c.`level` = '甲' )/ count(*), 4 ) AS firstLevelPercent,
+        ROUND( SUM( c.`level` = '乙' )/ count(*), 4 ) AS secondLevelPercent,
+        ROUND( SUM( c.`level` = '丙' )/ count(*), 4 ) AS thirdLevelPercent,
+        concat( ROUND( SUM( c.`level` = '甲' )/ count(*)* 100, 2 ), '%' ) AS firstLevelPercentStr,
+        concat( ROUND( SUM( c.`level` = '乙' )/ count(*)* 100, 2 ), '%' ) AS secondLevelPercentStr,
+        concat( ROUND( SUM( c.`level` = '丙' )/ count(*)* 100, 2 ), '%' ) AS thirdLevelPercentStr
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = c.behospital_code
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and a.is_placefile = #{isPlacefile}
+        </if>
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 0">
+            <if test="startDate != null and startDate != ''">
+                <![CDATA[ AND a.behospital_date >= #{startDate}]]>
+            </if>
+            <if test="endDate != null and endDate != ''">
+                <![CDATA[ AND a.behospital_date <= #{endDate}]]>
+            </if>
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 1">
+            <if test="startDate != null and startDate != ''">
+                <![CDATA[ AND a.leave_hospital_date >= #{startDate}]]>
+            </if>
+            <if test="endDate != null and endDate != ''">
+                <![CDATA[ AND a.leave_hospital_date <= #{endDate}]]>
+            </if>
+        </if>
+        <if test="level != null and level != ''">
+            and c.level = #{level}
+        </if>
+        <if test="name != null and name != ''">
+            and a.beh_dept_name like CONCAT('%',#{name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) t1,
+        (
+        SELECT
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        count( * ) AS entryNum
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c,
+        med_qcresult_detail d,
+        qc_cases_entry e
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND e.is_deleted = 'N'
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.behospital_code = c.behospital_code
+        AND a.behospital_code = d.behospital_code
+        AND d.cases_id = e.cases_id
+        AND d.cases_entry_id = e.id
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and a.is_placefile = #{isPlacefile}
+        </if>
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 0">
+            <if test="startDate != null and startDate != ''">
+                <![CDATA[ AND a.behospital_date >= #{startDate}]]>
+            </if>
+            <if test="endDate != null and endDate != ''">
+                <![CDATA[ AND a.behospital_date <= #{endDate}]]>
+            </if>
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 1">
+            <if test="startDate != null and startDate != ''">
+                <![CDATA[ AND a.leave_hospital_date >= #{startDate}]]>
+            </if>
+            <if test="endDate != null and endDate != ''">
+                <![CDATA[ AND a.leave_hospital_date <= #{endDate}]]>
+            </if>
+        </if>
+        <if test="level != null and level != ''">
+            and c.level = #{level}
+        </if>
+        <if test="name != null and name != ''">
+            and a.beh_dept_name like CONCAT('%',#{name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) t2
+        WHERE
+        t1.deptId = t2.deptId
+        AND t1.deptName = t2.deptName)m2
+        on
+        m1.deptId = m2.deptId
+        AND m1.deptName = m2.deptName
         <if test="asc != null and asc !=''">
             order by
             <choose>
-                <when test='asc=="deptId"'>deptId asc</when>
-                <when test='asc=="deptName"'>deptName asc</when>
-                <when test='asc=="entryNum"'>entryNum asc</when>
-                <when test='asc=="mrNum"'>mrNum asc</when>
-                <when test='asc=="totleValue"'>totleValue asc</when>
-                <when test='asc=="averageValue"'>averageValue asc</when>
-                <when test='asc=="firstLevelNum"'>firstLevelNum asc</when>
-                <when test='asc=="secondLevelNum"'>secondLevelNum asc</when>
-                <when test='asc=="thirdLevelNum"'>thirdLevelNum asc</when>
-                <when test='asc=="firstLevelPercent"'>firstLevelPercent asc</when>
-                <when test='asc=="secondLevelPercent"'>secondLevelPercent asc</when>
-                <when test='asc=="thirdLevelPercent"'>thirdLevelPercent asc</when>
-                <when test='asc=="firstLevelPercentStr"'>firstLevelPercent asc</when>
-                <when test='asc=="secondLevelPercentStr"'>secondLevelPercent asc</when>
-                <when test='asc=="thirdLevelPercentStr"'>thirdLevelPercent asc</when>
+                <when test='asc=="deptId"'>m1.deptId asc</when>
+                <when test='asc=="deptName"'>m1.deptName asc</when>
+                <when test='asc=="entryNum"'>m1.entryNum asc</when>
+                <when test='asc=="sameNum"'>m2.sameNum asc</when>
+                <when test='asc=="mrNum"'>m1.mrNum asc</when>
+                <when test='asc=="sameMrNum"'>m2.sameMrNum asc</when>
+                <when test='asc=="totleValue"'>m1.totleValue asc</when>
+                <when test='asc=="averageValue"'>m1.averageValue asc</when>
+                <when test='asc=="sameAvgValue"'>m2.sameAvgValue asc</when>
+                <when test='asc=="firstLevelNum"'>m1.firstLevelNum asc</when>
+                <when test='asc=="sameFirstLevelNum"'>m2.sameFirstLevelNum asc</when>
+                <when test='asc=="secondLevelNum"'>m1.secondLevelNum asc</when>
+                <when test='asc=="sameSecondLevelNum"'>m2.sameSecondLevelNum asc</when>
+                <when test='asc=="thirdLevelNum"'>m1.thirdLevelNum asc</when>
+                <when test='asc=="sameThirdLevelNum"'>m2.sameThirdLevelNum asc</when>
+                <when test='asc=="firstLevelPercent"'>m1.firstLevelPercent asc</when>
+                <when test='asc=="sameFirstLevelPercent"'>m2.sameFirstLevelPercent asc</when>
+                <when test='asc=="secondLevelPercent"'>m1.secondLevelPercent asc</when>
+                <when test='asc=="sameSecondLevelPercent"'>m2.sameSecondLevelPercent asc</when>
+                <when test='asc=="thirdLevelPercent"'>m1.thirdLevelPercent asc</when>
+                <when test='asc=="sameThirdLevelPercent"'>m2.sameThirdLevelPercent asc</when>
+                <when test='asc=="firstLevelPercentStr"'>m1.firstLevelPercent asc</when>
+                <when test='asc=="sameFirstLevelPercentStr"'>m2.sameFirstLevelPercentStr asc</when>
+                <when test='asc=="secondLevelPercentStr"'>m1.secondLevelPercent asc</when>
+                <when test='asc=="sameSecondLevelPercentStr"'>m2.sameSecondLevelPercentStr asc</when>
+                <when test='asc=="thirdLevelPercentStr"'>m1.thirdLevelPercent asc</when>
+                <when test='asc=="sameThirdLevelPercentStr"'>m2.sameThirdLevelPercentStr asc</when>
                 <otherwise>deptName asc</otherwise>
             </choose>
         </if>
         <if test="desc != null and desc!=''">
             order by
             <choose>
-                <when test='desc=="deptId"'>deptId desc</when>
-                <when test='desc=="deptName"'>deptName desc</when>
-                <when test='desc=="entryNum"'>entryNum desc</when>
-                <when test='desc=="mrNum"'>mrNum desc</when>
-                <when test='desc=="totleValue"'>totleValue desc</when>
-                <when test='desc=="averageValue"'>averageValue desc</when>
-                <when test='desc=="firstLevelNum"'>firstLevelNum desc</when>
-                <when test='desc=="secondLevelNum"'>secondLevelNum desc</when>
-                <when test='desc=="thirdLevelNum"'>thirdLevelNum desc</when>
-                <when test='desc=="firstLevelPercent"'>firstLevelPercent desc</when>
-                <when test='desc=="secondLevelPercent"'>secondLevelPercent desc</when>
-                <when test='desc=="thirdLevelPercent"'>thirdLevelPercent desc</when>
-                <when test='desc=="firstLevelPercentStr"'>firstLevelPercent desc</when>
-                <when test='desc=="secondLevelPercentStr"'>secondLevelPercent desc</when>
-                <when test='desc=="thirdLevelPercentStr"'>thirdLevelPercent desc</when>
+                <when test='desc=="deptId"'>m1.deptId desc</when>
+                <when test='desc=="deptName"'>m1.deptName desc</when>
+                <when test='desc=="entryNum"'>m1.entryNum desc</when>
+                <when test='desc=="sameNum"'>m2.sameNum desc</when>
+                <when test='desc=="mrNum"'>m1.mrNum desc</when>
+                <when test='desc=="sameMrNum"'>m2.sameMrNum desc</when>
+                <when test='desc=="totleValue"'>m1.totleValue desc</when>
+                <when test='desc=="averageValue"'>m1.averageValue desc</when>
+                <when test='desc=="sameAvgValue"'>m2.sameAvgValue desc</when>
+                <when test='desc=="firstLevelNum"'>m1.firstLevelNum desc</when>
+                <when test='desc=="sameFirstLevelNum"'>m2.sameFirstLevelNum desc</when>
+                <when test='desc=="secondLevelNum"'>m1.secondLevelNum desc</when>
+                <when test='desc=="sameSecondLevelNum"'>m2.sameSecondLevelNum desc</when>
+                <when test='desc=="thirdLevelNum"'>m1.thirdLevelNum desc</when>
+                <when test='desc=="sameThirdLevelNum"'>m2.sameThirdLevelNum desc</when>
+                <when test='desc=="firstLevelPercent"'>m1.firstLevelPercent desc</when>
+                <when test='desc=="sameFirstLevelPercent"'>m2.sameFirstLevelPercent desc</when>
+                <when test='desc=="secondLevelPercent"'>m1.secondLevelPercent desc</when>
+                <when test='desc=="sameSecondLevelPercent"'>m2.sameSecondLevelPercent desc</when>
+                <when test='desc=="thirdLevelPercent"'>m1.thirdLevelPercent desc</when>
+                <when test='desc=="sameThirdLevelPercent"'>m2.sameThirdLevelPercent desc</when>
+                <when test='desc=="firstLevelPercentStr"'>m1.firstLevelPercent desc</when>
+                <when test='desc=="sameFirstLevelPercentStr"'>m2.sameFirstLevelPercentStr desc</when>
+                <when test='desc=="secondLevelPercentStr"'>m1.secondLevelPercent desc</when>
+                <when test='desc=="sameSecondLevelPercentStr"'>m2.sameSecondLevelPercentStr desc</when>
+                <when test='desc=="thirdLevelPercentStr"'>m1.thirdLevelPercent desc</when>
+                <when test='desc=="sameThirdLevelPercentStr"'>m2.sameThirdLevelPercentStr desc</when>
                 <otherwise>deptName desc</otherwise>
             </choose>
         </if>
@@ -1702,6 +1889,37 @@
 
     <!-- 各科室缺陷占比(组合)-全院-根据内外科系统统计(台州) -->
     <select id="levelStatisticsByDeptClass_TZ" parameterType="com.diagbot.vo.FilterOrderVO" resultType="com.diagbot.dto.LevelStatisticsTZDTO">
+        select
+        m1.deptId,
+        m1.deptName,
+        m1.deptClassId,
+        m1.deptClass,
+        m1.entryNum,
+        m2.sameNum,
+        m1.mrNum,
+        m2.sameMrNum,
+        m1.totleValue,
+        m1.averageValue,
+        m2.sameAvgValue,
+        m1.firstLevelNum,
+        m2.sameFirstLevelNum,
+        m1.secondLevelNum,
+        m2.sameSecondLevelNum,
+        m1.thirdLevelNum,
+        m2.sameThirdLevelNum,
+        m1.firstLevelPercent,
+        m2.sameFirstLevelPercent,
+        m1.secondLevelPercent,
+        m2.sameSecondLevelPercent,
+        m1.thirdLevelPercent,
+        m2.sameThirdLevelPercent,
+        m1.firstLevelPercentStr,
+        m2.sameFirstLevelPercentStr,
+        m1.secondLevelPercentStr,
+        m2.sameSecondLevelPercentStr,
+        m1.thirdLevelPercentStr,
+        m2.sameThirdLevelPercentStr
+        from (
         SELECT
         t1.deptId,
         t1.deptName,
@@ -1882,50 +2100,257 @@
         ) t2
         WHERE
         t1.deptId = t2.deptId
-        AND t1.deptName = t2.deptName
+        AND t1.deptName = t2.deptName)m1 left join
+        ( SELECT
+        t1.deptId,
+        t1.deptName,
+        t1.deptClassId,
+        t1.deptClass,
+        t2.entryNum as sameNum,
+        t1.mrNum as sameMrNum,
+        t1.averageValue as sameAvgValue,
+        t1.firstLevelNum as sameFirstLevelNum,
+        t1.secondLevelNum as sameSecondLevelNum,
+        t1.thirdLevelNum as sameThirdLevelNum,
+        t1.firstLevelPercent as sameFirstLevelPercent,
+        t1.secondLevelPercent as sameSecondLevelPercent,
+        t1.thirdLevelPercent as sameThirdLevelPercent,
+        t1.firstLevelPercentStr as sameFirstLevelPercentStr,
+        t1.secondLevelPercentStr as sameSecondLevelPercentStr,
+        t1.thirdLevelPercentStr as sameThirdLevelPercentStr
+        FROM
+        (
+        SELECT
+        tt1.deptId,
+        tt1.deptName,
+        e.dept_id AS deptClassId,
+        e.dept_name AS deptClass,
+        count(*) AS mrNum,
+        ROUND( sum( CAST( tt1.score AS DECIMAL ( 18, 2 )) ), 2 ) AS totleValue,
+        ROUND( avg( CAST( tt1.score AS DECIMAL ( 18, 2 )) ), 2 ) AS averageValue,
+        sum( tt1.`level` = '甲' ) AS firstLevelNum,
+        sum( tt1.`level` = '乙' ) AS secondLevelNum,
+        sum( tt1.`level` = '丙' ) AS thirdLevelNum,
+        ROUND( sum( tt1.`level` = '甲' )/ count( * ), 4 ) AS firstLevelPercent,
+        ROUND( sum( tt1.`level` = '乙' )/ count( * ), 4 ) AS secondLevelPercent,
+        ROUND( sum( tt1.`level` = '丙' )/ count( * ), 4 ) AS thirdLevelPercent,
+        concat( ROUND( sum( tt1.`level` = '甲' )/ count( * )* 100, 2 ), '%' ) AS firstLevelPercentStr,
+        concat( ROUND( sum( tt1.`level` = '乙' )/ count( * )* 100, 2 ), '%' ) AS secondLevelPercentStr,
+        concat( ROUND( sum( tt1.`level` = '丙' )/ count( * )* 100, 2 ), '%' ) AS thirdLevelPercentStr
+        FROM
+        (
+        SELECT
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        d.parent_dept_id AS parentDeptId,
+        a.hospital_id AS hospitalId,
+        a.behospital_code AS behospitalCode,
+        c.score_res AS score,
+        c.LEVEL
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c,
+        bas_dept_info d
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.behospital_code = c.behospital_code
+        AND a.beh_dept_id = d.dept_id
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and a.is_placefile = #{isPlacefile}
+        </if>
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 0">
+            <if test="lastStartDate != null and lastStartDate != ''">
+                <![CDATA[ AND a.behospital_date >= #{lastStartDate}]]>
+            </if>
+            <if test="lastEndDate != null and lastEndDate != ''">
+                <![CDATA[ AND a.behospital_date <= #{lastEndDate}]]>
+            </if>
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 1">
+            <if test="lastStartDate != null and lastStartDate != ''">
+                <![CDATA[ AND a.leave_hospital_date >= #{lastStartDate}]]>
+            </if>
+            <if test="lastEndDate != null and lastEndDate != ''">
+                <![CDATA[ AND a.leave_hospital_date <= #{lastEndDate}]]>
+            </if>
+        </if>
+        <if test="level != null and level != ''">
+            and c.level = #{level}
+        </if>
+        <if test="name != null and name != ''">
+            and a.beh_dept_name like CONCAT('%',#{name},'%')
+        </if>
+        ) tt1
+        LEFT JOIN bas_dept_info e ON tt1.parentDeptId = e.dept_id
+        AND e.is_deleted = 'N'
+        AND tt1.hospitalId = e.hospital_id
+        <if test="deptClass != null and deptClass != ''">
+            WHERE e.dept_name = #{deptClass}
+        </if>
+        GROUP BY
+        tt1.deptId,
+        tt1.deptName,
+        e.dept_id,
+        e.dept_name
+        ) t1,
+        (
+        SELECT
+        tt2.deptId,
+        tt2.deptName,
+        g.dept_id AS deptClassId,
+        g.dept_name AS deptClass,
+        count( * ) AS entryNum
+        FROM
+        (
+        SELECT
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        f.parent_dept_id AS parentDeptId,
+        a.hospital_id AS hospitalId,
+        a.behospital_code AS behospitalCode
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c,
+        med_qcresult_detail d,
+        qc_cases_entry e,
+        bas_dept_info f
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND e.is_deleted = 'N'
+        AND f.is_deleted = 'N'
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.hospital_id = f.hospital_id
+        AND a.behospital_code = c.behospital_code
+        AND a.behospital_code = d.behospital_code
+        AND d.cases_id = e.cases_id
+        AND d.cases_entry_id = e.id
+        AND a.beh_dept_id = f.dept_id
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and a.is_placefile = #{isPlacefile}
+        </if>
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 0">
+            <if test="lastStartDate != null and lastStartDate != ''">
+                <![CDATA[ AND a.behospital_date >= #{lastStartDate}]]>
+            </if>
+            <if test="lastEndDate != null and lastEndDate != ''">
+                <![CDATA[ AND a.behospital_date <= #{lastEndDate}]]>
+            </if>
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 1">
+            <if test="lastStartDate != null and lastStartDate != ''">
+                <![CDATA[ AND a.leave_hospital_date >= #{lastStartDate}]]>
+            </if>
+            <if test="lastEndDate != null and lastEndDate != ''">
+                <![CDATA[ AND a.leave_hospital_date <= #{lastEndDate}]]>
+            </if>
+        </if>
+        <if test="level != null and level != ''">
+            and c.level = #{level}
+        </if>
+        <if test="name != null and name != ''">
+            and a.beh_dept_name like CONCAT('%',#{name},'%')
+        </if>
+        ) tt2
+        LEFT JOIN bas_dept_info g ON tt2.parentDeptId = g.dept_id
+        AND g.is_deleted = 'N'
+        AND tt2.hospitalId = g.hospital_id
+        <if test="deptClass != null and deptClass != ''">
+            WHERE g.dept_name = #{deptClass}
+        </if>
+        GROUP BY
+        tt2.deptId,
+        tt2.deptName,
+        g.dept_id,
+        g.dept_name
+        ) t2
+        WHERE
+        t1.deptId = t2.deptId
+        AND t1.deptName = t2.deptName)m2
+        on
+            m1.deptId = m2.deptId
+        and m1.deptName = m2.deptName
         <if test="asc != null and asc !=''">
             order by
             <choose>
-                <when test='asc=="deptId"'>deptId asc</when>
-                <when test='asc=="deptName"'>deptName asc</when>
-                <when test='asc=="deptClassId"'>deptClassId asc</when>
-                <when test='asc=="deptClass"'>deptClass asc</when>
-                <when test='asc=="entryNum"'>entryNum asc</when>
-                <when test='asc=="mrNum"'>mrNum asc</when>
-                <when test='asc=="totleValue"'>totleValue asc</when>
-                <when test='asc=="averageValue"'>averageValue asc</when>
-                <when test='asc=="firstLevelNum"'>firstLevelNum asc</when>
-                <when test='asc=="secondLevelNum"'>secondLevelNum asc</when>
-                <when test='asc=="thirdLevelNum"'>thirdLevelNum asc</when>
-                <when test='asc=="firstLevelPercent"'>firstLevelPercent asc</when>
-                <when test='asc=="secondLevelPercent"'>secondLevelPercent asc</when>
-                <when test='asc=="thirdLevelPercent"'>thirdLevelPercent asc</when>
-                <when test='asc=="firstLevelPercentStr"'>firstLevelPercent asc</when>
-                <when test='asc=="secondLevelPercentStr"'>secondLevelPercent asc</when>
-                <when test='asc=="thirdLevelPercentStr"'>thirdLevelPercent asc</when>
+                <when test='asc=="deptId"'>m1.deptId asc</when>
+                <when test='asc=="deptName"'>m1.deptName asc</when>
+                <when test='asc=="deptClassId"'>m1.deptClassId asc</when>
+                <when test='asc=="deptClass"'>m1.deptClass asc</when>
+                <when test='asc=="entryNum"'>m1.entryNum asc</when>
+                <when test='asc=="sameNum"'>m2.sameNum asc</when>
+                <when test='asc=="mrNum"'>m1.mrNum asc</when>
+                <when test='asc=="sameMrNum"'>m2.sameMrNum asc</when>
+                <when test='asc=="totleValue"'>m1.totleValue asc</when>
+                <when test='asc=="averageValue"'>m1.averageValue asc</when>
+                <when test='asc=="sameAvgValue"'>m2.sameAvgValue asc</when>
+                <when test='asc=="firstLevelNum"'>m1.firstLevelNum asc</when>
+                <when test='asc=="sameFirstLevelNum"'>m2.sameFirstLevelNum asc</when>
+                <when test='asc=="secondLevelNum"'>m1.secondLevelNum asc</when>
+                <when test='asc=="sameSecondLevelNum"'>m2.sameSecondLevelNum asc</when>
+                <when test='asc=="thirdLevelNum"'>m1.thirdLevelNum asc</when>
+                <when test='asc=="sameThirdLevelNum"'>m2.sameThirdLevelNum asc</when>
+                <when test='asc=="firstLevelPercent"'>m1.firstLevelPercent asc</when>
+                <when test='asc=="sameFirstLevelPercent"'>m2.sameFirstLevelPercent asc</when>
+                <when test='asc=="secondLevelPercent"'>m1.secondLevelPercent asc</when>
+                <when test='asc=="sameSecondLevelPercent"'>m2.sameSecondLevelPercent asc</when>
+                <when test='asc=="thirdLevelPercent"'>m1.thirdLevelPercent asc</when>
+                <when test='asc=="sameThirdLevelPercent"'>m2.sameThirdLevelPercent asc</when>
+                <when test='asc=="firstLevelPercentStr"'>m1.firstLevelPercent asc</when>
+                <when test='asc=="sameFirstLevelPercentStr"'>m2.sameFirstLevelPercentStr asc</when>
+                <when test='asc=="secondLevelPercentStr"'>m1.secondLevelPercent asc</when>
+                <when test='asc=="sameSecondLevelPercentStr"'>m2.sameSecondLevelPercentStr asc</when>
+                <when test='asc=="thirdLevelPercentStr"'>m1.thirdLevelPercent asc</when>
+                <when test='asc=="sameThirdLevelPercentStr"'>m2.sameThirdLevelPercentStr asc</when>
                 <otherwise>deptName asc</otherwise>
             </choose>
         </if>
         <if test="desc != null and desc!=''">
             order by
             <choose>
-                <when test='desc=="deptId"'>deptId desc</when>
-                <when test='desc=="deptName"'>deptName desc</when>
-                <when test='desc=="deptClassId"'>deptClassId desc</when>
-                <when test='desc=="deptClass"'>deptClass desc</when>
-                <when test='desc=="entryNum"'>entryNum desc</when>
-                <when test='desc=="mrNum"'>mrNum desc</when>
-                <when test='desc=="totleValue"'>totleValue desc</when>
-                <when test='desc=="averageValue"'>averageValue desc</when>
-                <when test='desc=="firstLevelNum"'>firstLevelNum desc</when>
-                <when test='desc=="secondLevelNum"'>secondLevelNum desc</when>
-                <when test='desc=="thirdLevelNum"'>thirdLevelNum desc</when>
-                <when test='desc=="firstLevelPercent"'>firstLevelPercent desc</when>
-                <when test='desc=="secondLevelPercent"'>secondLevelPercent desc</when>
-                <when test='desc=="thirdLevelPercent"'>thirdLevelPercent desc</when>
-                <when test='desc=="firstLevelPercentStr"'>firstLevelPercent desc</when>
-                <when test='desc=="secondLevelPercentStr"'>secondLevelPercent desc</when>
-                <when test='desc=="thirdLevelPercentStr"'>thirdLevelPercent desc</when>
+                <when test='desc=="deptId"'>m1.deptId desc</when>
+                <when test='desc=="deptName"'>m1.deptName desc</when>
+                <when test='desc=="deptClassId"'>m1.deptClassId desc</when>
+                <when test='desc=="deptClass"'>m1.deptClass desc</when>
+                <when test='desc=="entryNum"'>m1.entryNum desc</when>
+                <when test='desc=="sameNum"'>m2.sameNum desc</when>
+                <when test='desc=="mrNum"'>m1.mrNum desc</when>
+                <when test='desc=="sameMrNum"'>m2.sameMrNum desc</when>
+                <when test='desc=="totleValue"'>m1.totleValue desc</when>
+                <when test='desc=="averageValue"'>m1.averageValue desc</when>
+                <when test='desc=="sameAvgValue"'>m2.sameAvgValue desc</when>
+                <when test='desc=="firstLevelNum"'>m1.firstLevelNum desc</when>
+                <when test='desc=="sameFirstLevelNum"'>m2.sameFirstLevelNum desc</when>
+                <when test='desc=="secondLevelNum"'>m1.secondLevelNum desc</when>
+                <when test='desc=="sameSecondLevelNum"'>m2.sameSecondLevelNum desc</when>
+                <when test='desc=="thirdLevelNum"'>m1.thirdLevelNum desc</when>
+                <when test='desc=="sameThirdLevelNum"'>m2.sameThirdLevelNum desc</when>
+                <when test='desc=="firstLevelPercent"'>m1.firstLevelPercent desc</when>
+                <when test='desc=="sameFirstLevelPercent"'>m2.sameFirstLevelPercent desc</when>
+                <when test='desc=="secondLevelPercent"'>m1.secondLevelPercent desc</when>
+                <when test='desc=="sameSecondLevelPercent"'>m2.sameSecondLevelPercent desc</when>
+                <when test='desc=="thirdLevelPercent"'>m1.thirdLevelPercent desc</when>
+                <when test='desc=="sameThirdLevelPercent"'>m2.sameThirdLevelPercent desc</when>
+                <when test='desc=="firstLevelPercentStr"'>m1.firstLevelPercent desc</when>
+                <when test='desc=="sameFirstLevelPercentStr"'>m2.sameFirstLevelPercentStr desc</when>
+                <when test='desc=="secondLevelPercentStr"'>m1.secondLevelPercent desc</when>
+                <when test='desc=="sameSecondLevelPercentStr"'>m2.sameSecondLevelPercentStr desc</when>
+                <when test='desc=="thirdLevelPercentStr"'>m1.thirdLevelPercent desc</when>
+                <when test='desc=="sameThirdLevelPercentStr"'>m2.sameThirdLevelPercentStr desc</when>
                 <otherwise>deptName desc</otherwise>
             </choose>
         </if>