Browse Source

Merge branch 'master' into his/common

# Conflicts:
#	src/main/java/com/diagbot/facade/data/ABasDeptInfoFacade.java
lantone 5 years ago
parent
commit
8c85ef7996
53 changed files with 1049 additions and 167 deletions
  1. 28 0
      doc/010.20200618v1.3.6/qc_initv1.3.6.sql
  2. 7 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  3. 7 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  4. 32 1
      src/main/java/com/diagbot/dto/DeptEntryNumDTO.java
  5. 6 0
      src/main/java/com/diagbot/dto/DeptNumDTO.java
  6. 36 2
      src/main/java/com/diagbot/dto/EntryNumDTO.java
  7. 80 1
      src/main/java/com/diagbot/dto/HomePageNumDTO.java
  8. 64 4
      src/main/java/com/diagbot/dto/LevelStatisticsDTO.java
  9. 24 0
      src/main/java/com/diagbot/dto/LevelStatisticsTZDTO.java
  10. 15 0
      src/main/java/com/diagbot/dto/NumDTO.java
  11. 40 0
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  12. 79 0
      src/main/java/com/diagbot/facade/ConsoleExportFacade.java
  13. 3 2
      src/main/java/com/diagbot/facade/ConsoleFacade.java
  14. 1 1
      src/main/java/com/diagbot/facade/ModelHospitalFacade.java
  15. 1 1
      src/main/java/com/diagbot/facade/QcAbnormalFacade.java
  16. 1 1
      src/main/java/com/diagbot/facade/QcresultInfoFacade.java
  17. 31 0
      src/main/java/com/diagbot/facade/SysUserFacade.java
  18. 40 68
      src/main/java/com/diagbot/facade/data/ABasDeptInfoFacade.java
  19. 3 3
      src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java
  20. 1 1
      src/main/java/com/diagbot/facade/data/ADoctorAdviceFacade.java
  21. 1 1
      src/main/java/com/diagbot/facade/data/AHomeDiagnoseInfoFacade.java
  22. 1 1
      src/main/java/com/diagbot/facade/data/AHomeOperationInfoFacade.java
  23. 1 1
      src/main/java/com/diagbot/facade/data/AHomePageFacade.java
  24. 1 1
      src/main/java/com/diagbot/facade/data/AMedCrisisFacade.java
  25. 1 1
      src/main/java/com/diagbot/facade/data/AMedRecordTypeFacade.java
  26. 1 1
      src/main/java/com/diagbot/facade/data/AMedicalRecordContentFacade.java
  27. 4 4
      src/main/java/com/diagbot/facade/data/AMedicalRecordFacade.java
  28. 15 4
      src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java
  29. 15 4
      src/main/java/com/diagbot/service/BehospitalInfoService.java
  30. 8 0
      src/main/java/com/diagbot/service/SysTokenService.java
  31. 16 5
      src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java
  32. 24 0
      src/main/java/com/diagbot/service/impl/SysTokenServiceImpl.java
  33. 1 1
      src/main/java/com/diagbot/task/BasDeptInfoTask.java
  34. 1 1
      src/main/java/com/diagbot/task/BasDoctorInfoTask.java
  35. 1 1
      src/main/java/com/diagbot/task/BehospitalInfoAnalyzeTask.java
  36. 1 1
      src/main/java/com/diagbot/task/BehospitalInfoTask.java
  37. 1 1
      src/main/java/com/diagbot/task/DoctorAdviceTask.java
  38. 13 15
      src/main/java/com/diagbot/task/HomeDiagnoseInfoTask.java
  39. 1 1
      src/main/java/com/diagbot/task/HomeOperationInfoTask.java
  40. 1 1
      src/main/java/com/diagbot/task/HomePageTask.java
  41. 1 1
      src/main/java/com/diagbot/task/MedicalRecordContentTask.java
  42. 1 1
      src/main/java/com/diagbot/task/MedicalRecordTask.java
  43. 1 1
      src/main/java/com/diagbot/task/MedicalRecordTypeTask.java
  44. 1 2
      src/main/java/com/diagbot/task/TASK_CX.java
  45. 23 5
      src/main/java/com/diagbot/util/ExcelUtils.java
  46. 4 2
      src/main/java/com/diagbot/vo/BehospitalPageVO.java
  47. 20 0
      src/main/java/com/diagbot/vo/UserLoginNoPassVO.java
  48. 35 3
      src/main/java/com/diagbot/web/BehospitalInfoController.java
  49. 3 2
      src/main/java/com/diagbot/web/ConsoleController.java
  50. 100 0
      src/main/java/com/diagbot/web/ConsoleExportController.java
  51. 10 0
      src/main/java/com/diagbot/web/SysUserController.java
  52. 233 4
      src/main/resources/mapper/BehospitalInfoMapper.xml
  53. 10 16
      src/main/resources/mapper/QcresultInfoMapper.xml

+ 28 - 0
doc/010.20200618v1.3.6/qc_initv1.3.6.sql

@@ -0,0 +1,28 @@
+use `qc`;
+
+INSERT INTO `sys_menu` VALUES ('33', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分(医疗组)', '3', 'YH-BLZK-ZKPFYLZ', '1', '1', '4', '用户-病历质控-质控评分(医疗组)');
+
+INSERT INTO `sys_menu_permission` VALUES ('68', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '33', '96', '用户-医疗组-分页');
+INSERT INTO `sys_menu_permission` VALUES ('69', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '33', '97', '用户-医疗组-新增质控条目');
+INSERT INTO `sys_menu_permission` VALUES ('70', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '33', '98', '用户-医疗组-删除质控条目');
+INSERT INTO `sys_menu_permission` VALUES ('71', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '33', '99', '用户-医疗组-修改质控条目');
+
+INSERT INTO `sys_permission` VALUES ('96', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分', 'FUNC000017', '/qc/behospitalInfo/analyze', 'ALL', '用户-医疗组-评分', null);
+INSERT INTO `sys_permission` VALUES ('97', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '新增质控条目', 'FUNC000011', '/qc/behospitalInfo/addCase', 'ALL', '用户-医疗组-新增质控条目', null);
+INSERT INTO `sys_permission` VALUES ('98', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '删除质控条目', 'FUNC000012', '/qc/behospitalInfo/delCase', 'ALL', '用户-医疗组-删除质控条目', null);
+INSERT INTO `sys_permission` VALUES ('99', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '修改质控条目', 'FUNC000013', '/qc/behospitalInfo/updCase', 'ALL', '用户-医疗组-修改质控条目', null);
+
+
+INSERT INTO `sys_role_menu` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `menu_id`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '33', NULL);
+
+INSERT INTO `sys_role_permission` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '96', NULL);
+INSERT INTO `sys_role_permission` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '97', NULL);
+INSERT INTO `sys_role_permission` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '98', NULL);
+INSERT INTO `sys_role_permission` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '99', NULL);
+
+
+-- 再次同步
+-- ALTER TABLE `med_qcresult_info` ADD INDEX `idx_hospital_id` (`hospital_id`) USING BTREE;
+-- ALTER TABLE `med_qcresult_info` ADD INDEX `idx_hospital_id_behospital_code` (`hospital_id`,`behospital_code`) USING BTREE;
+-- ALTER TABLE `med_qcresult_info` ADD INDEX `idx_is_deleted` (`is_deleted`) USING BTREE;
+-- ALTER TABLE `med_qcresult_info` ADD INDEX `idx_mix` (`hospital_id`,`behospital_code`,`is_deleted`) USING BTREE;

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

@@ -38,6 +38,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
                 .antMatchers("/sys/user/getJwt").permitAll()
+                .antMatchers("/sys/user/getJwtNoPass").permitAll()
                 .antMatchers("/sys/user/refreshJwt").permitAll()
                 .antMatchers("/sys/user/checkToken").permitAll()
                 .antMatchers("/sys/dictionaryInfo/getDictionary").permitAll()
@@ -73,10 +74,12 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/bas/dept/getListUser").permitAll()
                 .antMatchers("/qc/behospitalInfo/page_dept").permitAll()
                 .antMatchers("/qc/behospitalInfo/page_person").permitAll()
+                .antMatchers("/qc/behospitalInfo/page_group").permitAll()
                 .antMatchers("/qc/casesEntryHospital/findQcCasesEntry").permitAll()
                 .antMatchers("/qc/behospitalInfo/exportExcel").permitAll()
                 .antMatchers("/qc/behospitalInfo/exportQcresult").permitAll()
                 .antMatchers("/qc/behospitalInfo/exportQcresultByDept").permitAll()
+                .antMatchers("/qc/behospitalInfo/exportQcresultByGroup").permitAll()
                 .antMatchers("/qc/abnormal/getQcAnnormalMode").permitAll()
                 .antMatchers("/qc/dataimport/import").permitAll()
                 .antMatchers("/qc/dataimport/dataimportPrepare").permitAll()
@@ -124,6 +127,10 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/consoleByDept/mrCountByDept").permitAll()
                 .antMatchers("/consoleByDept/qcResultShortByDeptPage").permitAll()
                 .antMatchers("/consoleByDept/resultStatisticsByDeptAndDoctorPage").permitAll()
+                .antMatchers("/console/export/homePageLevelExport").permitAll()
+                .antMatchers("/console/export/entryGroupByEntryExport").permitAll()
+                .antMatchers("/console/export/levelExport").permitAll()
+                .antMatchers("/console/export/levelExport_TZ").permitAll()
                 .antMatchers("/qc/data/sendDoctorInfos").permitAll()
                 .antMatchers("/qc/data/sendDeptInfos").permitAll()
                 .antMatchers("/qc/data/sendRecordTypes").permitAll()

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

@@ -81,6 +81,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/actuator/**", request)
                 || matchers("/hystrix/**", request)
                 || matchers("/sys/user/getJwt", request)
+                || matchers("/sys/user/getJwtNoPass", request)
                 || matchers("/sys/user/refreshJwt", request)
                 || matchers("/sys/dictionaryInfo/getDictionary", request)
                 || matchers("/sys/user/checkToken", request)
@@ -102,10 +103,12 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/bas/dept/getListUser", request)
                 || matchers("/qc/behospitalInfo/page_dept", request)
                 || matchers("/qc/behospitalInfo/page_person", request)
+                || matchers("/qc/behospitalInfo/page_group", request)
                 || matchers("/qc/casesEntryHospital/findQcCasesEntry", request)
                 || matchers("/qc/behospitalInfo/exportExcel", request)
                 || matchers("/qc/behospitalInfo/exportQcresult", request)
                 || matchers("/qc/behospitalInfo/exportQcresultByDept", request)
+                || matchers("/qc/behospitalInfo/exportQcresultByGroup", request)
                 || matchers("/qc/abnormal/getQcAnnormalMode", request)
                 || matchers("/qc/dataimport/import", request)
                 || matchers("/qc/dataimport/dataimportPrepare", request)
@@ -153,6 +156,10 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/consoleByDept/mrCountByDept", request)
                 || matchers("/consoleByDept/qcResultShortByDeptPage", request)
                 || matchers("/consoleByDept/resultStatisticsByDeptAndDoctorPage", request)
+                || matchers("/console/export/homePageLevelExport", request)
+                || matchers("/console/export/entryGroupByEntryExport", request)
+                || matchers("/console/export/levelExport", request)
+                || matchers("/console/export/levelExport_TZ", request)
                 || matchers("/qc/data/sendDoctorInfos", request)
                 || matchers("/qc/data/sendDeptInfos", request)
                 || matchers("/qc/data/sendRecordTypes", request)

+ 32 - 1
src/main/java/com/diagbot/dto/DeptEntryNumDTO.java

@@ -11,26 +11,57 @@ import lombok.Setter;
 @Getter
 @Setter
 public class DeptEntryNumDTO {
+    /**
+     * 条目缺陷id
+     */
+
     private Long id;
     /**
-     * 条目名称
+     * 条目缺陷名称
      */
     private String name;
+    /**
+     * 模块id
+     */
     private Long casesId;
     /**
      * 模块名称
      */
     private String casesName;
+    /**
+     * 科室id
+     */
     private String deptId;
     /**
      * 科室名称
      */
     private String deptName;
+    /**
+     * 条目缺陷总数
+     */
     private Integer totleNum = 0;
+    /**
+     * 条目缺陷数
+     */
     private Integer num = 0;
+    /**
+     * 条目缺陷占比
+     */
     private Double percent = 0.00d;
+    /**
+     * 条目缺陷占比(百分比)
+     */
     private String percentStr = "0.00%";
+    /**
+     * 条目缺陷分值
+     */
     private Double score = 0d;
+    /**
+     * 单项否决标识
+     */
     private Integer isReject;
+    /**
+     * 规则类型(0:无,1:空项,2:错误)
+     */
     private Integer ruleType;
 }

+ 6 - 0
src/main/java/com/diagbot/dto/DeptNumDTO.java

@@ -11,6 +11,12 @@ import lombok.Setter;
 @Getter
 @Setter
 public class DeptNumDTO extends NumDTO {
+    /**
+     * 科室id
+     */
     private String deptId;
+    /**
+     * 科室名称
+     */
     private String deptName;
 }

+ 36 - 2
src/main/java/com/diagbot/dto/EntryNumDTO.java

@@ -1,31 +1,65 @@
 package com.diagbot.dto;
 
+import cn.afterturn.easypoi.excel.annotation.Excel;
 import lombok.Getter;
 import lombok.Setter;
 
 /**
- * @Description:
+ * @Description:条目缺陷占比返回结构
  * @Author:zhaops
  * @time: 2020/6/5 13:20
  */
 @Getter
 @Setter
 public class EntryNumDTO {
+    /**
+     * 条目缺陷id
+     */
     private Long id;
     /**
-     * 条目名称
+     * 条目缺陷名称
      */
+    @Excel(name = "缺陷名称", width = 40, orderNum = "2")
     private String name;
+    /**
+     * 模块id
+     */
     private Long casesId;
     /**
      * 模块名称
      */
+    @Excel(name = "所属模块", width = 20, orderNum = "1")
     private String casesName;
+    /**
+     * 条目缺陷总数
+     */
     private Integer totleNum = 0;
+    /**
+     * 条目缺陷数
+     */
+    @Excel(name = "数量", orderNum = "5")
     private Integer num = 0;
+    /**
+     * 条目缺陷占比
+     */
     private Double percent = 0.00d;
+    /**
+     * 条目缺陷占比(百分比)
+     */
+    @Excel(name = "缺陷占比", orderNum = "6")
     private String percentStr = "0.00%";
+    /**
+     * 条目缺陷分值
+     */
+    @Excel(name = "分值", orderNum = "3")
     private Double score = 0d;
+    /**
+     * 单项否决标识
+     */
+    @Excel(name = "单项否决", orderNum = "4", replace = { "否_0", "是_1" })
     private Integer isReject;
+    /**
+     * 规则类型(0:无,1:空项,2:错误)
+     */
     private Integer ruleType;
 }

+ 80 - 1
src/main/java/com/diagbot/dto/HomePageNumDTO.java

@@ -1,37 +1,116 @@
 package com.diagbot.dto;
 
+import cn.afterturn.easypoi.excel.annotation.Excel;
 import lombok.Getter;
 import lombok.Setter;
 
 /**
- * @Description:
+ * @Description:病案首页合格率占比返回结构
  * @Author:zhaops
  * @time: 2020/6/5 17:32
  */
 @Getter
 @Setter
 public class HomePageNumDTO {
+    /**
+     * 科室id(科室编码)
+     */
     private String deptId;
+    /**
+     * 科室名称
+     */
+    @Excel(name = "科室名称", width = 30, orderNum = "1")
     private String deptName;
+    /**
+     * 主管医生id
+     */
     private String doctorId;
+    /**
+     * 主管医生名称
+     */
     private String doctorName;
+    /**
+     * 缺陷条目数
+     */
+    @Excel(name = "缺陷总数", orderNum = "2")
     private Integer entryNum = 0;
+    /**
+     * 质控病历数
+     */
+    @Excel(name = "质控病历数", orderNum = "9")
     private Integer mrNum = 0;
+    /**
+     * 质控评分(总分)
+     */
     private Double totleValue = 0d;
+    /**
+     * 质控评分(平均分)
+     */
+    @Excel(name = "质控平均分", orderNum = "8")
     private Double averageValue = 0d;
+    /**
+     * 病案首页合格病历数
+     */
     private Integer firstLevelNum = 0;
+    /**
+     * 病案首页不合格病历数
+     */
     private Integer secondLevelNum = 0;
+    /**
+     * 病案首页合格病历占比
+     */
     private Double firstLevelPercent = 0.00d;
+    /**
+     * 病案首页不合格病历占比
+     */
     private Double secondLevelPercent = 0.00d;
+    /**
+     * 病案首页合格病历占比(百分比)
+     */
+    @Excel(name = "合格率", orderNum = "3")
     private String firstLevelPercentStr = "0.00%";
+    /**
+     * 病案首页不合格病历占比(百分比)
+     */
     private String secondLevelPercentStr = "0.00%";
+    /**
+     * 上级科室id(上级科室编码)
+     */
     private String deptClassId;
+    /**
+     * 上级科室名称
+     */
     private String deptClass;
+    /**
+     * 空项数
+     */
+    @Excel(name = "空项数", orderNum = "4")
     private Integer emptyNum = 0;
+    /**
+     * 错误数
+     */
+    @Excel(name = "错误数", orderNum = "6")
     private Integer errorNum = 0;
+    /**
+     * 完整率、完善率分母(质控病历数*病案首页条目数)
+     */
     private Integer entryTotleNum = 0;
+    /**
+     * 完整率
+     */
     private Double emptyPercent = 0.00d;
+    /**
+     * 完善率
+     */
     private Double errorPercent = 0.00d;
+    /**
+     * 完整率(百分比)
+     */
+    @Excel(name = "完整率", orderNum = "5")
     private String emptyPercentStr = "0.00%";
+    /**
+     * 完善率(百分比)
+     */
+    @Excel(name = "完善率", orderNum = "7")
     private String errorPercentStr = "0.00%";
 }

+ 64 - 4
src/main/java/com/diagbot/dto/LevelStatisticsDTO.java

@@ -1,34 +1,94 @@
 package com.diagbot.dto;
 
+import cn.afterturn.easypoi.excel.annotation.Excel;
 import lombok.Getter;
 import lombok.Setter;
 
 /**
- * @Description:
+ * @Description:各科室缺陷占比返回结构
  * @Author:zhaops
  * @time: 2020/5/19 16:04
  */
 @Getter
 @Setter
 public class LevelStatisticsDTO {
+    /**
+     * 科室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 Integer entryNum;
+    /**
+     * 质控病历数
+     */
+    @Excel(name = "质控病历数", orderNum = "5")
     private Integer mrNum;
+    /**
+     * 质控评分(总分)
+     */
     private Double totleValue;
+    /**
+     * 质控评分(平均分)
+     */
+    @Excel(name = "质控平均分", orderNum = "4")
     private Double averageValue;
+    /**
+     * 甲级病历数/病案首页合格病历数
+     */
+    @Excel(name = "甲级病历数", orderNum = "6")
     private Integer firstLevelNum;
+    /**
+     * 乙级病历数/病案首页不合格病历数
+     */
+    @Excel(name = "乙级病历数", orderNum = "7")
     private Integer secondLevelNum;
+    /**
+     * 丙级病历数
+     */
+    @Excel(name = "丙级病历数", orderNum = "8")
     private Integer thirdLevelNum;
+    /**
+     * 甲级病历占比/病案首页合格病历占比
+     */
     private Double firstLevelPercent;
+    /**
+     * 乙级病历占比/病案首页不合格病历占比
+     */
     private Double secondLevelPercent;
+    /**
+     * 丙级病历占比
+     */
     private Double thirdLevelPercent;
+    /**
+     * 甲级病历占比(百分比)/病案首页合格病历占比(百分比)
+     */
+    @Excel(name = "甲级率", orderNum = "9")
     private String firstLevelPercentStr;
+    /**
+     * 乙级病历占比(百分比)/病案首页不合格病历占比(百分比)
+     */
+    @Excel(name = "乙级率", orderNum = "10")
     private String secondLevelPercentStr;
+    /**
+     * 丙级病历占比(百分比)
+     */
+    @Excel(name = "丙级率", orderNum = "11")
     private String thirdLevelPercentStr;
-
-    private String deptClassId;
-    private String deptClass;
 }

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

@@ -0,0 +1,24 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:各科室缺陷占比-台州
+ * @Author:zhaops
+ * @time: 2020/6/22 13:41
+ */
+@Getter
+@Setter
+public class LevelStatisticsTZDTO extends LevelStatisticsDTO {
+    /**
+     * 上级科室id(上级科室编码)
+     */
+    private String deptClassId;
+    /**
+     * 上级科室名称
+     */
+    @Excel(name = "科室系统", orderNum = "1", replace = { "内科系统_内科", "外科系统_外科", "-_null" })
+    private String deptClass;
+}

+ 15 - 0
src/main/java/com/diagbot/dto/NumDTO.java

@@ -12,9 +12,24 @@ import lombok.Setter;
 @Setter
 public class NumDTO {
     private String id;
+    /**
+     * 名称
+     */
     private String name;
+    /**
+     * 总数
+     */
     private Integer totleNum = 0;
+    /**
+     * 数量
+     */
     private Integer num = 0;
+    /**
+     * 占比
+     */
     private Double percent = 0.00d;
+    /**
+     * 占比(百分比)
+     */
     private String percentStr = "0.00%";
 }

+ 40 - 0
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -827,6 +827,17 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         return res;
     }
 
+    /**
+     * @param behospitalPageVO
+     * @return
+     */
+    public IPage<BehospitalInfoDTO> pageGroup(BehospitalPageVO behospitalPageVO) {
+        behospitalPageSet(behospitalPageVO);
+        behospitalPageVO.setUserId(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
+        IPage<BehospitalInfoDTO> res = getPageByGroup(behospitalPageVO);
+        return res;
+    }
+
     public IPage<BehospitalInfoDTO> pageDept(BehospitalPageVO behospitalPageVO) {
         behospitalPageSet(behospitalPageVO);
         behospitalPageVO.setUserId(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
@@ -1023,4 +1034,33 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         response.setContentType("text/html;charset=UTF-8");
         ExcelUtils.exportExcelUser(res, null, "sheet1", ExportExcelDTO.class, fileName, response);
     }
+
+    /**
+     * 医疗组质控结果导出
+     *
+     * @param response
+     * @param exportQcresultVO
+     */
+    public void exportQcresultByGroup(HttpServletResponse response, ExportQcresultVO exportQcresultVO) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        exportQcresultVO.setHospitalId(hospitalId);
+        exportQcresultVO.setUserId(Long.valueOf(userId));
+        Date startDate = exportQcresultVO.getLeaveHosDateStart();
+        Date endDate = exportQcresultVO.getLeaveHosDateEnd();
+        //时间间隔7天
+        long interval = 7 * 24 * 60 * 60 * 1000;
+        if (endDate.getTime() < startDate.getTime()) {
+            throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
+        }
+        if (endDate.getTime() - startDate.getTime() > interval) {
+            throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于7天");
+        }
+        exportQcresultVO.setLeaveHosDateEnd(DateUtil.getFirstTimeOfDay(DateUtil.addDay(endDate, 1)));
+        List<ExportExcelDTO> res = this.exportQcresultByGroup(exportQcresultVO);
+        String fileName = dateFormat.format(startDate) + "-" + dateFormat.format(endDate) + "抽查住院病历质量情况.xls";
+        response.setContentType("text/html;charset=UTF-8");
+        ExcelUtils.exportExcelUser(res, null, "sheet1", ExportExcelDTO.class, fileName, response);
+    }
 }

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

@@ -0,0 +1,79 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.EntryNumDTO;
+import com.diagbot.dto.HomePageNumDTO;
+import com.diagbot.dto.LevelStatisticsDTO;
+import com.diagbot.dto.LevelStatisticsTZDTO;
+import com.diagbot.util.ExcelUtils;
+import com.diagbot.vo.FilterOrderVO;
+import com.diagbot.vo.FilterPageVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * @Description: 报表导出装饰层
+ * @author: gaodm
+ * @time: 2020/6/18 10:41
+ */
+@Component
+public class ConsoleExportFacade {
+
+    @Autowired
+    private ConsoleFacade consoleFacade;
+
+
+    /**
+     * 病案首页合格率占比
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    public void homePageLevelExport(HttpServletResponse response, FilterOrderVO filterOrderVO) {
+        List<HomePageNumDTO> res = consoleFacade.homePageLevelStatistics(filterOrderVO);
+        String fileName = "病案首页合格率占比.xls";
+        ExcelUtils.exportExcel(res, null, "sheet1", HomePageNumDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 条目缺陷占比(内页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public void entryGroupByEntryExport(HttpServletResponse response, FilterPageVO filterPageVO) {
+        filterPageVO.setCurrent(1L);
+        filterPageVO.setSize(Long.MAX_VALUE);
+        filterPageVO.setSearchCount(false);
+        IPage<EntryNumDTO> page = consoleFacade.entryGroupByEntryInnerPage(filterPageVO);
+        String fileName = "条目缺陷占比.xls";
+        ExcelUtils.exportExcel(page.getRecords(), null, "sheet1", EntryNumDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 各科室缺陷占比(组合)
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    public void levelExport(HttpServletResponse response, FilterOrderVO filterOrderVO) {
+        List<LevelStatisticsDTO> records = consoleFacade.levelStatistics(filterOrderVO);
+        String fileName = "各科室缺陷占比.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", LevelStatisticsDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 各科室缺陷占比(组合)-台州
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    public void levelExport_TZ(HttpServletResponse response, FilterOrderVO filterOrderVO) {
+        List<LevelStatisticsTZDTO> records = consoleFacade.levelStatisticsByDeptClass_TZ(filterOrderVO);
+        String fileName = "各科室缺陷占比-台州.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", LevelStatisticsTZDTO.class, fileName, response, 12.8f);
+    }
+}

+ 3 - 2
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -9,6 +9,7 @@ import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
+import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.dto.QcResultShortDTO;
@@ -455,9 +456,9 @@ public class ConsoleFacade {
      * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDeptClass(FilterOrderVO filterOrderVO) {
+    public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass_TZ(FilterOrderVO filterOrderVO) {
         filterFacade.filterOrderVOSet(filterOrderVO);
-        List<LevelStatisticsDTO> records = behospitalInfoFacade.levelStatisticsByDeptClass2(filterOrderVO);
+        List<LevelStatisticsTZDTO> records = behospitalInfoFacade.levelStatisticsByDeptClass_TZ(filterOrderVO);
         return records;
     }
 

+ 1 - 1
src/main/java/com/diagbot/facade/ModelHospitalFacade.java

@@ -55,7 +55,7 @@ public class ModelHospitalFacade extends ModelHospitalServiceImpl {
         QueryWrapper<ModelHospital> queryModelHospital = new QueryWrapper<>();
         queryModelHospital.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("id",modeId);
-        ModelHospital modelHospital = modelHospitalService.getOne(queryModelHospital);
+        ModelHospital modelHospital = modelHospitalService.getOne(queryModelHospital, false);
         if(modelHospital == null){
             throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据不存在!");
         }

+ 1 - 1
src/main/java/com/diagbot/facade/QcAbnormalFacade.java

@@ -120,7 +120,7 @@ public class QcAbnormalFacade extends QcAbnormalServiceImpl {
         queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id", SysUserUtils.getCurrentHospitalID())
                 .eq("hospital_model_name", qcAbnormalModeVO.getDescription());
-        ModelHospital modeHospital = modelHospitalFacade.getOne(queryWrapper);
+        ModelHospital modeHospital = modelHospitalFacade.getOne(queryWrapper, false);
         List<QcModeAllDTO> dataMode = qcModeFacade.getModeAll();
         data.setQcModeDatas(dataMode);
         data.setDescription(qcAbnormalModeVO.getDescription());

+ 1 - 1
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -149,7 +149,7 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                 new QueryWrapper<QcresultInfo>()
                         .eq("is_deleted", IsDeleteEnum.N.getKey())
                         .eq("hospital_id", analyzeVO.getHospitalId())
-                        .eq("behospital_code", analyzeVO.getBehospitalCode()));
+                        .eq("behospital_code", analyzeVO.getBehospitalCode()), false);
         if (null == qcresultInfo) {
             qcresultInfo = new QcresultInfo();
         } else {

+ 31 - 0
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -139,6 +139,37 @@ public class SysUserFacade extends SysUserServiceImpl {
         return data;
     }
 
+    /**
+     * 外部获取jwt
+     *
+     * @param username 用户名
+     * @return jwt
+     */
+    public JwtDTO getJwtNoPass(String username) {
+        JwtDTO data = new JwtDTO();
+        if (StringUtil.isBlank(username)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                    "请输入用户名");
+        }
+        QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
+        userQueryWrapper.eq("username", username)
+                .eq("status", StatusEnum.Enable.getKey())
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        SysUser user = this.getOne(userQueryWrapper, false);
+        if (null == user) {
+            throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
+        }
+        JwtStore jwt = tokenFacade.getToken(user.getId().toString());
+        if (null == jwt) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "Token不存在,请重新登录");
+        }
+        data.setAccessToken(jwt.getAccessToken());
+        data.setRefreshToken(jwt.getRefreshToken());
+        data.setType(user.getType());
+        data.setTypeCn(ConstantEnum.getName(user.getType()));//返回中文
+        return data;
+    }
+
     /**
      * 刷新jwt
      *

+ 40 - 68
src/main/java/com/diagbot/facade/data/ABasDeptInfoFacade.java

@@ -1,16 +1,13 @@
 package com.diagbot.facade.data;
 
-import com.alibaba.druid.support.json.JSONUtils;
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ABasDeptInfoDTO;
 import com.diagbot.entity.BasDeptInfo;
-import com.diagbot.entity.MedAbnormalInfo;
-import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.BasDeptInfoServiceImpl;
-import com.diagbot.util.*;
+import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.ABasDeptInfoVO;
+import com.diagbot.util.BeanUtil;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -26,9 +23,6 @@ public class ABasDeptInfoFacade extends BasDeptInfoServiceImpl{
     @Qualifier("basDeptInfoServiceImpl")
     private BasDeptInfoServiceImpl basDeptInfoService;
 
-    @Autowired
-    private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
-
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -55,75 +49,53 @@ public class ABasDeptInfoFacade extends BasDeptInfoServiceImpl{
      * @return
      */
     public RespDTO<List<ABasDeptInfoDTO>> executeDept(List<ABasDeptInfoVO> list) {
-        try {
-            if(list!=null && list.size()>0){
-                List<BasDeptInfo> basDeptInfoList=Lists.newArrayList();
-                List<ABasDeptInfoDTO> basDeptInfoDtoList=Lists.newArrayList();
-                basDeptInfoList=BeanUtil.listCopyTo(list,BasDeptInfo.class);
-                basDeptInfoDtoList=BeanUtil.listCopyTo(list,ABasDeptInfoDTO.class);
+        if(list!=null && list.size()>0){
+            List<BasDeptInfo> basDeptInfoList=Lists.newArrayList();
+            List<ABasDeptInfoDTO> basDeptInfoDtoList=Lists.newArrayList();
+            basDeptInfoList=BeanUtil.listCopyTo(list,BasDeptInfo.class);
+            basDeptInfoDtoList=BeanUtil.listCopyTo(list,ABasDeptInfoDTO.class);
 
-                //循环验证数据有效性
-                for (BasDeptInfo basDeptInfo:basDeptInfoList) {
-                    if("".equals(basDeptInfo.getDeptId())) {
-                        return RespDTO.onError("请输入科室编码!");
-                    }else if(basDeptInfo.getHospitalId()==null){
-                        return RespDTO.onError("请输入医院编码!");
-                    }else if("".equals(basDeptInfo.getDeptName())){
-                        return RespDTO.onError("请输入科室名称!");
-                    }
+            //循环验证数据有效性
+            for (BasDeptInfo basDeptInfo:basDeptInfoList) {
+                if("".equals(basDeptInfo.getDeptId())) {
+                    return RespDTO.onError("请输入科室编码!");
+                }else if(basDeptInfo.getHospitalId()==null){
+                    return RespDTO.onError("请输入医院编码!");
+                }else if("".equals(basDeptInfo.getDeptName())){
+                    return RespDTO.onError("请输入科室名称!");
                 }
-                execute(basDeptInfoList);
-                return RespDTO.onSuc(basDeptInfoDtoList);
-            }else {
-                saveAbnormalInfo(JSON.toJSONString(list),"","未接收到数据!");
-                return RespDTO.onError("未接收到数据!");
             }
-        }catch (Exception e){
-            saveAbnormalInfo(JSON.toJSONString(list),"",e.getMessage());
-            return RespDTO.onError(e.getMessage());
+            execute(basDeptInfoList);
+            return RespDTO.onSuc(basDeptInfoDtoList);
+        }else {
+            return RespDTO.onError("未接收到数据!");
         }
     }
 
     public void execute(List<BasDeptInfo> basDeptInfoList){
-        try {
-            List<BasDeptInfo> addE=Lists.newArrayList();
-            List<BasDeptInfo> updateE=Lists.newArrayList();
-            basDeptInfoList.stream().forEach(s -> {
-                BasDeptInfo basDeptInfo =this.getOne(new QueryWrapper<BasDeptInfo>()
-                        .eq("dept_id", s.getDeptId())
-                        .eq("hospital_id", s.getHospitalId())
-                        .eq("is_deleted",IsDeleteEnum.N));
-                if (basDeptInfo != null) {
-                    s.setGmtModified(new Date());
-                    updateE.add(s);
-                } else {
-                    s.setGmtCreate(new Date());
-                    addE.add(s);
-                }
-            });
-            if(updateE.size()>0){
-                basDeptInfoService.updateBatchByKey(updateE);
-            }
-            if(addE.size()>0){
-                basDeptInfoService.saveBatch(addE);
+        long startTime=System.currentTimeMillis();
+        List<BasDeptInfo> addE=Lists.newArrayList();
+        List<BasDeptInfo> updateE=Lists.newArrayList();
+        basDeptInfoList.stream().forEach(s -> {
+            BasDeptInfo basDeptInfo =this.getOne(new QueryWrapper<BasDeptInfo>()
+            .eq("dept_id", s.getDeptId())
+            .eq("hospital_id", s.getHospitalId()));
+            if (basDeptInfo != null) {
+                s.setGmtModified(new Date());
+                updateE.add(s);
+            } else {
+                s.setGmtCreate(new Date());
+                addE.add(s);
             }
-        }catch (Exception e){
-            saveAbnormalInfo(JSON.toJSONString(basDeptInfoList),"",e.getMessage());
+        });
+        if(updateE.size()>0){
+            basDeptInfoService.updateBatchByKey(updateE);
+        }
+        if(addE.size()>0){
+            basDeptInfoService.saveBatch(addE);
         }
-    }
 
-    /**
-     * 接口日志记录
-     * @param paramIn
-     * @param paramOut
-     * @param remark
-     */
-    private void saveAbnormalInfo(String paramIn,String paramOut,String remark){
-        MedAbnormalInfo medAbnormalInfo=new MedAbnormalInfo();
-        medAbnormalInfo.setParamIn(paramIn);
-        medAbnormalInfo.setParamOut(paramOut);
-        medAbnormalInfo.setRamark(remark);
-        medAbnormalInfo.setGmtCreate(new Date());
-        aMedAbnormalInfoFacade.save(medAbnormalInfo);
+        long endTime=System.currentTimeMillis();
+        System.out.println("程序运行时间: "+(endTime - startTime)+"ms");
     }
 }

+ 3 - 3
src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java

@@ -114,7 +114,7 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
             BehospitalInfo behospitalInfo = this.getOne(new QueryWrapper<BehospitalInfo>()
                     .eq("behospital_code", s.getBehospitalCode())
                     .eq("hospital_id", s.getHospitalId())
-                    .eq("is_deleted",IsDeleteEnum.N));
+                    .eq("is_deleted",IsDeleteEnum.N), false);
             if (behospitalInfo != null) {
                 s.setGmtModified(new Date());
                 s.setQcTypeId(initQcTypeId(s));
@@ -145,12 +145,12 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 .eq("behospital_code", s.getBehospitalCode())
                 .eq("hospital_id", s.getHospitalId())
                 .eq("mode_id", Long.valueOf("1"))
-                .eq("is_deleted",IsDeleteEnum.N));
+                .eq("is_deleted",IsDeleteEnum.N), false);
         if(medicalRecord!=null){
             QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
                     .eq("name",medicalRecord.getRecTitle())
                     .eq("hospital_id", s.getHospitalId())
-                    .eq("is_deleted",IsDeleteEnum.N));
+                    .eq("is_deleted",IsDeleteEnum.N), false);
             if(qcType!=null){
                 qcTypeId=qcType.getId();
             }else{

+ 1 - 1
src/main/java/com/diagbot/facade/data/ADoctorAdviceFacade.java

@@ -89,7 +89,7 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
                 DoctorAdvice doctorAdvice = this.getOne(new QueryWrapper<DoctorAdvice>()
                         .eq("doctor_advice_id", s.getDoctorAdviceId())
                         .eq("hospital_id", s.getHospitalId())
-                        .eq("behospital_code",s.getBehospitalCode()));
+                        .eq("behospital_code",s.getBehospitalCode()), false);
                 if (doctorAdvice != null) {
                     s.setGmtModified(new Date());
                     updateE.add(s);

+ 1 - 1
src/main/java/com/diagbot/facade/data/AHomeDiagnoseInfoFacade.java

@@ -64,7 +64,7 @@ public class AHomeDiagnoseInfoFacade extends HomeDiagnoseInfoServiceImpl{
                     HomeDiagnoseInfo diagnoseInfo = this.getOne(new QueryWrapper<HomeDiagnoseInfo>()
                             .eq("home_page_id", s.getHomePageId())
                             .eq("hospital_id", s.getHospitalId())
-                            .eq("diagnose_order_no", s.getDiagnoseOrderNo()));
+                            .eq("diagnose_order_no", s.getDiagnoseOrderNo()), false);
                     if (diagnoseInfo != null) {
                         s.setGmtModified(new Date());
                         updateE.add(s);

+ 1 - 1
src/main/java/com/diagbot/facade/data/AHomeOperationInfoFacade.java

@@ -67,7 +67,7 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
                     queryWrapper.eq("home_page_id", s.getHomePageId());
                     queryWrapper.eq("hospital_id", s.getHospitalId());
                     queryWrapper.eq("operation_order_no", s.getOperationOrderNo());
-                    HomeOperationInfo operationInfo = this.getOne(queryWrapper);
+                    HomeOperationInfo operationInfo = this.getOne(queryWrapper, false);
                     if (operationInfo != null) {
                         s.setGmtModified(new Date());
                         updateE.add(s);

+ 1 - 1
src/main/java/com/diagbot/facade/data/AHomePageFacade.java

@@ -250,7 +250,7 @@ public class AHomePageFacade extends HomePageServiceImpl{
                 HomePage homePage = this.getOne(new QueryWrapper<HomePage>()
                         .eq("home_page_id", s.getHomePageId())
                         .eq("hospital_id", s.getHospitalId())
-                        .eq("behospital_code", s.getBehospitalCode()));
+                        .eq("behospital_code", s.getBehospitalCode()), false);
                 if (homePage != null) {
                     s.setGmtModified(new Date());
                     updateE.add(s);

+ 1 - 1
src/main/java/com/diagbot/facade/data/AMedCrisisFacade.java

@@ -64,7 +64,7 @@ public class AMedCrisisFacade extends MedCrisisInfoServiceImpl{
                 .eq("rec_id", s.getRecId())
                 .eq("hospital_id", s.getHospitalId())
                 .eq("behospital_code", s.getBehospitalCode())
-                .eq("rec_type", s.getRecType()));
+                .eq("rec_type", s.getRecType()), false);
                 if (medCrisisInfo != null) {
                     s.setGmtModified(new Date());
                     updateE.add(s);

+ 1 - 1
src/main/java/com/diagbot/facade/data/AMedRecordTypeFacade.java

@@ -71,7 +71,7 @@ public class AMedRecordTypeFacade extends MedRecordTypeServiceImpl {
                 MedRecordType mrType = this.getOne(new QueryWrapper<MedRecordType>()
                         .eq("type_id", s.getTypeId())
                         .eq("hospital_id", s.getHospitalId())
-                        .eq("is_deleted",IsDeleteEnum.N));
+                        .eq("is_deleted",IsDeleteEnum.N), false);
                 if (mrType != null) {
                     s.setGmtModified(new Date());
                     updateE.add(s);

+ 1 - 1
src/main/java/com/diagbot/facade/data/AMedicalRecordContentFacade.java

@@ -58,7 +58,7 @@ public class AMedicalRecordContentFacade extends MedicalRecordContentServiceImpl
                 QueryWrapper<MedicalRecordContent> queryWrapper = new QueryWrapper<>();
                 queryWrapper.eq("rec_id", s.getRecId());
                 queryWrapper.eq("hospital_id", s.getHospitalId());
-                MedicalRecordContent mrContent = this.getOne(queryWrapper);
+                MedicalRecordContent mrContent = this.getOne(queryWrapper, false);
                 if (mrContent != null) {
                     s.setGmtModified(new Date());
                     updateE.add(s);

+ 4 - 4
src/main/java/com/diagbot/facade/data/AMedicalRecordFacade.java

@@ -222,14 +222,14 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
 
                     BehospitalInfo behospitalInfo = behospitalInfoFacade.getOne(new QueryWrapper<BehospitalInfo>()
                             .eq("behospital_code", s.getBehospitalCode())
-                            .eq("hospital_id", s.getHospitalId()));
+                            .eq("hospital_id", s.getHospitalId()), false);
                     if(behospitalInfo!=null){
                         //如果病人住院信息存在,更新对应的qc_type_id
                         Long qcTypeId=Long.valueOf("0");
                         QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
                                 .eq("name",s.getRecTitle())
                                 .eq("hospital_id", s.getHospitalId())
-                                .eq("is_deleted",IsDeleteEnum.N));
+                                .eq("is_deleted",IsDeleteEnum.N), false);
                         if(qcType!=null){
                             behospitalInfo.setQcTypeId(qcType.getId());
                         }else{
@@ -259,7 +259,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 MedicalRecord mRecord = this.getOne(new QueryWrapper<MedicalRecord>()
                         .eq("rec_id", s.getRecId())
                         .eq("hospital_id", s.getHospitalId())
-                        .eq("behospital_code", s.getBehospitalCode()));
+                        .eq("behospital_code", s.getBehospitalCode()), false);
                 if (mRecord != null) {
                     s.setGmtModified(new Date());
                     updateE.add(s);
@@ -294,7 +294,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
         QueryWrapper<ModelHospital> wrapper = new QueryWrapper<>();
         wrapper.eq("hospital_id",medicalRecord.getHospitalId());
         wrapper.eq("hospital_model_name",medicalRecord.getRecTitle());
-        ModelHospital mode=modelHospitalFacade.getOne(wrapper);
+        ModelHospital mode=modelHospitalFacade.getOne(wrapper, false);
         if(mode!=null){
             modeId=mode.getStandModelId();
         }else{

+ 15 - 4
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.ExportExcelDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
+import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
@@ -64,6 +65,8 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
 
     IPage<BehospitalInfoDTO> getPageByPerson(BehospitalPageVO behospitalPageVO);
 
+    IPage<BehospitalInfoDTO> getPageByGroup(BehospitalPageVO behospitalPageVO);
+
     /**
      * 出院总人数统计-全院-首页
      *
@@ -177,20 +180,20 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
     public IPage<DeptNumDTO> resultStatisticsByDeptAndDoctorPage(@Param("filterPageByDeptVO") FilterPageByDeptVO filterPageByDeptVO);
 
     /**
-     * 各科室缺陷占比(组合)-全院-根据内外科系统统计
+     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(台州)
      *
      * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDeptClass(FilterOrderVO filterOrderVO);
+    public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass(FilterOrderVO filterOrderVO);
 
     /**
-     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(上级科室允许为空)
+     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(上级科室允许为空)(台州)
      *
      * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDeptClass2(FilterOrderVO filterOrderVO);
+    public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass_TZ(FilterOrderVO filterOrderVO);
 
 
     List<ExportExcelDTO> exportExcel();
@@ -211,6 +214,14 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public List<ExportExcelDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO);
 
+    /**
+     * 医疗组质控评分导出到excel
+     *
+     * @param exportQcresultVO
+     * @return
+     */
+    public List<ExportExcelDTO> exportQcresultByGroup(ExportQcresultVO exportQcresultVO);
+
     /**
      * 条目缺陷质控评分页(内页)
      *

+ 15 - 4
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.ExportExcelDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
+import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
@@ -65,6 +66,8 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
 
     IPage<BehospitalInfoDTO> getPageByPerson(BehospitalPageVO behospitalPageVO);
 
+    IPage<BehospitalInfoDTO> getPageByGroup(BehospitalPageVO behospitalPageVO);
+
     /**
      * 出院总人数统计-全院-首页
      *
@@ -178,20 +181,20 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
     public IPage<DeptNumDTO> resultStatisticsByDeptAndDoctorPage(@Param("filterPageByDeptVO") FilterPageByDeptVO filterPageByDeptVO);
 
     /**
-     * 各科室缺陷占比(组合)-全院-根据内外科系统统计
+     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(台州)
      *
      * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDeptClass(FilterOrderVO filterOrderVO);
+    public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass(FilterOrderVO filterOrderVO);
 
     /**
-     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(上级科室允许为空)
+     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(上级科室允许为空)(台州)
      *
      * @param filterOrderVO
      * @return
      */
-    public List<LevelStatisticsDTO> levelStatisticsByDeptClass2(FilterOrderVO filterOrderVO);
+    public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass_TZ(FilterOrderVO filterOrderVO);
 
     List<ExportExcelDTO> exportExcel();
 
@@ -211,6 +214,14 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      */
     public List<ExportExcelDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO);
 
+    /**
+     * 科室质控评分导出到excel
+     *
+     * @param exportQcresultVO
+     * @return
+     */
+    public List<ExportExcelDTO> exportQcresultByGroup(ExportQcresultVO exportQcresultVO);
+
     /**
      * 条目缺陷质控评分页(内页)
      *

+ 8 - 0
src/main/java/com/diagbot/service/SysTokenService.java

@@ -43,4 +43,12 @@ public interface SysTokenService {
      * @return 删除是否成功
      */
     Boolean deleteBatchToken(List<Long> userIds);
+
+    /**
+     * 获取用户jwt
+     *
+     * @param userId 用户ID
+     * @return jwt信息
+     */
+    JwtStore getToken(String userId);
 }

+ 16 - 5
src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.ExportExcelDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
+import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.MsgDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
@@ -92,6 +93,11 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
         return baseMapper.getPageByPerson(behospitalPageVO);
     }
 
+    @Override
+    public IPage<BehospitalInfoDTO> getPageByGroup(BehospitalPageVO behospitalPageVO) {
+        return baseMapper.getPageByGroup(behospitalPageVO);
+    }
+
     /**
      * 出院总人数统计-全院-首页
      *
@@ -238,25 +244,25 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     }
 
     /**
-     * 各科室缺陷占比(组合)-全院-根据内外科系统统计
+     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(台州)
      *
      * @param filterOrderVO
      * @return
      */
     @Override
-    public List<LevelStatisticsDTO> levelStatisticsByDeptClass(FilterOrderVO filterOrderVO) {
+    public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass(FilterOrderVO filterOrderVO) {
         return baseMapper.levelStatisticsByDeptClass(filterOrderVO);
     }
 
     /**
-     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(上级科室允许为空)
+     * 各科室缺陷占比(组合)-全院-根据内外科系统统计(上级科室允许为空)(台州)
      *
      * @param filterOrderVO
      * @return
      */
     @Override
-    public List<LevelStatisticsDTO> levelStatisticsByDeptClass2(FilterOrderVO filterOrderVO) {
-        return baseMapper.levelStatisticsByDeptClass2(filterOrderVO);
+    public List<LevelStatisticsTZDTO> levelStatisticsByDeptClass_TZ(FilterOrderVO filterOrderVO) {
+        return baseMapper.levelStatisticsByDeptClass_TZ(filterOrderVO);
     }
 
     @Override
@@ -284,6 +290,11 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
         return baseMapper.exportQcresultByDept(exportQcresultVO);
     }
 
+    @Override
+    public List<ExportExcelDTO> exportQcresultByGroup(ExportQcresultVO exportQcresultVO) {
+        return baseMapper.exportQcresultByGroup(exportQcresultVO);
+    }
+
     /**
      * 条目缺陷质控评分页(内页)
      *

+ 24 - 0
src/main/java/com/diagbot/service/impl/SysTokenServiceImpl.java

@@ -169,4 +169,28 @@ public class SysTokenServiceImpl implements SysTokenService {
         });
         return l > 0;
     }
+
+    /**
+     * 获取用户jwt
+     *
+     * @param userId 用户ID
+     * @return jwt信息
+     */
+    @Override
+    public JwtStore getToken(String userId) {
+        JwtStore tokenStore = null;
+        //从redis中取出
+        final byte[] redis_key = getUserTokenKey(userId);
+        tokenStore = (JwtStore) redisForToken.execute(new RedisCallback<JwtStore>() {
+            @Override
+            public JwtStore doInRedis(RedisConnection connection) throws DataAccessException {
+                byte[] bytes = connection.get(redis_key);
+                if (bytes == null) {
+                    return null;
+                }
+                return (JwtStore) deserializeValue(bytes);
+            }
+        });
+        return tokenStore;
+    }
 }

+ 1 - 1
src/main/java/com/diagbot/task/BasDeptInfoTask.java

@@ -55,7 +55,7 @@ public class BasDeptInfoTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK011"));
+                        .eq("cron_code", "TASK011"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/BasDoctorInfoTask.java

@@ -54,7 +54,7 @@ public class BasDoctorInfoTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK010"));
+                        .eq("cron_code", "TASK010"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/BehospitalInfoAnalyzeTask.java

@@ -61,7 +61,7 @@ public class BehospitalInfoAnalyzeTask implements SchedulingConfigurer {
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK001"));
+                        .eq("cron_code", "TASK001"), false);
                 String cron = "0/5 * * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/BehospitalInfoTask.java

@@ -54,7 +54,7 @@ public class BehospitalInfoTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK008"));
+                        .eq("cron_code", "TASK008"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/DoctorAdviceTask.java

@@ -55,7 +55,7 @@ public class DoctorAdviceTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK009"));
+                        .eq("cron_code", "TASK009"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 13 - 15
src/main/java/com/diagbot/task/HomeDiagnoseInfoTask.java

@@ -1,9 +1,12 @@
 package com.diagbot.task;
 
-import java.time.LocalDateTime;
-import java.util.Date;
-
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.SysTaskCron;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.facade.SysTaskCronFacade;
 import com.diagbot.facade.data.AHomeDiagnoseInfoFacade;
+import com.diagbot.util.StringUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.Trigger;
@@ -13,26 +16,21 @@ import org.springframework.scheduling.annotation.SchedulingConfigurer;
 import org.springframework.scheduling.config.ScheduledTaskRegistrar;
 import org.springframework.scheduling.support.CronTrigger;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.diagbot.entity.SysTaskCron;
-import com.diagbot.enums.IsDeleteEnum;
-import com.diagbot.facade.SysTaskCronFacade;
-import com.diagbot.util.StringUtil;
-
-import lombok.extern.slf4j.Slf4j;
+import java.time.LocalDateTime;
+import java.util.Date;
 
 @Configuration      //1.主要用于标记配置类,兼备Component的效果。
 @EnableScheduling   // 2.开启定时任务
 @Slf4j
-public class HomeDiagnoseInfoTask implements SchedulingConfigurer{
-	@Autowired
+public class HomeDiagnoseInfoTask implements SchedulingConfigurer {
+    @Autowired
     private SysTaskCronFacade sysTaskCronFacade;
 
     private SysTaskCron task001 = new SysTaskCron();
 
     @Autowired
-   	private AHomeDiagnoseInfoFacade aHomeDiagnoseInfoFacade;
-    
+    private AHomeDiagnoseInfoFacade aHomeDiagnoseInfoFacade;
+
     /**
      * 执行定时任务.
      */
@@ -54,7 +52,7 @@ public class HomeDiagnoseInfoTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK003"));
+                        .eq("cron_code", "TASK003"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/HomeOperationInfoTask.java

@@ -55,7 +55,7 @@ public class HomeOperationInfoTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK004"));
+                        .eq("cron_code", "TASK004"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/HomePageTask.java

@@ -54,7 +54,7 @@ public class HomePageTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK002"));
+                        .eq("cron_code", "TASK002"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/MedicalRecordContentTask.java

@@ -55,7 +55,7 @@ public class MedicalRecordContentTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK007"));
+                        .eq("cron_code", "TASK007"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/MedicalRecordTask.java

@@ -55,7 +55,7 @@ public class MedicalRecordTask implements SchedulingConfigurer{
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK006"));
+                        .eq("cron_code", "TASK006"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 1
src/main/java/com/diagbot/task/MedicalRecordTypeTask.java

@@ -52,7 +52,7 @@ public class MedicalRecordTypeTask implements SchedulingConfigurer {
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK005"));
+                        .eq("cron_code", "TASK005"), false);
                 String cron = "0 0/1 * * * ?";
                 //2.2 合法性校验.
                 if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {

+ 1 - 2
src/main/java/com/diagbot/task/TASK_CX.java

@@ -64,8 +64,7 @@ public class TASK_CX implements SchedulingConfigurer {
             public Date nextExecutionTime(TriggerContext triggerContext) {
                 //2.1 从数据库获取执行周期
                 task = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
-                        .eq("cron_code", "TASK_CX")
-                );
+                        .eq("cron_code", "TASK_CX"), false);
                 String cron = "0/5 * * * * ?";
                 //2.2 合法性校验.
                 if (null != task && StringUtil.isNotBlank(task.getCron())) {

+ 23 - 5
src/main/java/com/diagbot/util/ExcelUtils.java

@@ -10,8 +10,6 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.ExcelExportStylerUserImpl;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.HSSFSheet;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -45,6 +43,11 @@ public class ExcelUtils {
         userExport(list, pojoClass, fileName, response, exportParams);
     }
 
+    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
+                                   HttpServletResponse response, float height) {
+        userExport2(list, pojoClass, fileName, response, new ExportParams(title, sheetName), height);
+    }
+
     public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName,
                                    HttpServletResponse response) {
         defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
@@ -64,13 +67,13 @@ public class ExcelUtils {
     }
 
     private static void userExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
-                                      ExportParams exportParams) {
+                                   ExportParams exportParams) {
         Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
         if (workbook != null) {
             Sheet sheet = workbook.getSheetAt(0);
             //列宽设置
-            sheet.setColumnWidth(8, 256*20);
-            sheet.setColumnWidth(9, 256*50);
+            sheet.setColumnWidth(8, 256 * 20);
+            sheet.setColumnWidth(9, 256 * 50);
             int rowNum = sheet.getLastRowNum();
             Row row = sheet.getRow(0);
             for (int i = 1; i <= rowNum; i++) {
@@ -81,6 +84,21 @@ public class ExcelUtils {
         downLoadExcel(fileName, response, workbook);
     }
 
+    private static void userExport2(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response,
+                                    ExportParams exportParams, float height) {
+        Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
+        if (workbook != null) {
+            Sheet sheet = workbook.getSheetAt(0);
+            int rowNum = sheet.getLastRowNum();
+            Row row = sheet.getRow(0);
+            for (int i = 1; i <= rowNum; i++) {
+                row = sheet.getRow(i);
+                row.setHeightInPoints(height);
+            }
+        }
+        downLoadExcel(fileName, response, workbook);
+    }
+
     private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
         try {
             response.setCharacterEncoding("UTF-8");

+ 4 - 2
src/main/java/com/diagbot/vo/BehospitalPageVO.java

@@ -79,14 +79,16 @@ public class BehospitalPageVO extends Page implements Serializable {
     @ApiModelProperty(hidden = true)
     private Long userId;
 
-    private Long doctorCode;
+    /**
+     * 医生工号
+     */
+    private String doctorCode;
 
     /**
      * 统计维度 1-本月,2-本年
      */
     private Integer statisticsType;
 
-
     /**
      * 是否归档(0:未归档,1:已归档)
      */

+ 20 - 0
src/main/java/com/diagbot/vo/UserLoginNoPassVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @Description: 登录参数
+ * @Author: ztg
+ * @Date: 2018/9/28 13:14
+ */
+@Getter
+@Setter
+public class UserLoginNoPassVO {
+
+    @NotBlank(message = "请输入用户名!")
+    private String username;
+
+}

+ 35 - 3
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -49,13 +49,18 @@ public class BehospitalInfoController {
     private QcresultInfoFacade qcresultInfoFacade;
 
     @ApiOperation(value = "病历分页列表[by:zhoutg]",
-            notes = "name:姓名<br>" +
+            notes = "behospitalCode:病人住院序号<br>" +
+                    "name:病人姓名<br>" +
                     "fileCode:档案号<br>" +
                     "statisticsType: 统计维度 1-本月,2-本年<br>" +
                     "behosDateStart:入院时间开始时间<br>" +
                     "behosDateEnd:入院时间结束时间<br>" +
                     "leaveHosDateStart:出院时间开始时间<br>" +
-                    "leaveHosDateEnd:出院时间结束时间<br>")
+                    "leaveHosDateEnd:出院时间结束时间<br>" +
+                    "doctorName:医生姓名<br>" +
+                    "doctorCode:医生工号<br>" +
+                    "level:等级<br>" +
+                    "deptId:科室id<br>")
     @PostMapping("/page")
     @SysLogger("page")
     public RespDTO<IPage<BehospitalInfoDTO>> page(@RequestBody BehospitalPageVO behospitalPageVO) {
@@ -195,6 +200,25 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "病历分页列表(个人)[by:zhoutg]",
+            notes = "behospitalCode:病人住院序号<br>" +
+                    "name:病人姓名<br>" +
+                    "fileCode:档案号<br>" +
+                    "statisticsType: 统计维度 1-本月,2-本年<br>" +
+                    "behosDateStart:入院时间开始时间<br>" +
+                    "behosDateEnd:入院时间结束时间<br>" +
+                    "leaveHosDateStart:出院时间开始时间<br>" +
+                    "leaveHosDateEnd:出院时间结束时间<br>" +
+                    "doctorName:医生姓名<br>" +
+                    "doctorCode:医生工号<br>" +
+                    "level:等级<br>" +
+                    "deptId:科室id<br>")
+    @PostMapping("/page_group")
+    @SysLogger("page_group")
+    public RespDTO<IPage<BehospitalInfoDTO>> pageGroup(@RequestBody BehospitalPageVO behospitalPageVO) {
+        IPage<BehospitalInfoDTO> data = behospitalInfoFacade.pageGroup(behospitalPageVO);
+        return RespDTO.onSuc(data);
+    }
 
     @ApiOperation(value = "导出病历[by:gaodm]",
             notes = "")
@@ -212,11 +236,19 @@ public class BehospitalInfoController {
         behospitalInfoFacade.exportQcresult(response, exportQcresultVO);
     }
 
-    @ApiOperation(value = "科室质控结果导出[by:zhaops]",
+    @ApiOperation(value = "科室质控结果导出[by:zhaops]",
             notes = "")
     @PostMapping("/exportQcresultByDept")
     @SysLogger("exportQcresultByDept")
     public void exportQcresultByDept(HttpServletResponse response, @RequestBody ExportQcresultVO exportQcresultVO) {
         behospitalInfoFacade.exportQcresultByDept(response, exportQcresultVO);
     }
+
+    @ApiOperation(value = "【医疗组】质控结果导出[by:zhoutg]",
+            notes = "")
+    @PostMapping("/exportQcresultByGroup")
+    @SysLogger("exportQcresultByGroup")
+    public void exportQcresultByGroup(HttpServletResponse response, @RequestBody ExportQcresultVO exportQcresultVO) {
+        behospitalInfoFacade.exportQcresultByGroup(response, exportQcresultVO);
+    }
 }

+ 3 - 2
src/main/java/com/diagbot/web/ConsoleController.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
+import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
 import com.diagbot.dto.RespDTO;
@@ -405,8 +406,8 @@ public class ConsoleController {
                     "desc: 排序(降序) <br>")
     @PostMapping("/levelStatisticsByDeptClass")
     @SysLogger("levelStatisticsByDeptClass")
-    public RespDTO<List<LevelStatisticsDTO>> levelStatisticsByDeptClass(@RequestBody @Valid FilterOrderVO filterOrderVO) {
-        return RespDTO.onSuc(consoleFacade.levelStatisticsByDeptClass(filterOrderVO));
+    public RespDTO<List<LevelStatisticsTZDTO>> levelStatisticsByDeptClass(@RequestBody @Valid FilterOrderVO filterOrderVO) {
+        return RespDTO.onSuc(consoleFacade.levelStatisticsByDeptClass_TZ(filterOrderVO));
     }
 
     /**

+ 100 - 0
src/main/java/com/diagbot/web/ConsoleExportController.java

@@ -0,0 +1,100 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.facade.ConsoleExportFacade;
+import com.diagbot.vo.FilterOrderVO;
+import com.diagbot.vo.FilterPageVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/4/13 16:45
+ */
+@RequestMapping("/console/export")
+@RestController
+@Api(value = "数据报表明细导出相关API", tags = { "数据报表明细导出相关API" })
+@SuppressWarnings("unchecked")
+public class ConsoleExportController {
+
+    @Autowired
+    private ConsoleExportFacade consoleExportFacade;
+
+    /**
+     * 病案首页合格率占比导出
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    @ApiOperation(value = "病案首页合格率占比导出[by:gaodm]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "level: 病历等级 <br>" +
+                    "name: 科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc: 排序(降序) <br>")
+    @PostMapping("/homePageLevelExport")
+    @SysLogger("homePageLevelExport")
+    public void homePageLevelExport(HttpServletResponse response, @RequestBody @Valid FilterOrderVO filterOrderVO) {
+        consoleExportFacade.homePageLevelExport(response, filterOrderVO);
+    }
+
+
+    /**
+     * 条目缺陷占比(内页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @ApiOperation(value = "条目缺陷占比导出[by:gaodm]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
+    @PostMapping("/entryGroupByEntryExport")
+    @SysLogger("entryGroupByEntryExport")
+    public void entryGroupByEntryExport(HttpServletResponse response, @RequestBody @Valid FilterPageVO filterPageVO) {
+        consoleExportFacade.entryGroupByEntryExport(response, filterPageVO);
+    }
+
+    /**
+     * 各科室缺陷占比(组合)
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    @ApiOperation(value = "各科室缺陷占比(组合)导出[by:gaodm]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "level: 病历等级 <br>" +
+                    "name: 科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc: 排序(降序) <br>")
+    @PostMapping("/levelExport")
+    @SysLogger("levelExport")
+    public void levelExport(HttpServletResponse response, @RequestBody @Valid FilterOrderVO filterOrderVO) {
+        consoleExportFacade.levelExport(response, filterOrderVO);
+    }
+
+    /**
+     * 各科室缺陷占比(组合)
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    @ApiOperation(value = "各科室缺陷占比(组合)导出-台州[by:gaodm]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
+                    "level: 病历等级 <br>" +
+                    "name: 科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc: 排序(降序) <br>")
+    @PostMapping("/levelExport_TZ")
+    @SysLogger("levelExport_TZ")
+    public void levelExport_TZ(HttpServletResponse response, @RequestBody @Valid FilterOrderVO filterOrderVO) {
+        consoleExportFacade.levelExport_TZ(response, filterOrderVO);
+    }
+}

+ 10 - 0
src/main/java/com/diagbot/web/SysUserController.java

@@ -17,6 +17,7 @@ import com.diagbot.vo.SysUserBaseVO;
 import com.diagbot.vo.SysUserDeptVO;
 import com.diagbot.vo.SysUserQueryVO;
 import com.diagbot.vo.SysUserRoleVO;
+import com.diagbot.vo.UserLoginNoPassVO;
 import com.diagbot.vo.UserLoginVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -68,6 +69,15 @@ public class SysUserController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "登录获取jwt[by:gaodm]",
+            notes = "username:用户名,必填<br>")
+    @PostMapping("/getJwtNoPass")
+    @SysLogger("getJwtNoPass")
+    public RespDTO<JwtDTO> getJwtNoPass(@RequestBody UserLoginNoPassVO userLoginNoPassVO) {
+        JwtDTO data = userFacade.getJwtNoPass(userLoginNoPassVO.getUsername());
+        return RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "刷新jwt[by:gaodm]",
             notes = "refreshToken:刷新令牌,必填<br>")
     @PostMapping("/refreshJwt")

+ 233 - 4
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -391,6 +391,75 @@
         and t.is_placefile = 1
     </select>
 
+    <!--质控评分(医疗组)分页-->
+    <select id="getPageByGroup" resultType="com.diagbot.dto.BehospitalInfoDTO">
+        select * from (
+        select a.*, ifnull(b.level,'未评分') as `level`, b.grade_type, b.score_res, b.gmt_create as
+        grade_time, c.age from med_behospital_info a
+        LEFT JOIN med_qcresult_info b
+        on a.behospital_code = b.behospital_code and b.is_deleted = 'N'
+        left join med_home_page c
+        on a.behospital_code = c.behospital_code and c.is_deleted = 'N'
+        ) t
+        where t.is_deleted = 'N' and
+            t.doctor_id in (
+                SELECT doctor_id FROM `bas_doctor_info`
+                where is_deleted = 'N' and hospital_id = #{hospitalId} and group_id in (
+                    select c3.group_id from sys_user c1, sys_user_hospital c2, bas_doctor_info c3
+                    where c1.is_deleted = 'N' and c2.is_deleted = 'N' and c3.is_deleted = 'N'
+                    and c1.id = c2.user_id and c2.hospital_id = c3.hospital_id
+                    and c1.username = c3.doctor_id
+                    and c2.hospital_id = #{hospitalId}
+                    and c1.id = #{userId}
+                )
+            )
+        <if test="deptId != null and deptId != ''">
+            and t.beh_dept_id = #{deptId}
+        </if>
+        <if test="doctorName != null and doctorName != ''">
+            and (t.doctor_name like CONCAT('%',#{doctorName},'%')
+            or t.beh_doctor_name like CONCAT('%',#{doctorName},'%')
+            or t.director_doctor_name like CONCAT('%',#{doctorName},'%'))
+        </if>
+        <if test="name != null and name != ''">
+            and t.name like CONCAT('%',#{name},'%')
+        </if>
+        <if test="doctorCode != null and doctorCode != ''">
+            and (t.doctor_id = #{doctorCode}
+            or t.beh_doctor_id = #{doctorCode}
+            or t.director_doctor_id = #{doctorCode})
+        </if>
+        <if test="fileCode != null and fileCode != ''">
+            and t.file_code like CONCAT('%',#{fileCode},'%')
+        </if>
+        <if test="hospitalId != null">
+            and t.hospital_id = #{hospitalId}
+        </if>
+        <if test="behospitalCode != null and behospitalCode != ''">
+            and t.behospital_code like CONCAT('%',#{behospitalCode},'%')
+        </if>
+        <if test="behosDateStart != null">
+            <![CDATA[ and t.behospital_date >= #{behosDateStart}]]>
+        </if>
+        <if test="behosDateEnd != null">
+            <![CDATA[ and t.behospital_date < #{behosDateEnd}]]>
+        </if>
+        <if test="leaveHosDateStart != null">
+            <![CDATA[ and t.leave_hospital_date >= #{leaveHosDateStart}]]>
+        </if>
+        <if test="leaveHosDateEnd != null">
+            <![CDATA[ and t.leave_hospital_date < #{leaveHosDateEnd}]]>
+        </if>
+        <if test="level != null and level != ''">
+            and t.level = #{level}
+        </if>
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and t.is_placefile = #{isPlacefile}
+        </if>
+        and t.qc_type_id != 0
+        and t.is_placefile = 1
+    </select>
+
     <!-- 出院总人数统计-全院-首页 -->
     <select id="leaveHosCount" parameterType="com.diagbot.vo.FilterVO" resultType="int">
         SELECT
@@ -1005,9 +1074,9 @@
         </if>
     </select>
 
-    <!-- 各科室缺陷占比(组合)-全院-根据内外科系统统计 -->
+    <!-- 各科室缺陷占比(组合)-全院-根据内外科系统统计(台州 -->
     <select id="levelStatisticsByDeptClass" parameterType="com.diagbot.vo.FilterOrderVO"
-            resultType="com.diagbot.dto.LevelStatisticsDTO">
+            resultType="com.diagbot.dto.LevelStatisticsTZDTO">
         SELECT
         t1.deptId,
         t1.deptName,
@@ -1213,7 +1282,7 @@
     </select>
 
     <!-- 各科室缺陷占比(组合)-全院-根据内外科系统统计(上级科室允许为空) -->
-    <select id="levelStatisticsByDeptClass2" parameterType="com.diagbot.vo.FilterOrderVO" resultType="com.diagbot.dto.LevelStatisticsDTO">
+    <select id="levelStatisticsByDeptClass_TZ" parameterType="com.diagbot.vo.FilterOrderVO" resultType="com.diagbot.dto.LevelStatisticsTZDTO">
         SELECT
         t1.deptId,
         t1.deptName,
@@ -2334,7 +2403,7 @@
         AND t1.behDeptName = t2.behDeptName
         ORDER BY
         t1.behDeptName,
-        t1.behDeptName,
+        t1.behDoctorName,
         t1.patName,
         t1.behospitalCode,
         t1.caseName
@@ -2488,7 +2557,167 @@
         AND t1.behDeptName = t2.behDeptName
         ORDER BY
         t1.behDeptName,
+        t1.behDoctorName,
+        t1.patName,
+        t1.behospitalCode,
+        t1.caseName
+    </select>
+
+    <!-- 医疗组质控评分导出到excel-->
+    <select  id="exportQcresultByGroup" resultMap="ExportExcelMap" parameterType="com.diagbot.vo.ExportQcresultVO">
+        SELECT
+        t1.behDeptId,
+        t1.behDeptName,
+        t1.behDoctorName,
+        t1.patName,
+        t1.behospitalCode,
+        t1.behospitalDate,
+        t1.leaveHospitalDate,
+        t1.score,
+        t2.avgScore,
+        t1.msg,
+        t1.caseName
+        FROM
+        (
+        SELECT
+        CONCAT(
+        ( CASE WHEN a.director_doctor_name IS NOT NULL AND a.director_doctor_name != '' THEN concat( a.director_doctor_name, '\n' ) ELSE '' END ),
+        a.doctor_name
+        ) AS behDoctorName,
+        a.`name` AS patName,
+        a.behospital_code AS behospitalCode,
+        a.behospital_date AS behospitalDate,
+        a.leave_hospital_date AS leaveHospitalDate,
+        b.score_res AS score,
+        c.msg AS msg,
+        d.NAME AS caseName,
+        a.beh_dept_id AS behDeptId,
+        a.beh_dept_name AS behDeptName
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b,
+        med_qcresult_detail c,
+        qc_cases d
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND c.cases_id = d.id
+        AND a.is_placefile = '1'
+        AND a.doctor_id in
+            (SELECT doctor_id FROM `bas_doctor_info`
+            where is_deleted = 'N' and hospital_id = #{hospitalId} and group_id in (
+            select c3.group_id from sys_user c1, sys_user_hospital c2, bas_doctor_info c3
+            where c1.is_deleted = 'N' and c2.is_deleted = 'N' and c3.is_deleted = 'N'
+            and c1.id = c2.user_id and c2.hospital_id = c3.hospital_id
+            and c1.username = c3.doctor_id
+            and c2.hospital_id = #{hospitalId}
+            and c1.id = #{userId}
+            ))
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="leaveHosDateStart != null ">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{leaveHosDateStart})]]>
+        </if>
+        <if test="leaveHosDateEnd != null ">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{leaveHosDateEnd})]]>
+        </if>
+        <if test="behospitalCode != null and behospitalCode != ''">
+            AND a.behospital_code like CONCAT('%',#{behospitalCode},'%')
+        </if>
+        <if test="level != null and level != ''">
+            AND b.level = #{level}
+        </if>
+        <if test="doctorName != null and doctorName != ''">
+            AND (a.doctor_name like CONCAT('%',#{doctorName},'%')
+            OR a.beh_doctor_name like CONCAT('%',#{doctorName},'%')
+            OR a.director_doctor_name like CONCAT('%',#{doctorName},'%'))
+        </if>
+        <if test="doctorCode != null and doctorCode != ''">
+            AND (a.doctor_id like CONCAT('%',#{doctorCode},'%')
+            OR a.beh_doctor_id like CONCAT('%',#{doctorCode},'%')
+            OR a.director_doctor_id like CONCAT('%',#{doctorCode},'%'))
+        </if>
+        <if test="deptId != null and deptId != ''">
+            AND a.beh_dept_id = #{deptId}
+        </if>
+        <if test="name != null and name != ''">
+            AND a.name like CONCAT('%',#{name},'%')
+        </if>
+        ) t1,
+        (
+        SELECT
+        ROUND( AVG( b.score_res ), 2 ) AS avgScore,
+        a.beh_dept_id AS behDeptId,
+        a.beh_dept_name AS behDeptName
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b
+        WHERE
+        a.is_deleted = 'N'
+        AND a.doctor_id in
+            (SELECT doctor_id FROM `bas_doctor_info`
+            where is_deleted = 'N' and hospital_id = #{hospitalId} and group_id in (
+            select c3.group_id from sys_user c1, sys_user_hospital c2, bas_doctor_info c3
+            where c1.is_deleted = 'N' and c2.is_deleted = 'N' and c3.is_deleted = 'N'
+            and c1.id = c2.user_id and c2.hospital_id = c3.hospital_id
+            and c1.username = c3.doctor_id
+            and c2.hospital_id = #{hospitalId}
+            and c1.id = #{userId}
+            ))
+        AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.is_placefile = '1'
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="leaveHosDateStart != null ">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{leaveHosDateStart})]]>
+        </if>
+        <if test="leaveHosDateEnd != null ">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{leaveHosDateEnd})]]>
+        </if>
+        <if test="behospitalCode != null and behospitalCode != ''">
+            AND a.behospital_code like CONCAT('%',#{behospitalCode},'%')
+        </if>
+        <if test="level != null and level != ''">
+            AND b.level = #{level}
+        </if>
+        <if test="doctorName != null and doctorName != ''">
+            AND (a.doctor_name like CONCAT('%',#{doctorName},'%')
+            OR a.beh_doctor_name like CONCAT('%',#{doctorName},'%')
+            OR a.director_doctor_name like CONCAT('%',#{doctorName},'%'))
+        </if>
+        <if test="doctorCode != null and doctorCode != ''">
+            AND (a.doctor_id like CONCAT('%',#{doctorCode},'%')
+            OR a.beh_doctor_id like CONCAT('%',#{doctorCode},'%')
+            OR a.director_doctor_id like CONCAT('%',#{doctorCode},'%'))
+        </if>
+        <if test="deptId != null and deptId != ''">
+            AND a.beh_dept_id = #{deptId}
+        </if>
+        <if test="name != null and name != ''">
+            AND a.name like CONCAT('%',#{name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) t2
+        WHERE
+        t1.behDeptId = t2.behDeptId
+        AND t1.behDeptName = t2.behDeptName
+        ORDER BY
         t1.behDeptName,
+        t1.behDoctorName,
         t1.patName,
         t1.behospitalCode,
         t1.caseName

+ 10 - 16
src/main/resources/mapper/QcresultInfoMapper.xml

@@ -1035,7 +1035,7 @@
             AND d.cases_id = #{filterPageVO.casesId}
         </if>
         <if test="filterPageVO.casesName != null and filterPageVO.casesName != ''">
-            AND e.cases_name like CONCAT('%', #{filterPageVO.casesName},'%')
+            AND e.cases_name = #{filterPageVO.casesName}
         </if>
         <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
             AND a.hospital_id = #{filterPageVO.hospitalId}
@@ -1050,7 +1050,7 @@
             AND e.name like CONCAT('%', #{filterPageVO.name},'%')
         </if>
         <if test="filterPageVO.deptName != null and filterPageVO.deptName != ''">
-            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.deptName},'%')
+            AND a.beh_dept_name = #{filterPageVO.deptName}
         </if>
         <if test="filterPageVO.ruleType != null">
             AND e.rule_type = #{filterPageVO.ruleType}
@@ -1091,7 +1091,7 @@
             AND d.cases_id = #{filterPageVO.casesId}
         </if>
         <if test="filterPageVO.casesName != null and filterPageVO.casesName != ''">
-            AND e.cases_name like CONCAT('%', #{filterPageVO.casesName},'%')
+            AND e.cases_name = #{filterPageVO.casesName}
         </if>
         <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
             AND a.hospital_id = #{filterPageVO.hospitalId}
@@ -1102,11 +1102,8 @@
         <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
             <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
         </if>
-        <if test="filterPageVO.name != null and filterPageVO.name != ''">
-            AND e.name like CONCAT('%', #{filterPageVO.name},'%')
-        </if>
         <if test="filterPageVO.deptName != null and filterPageVO.deptName != ''">
-            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.deptName},'%')
+            AND a.beh_dept_name  =  #{filterPageVO.deptName}
         </if>
         <if test="filterPageVO.ruleType != null">
             AND e.rule_type = #{filterPageVO.ruleType}
@@ -1410,7 +1407,7 @@
             AND d.cases_id = #{filterPageByDeptVO.casesId}
         </if>
         <if test="filterPageByDeptVO.casesName != null and filterPageByDeptVO.casesName != ''">
-            AND e.cases_name like CONCAT('%', #{filterPageByDeptVO.casesName},'%')
+            AND e.cases_name = #{filterPageByDeptVO.casesName}
         </if>
         <if test="filterPageByDeptVO.userId!=null">
             AND f.user_id = #{filterPageByDeptVO.userId}
@@ -1428,14 +1425,14 @@
             AND e.name like CONCAT('%', #{filterPageByDeptVO.name},'%')
         </if>
         <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
-            AND a.beh_dept_name like CONCAT('%', #{filterPageByDeptVO.deptName},'%')
+            AND a.beh_dept_name =  #{filterPageByDeptVO.deptName}
         </if>
         <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
             <if test="filterPageByDeptVO.doctorName=='未知'">
                 AND (a.doctor_name is null OR a.doctor_name='')
             </if>
             <if test="filterPageByDeptVO.doctorName!='未知'">
-                AND a.doctor_name like CONCAT('%', #{filterPageByDeptVO.doctorName},'%')
+                AND a.doctor_name = #{filterPageByDeptVO.doctorName}
             </if>
         </if>
         <if test="filterPageByDeptVO.ruleType != null ">
@@ -1481,7 +1478,7 @@
             AND d.cases_id = #{filterPageByDeptVO.casesId}
         </if>
         <if test="filterPageByDeptVO.casesName != null and filterPageByDeptVO.casesName != ''">
-            AND e.cases_name like CONCAT('%', #{filterPageByDeptVO.casesName},'%')
+            AND e.cases_name = #{filterPageByDeptVO.casesName}
         </if>
         <if test="filterPageByDeptVO.userId!=null">
             AND f.user_id = #{filterPageByDeptVO.userId}
@@ -1495,18 +1492,15 @@
         <if test="filterPageByDeptVO.endDate != null and filterPageByDeptVO.endDate != ''">
             <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByDeptVO.endDate})]]>
         </if>
-        <if test="filterPageByDeptVO.name != null and filterPageByDeptVO.name != ''">
-            AND e.name like CONCAT('%', #{filterPageByDeptVO.name},'%')
-        </if>
         <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
-            AND a.beh_dept_name like CONCAT('%', #{filterPageByDeptVO.deptName},'%')
+            AND a.beh_dept_name =  #{filterPageByDeptVO.deptName}
         </if>
         <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
             <if test="filterPageByDeptVO.doctorName=='未知'">
                 AND (a.doctor_name is null OR a.doctor_name='')
             </if>
             <if test="filterPageByDeptVO.doctorName!='未知'">
-                AND a.doctor_name like CONCAT('%', #{filterPageByDeptVO.doctorName},'%')
+                AND a.doctor_name = #{filterPageByDeptVO.doctorName}
             </if>
         </if>
         <if test="filterPageByDeptVO.ruleType != null ">