浏览代码

各科室缺陷占比

chengyao 4 年之前
父节点
当前提交
0ee33f41c3

+ 3 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -187,6 +187,9 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/print/export/entryGroupExportByDeptCase").permitAll()
                 .antMatchers("/print/export/entryGroupByEntryDeptPage").permitAll()
                 .antMatchers("/print/export/qcResultShortByDeptPageExport").permitAll()
+                .antMatchers("/print/export/levelByDeptExport").permitAll()
+                .antMatchers("/consoleByDept/entryStatisticsByDept").permitAll()
+                .antMatchers("/print/export/entryStatisticsByDeptExport").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

+ 3 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -231,6 +231,9 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/print/export/entryGroupExportByDeptCase", request)
                 || matchers("/print/export/entryGroupByEntryDeptPage", request)
                 || matchers("/print/export/qcResultShortByDeptPageExport", request)
+                || matchers("/print/export/levelByDeptExport", request)
+                || matchers("/consoleByDept/entryStatisticsByDept", request)
+                || matchers("/print/export/entryStatisticsByDeptExport", request)
                 || matchers("/", request)) {
             return true;
         }

+ 177 - 0
src/main/java/com/diagbot/dto/EntryStasByDeptDTO.java

@@ -0,0 +1,177 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/6/18 20:17
+ */
+@Getter
+@Setter
+public class EntryStasByDeptDTO {
+    /**
+     * 科室id(科室编码)
+     */
+    private String deptId;
+    /**
+     * 主治医生
+     */
+    @Excel(name = "主治医生", width = 30, orderNum = "1")
+    private String doctorName;
+    /**
+     * 未在24小时内完成会诊数
+     */
+    @Excel(name = "未在24小时内完成会诊数", width = 15, orderNum = "2")
+    private Integer consultationNum = 0;
+    /**
+     * 未在24小时内完成会诊条目id
+     */
+    private Long consultationEntryId = 2511L;
+    /**
+     * 未在24小时内完成会诊条目名称
+     */
+    private String consultationEntryName = "普通会诊未在24小时内完成";
+    /**
+     * 未在24小时内完成会诊率
+     */
+    private Double consultationPercent = 0.00d;
+    /**
+     * 未在24小时内完成会诊率(百分比)
+     */
+    @Excel(name = "未在24小时内完成会诊率", width = 15, orderNum = "3")
+    private String consultationPercentStr = "0.00%";
+    /**
+     * 会诊病历数
+     */
+    private Integer consultationMRNum = 0;
+    /**
+     * 手术记录名称不匹配条目id
+     */
+    private Long operationNameEntryId = 2594L;
+    /**
+     * 手术记录名称不匹配条目名称
+     */
+    private String operationNameEntryName = "首页手术名称与手术记录不一致";
+    /**
+     * 手术记录名称不匹配数
+     */
+    @Excel(name = "手术记录名称不匹配数", width = 15, orderNum = "4")
+    private Integer operationNameNum = 0;
+    /**
+     * 手术记录名称不匹配率
+     */
+    private Double operationNamePercent = 0.00d;
+    /**
+     * 手术记录名称不匹配率(百分比)
+     */
+    @Excel(name = "手术记录名称不匹配率", width = 15, orderNum = "5")
+    private String operationNamePercentStr = "0.00%";
+    /**
+     * 术后首程未在15分钟内完成条目id
+     */
+    private Long operation15MinuteEntryId = 2930L;
+    /**
+     * 术后首程未在15分钟内完成条目名称
+     */
+    private String operation15MinuteEntryName = "术后首次病程未即刻完成";
+    /**
+     * 术后首程未在15分钟内完成数
+     */
+    @Excel(name = "术后首程未在15分钟内完成数", width = 15, orderNum = "6")
+    private Integer operation15MinuteNum = 0;
+    /**
+     * 术后首程未在15分钟内完成率
+     */
+    private Double operation15MinutePercent = 0.00d;
+    /**
+     * 术后首程未在15分钟内完成率(百分比)
+     */
+    @Excel(name = "术后首程未在15分钟内完成率", width = 15, orderNum = "7")
+    private String operation15MinutePercentStr = "0.00%";
+    /**
+     * 病案首页手术时间不匹配条目id
+     */
+    private Long operationTimeEntryId = 2973L;
+    /**
+     * 病案首页手术时间不匹配条目名称
+     */
+    private String operationTimeEntryName = "手术日期与手术记录中手术日期不一致";
+    /**
+     * 病案首页手术时间不匹配数
+     */
+    @Excel(name = "病案首页手术时间不匹配数", width = 15, orderNum = "8")
+    private Integer operationTimeNum = 0;
+    /**
+     * 病案首页手术时间不匹配率
+     */
+    private Double operationTimePercent = 0.00;
+    /**
+     * 病案首页手术时间不匹配率(百分比)
+     */
+    @Excel(name = "病案首页手术时间不匹配率", width = 15, orderNum = "9")
+    private String operationTimePercentStr = "0.00%";
+    /**
+     * 手术记录病历数
+     */
+    private Integer operationMRNum = 0;
+    /**
+     * 未在6小时内书写危急值条目id
+     */
+    private Long crisisEntryId = 2419L;
+    /**
+     * 未在6小时内书写危急值条目名称
+     */
+    private String crisisEntryName = "危急值记录未在接到危急值报告后6小时内完成";
+    /**
+     * 未在6小时内书写危急值记录数
+     */
+    @Excel(name = "未在6小时内书写危急值记录数", width = 15, orderNum = "10")
+    private Integer crisisNum = 0;
+    /**
+     * 未在6小时内书写危急值记录率
+     */
+    private Double crisisPercent = 0.00d;
+    /**
+     * 未在6小时内书写危急值记录率(百分比)
+     */
+    @Excel(name = "未在6小时内书写危急值记录率", width = 15, orderNum = "11")
+    private String crisisPercentStr = "0.00%";
+    /**
+     * 危急值记录病历数
+     */
+    private Integer crisisMRNum = 0;
+    /**
+     * 住院超过31日病人数
+     */
+    @Excel(name = "住院超过31日病人数", width = 15, orderNum = "12")
+    private Integer beHosGT31DaysMRNum;
+    /**
+     * 阶段小节未书写条目id
+     */
+    private Long stageSummaryEntryId = 2495L;
+    /**
+     * 阶段小节未书写条目名称
+     */
+    private String stageSummaryEntryName = "无阶段小结";
+    /**
+     * 阶段小节未书写数
+     */
+    @Excel(name = "阶段小节未书写数", width = 15, orderNum = "13")
+    private Integer stageSummaryNum = 0;
+    /**
+     * 阶段小节未书写率
+     */
+    private Double stageSummaryPercent = 0.00d;
+    /**
+     * 阶段小节未书写率(百分比)
+     */
+    @Excel(name = "阶段小节未书写率", width = 15, orderNum = "14")
+    private String stageSummaryPercentStr = "0.00%";
+    /**
+     * 病人住院超过30天的病历数
+     */
+    private Integer stageSummaryMRNum = 0;
+}

+ 289 - 0
src/main/java/com/diagbot/dto/LevelStsByDeptDTO.java

@@ -0,0 +1,289 @@
+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 LevelStsByDeptDTO {
+    /**
+     * 科室id(科室编码)
+     */
+//    @Excel(name = "科室编码", orderNum = "0")
+    private String deptId;
+    /**
+     * 科室名称
+     */
+
+    private String deptName;
+    /**
+     * 主管医生id
+     */
+    private String doctorId;
+    /**
+     * 主管医生名称
+     */
+    @Excel(name = "主管医生", width = 30, orderNum = "2")
+    private String doctorName;
+    /**
+     * 缺陷条目数
+     */
+    private Integer entryNum = 0;
+
+    /**
+     * 缺陷条目数-带升降标示
+     */
+    @Excel(name = "缺陷总数", orderNum = "3")
+    private String entryStrNum = "0";
+
+    /**
+     * 同比总数
+     */
+    private Integer sameNum = 0;
+
+    /**
+     * 同比总数-带升降标示
+     */
+    @Excel(name = "同比总数", orderNum = "4")
+    private String sameStrNum = "0";
+
+    /**
+     * 缺陷条目数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer entrySameNum = 0;
+
+    /**
+     * 质控病历数
+     */
+    private Integer mrNum = 0;
+
+    /**
+     * 质控病历数-带升降标示
+     */
+    @Excel(name = "质控病历数", orderNum = "7")
+    private String mrStrNum = "0";
+
+    /**
+     * 同比病历数
+     */
+    private Integer sameMrNum= 0;
+
+    /**
+     * 同比病历数-带升降标示
+     */
+    @Excel(name = "同比质控数", orderNum = "8")
+    private String sameMrStrNum = "0";
+
+    /**
+     * 质控病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer mrSameNum = 0;
+
+    /**
+     * 质控评分(总分)
+     */
+    private Double totleValue = 0d;
+
+    /**
+     * 同比质控评分(总分)
+     */
+    private Double sameTotleValue= 0d;
+
+
+    /**
+     * 质控评分(平均分)
+     */
+    private Double averageValue = 0d;
+
+    /**
+     * 质控评分(平均分)-带升降标示
+     */
+    @Excel(name = "质控平均分", orderNum = "5")
+    private String averageStrValue = "0";
+
+    /**
+     * 同比评分(平均分)
+     */
+    private Double sameAvgValue = 0d;
+
+    /**
+     * 同比评分(平均分)-带升降标示
+     */
+    @Excel(name = "同比平均分", orderNum = "6")
+    private String sameAvgStrValue = "0";
+
+    /**
+     * 质控评分现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer avSameValue = 0;
+
+    /**
+     * 甲级病历数/病案首页合格病历数
+     */
+    private Integer firstLevelNum = 0;
+
+    /**
+     * 甲级病历数/病案首页合格病历数-带升降标示
+     */
+    @Excel(name = "甲级病历数", orderNum = "9")
+    private String firstLevelStrNum = "0";
+
+    /**
+     * 同比甲级病历数/病案首页合格病历数
+     */
+    private Integer sameFirstLevelNum = 0;
+
+    /**
+     * 同比甲级病历数/病案首页合格病历数-带升降标示
+     */
+    @Excel(name = "同比甲级数", orderNum = "10")
+    private String sameFirstLevelStrNum = "0";
+
+    /**
+     * 甲级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer firSameLevelNum = 0;
+
+    /**
+     * 乙级病历数/病案首页不合格病历数
+     */
+    private Integer secondLevelNum = 0;
+
+    /**
+     * 乙级病历数/病案首页不合格病历数-带升降标示
+     */
+    @Excel(name = "乙级病历数", orderNum = "11")
+    private String secondLevelStrNum = "0";
+
+    /**
+     * 同比乙级病历数/病案首页不合格病历数
+     */
+    private Integer sameSecondLevelNum = 0;
+
+    /**
+     * 同比乙级病历数/病案首页不合格病历数-带升降标示
+     */
+    @Excel(name = "同比乙级数", orderNum = "12")
+    private String sameSecondLevelStrNum = "0";
+
+
+    /**
+     * 乙级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer secSameLevelNum = 0;
+
+    /**
+     * 丙级病历数
+     */
+    private Integer thirdLevelNum = 0;
+
+    /**
+     * 丙级病历数-带升降标示
+     */
+    @Excel(name = "丙级病历数", orderNum = "13")
+    private String thirdLevelStrNum = "0";
+
+    /**
+     * 同比丙级病历数
+     */
+    private Integer sameThirdLevelNum = 0;
+
+    /**
+     * 同比丙级病历数-带升降标示
+     */
+    @Excel(name = "同比丙级数", orderNum = "14")
+    private String sameThirdLevelStrNum = "0";
+
+    /**
+     * 丙级病历数现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer thiSameLevelNum = 0;
+
+    /**
+     * 甲级病历占比/病案首页合格病历占比
+     */
+    private Double firstLevelPercent = 0d;
+
+    /**
+     * 同比甲级病历占比/病案首页合格病历占比
+     */
+    private Double sameFirstLevelPercent = 0d;
+
+    /**
+     * 甲级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer firSameLevelPercent = 0;
+
+    /**
+     * 乙级病历占比/病案首页不合格病历占比
+     */
+    private Double secondLevelPercent= 0d;
+
+    /**
+     * 同比乙级病历占比/病案首页不合格病历占比
+     */
+    private Double sameSecondLevelPercent = 0d;
+
+    /**
+     * 乙级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer secSameLevelPercent = 0;
+
+    /**
+     * 丙级病历占比
+     */
+    private Double thirdLevelPercent= 0d;
+
+    /**
+     * 同比丙级病历占比
+     */
+    private Double sameThirdLevelPercent = 0d;
+
+    /**
+     * 丙级病历占比现有数据与同期数据对比(-1-降 0-持平 1-升)
+     */
+    private Integer thiSameLevelPercent = 0;
+
+    /**
+     * 甲级病历占比(百分比)/病案首页合格病历占比(百分比)
+     */
+    @Excel(name = "甲级率", orderNum = "15")
+    private String firstLevelPercentStr = "0.00%";
+
+    /**
+     * 同比甲级病历占比(百分比)/病案首页合格病历占比(百分比)
+     */
+    @Excel(name = "同比甲级率", orderNum = "16")
+    private String sameFirstLevelPercentStr = "0.00%";
+
+    /**
+     * 乙级病历占比(百分比)/病案首页不合格病历占比(百分比)
+     */
+    @Excel(name = "乙级率", orderNum = "17")
+    private String secondLevelPercentStr = "0.00%";
+
+    /**
+     * 同比乙级病历占比(百分比)/病案首页不合格病历占比(百分比)
+     */
+    @Excel(name = "同比乙级率", orderNum = "18")
+    private String sameSecondLevelPercentStr = "0.00%";
+
+    /**
+     * 丙级病历占比(百分比)
+     */
+    @Excel(name = "丙级率", orderNum = "19")
+    private String thirdLevelPercentStr = "0.00%";
+
+    /**
+     * 同比丙级病历占比(百分比)
+     */
+    @Excel(name = "同比丙级率", orderNum = "20")
+    private String sameThirdLevelPercentStr = "0.00%";
+
+}

+ 203 - 0
src/main/java/com/diagbot/facade/ConsoleByDeptExportFacade.java

@@ -10,6 +10,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.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -171,6 +172,37 @@ public class ConsoleByDeptExportFacade {
             }
         };
 
+    /**
+     * 各科室缺陷占比-科室(组合)
+     *
+     * @param  filterOrderVO
+     * @return
+     */
+    public void levelByDeptExport(HttpServletResponse response,FilterOrderVO filterOrderVO) {
+        filterFacade.filterOrderVOSame(filterOrderVO);
+        List<LevelStsByDeptDTO> records = behospitalInfoFacade.levelStatisticsByDept(filterOrderVO);
+        if(ListUtil.isNotEmpty(records)){
+            for (LevelStsByDeptDTO record : records) {
+                BigDecimalStrExport(record);
+            }
+        }
+        String fileName = "各科室缺陷占比-科室.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", LevelStsByDeptDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 关键条目缺陷占比统计导出-科室
+     *
+     * @param  entryStatisticsVO
+     * @return
+     */
+    public void entryStatisticsByDeptExport(HttpServletResponse response,EntryStatisticsVO entryStatisticsVO) {
+        List<EntryStasByDeptDTO> records = behospitalInfoFacade.entryStatisticsByDept(entryStatisticsVO);
+        String fileName = "关键条目缺陷占比统计导出.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", EntryStasByDeptDTO.class, fileName, response, 12.8f);
+    }
+
+
 
 
     public void solveParam(QcResultShortPageVO qcResultShortPageVO){
@@ -232,4 +264,175 @@ public class ConsoleByDeptExportFacade {
         return resWide;
     }
 
+    public void BigDecimalStrExport(LevelStsByDeptDTO record){
+
+        BigDecimal entrySameBigDecimal = getSubtract(new BigDecimal(record.getEntryNum()), new BigDecimal(record.getSameNum()  == null? 0:record.getSameNum()));
+
+        if(entrySameBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setEntryStrNum(record.getEntryNum()+"↑");
+        }else if(entrySameBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setEntryStrNum(record.getEntryNum()+"↓");
+        }
+
+        BigDecimal sameMrNumBigDecimal = getSubtract(new BigDecimal(record.getMrNum()), new BigDecimal(record.getSameMrNum()  == null? 0:record.getSameMrNum()));
+        if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setMrStrNum(record.getMrNum()+"↑");
+        }else if(sameMrNumBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setMrStrNum(record.getMrNum()+"↓");
+        }
+
+        BigDecimal sameAvgValueDecimal = getSubtract(new BigDecimal(record.getAverageValue()), new BigDecimal(record.getSameAvgValue() == null? 0:record.getSameAvgValue()));
+        if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setAverageStrValue(record.getAverageValue()+"↑");
+        }else if(sameAvgValueDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setAverageStrValue(record.getAverageValue()+"↓");
+        }
+
+        BigDecimal SameFirstLevelBigDecimal = getSubtract(new BigDecimal(record.getFirstLevelNum()), new BigDecimal(record.getSameFirstLevelNum() == null? 0:record.getSameFirstLevelNum()));
+        if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setFirstLevelStrNum(record.getFirstLevelNum()+"↑");
+        }else if(SameFirstLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setFirstLevelStrNum(record.getFirstLevelNum()+"↓");
+        }
+
+        BigDecimal SameSecondLevelBigDecimal = getSubtract(new BigDecimal(record.getSecondLevelNum()), new BigDecimal(record.getSameSecondLevelNum() == null? 0:record.getSameSecondLevelNum()));
+        if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setSecondLevelStrNum(record.getSecondLevelNum()+"↑");
+        }else if(SameSecondLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setSecondLevelStrNum(record.getSecondLevelNum()+"↓");
+        }
+
+        BigDecimal SameThirdLevelBigDecimal = getSubtract(new BigDecimal(record.getThirdLevelNum()), new BigDecimal(record.getSameThirdLevelNum() == null? 0:record.getSameThirdLevelNum()));
+        if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO)>0){
+            record.setThirdLevelStrNum(record.getThirdLevelNum()+"↑");
+        }else if(SameThirdLevelBigDecimal.compareTo(BigDecimal.ZERO) <0){
+            record.setThirdLevelStrNum(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()+"↓");
+        }
+    };
+
+    public void BigDecimalMethod(LevelStatisticsDTO 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;
+    }
+
+
 }

+ 22 - 6
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java

@@ -466,19 +466,19 @@ public class ConsoleByDeptFacade {
     /**
      * 各科室缺陷占比(组合)
      *
-     * @param filterOrderByDeptVO
+     * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
+    public List<LevelStsByDeptDTO> levelStatisticsByDept(FilterOrderVO filterOrderVO) {
         List<DeptBaseDTO> deptList = getDept();
         if (ListUtil.isEmpty(deptList)) {
             return null;
         }
-        if (StringUtil.isBlank(filterOrderByDeptVO.getDeptName())) {
-            filterOrderByDeptVO.setDeptName(deptList.get(0).getDeptName());
+        if (StringUtil.isBlank(filterOrderVO.getDeptName())) {
+            filterOrderVO.setDeptName(deptList.get(0).getDeptName());
         }
-        filterFacade.filterOrderByDeptVOSet(filterOrderByDeptVO);
-        List<LevelStatisticsDTO> records = behospitalInfoFacade.levelStatisticsByDept(filterOrderByDeptVO);
+        filterFacade.filterOrderVOSame(filterOrderVO);
+        List<LevelStsByDeptDTO> records = behospitalInfoFacade.levelStatisticsByDept(filterOrderVO);
         return records;
     }
 
@@ -712,4 +712,20 @@ public class ConsoleByDeptFacade {
         IPage<QcResultShortDTO> page = behospitalInfoFacade.qcResultShortByDeptPage(qcResultShortPageVO);
         return page;
     }
+
+
+    /**
+     * 关键条目缺陷占比统计-科室
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    public List<EntryStasByDeptDTO> entryStatisticsByDept(EntryStatisticsVO entryStatisticsVO) {
+        filterFacade.entryStatisticsVOSet(entryStatisticsVO);
+        if (entryStatisticsVO.getDeptName().equals("全院")) {
+            entryStatisticsVO.setDeptName("");
+        }
+        List<EntryStasByDeptDTO> records = behospitalInfoFacade.entryStatisticsByDept(entryStatisticsVO);
+        return records;
+    }
 }

+ 11 - 2
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -150,10 +150,10 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
     /**
      * 各科室缺陷占比(主任医生)
      *
-     * @param filterOrderByDeptVO
+     * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO);
+    public List<LevelStsByDeptDTO> levelStatisticsByDept(FilterOrderVO filterOrderVO);
 
     /**
      * 病案首页合格率占比(主任医生)
@@ -269,6 +269,15 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO);
 
+
+    /**
+     * 关键条目缺陷占比统计-科室
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    public List<EntryStasByDeptDTO> entryStatisticsByDept(EntryStatisticsVO entryStatisticsVO);
+
     /**
      * 非医嘱离院病人记录
      *

+ 13 - 3
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -150,10 +150,10 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
     /**
      * 各科室缺陷占比(主任医生)
      *
-     * @param filterOrderByDeptVO
+     * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO);
+    public List<LevelStsByDeptDTO> levelStatisticsByDept( FilterOrderVO filterOrderVO);
 
     /**
      * 单条条目缺陷统计-首页
@@ -163,7 +163,6 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      */
     public List<AdmissionCountDTO> casesEntryStatisticsByDept(FilterVO filterVO);
 
-
     /**
      * 病案首页合格率占比(主任医生)
      *
@@ -255,6 +254,17 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      */
     public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO);
 
+    /**
+     * 关键条目缺陷占比统计-科室
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    public List<EntryStasByDeptDTO> entryStatisticsByDept(EntryStatisticsVO entryStatisticsVO);
+
+
+
+
     /**
      * 非医嘱离院病人记录
      *

+ 14 - 3
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -216,12 +216,12 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     /**
      * 各科室缺陷占比(主任医生)
      *
-     * @param filterOrderByDeptVO
+     * @param filterOrderVO
      * @return
      */
     @Override
-    public List<LevelStatisticsDTO> levelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO) {
-        return baseMapper.levelStatisticsByDept(filterOrderByDeptVO);
+    public List<LevelStsByDeptDTO> levelStatisticsByDept(FilterOrderVO filterOrderVO) {
+        return baseMapper.levelStatisticsByDept(filterOrderVO);
     }
 
     /**
@@ -360,6 +360,17 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
         return baseMapper.entryStatistics(entryStatisticsVO);
     }
 
+    /**
+     * 关键条目缺陷占比统计-科室
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    @Override
+    public List<EntryStasByDeptDTO> entryStatisticsByDept(EntryStatisticsVO entryStatisticsVO) {
+        return baseMapper.entryStatisticsByDept(entryStatisticsVO);
+    }
+
     /**
      * 非医嘱离院病人记录
      *

+ 5 - 0
src/main/java/com/diagbot/vo/EntryStatisticsVO.java

@@ -48,6 +48,11 @@ public class EntryStatisticsVO {
      * 科室名称
      */
     private String deptName;
+
+    /**
+     * 主治医生
+     */
+    private String doctorName;
     /**
      * 是否归档(0:未归档,1:已归档)
      */

+ 22 - 3
src/main/java/com/diagbot/web/ConsoleByDeptController.java

@@ -194,7 +194,7 @@ public class ConsoleByDeptController {
     /**
      * 各科室缺陷占比(组合)
      *
-     * @param filterOrderByDeptVO
+     * @param filterOrderVO
      * @return
      */
     @ApiOperation(value = "各科室缺陷占比(组合)-内页[by:zhaops]",
@@ -207,8 +207,8 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/levelStatisticsByDept")
     @SysLogger("levelStatisticsByDept")
-    public RespDTO<List<LevelStatisticsDTO>> levelStatisticsByDept(@RequestBody @Valid FilterOrderByDeptVO filterOrderByDeptVO) {
-        return RespDTO.onSuc(consoleByDeptFacade.levelStatisticsByDept(filterOrderByDeptVO));
+    public RespDTO<List<LevelStsByDeptDTO>> levelStatisticsByDept(@RequestBody @Valid FilterOrderVO filterOrderVO) {
+        return RespDTO.onSuc(consoleByDeptFacade.levelStatisticsByDept(filterOrderVO));
     }
 
     /**
@@ -281,5 +281,24 @@ public class ConsoleByDeptController {
     public RespDTO<IPage<QcResultShortDTO>> qcResultShortByDeptPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.qcResultShortByDeptPage(qcResultShortPageVO));
     }
+
+    /**
+     * 关键条目缺陷占比统计-科室
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    @ApiOperation(value = "关键条目缺陷占比统计-科室[by:cy]",
+            notes = "deptName:科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc:排序(降序) <br>" +
+                    "startDate: 起始时间 <br>" +
+                    "endDate: 截止时间 <br>" +
+                    "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
+    @PostMapping("/entryStatisticsByDept")
+    @SysLogger("entryStatisticsByDept")
+    public RespDTO<List<EntryStasByDeptDTO>> entryStatisticsByDept(@RequestBody @Valid EntryStatisticsVO entryStatisticsVO) {
+        return RespDTO.onSuc(consoleByDeptFacade.entryStatisticsByDept(entryStatisticsVO));
+    }
     //endregion -----------------------内页接口结束------------------------------
 }

+ 41 - 0
src/main/java/com/diagbot/web/ConsoleByDeptExportController.java

@@ -3,6 +3,7 @@ package com.diagbot.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.DeptEntryNumDTO;
+import com.diagbot.dto.EntryStasByDeptDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.ConsoleByDeptExportFacade;
 import com.diagbot.vo.*;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @Description:
@@ -160,6 +162,45 @@ public class ConsoleByDeptExportController {
         consoleByDeptExportFacade.qcResultShortByDeptPageExport(response, qcResultShortPageVO);
     }
 
+    /**
+     * 各科室缺陷占比-科室(组合)
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    @ApiOperation(value = "各科室缺陷占比-科室 导出[by:cy]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "level: 病历等级 <br>" +
+                    "name: 科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc: 排序(降序) <br>" +
+                    "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
+    @PostMapping("/levelByDeptExport")
+    @SysLogger("levelByDeptExport")
+    public void levelByDeptExport(HttpServletResponse response, @RequestBody @Valid FilterOrderVO filterOrderVO) {
+        consoleByDeptExportFacade.levelByDeptExport(response, filterOrderVO);
+    }
+
+    /**
+     * 关键条目缺陷占比统计导出-科室
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    @ApiOperation(value = "关键条目缺陷占比统计导出-科室[by:cy]",
+            notes = "deptName:科室名称 <br>" +
+                    "doctorName:主治医生 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc:排序(降序) <br>" +
+                    "startDate: 起始时间 <br>" +
+                    "endDate: 截止时间 <br>" +
+                    "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
+    @PostMapping("/entryStatisticsByDeptExport")
+    @SysLogger("entryStatisticsByDeptExport")
+    public void entryStatisticsByDeptExport(HttpServletResponse response,@RequestBody @Valid EntryStatisticsVO entryStatisticsVO) {
+         consoleByDeptExportFacade.entryStatisticsByDeptExport(response,entryStatisticsVO);
+    }
+
 /**
      * 病历稽查统计(首页)
      * @param filterVO

文件差异内容过多而无法显示
+ 1003 - 284
src/main/resources/mapper/BehospitalInfoMapper.xml