Explorar el Código

Merge branch 'master' into his/yiwufuyou_new

# Conflicts:
#	src/main/java/com/diagbot/config/ResourceServerConfigurer.java
#	src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
#	src/main/java/com/diagbot/entity/QcType.java
#	src/main/java/com/diagbot/facade/BasDoctorInfoFacade.java
#	src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
#	src/main/java/com/diagbot/facade/DoctorAdviceFacade.java
#	src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java
#	src/main/java/com/diagbot/facade/data/ADoctorAdviceFacade.java
#	src/main/java/com/diagbot/facade/data/AHomeDiagnoseInfoFacade.java
#	src/main/java/com/diagbot/facade/data/AHomeOperationInfoFacade.java
#	src/main/java/com/diagbot/facade/data/AMedCrisisFacade.java
#	src/main/java/com/diagbot/facade/data/AMedLisInfoFacade.java
#	src/main/java/com/diagbot/facade/data/AMedLisResultFacade.java
#	src/main/java/com/diagbot/facade/data/AMedPacsInfoFacade.java
#	src/main/java/com/diagbot/facade/data/AMedPacsResultFacade.java
#	src/main/java/com/diagbot/facade/data/AMedicalRecordFacade.java
#	src/main/java/com/diagbot/util/MapUtil.java
#	src/main/java/com/diagbot/vo/QcResultAlgVO.java
#	src/main/java/com/diagbot/web/DataController.java
liuqq hace 3 años
padre
commit
7c010f2a9b
Se han modificado 100 ficheros con 12018 adiciones y 1113 borrados
  1. 334 0
      doc/029.20201224v2.0.0/qc_initv2.0.0.sql
  2. 36 0
      doc/030.20201224v2.0.1/qc_initv2.0.1.sql
  3. 401 0
      doc/031.20210326v2.0.2/qc_initv2.0.2.sql
  4. 13 0
      doc/033.20210608v2.0.4/qc_initv2.0.4.sql
  5. 12 0
      doc/034.20210804_2.0.5/qc_initv2.0.5.sql
  6. 2 2
      pom.xml
  7. 35 4
      src/main/java/com/diagbot/aggregate/LeaveHosStatisticsAggregate.java
  8. 47 4
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  9. 47 2
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  10. 25 0
      src/main/java/com/diagbot/dto/AdmissionCountDTO.java
  11. 28 0
      src/main/java/com/diagbot/dto/BehospitalInfoAgeDTO.java
  12. 40 0
      src/main/java/com/diagbot/dto/CaseScoreDTO.java
  13. 23 0
      src/main/java/com/diagbot/dto/CheckDeptDTO.java
  14. 39 0
      src/main/java/com/diagbot/dto/CheckJobDTO.java
  15. 24 0
      src/main/java/com/diagbot/dto/CheckUserDTO.java
  16. 122 0
      src/main/java/com/diagbot/dto/CheckWorkDTO.java
  17. 140 0
      src/main/java/com/diagbot/dto/CheckedRecordListDTO.java
  18. 26 0
      src/main/java/com/diagbot/dto/DeptCheckUserDTO.java
  19. 8 0
      src/main/java/com/diagbot/dto/DeptEntryNumDTO.java
  20. 177 0
      src/main/java/com/diagbot/dto/EntryStasByDeptDTO.java
  21. 34 0
      src/main/java/com/diagbot/dto/ExportExcelBehByDeptDTO.java
  22. 1 1
      src/main/java/com/diagbot/dto/ExportExcelBehospitalDTO.java
  23. 28 0
      src/main/java/com/diagbot/dto/ExportExcelByDeptDTO.java
  24. 29 0
      src/main/java/com/diagbot/dto/ExportExcelWideBehByDeptDTO.java
  25. 1 1
      src/main/java/com/diagbot/dto/ExportExcelWideBehospitalDTO.java
  26. 23 0
      src/main/java/com/diagbot/dto/ExportNinetyByDeptDTO.java
  27. 23 0
      src/main/java/com/diagbot/dto/ExportSevenByDeptDTO.java
  28. 28 0
      src/main/java/com/diagbot/dto/ExportWideExcelByDeptDTO.java
  29. 118 0
      src/main/java/com/diagbot/dto/HomePageByDeptDTO.java
  30. 89 0
      src/main/java/com/diagbot/dto/ImproveByDeptDTO.java
  31. 26 0
      src/main/java/com/diagbot/dto/ImproveExportByDeptDTO.java
  32. 6 0
      src/main/java/com/diagbot/dto/JwtDTO.java
  33. 289 0
      src/main/java/com/diagbot/dto/LevelStsByDeptDTO.java
  34. 48 0
      src/main/java/com/diagbot/dto/MedManageParamsDTO.java
  35. 223 0
      src/main/java/com/diagbot/dto/MedQualityControlDTO.java
  36. 3 0
      src/main/java/com/diagbot/dto/MedicalCheckDTO.java
  37. 25 0
      src/main/java/com/diagbot/dto/MedicalDeptDTO.java
  38. 25 0
      src/main/java/com/diagbot/dto/MedicalDoDeptDTO.java
  39. 14 0
      src/main/java/com/diagbot/dto/MedicalRecordDTO.java
  40. 100 0
      src/main/java/com/diagbot/dto/MedicalSeeByDeptDTO.java
  41. 8 0
      src/main/java/com/diagbot/dto/MsgDTO.java
  42. 185 0
      src/main/java/com/diagbot/dto/QualityControlDTO.java
  43. 188 0
      src/main/java/com/diagbot/dto/QualityControlDeptDTO.java
  44. 139 0
      src/main/java/com/diagbot/dto/QualityControlNullDTO.java
  45. 43 0
      src/main/java/com/diagbot/dto/ReBeHosByDeptDTO.java
  46. 7 6
      src/main/java/com/diagbot/dto/ReBeHosDTO.java
  47. 90 0
      src/main/java/com/diagbot/dto/ReBeHosDetailByDeptDTO.java
  48. 21 4
      src/main/java/com/diagbot/dto/ReBeHosDetailDTO.java
  49. 11 1
      src/main/java/com/diagbot/dto/ReBeHosMergeDTO.java
  50. 35 0
      src/main/java/com/diagbot/dto/StrAdmissionNoteDTO.java
  51. 2 0
      src/main/java/com/diagbot/dto/UnModifyMRDetailDTO.java
  52. 53 0
      src/main/java/com/diagbot/entity/FilterRecordVO.java
  53. 71 0
      src/main/java/com/diagbot/entity/MedBehospitalType.java
  54. 56 99
      src/main/java/com/diagbot/entity/MedCheckInfo.java
  55. 77 0
      src/main/java/com/diagbot/entity/MedIndexRelevance.java
  56. 144 0
      src/main/java/com/diagbot/entity/MedIndexResult.java
  57. 79 0
      src/main/java/com/diagbot/entity/MedManagementInfo.java
  58. 260 0
      src/main/java/com/diagbot/entity/MedQcresultDetail.java
  59. 221 0
      src/main/java/com/diagbot/entity/MedQcresultInfo.java
  60. 54 0
      src/main/java/com/diagbot/entity/QcCasesRelevanceEntry.java
  61. 53 22
      src/main/java/com/diagbot/entity/QcType.java
  62. 4 0
      src/main/java/com/diagbot/entity/QcresultDetail.java
  63. 167 0
      src/main/java/com/diagbot/entity/StrInformedConsent.java
  64. 167 0
      src/main/java/com/diagbot/entity/StrTalkInform.java
  65. 51 0
      src/main/java/com/diagbot/enums/CheckJobTypeEnum.java
  66. 50 0
      src/main/java/com/diagbot/enums/CheckStatusEnum.java
  67. 51 0
      src/main/java/com/diagbot/enums/CheckTypeEnum.java
  68. 54 0
      src/main/java/com/diagbot/enums/CheckerRoleEnum.java
  69. 172 0
      src/main/java/com/diagbot/enums/QualityContent.java
  70. 36 0
      src/main/java/com/diagbot/enums/TimeContent.java
  71. 3 0
      src/main/java/com/diagbot/exception/CommonExceptionHandler.java
  72. 45 3
      src/main/java/com/diagbot/facade/AlgorithmFacade.java
  73. 87 12
      src/main/java/com/diagbot/facade/BasDoctorInfoFacade.java
  74. 458 191
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  75. 715 0
      src/main/java/com/diagbot/facade/ConsoleByDeptExportFacade.java
  76. 1131 69
      src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java
  77. 73 18
      src/main/java/com/diagbot/facade/ConsoleExportFacade.java
  78. 2156 157
      src/main/java/com/diagbot/facade/ConsoleFacade.java
  79. 65 0
      src/main/java/com/diagbot/facade/DataEditFacade.java
  80. 16 0
      src/main/java/com/diagbot/facade/DoctorAdviceFacade.java
  81. 95 1
      src/main/java/com/diagbot/facade/FilterFacade.java
  82. 722 2
      src/main/java/com/diagbot/facade/MedCheckInfoFacade.java
  83. 310 0
      src/main/java/com/diagbot/facade/MedCheckWorkFacade.java
  84. 14 0
      src/main/java/com/diagbot/facade/MedIndexRelevanceFacade.java
  85. 13 0
      src/main/java/com/diagbot/facade/MedIndexResultFacade.java
  86. 19 0
      src/main/java/com/diagbot/facade/QcCasesRelevanceEntryFacade.java
  87. 59 0
      src/main/java/com/diagbot/facade/QcresultInfoFacade.java
  88. 216 0
      src/main/java/com/diagbot/facade/RecordCheckFacade.java
  89. 1 0
      src/main/java/com/diagbot/facade/SysDictionaryFacade.java
  90. 143 30
      src/main/java/com/diagbot/facade/SysUserFacade.java
  91. 48 40
      src/main/java/com/diagbot/facade/data/ABasDeptInfoFacade.java
  92. 46 39
      src/main/java/com/diagbot/facade/data/ABasDoctorInfoFacade.java
  93. 72 97
      src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java
  94. 42 54
      src/main/java/com/diagbot/facade/data/ADoctorAdviceFacade.java
  95. 43 65
      src/main/java/com/diagbot/facade/data/AHomeDiagnoseInfoFacade.java
  96. 60 70
      src/main/java/com/diagbot/facade/data/AHomeOperationInfoFacade.java
  97. 4 0
      src/main/java/com/diagbot/facade/data/AHomePageFacade.java
  98. 43 78
      src/main/java/com/diagbot/facade/data/AMedCrisisFacade.java
  99. 58 41
      src/main/java/com/diagbot/facade/data/AMedLisInfoFacade.java
  100. 0 0
      src/main/java/com/diagbot/facade/data/AMedLisResultFacade.java

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 334 - 0
doc/029.20201224v2.0.0/qc_initv2.0.0.sql


+ 36 - 0
doc/030.20201224v2.0.1/qc_initv2.0.1.sql

@@ -0,0 +1,36 @@
+use `qc`;
+/**
+注意:
+1、中间表的新增或修改需要按照实际的唯一字段来进行操作
+例如:新增sys_role_menu中数据需要sys_menu中指定的id、menu_id,否则可能会失效!!!
+2、按照顺序执行
+ */
+ --全院
+INSERT INTO `sys_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病历质控报表', '17', 'YH-ZKK-BLZK_XQ', '1', '1', '18', '用户-质控科-病历质控报表');
+--开放菜单
+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', '50', 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', '50', NULL);
+
+--开添加权限
+INSERT INTO `sys_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `code`, `permissionUrl`, `method`, `descritpion`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病历质控报表', '', '/console/qualityControl', 'ALL', '病历质控报表', 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', '125', 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', '125', NULL);
+
+--开放权限报表
+INSERT INTO `sys_menu_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `order_nu`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '50', '125', NULL, '病历质控报表');
+
+--科室
+INSERT INTO `sys_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病历质控报表', '18', 'YH-KSZR-BLZK_XQ', '1', '1', '13', '用户-科室主任-病历质控报表-详情');
+--开放菜单
+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', '53', 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', '2', '53', NULL);
+
+--开添加权限
+INSERT INTO .`sys_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `code`, `permissionUrl`, `method`, `descritpion`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病历质控报表', '', '/consoleByDept/qualityControlByDept', 'ALL', '病历质控报表(科室)', 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', '126', 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', '2', '126', NULL);
+
+--开放权限报表
+INSERT INTO `sys_menu_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `order_nu`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '53', '126', NULL, '病历质控报表-科室');
+
+

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 401 - 0
doc/031.20210326v2.0.2/qc_initv2.0.2.sql


+ 13 - 0
doc/033.20210608v2.0.4/qc_initv2.0.4.sql

@@ -0,0 +1,13 @@
+use `qc`;
+
+-- 字典表加入密码正则表达式  不同的医院需要修改id为对应的医院id
+SET @id ='4';
+INSERT INTO `sys_dictionary_info` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '30', @id, '^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\\d]){1,})(?=(.*[\\W]){1,})(?!.*\\s).{8,12}$', '2', '0', '正则表达式(至少8个字符,少于12个字符,大写字母+小写字母+数字+特殊字符)');
+
+UPDATE `sys_menu` SET `name`='31日再入院病历数' WHERE (`name`='31日再入院病人数');
+UPDATE `sys_menu` SET `name`='31日再入院病历数' WHERE (`name`='31日再入院病人数');
+UPDATE `sys_permission` SET  `name`='31日再入院病历数报表',`descritpion`='31日再入院病历数报表' WHERE (`permissionUrl`='/console/reHos31DaysPage');
+UPDATE `sys_permission` SET  `name`='31日再入院病历数报表',`descritpion`='31日再入院病历数报表(科室)' WHERE (`permissionUrl`='/consoleByDept/reHos31DaysPageByDept');
+
+
+

+ 12 - 0
doc/034.20210804_2.0.5/qc_initv2.0.5.sql

@@ -0,0 +1,12 @@
+use `qc`;
+INSERT INTO `sys_menu` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '数据编辑', '-1', 'YH-SJBJ', '1', '1', '11', '入院记录展示/编辑');
+SET @id =@@identity;
+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',@id, 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',@id, NULL);
+
+INSERT INTO `sys_permission` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `code`, `permissionUrl`, `method`, `descritpion`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '数据编辑', 'FUNC000151', '/qc/dataEdit/getDataEdit', 'ALL', '数据编辑获取入院记录json数据', NULL);
+SET @it =@@identity;
+INSERT INTO `sys_menu_permission` (`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `order_nu`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', @id, @it, NULL, '数据编辑获取入院记录json数据');
+
+
+

+ 2 - 2
pom.xml

@@ -37,8 +37,8 @@
         <okhttp.version>4.2.2</okhttp.version>
         <easypoi.version>4.2.0</easypoi.version>
         <docker-maven-plugin.version>1.2.1</docker-maven-plugin.version>
-        <docker.image.prefix>192.168.2.236:5000/diagbotcloud</docker.image.prefix>
-        <registryUrl>http://192.168.2.236:5000/repository/diagbotcloud/</registryUrl>
+        <docker.image.prefix>192.168.2.122:5000/diagbotcloud</docker.image.prefix>
+        <registryUrl>http://192.168.2.122:5000/repository/diagbotcloud/</registryUrl>
     </properties>
 
     <dependencyManagement>

+ 35 - 4
src/main/java/com/diagbot/aggregate/LeaveHosStatisticsAggregate.java

@@ -1,15 +1,20 @@
 package com.diagbot.aggregate;
 
+import com.diagbot.dto.ReBeHosDTO;
 import com.diagbot.facade.BehospitalInfoFacade;
+import com.diagbot.facade.ConsoleFacade;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.ReBeHosPageVO;
 import io.github.lvyahui8.spring.annotation.DataConsumer;
 import io.github.lvyahui8.spring.annotation.DataProvider;
 import io.github.lvyahui8.spring.annotation.InvokeParameter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 /**
  * @Description:
@@ -20,6 +25,8 @@ import java.util.Map;
 public class LeaveHosStatisticsAggregate {
     @Autowired
     private BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    private ConsoleFacade consoleFacade;
 
     @DataProvider("setAllLeaveHos")
     public Map<String, Object> setAllLeaveHos(
@@ -37,7 +44,7 @@ public class LeaveHosStatisticsAggregate {
         retMap.put("新生儿人数", newBornNum);
         retMap.put("手术病人数", operationNum);
         retMap.put("非医嘱离院病人数", nonAdviceNum);
-        retMap.put("31日再入院病数", reBehospitalNum);
+        retMap.put("31日再入院病数", reBehospitalNum);
         return retMap;
 
     }
@@ -105,6 +112,30 @@ public class LeaveHosStatisticsAggregate {
      */
     @DataProvider("get31DaysBehospitalCount")
     public Integer get31DaysBehospitalCount(@InvokeParameter("filterVO") FilterVO filterVO) {
-        return behospitalInfoFacade.get31DaysBehospitalCount(filterVO);
+        ReBeHosPageVO reBeHosPageVO = new ReBeHosPageVO();
+        BeanUtil.copyProperties(filterVO,reBeHosPageVO);
+        reBeHosPageVO.setStartDate(timeTrans(filterVO.getStartDate()));
+        reBeHosPageVO.setEndDate(timeTrans(filterVO.getEndDate()));
+        reBeHosPageVO.setFlag(31);
+        List<ReBeHosDTO> records = consoleFacade.reHos31DaysPage(reBeHosPageVO).getRecords();
+        Set<String> codeList = new HashSet<>();
+        records.forEach(obj->{
+            obj.getDetails().forEach(opj->{
+                codeList.add(opj.getBehospitalCode());
+            });
+        });
+        return codeList.size();
+    }
+
+    public static Date timeTrans(String time){
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        try {
+            Date date = format.parse(time);
+            return date;
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return new Date();
+
     }
 }

+ 47 - 4
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/getHospitalMark").permitAll()
                 .antMatchers("/sys/user/getJwtNoPass").permitAll()
                 .antMatchers("/sys/user/refreshJwt").permitAll()
                 .antMatchers("/sys/user/checkToken").permitAll()
@@ -96,6 +97,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/homePageLevelLimit").permitAll()
                 .antMatchers("/console/homePageLevelStatistics").permitAll()
                 .antMatchers("/console/leaveHosCount").permitAll()
+                .antMatchers("/console/medicalRecordIndicator").permitAll()
+                .antMatchers("/console/codingMonthly").permitAll()
                 .antMatchers("/console/levelPercentGroupByDeptPage").permitAll()
                 .antMatchers("/console/levelStatistics").permitAll()
                 .antMatchers("/console/levelStatisticsByDeptClass").permitAll()
@@ -187,6 +190,9 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/data_str/sendRescueNote").permitAll()
                 .antMatchers("/qc/data_str/sendPeriodConclusion").permitAll()
                 .antMatchers("/qc/data_str/sendPreoperativeDiscussion").permitAll()
+                .antMatchers("/qc/data_str/sendTalkInform").permitAll()
+                .antMatchers("/qc/data_str/sendInformedConsent").permitAll()
+                .antMatchers("/qc/data_str/sendContent").permitAll()
                 .antMatchers("/qc/doctoradvice/getPage").permitAll()
                 .antMatchers("/qc/medPacsInfo/getCheckPage").permitAll()
                 .antMatchers("/qc/medLisInfo/getExaminePage").permitAll()
@@ -199,18 +205,55 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/badLevelPage").permitAll()
                 .antMatchers("/console/export/badLevelPagePageExport").permitAll()
                 .antMatchers("/qc/medNurse/getMedNursePage").permitAll()
-                .antMatchers("/qc/data/saveMrRecord").permitAll()
+                .antMatchers("/qc/behospitalInfo/exportQcresultByPerson").permitAll()
+                .antMatchers("/consoleByDept/beHosCountByDept").permitAll()
+                .antMatchers("/consoleByDept/casesEntryStatisticsByDept").permitAll()
+                .antMatchers("/bas/doctor/getList").permitAll()
+                .antMatchers("/consoleByDept/homePageOrGoodLevelByDept").permitAll()
+                .antMatchers("/print/export/homePageLevelExportByDept").permitAll()
+                .antMatchers("/print/export/homePageOrLevelExportByDept").permitAll()
+                .antMatchers("/print/export/entryGroupExportByDeptPage").permitAll()
+                .antMatchers("/print/export/entryGroupExportByDeptCase").permitAll()
+                .antMatchers("/print/export/entryGroupExportByDeptEntry").permitAll()
+                .antMatchers("/print/export/qcResultShortExportByDeptPage").permitAll()
+                .antMatchers("/print/export/levelExportByDept").permitAll()
+                .antMatchers("/consoleByDept/entryStatisticsByDept").permitAll()
+                .antMatchers("/print/export/entryStatisticsExportByDept").permitAll()
+                .antMatchers("/consoleByDept/leaveHosMRPageByDept").permitAll()
+                .antMatchers("/print/export/leaveHosMrPageExportByDept").permitAll()
+                .antMatchers("/consoleByDept/qcCheckStatisticsByDept").permitAll()
+                .antMatchers("/print/export/qcCheckStaExportByDept").permitAll()
+                .antMatchers("/consoleByDept/qcCheckMRPageByDept").permitAll()
+                .antMatchers("/print/export/qcCheckMRPageExportByDept").permitAll()
+                .antMatchers("/consoleByDept/hmImproveMRPageByDept").permitAll()
+                .antMatchers("/print/export/improveMRExportByDept").permitAll()
+                .antMatchers("/consoleByDept/reHos31DaysPageByDept").permitAll()
+                .antMatchers("/print/export/reHos31DaysPageExportByDept").permitAll()
+                .antMatchers("/consoleByDept/unModifyMRSByDept").permitAll()
+                .antMatchers("/print/export/unModifyMRSExportByDept").permitAll()
+                .antMatchers("/consoleByDept/unModifyMRPageByDept").permitAll()
+                .antMatchers("/print/export/unModifyMRPageExportByDept").permitAll()
+                .antMatchers("/consoleByDept/medicalCheckFormKs").permitAll()
+                .antMatchers("/print/export/medicalCheckExportByDept").permitAll()
+                .antMatchers("/consoleByDept/medicalCheckTitleKs").permitAll()
+                .antMatchers("/console/qualityControl").permitAll()
+                .antMatchers("/console/export/qualityControlExport").permitAll()
+                .antMatchers("/consoleByDept/qualityControlByDept").permitAll()
+                .antMatchers("/print/export/qualityControlExportByDept").permitAll()
+                .antMatchers("/qc/behospitalInfo/getMedQualityCoList").permitAll()
+                .antMatchers("/console/saveMedicaIndicator").permitAll()
+                .antMatchers("/qc/medCheckInfo/createMedBeHospitalInfoType").permitAll()
+                .antMatchers("/qc/medCheckInfo/addMedCheckInfo").permitAll()
+                .antMatchers("/qc/medCheckInfo/getDataEdit").permitAll()
+                .antMatchers("/qc/medCheckInfo/saveDataEdit").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }
-
-
     @Override
     public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
         log.info("Configuring ResourceServerSecurityConfigurer");
         resources.resourceId("user-service").tokenStore(new JwtTokenStore(jwtTokenEnhancerClient()));
     }
-
     @Autowired
     private CustomAccessTokenConverter customAccessTokenConverter;
 

+ 47 - 2
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/getHospitalMark", request)
                 || matchers("/sys/user/getJwtNoPass", request)
                 || matchers("/sys/user/refreshJwt", request)
                 || matchers("/sys/dictionaryInfo/getDictionary", request)
@@ -145,6 +146,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/levelStatisticsByDeptClass", request)
                 || matchers("/console/mrCount", request)
                 || matchers("/console/mrStatistics", request)
+                || matchers("/console/medicalRecordIndicator", request)
+                || matchers("/console/codingMonthly", request)
                 || matchers("/console/qcResultShortPage", request)
                 || matchers("/console/resultStatistics", request)
                 || matchers("/console/resultStatisticsByDeptPage", request)
@@ -231,6 +234,9 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/data_str/sendRescueNote", request)
                 || matchers("/qc/data_str/sendPeriodConclusion", request)
                 || matchers("/qc/data_str/sendPreoperativeDiscussion", request)
+                || matchers("/qc/data_str/sendTalkInform", request)
+                || matchers("/qc/data_str/sendInformedConsent", request)
+                || matchers("/qc/data_str/sendContent", request)
                 || matchers("/qc/doctoradvice/getPage", request)
                 || matchers("/qc/medPacsInfo/getCheckPage", request)
                 || matchers("/qc/medLisInfo/getExaminePage", request)
@@ -243,14 +249,53 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/badLevelPage", request)
                 || matchers("/console/export/badLevelPagePageExport", request)
                 || matchers("/qc/medNurse/getMedNursePage", request)
-                || matchers("/qc/data/saveMrRecord", request)
+                || matchers("/qc/behospitalInfo/exportQcresultByPerson", request)
+                || matchers("/consoleByDept/beHosCountByDept", request)
+                || matchers("/consoleByDept/casesEntryStatisticsByDept", request)
+                || matchers("/bas/doctor/getList", request)
+                || matchers("/consoleByDept/homePageOrGoodLevelByDept", request)
+                || matchers("/print/export/homePageLevelExportByDept", request)
+                || matchers("/print/export/homePageOrLevelExportByDept", request)
+                || matchers("/print/export/entryGroupExportByDeptPage", request)
+                || matchers("/print/export/entryGroupExportByDeptCase", request)
+                || matchers("/print/export/entryGroupExportByDeptEntry", request)
+                || matchers("/print/export/qcResultShortExportByDeptPage", request)
+                || matchers("/print/export/levelExportByDept", request)
+                || matchers("/consoleByDept/entryStatisticsByDept", request)
+                || matchers("/print/export/entryStatisticsExportByDept", request)
+                || matchers("/consoleByDept/leaveHosMRPageByDept", request)
+                || matchers("/print/export/leaveHosMrPageExportByDept", request)
+                || matchers("/consoleByDept/qcCheckStatisticsByDept", request)
+                || matchers("/print/export/qcCheckStaExportByDept", request)
+                || matchers("/consoleByDept/qcCheckMRPageByDept", request)
+                || matchers("/print/export/qcCheckMRPageExportByDept", request)
+                || matchers("/consoleByDept/hmImproveMRPageByDept", request)
+                || matchers("/print/export/improveMRExportByDept", request)
+                || matchers("/consoleByDept/reHos31DaysPageByDept", request)
+                || matchers("/print/export/reHos31DaysPageExportByDept", request)
+                || matchers("/consoleByDept/unModifyMRSByDept", request)
+                || matchers("/print/export/unModifyMRSExportByDept", request)
+                || matchers("/consoleByDept/unModifyMRPageByDept", request)
+                || matchers("/print/export/unModifyMRPageExportByDept", request)
+                || matchers("/consoleByDept/medicalCheckFormKs", request)
+                || matchers("/print/export/medicalCheckExportByDept", request)
+                || matchers("/consoleByDept/medicalCheckTitleKs", request)
+                || matchers("/console/qualityControl", request)
+                || matchers("/console/export/qualityControlExport", request)
+                || matchers("/consoleByDept/qualityControlByDept", request)
+                || matchers("/print/export/qualityControlExportByDept", request)
+                || matchers("/qc/behospitalInfo/getMedQualityCoList", request)
+                || matchers("/console/saveMedicaIndicator", request)
+                || matchers("/qc/medCheckInfo/createMedBeHospitalInfoType", request)
+                || matchers("/qc/medCheckInfo/addMedCheckInfo", request)
+                || matchers("/qc/dataEdit/getDataEdit", request)
+                || matchers("/qc/dataEdit/saveDataEdit", request)
                 || matchers("/", request)) {
             return true;
         }
         return false;
     }
 
-
     private boolean matchers(String url, HttpServletRequest request) {
         AntPathRequestMatcher matcher = new AntPathRequestMatcher(url);
         if (matcher.matches(request)) {

+ 25 - 0
src/main/java/com/diagbot/dto/AdmissionCountDTO.java

@@ -0,0 +1,25 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2020/12/24 13:07
+ */
+@Getter
+@Setter
+public class AdmissionCountDTO {
+    //医生id
+    private String doctorId;
+    //主管医生
+    private String doctorName;
+    //科室id
+    private String deptId;
+    //科室名称
+    private String deptName;
+    //总人数
+    private Integer num;
+}

+ 28 - 0
src/main/java/com/diagbot/dto/BehospitalInfoAgeDTO.java

@@ -0,0 +1,28 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangsy
+ * @time: 2021/5/13 15:00
+ */
+@Getter
+@Setter
+public class BehospitalInfoAgeDTO {
+
+    /**
+     * 病人住院序号
+     */
+    private String behospitalCode;
+
+    /**
+     * 年龄
+     */
+    private String age;
+    private String ageYear;
+    private String ageMon;
+    private String ageDay;
+
+}

+ 40 - 0
src/main/java/com/diagbot/dto/CaseScoreDTO.java

@@ -0,0 +1,40 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/14 13:07
+ */
+@Getter
+@Setter
+public class CaseScoreDTO {
+
+    //得分
+    private Double score;
+    //提示信息
+    private String msg;
+    //提示信息
+    private String info;
+    //单项否决
+    private String isReject;
+    //模块名称
+    private String modelName;
+    //模块id
+    private String modelId;
+    private String behospitalCode;
+    //模块ID
+    private Long casesId;
+    //模块分数
+    private Double casesScore;
+    // 条目ID
+    private Long casesEntryId;
+
+}

+ 23 - 0
src/main/java/com/diagbot/dto/CheckDeptDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 核查科室输出类
+ * @Author:songxl
+ * @time: 2021/5/14 13:45
+ */
+@Getter
+@Setter
+public class CheckDeptDTO {
+    //科室id
+    private String deptId;
+    //科室名称
+    private String deptName;
+    //科室质控人员列表
+    private List<DeptCheckUserDTO> deptcheckUsers = new ArrayList<>();
+}

+ 39 - 0
src/main/java/com/diagbot/dto/CheckJobDTO.java

@@ -0,0 +1,39 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 科室核查人员输出类
+ * @Author:songxl
+ * @time: 2021/5/14 13:45
+ */
+@Getter
+@Setter
+public class CheckJobDTO {
+    //核查任务id
+    private int id;
+    //病人住院序号
+    private String behospitalCode;
+    //病人姓名
+    private String name;
+    //科室
+    private String behospitalDept;
+    //主管医生
+    private String attendingDoctor;
+    //出院日期
+    private String leaveHospitalDate;
+    //核查任务生成时间
+    private String jobCreateTime;
+    //任务分配人员id
+    private Long jobDistributor;
+    //任务分配人员名称
+    private String jobDistributorName;
+    //科室id
+    private String behospitalDeptId;
+
+    //筛选分值
+    private int value;
+    //取消分配标志
+    private Boolean delFlag;
+}

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

@@ -0,0 +1,24 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 核查人员用户科室、姓名、角色输出类
+ * @Author:songxl
+ * @time: 2021/5/14 13:45
+ */
+@Getter
+@Setter
+public class CheckUserDTO {
+    //科室id
+    private String deptId;
+    //科室名称
+    private String deptName;
+    //医生id
+    private String doctorId;
+    //医生名称
+    private String doctorName;
+    //角色id
+    private int roleId;
+}

+ 122 - 0
src/main/java/com/diagbot/dto/CheckWorkDTO.java

@@ -0,0 +1,122 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: wangsy
+ * @time: 2021/5/13 15:00
+ */
+@Getter
+@Setter
+public class CheckWorkDTO {
+
+    /**
+     * 病人住院序号
+     */
+    private String behospitalCode;
+
+    /**
+     * 病人姓名
+     */
+    private String name;
+
+
+    /**
+     * 病案号
+     */
+    private String fileCode;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 年龄
+     */
+    private String age;
+    private String ageYear;
+    private String ageMon;
+    private String ageDay;
+
+    /**
+     * 科室
+     */
+    private String behDeptName;
+
+    /**
+     * 出院日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+
+    /**
+     * 住院天数
+     */
+    private String behospitalDayNum;
+
+    /**
+     * 主管医生
+     */
+    private String doctorName;
+
+    /**
+     * 病历等级
+     */
+    private String level;
+
+    /**
+     * 病历得分
+     */
+    private String scoreRes;
+
+    /**
+     * 主诊断
+     */
+    private String diagnose;
+
+    /**
+     * 筛选分值
+     */
+    private String score;
+
+    /**
+     * 生成状态
+     */
+    private String creatStatus;
+
+    /**
+     * 生成日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date jobCreateTime;
+
+    /**
+     * 核查任务生成人编号
+     */
+    private Long jobCreator;
+    /**
+     * 核查任务生成人
+     */
+    private String jobCreatorName;
+
+    /**
+     * 核查日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date checkTime;
+
+    /**
+     * 分配日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date jobDistributionTime;
+
+    //取消分配标志
+    private Boolean delFlag = false;
+}

+ 140 - 0
src/main/java/com/diagbot/dto/CheckedRecordListDTO.java

@@ -0,0 +1,140 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2021/5/17 18:47
+ */
+@Getter
+@Setter
+@ApiModel("核查任务列表-获取核查任务列表-接口出参")
+public class CheckedRecordListDTO {
+
+    /**
+     * 病人住院序号
+     */
+    @ApiModelProperty("病人住院序号")
+    private String behospitalCode;
+
+    /**
+     * 病历核查状态
+     */
+    @ApiModelProperty("病历核查状态")
+    private String status;
+
+    /**
+     * 科室Id
+     */
+    @ApiModelProperty("科室Id")
+    private String behDeptId;
+    /**
+     * 任务来源
+     */
+    @ApiModelProperty("任务来源")
+    private String jobTypeName;
+
+    /**
+     * 科室
+     */
+    @ApiModelProperty("科室")
+    private String behDeptName;
+
+    /**
+     * 病人姓名
+     */
+    @ApiModelProperty("病人姓名")
+    private String name;
+
+    /**
+     * 病案号
+     */
+    @ApiModelProperty("病案号")
+    private String fileCode;
+
+    /**
+     * 主管医生
+     */
+    @ApiModelProperty("主管医生")
+    private String doctorName;
+
+    /**
+     * 出院日期
+     */
+    @ApiModelProperty("出院日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+
+    /**
+     * 生成日期
+     */
+    @ApiModelProperty("生成日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date jobCreateTime;
+
+    /**
+     * 分配日期
+     */
+    @ApiModelProperty("分配日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date jobDistributionTime;
+
+    /**
+     * 任务月份
+     */
+    @ApiModelProperty("任务月份")
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    private Date month;
+
+    /**
+     * 核查员id
+     */
+    @ApiModelProperty("核查员id")
+    private Long checkId;
+
+    /**
+     * 核查员
+     */
+    @ApiModelProperty("核查员")
+    private String checkName;
+
+    /**
+     * 核查日期
+     */
+    @ApiModelProperty("核查日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    private Date checkTime;
+
+    /**
+     * 缺陷数
+     */
+    @ApiModelProperty("缺陷数")
+    private int casesEntryNum;
+
+    /**
+     * 病历等级
+     */
+    @ApiModelProperty("病历等级")
+    private String level;
+
+    /**
+     * 病历得分
+     */
+    @ApiModelProperty("病历得分")
+    private BigDecimal scoreRes;
+
+    /**
+     * 年龄
+     */
+    @ApiModelProperty("年龄")
+    private String age;
+
+}

+ 26 - 0
src/main/java/com/diagbot/dto/DeptCheckUserDTO.java

@@ -0,0 +1,26 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 科室核查人员输出类
+ * @Author:songxl
+ * @time: 2021/5/14 13:45
+ */
+@Getter
+@Setter
+public class DeptCheckUserDTO {
+    //科室id
+    private String deptId;
+    //科室名称
+    private String deptName;
+    //医生id
+    private String doctorId;
+    //医生名称
+    private String doctorName;
+    //核查数
+    private int jobNum;
+    private int checkNum;
+    private int status;
+}

+ 8 - 0
src/main/java/com/diagbot/dto/DeptEntryNumDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import cn.afterturn.easypoi.excel.annotation.Excel;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -19,6 +20,7 @@ public class DeptEntryNumDTO {
     /**
      * 条目缺陷名称
      */
+    @Excel(name = "缺陷名称", width = 40, orderNum = "2")
     private String name;
     /**
      * 模块id
@@ -27,6 +29,7 @@ public class DeptEntryNumDTO {
     /**
      * 模块名称
      */
+    @Excel(name = "模块名称", width = 20, orderNum = "1")
     private String casesName;
     /**
      * 科室id
@@ -43,22 +46,27 @@ public class DeptEntryNumDTO {
     /**
      * 条目缺陷数
      */
+    @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:错误)

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

+ 34 - 0
src/main/java/com/diagbot/dto/ExportExcelBehByDeptDTO.java

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

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

@@ -17,7 +17,7 @@ import java.util.List;
 @Setter
 public class ExportExcelBehospitalDTO {
     @Excel(name = "主管医生", needMerge = true)
-    private String behDoctorName;
+    private String doctorName;
     @Excel(name = "患者姓名", needMerge = true)
     private String patName;
     @Excel(name = "住院号", needMerge = true)

+ 28 - 0
src/main/java/com/diagbot/dto/ExportExcelByDeptDTO.java

@@ -0,0 +1,28 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/6/2 19:00
+ */
+@Getter
+@Setter
+public class ExportExcelByDeptDTO {
+//    @Excel(name = "科室", needMerge = true)
+    private String behDeptName;
+    @Excel(name = "主管医生", needMerge = true)
+    private String doctorName;
+    @Excel(name = "平均分数", needMerge = true)
+    private Double avgScore;
+    @ExcelCollection(name = "")
+    private List<ExportExcelBehByDeptDTO> excelBehospitalDTOS;
+
+
+}

+ 29 - 0
src/main/java/com/diagbot/dto/ExportExcelWideBehByDeptDTO.java

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

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

@@ -13,7 +13,7 @@ import java.util.Date;
 @Setter
 public class ExportExcelWideBehospitalDTO {
     @Excel(name = "主管医生", needMerge = true)
-    private String behDoctorName;
+    private String doctorName;
     @Excel(name = "患者姓名", needMerge = true)
     private String patName;
     @Excel(name = "住院号", needMerge = true)

+ 23 - 0
src/main/java/com/diagbot/dto/ExportNinetyByDeptDTO.java

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

+ 23 - 0
src/main/java/com/diagbot/dto/ExportSevenByDeptDTO.java

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

+ 28 - 0
src/main/java/com/diagbot/dto/ExportWideExcelByDeptDTO.java

@@ -0,0 +1,28 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/6/2 19:00
+ */
+@Getter
+@Setter
+public class ExportWideExcelByDeptDTO {
+//    @Excel(name = "科室", needMerge = true)
+    private String behDeptName;
+    @Excel(name = "主管医生", needMerge = true)
+    private String doctorName;
+    @Excel(name = "平均分数", needMerge = true)
+    private Double avgScore;
+    @ExcelCollection(name = "" )
+    private List<ExportExcelWideBehByDeptDTO> excelBehospitalDTOS;
+
+
+}

+ 118 - 0
src/main/java/com/diagbot/dto/HomePageByDeptDTO.java

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

+ 89 - 0
src/main/java/com/diagbot/dto/ImproveByDeptDTO.java

@@ -0,0 +1,89 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/6 20:03
+ */
+@Getter
+@Setter
+public class ImproveByDeptDTO {
+    /**
+     * 科室编码
+     */
+    private String deptId;
+
+    /**
+     * 主治医生
+     */
+    @Excel(name = "主治医生", width = 30)
+    private String doctorName;
+    /**
+     * 质控总数(总病历数)
+     */
+    @Excel(name = "质控总数", width = 10)
+    private Integer mrNum = 0;
+    /**
+     * 核查数量
+     */
+    @Excel(name = "核查数量", width = 10)
+    private Integer checkedNum = 0;
+    /**
+     * 核查占比
+     */
+    private Double checkedPercent = 0d;
+    /**
+     * 核查占比(百分比)
+     */
+    private String checkedPercentStr = "0.00%";
+    /**
+     * 有病案首页的病历数
+     */
+    private Integer homePageMRNum = 0;
+    /**
+     * 已改善数量
+     */
+    @Excel(name = "已改善数量", width = 10)
+    private Integer improveNum = 0;
+    /**
+     * 改善率
+     */
+    private Double improvePercent = 0d;
+    /**
+     * 改善率(百分比)
+     */
+    @Excel(name = "改善率", width = 10)
+    private String improvePercentStr = "0.00%";
+    /**
+     * 改善至合格数量
+     */
+    @Excel(name = "改善至合格数量", width = 15)
+    private Integer improveToPassNum = 0;
+    /**
+     * 改善至合格率
+     */
+    private Double improveToPassPercent = 0d;
+    /**
+     * 改善至合格率(百分比)
+     */
+    @Excel(name = "改善至合格率", width = 15)
+    private String improveToPassPercentStr = "0.00%";
+    /**
+     * 改善至满分数量
+     */
+    @Excel(name = "改善至满分数量", width = 15)
+    private Integer improveToFullNum = 0;
+    /**
+     * 改善至满分率
+     */
+    private Double improveToFullPercent = 0d;
+    /**
+     * 改善至满分率(百分比)
+     */
+    @Excel(name = "改善至满分率", width = 15)
+    private String improveToFullPercentStr = "0.00%";
+}

+ 26 - 0
src/main/java/com/diagbot/dto/ImproveExportByDeptDTO.java

@@ -0,0 +1,26 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/6 20:03
+ */
+@Getter
+@Setter
+public class ImproveExportByDeptDTO {
+
+    /**
+     * 科室
+     */
+    @Excel(name = "科室", width = 30,needMerge = true)
+    private String deptName;
+    @ExcelCollection(name = "")
+    private List<ImproveByDeptDTO> improveByDeptDTOS;
+}

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

@@ -3,6 +3,8 @@ package com.diagbot.dto;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @Description: jwt 输出类
  * @author: gaodm
@@ -15,4 +17,8 @@ public class JwtDTO {
     private String refreshToken;
     private Integer type; //用户类型
     private String typeCn; //用户类型中文
+    //用户权限列表
+    private List<SysRoleDTO> selRoles;
+    //用户密码复杂度是否符合
+    private String passwordComplexity;
 }

+ 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%";
+
+}

+ 48 - 0
src/main/java/com/diagbot/dto/MedManageParamsDTO.java

@@ -0,0 +1,48 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 病案管理指标病历
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-04-13
+ */
+@Data
+public class MedManageParamsDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+   // 医嘱项目名称
+    private String daItemName;
+
+
+    //医嘱处方类型
+    private String doctorAdviceType;
+
+    //化验报告名称
+    private String repName;
+
+    //医嘱状态判别
+    private String daStatus;
+
+    //病历标题
+    private String content;
+
+    //文书内容(blob)
+    private String rec_title;
+
+
+
+}

+ 223 - 0
src/main/java/com/diagbot/dto/MedQualityControlDTO.java

@@ -0,0 +1,223 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+
+/**
+ * @Description:医疗质量控制指标
+ * @Author:cy
+ * @time: 2021/1/20 13:32
+ */
+@Getter
+@Setter
+public class MedQualityControlDTO {
+
+    /**
+     * 住院病案管理人员月均负担出院患者病历数
+     */
+    @Excel(name = "住院病案管理人员月均负担出院患者病历数", width = 12, orderNum = "1")
+    private Double managerBeNum = 0d;
+
+    /**
+     * 病案编码管理人员月均负担出院患者病历数
+     */
+    @Excel(name = "病案编码管理人员月均负担出院患者病历数", width = 12, orderNum = "2")
+    private Double coderBeNum= 0d;
+
+    /**
+     * 门诊病案管理人员月均负担出院患者病历数
+     */
+    @Excel(name = "门诊病案管理人员月均负担出院患者病历数", width = 12, orderNum = "3")
+    private Double secManagerBeNum= 0d;
+
+    /**
+     * 入院记录24小时内完成量
+     */
+    private Double admissionNum;
+
+    /**
+     * 入院记录24小时内完成率
+     */
+    @Excel(name = "入院记录24小时内完成率", width = 12, orderNum = "4")
+    private String admissionStr;
+
+    /**
+     * 手术记录24小时内完成量
+     */
+    private Double operationNum;
+
+    /**
+     * 手术记录24小时内完成率
+     */
+    @Excel(name = "手术记录24小时内完成率", width = 12, orderNum = "5")
+    private String operationStr;
+
+    /**
+     * 手术相关记录完整量
+     */
+    private Double  operationRecordNum;
+
+    /**
+     * 手术相关记录完整率
+     */
+    @Excel(name = "手术相关记录完整率", width = 12, orderNum = "5")
+    private String operationRecordStr  = "0.00%";
+
+
+    /**
+     * 出院记录24小时内完成量
+     */
+    private Double leaveHospitalNum;
+
+    /**
+     * 出院记录24小时内完成率
+     */
+    @Excel(name = "出院记录24小时内完成率", width = 12, orderNum = "6")
+    private String leaveHospitalStr;
+
+    /**
+     * 病案首页24小时内完成量
+     */
+    private Double medHomePageNum;
+
+    /**
+     * 病案首页24小时内完成率
+     */
+    @Excel(name = "病案首页24小时内完成率",width = 12, orderNum = "7")
+    private String medHomePageStr;
+
+    /**
+     * 医师查房记录完成量
+     */
+    private Double WardRoundNum;
+
+    /**
+     * 医师查房记录完成率
+     */
+    @Excel(name = "医师查房记录完成率",width = 12, orderNum = "8")
+    private String WardRoundStr = "0.00%";
+
+    /**
+     * 临床用血相关记录符合量
+     */
+    @Excel(name = "临床用血相关记录符合率",width = 12, orderNum = "8")
+    private Double bloodNum;
+    //临床用血相关记录符合率
+    private String bloodStr = "0.00%";
+
+    /**
+     * 患者抢救记录6h完成量
+     */
+    private Double rescueNum;
+
+    /**
+     * 患者抢救记录6h完成率
+     */
+    @Excel(name = "患者抢救记录完成率",width = 12, orderNum = "9")
+    private String rescueStr = "0.00%";
+
+    /**
+     * 出院患者病历2日归档量
+     */
+    private Double leaveSecFileNum;
+
+    /**
+     * 出院患者病历2日归档率
+     */
+    @Excel(name = "出院患者病历2日归档完整率",width = 12, orderNum = "10")
+    private String leaveSecFileStr = "0.00%";
+
+    /**
+     * 出院患者病历归档完整量
+     */
+    private Double leaveFileNum;
+
+    /**
+     * 出院患者病历归档完整率
+     */
+    @Excel(name = "出院患者病历归档完整率",width = 12, orderNum = "11")
+    private String leaveFileStr;
+
+    /**
+     * 主要诊断填写正确量
+     */
+    private Double mainDiagnosisNum;
+
+    /**
+     * 主要诊断填写正确率
+     */
+    @Excel(name = "主要诊断填写正确率",width = 12, orderNum = "12")
+    private String mainDiagnosisStr;
+
+    /**
+     * 主要诊断编码正确量
+     */
+    private Double mainCodeDiagnosisNum;
+
+    /**
+     * 主要诊断编码正确率
+     */
+    @Excel(name = "扣分", width = 12,orderNum = "13")
+    private String mainCodeDiagnosisStr;
+
+    /**
+     * 不合理复制病历发生量
+     */
+    private Double  notCopiedNum;
+
+    /**
+     * 不合理复制病历发生率
+     */
+    @Excel(name = "不合理复制病历发生率",width = 12, orderNum = "14")
+    private String  notCopiedStr;
+
+    /**
+     * 甲级病历量
+     */
+    private Double firGradeNum= 0d;
+
+    /**
+     * 甲级病历率
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "15")
+    private String firGradeStr = "0.00%";
+
+    /**
+     * CT检查记录符合率
+     */
+    @Excel(name = "CT检查记录符合率",width = 12, orderNum = "16")
+    private String CTExaminationConform;
+
+    /**
+     * MRI检查记录符合率
+     */
+    @Excel(name = "MRI检查记录符合率",width = 12, orderNum = "18")
+    private String MRIExaminationConform;
+
+
+    /**
+     * 病理检查记录符合率
+     */
+    @Excel(name = "病理检查记录符合率",width = 12, orderNum = "20")
+    private String PathologicalExamination;
+
+    /**
+     * 细菌培养检查记录符合率
+     */
+    @Excel(name = "细菌培养检查记录符合率",width = 12, orderNum = "21")
+    private String BacterialCulture;
+
+    /**
+     * 抗菌药物使用记录符合率
+     */
+    @Excel(name = "抗菌药物使用记录符合率",width = 12, orderNum = "22")
+    private String AntibacterialDrugUse;
+
+    /**
+     * 恶性肿瘤化学治疗记录符合率
+     */
+    @Excel(name = "恶性肿瘤化学治疗记录符合率",width = 12, orderNum = "23")
+    private String ChemotherapyMalignantTumors;
+}

+ 3 - 0
src/main/java/com/diagbot/dto/MedicalCheckDTO.java

@@ -27,6 +27,9 @@ public class MedicalCheckDTO{
     //医生
     private String doctorName;
 
+    //医疗组
+    private String doctorGroup;
+
     //入院记录未24小时内_id
     private String entry_2658_id;
 

+ 25 - 0
src/main/java/com/diagbot/dto/MedicalDeptDTO.java

@@ -0,0 +1,25 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:cy
+ * @time: 2020/9/9 13:19
+ */
+@Getter
+@Setter
+public class MedicalDeptDTO {
+
+    //科室名称
+    @Excel(name = "科室",width = 18,needMerge = true,orderNum = "1")
+    private String deptName;
+
+    @ExcelCollection(name = "",orderNum = "2")
+    private List<MedicalDoDeptDTO> medicalDoctorExportDTOS;
+}

+ 25 - 0
src/main/java/com/diagbot/dto/MedicalDoDeptDTO.java

@@ -0,0 +1,25 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:cy
+ * @time: 2020/9/9 13:19
+ */
+@Getter
+@Setter
+public class MedicalDoDeptDTO {
+
+    //医疗组
+    @Excel(name = "医疗组",needMerge = true,orderNum = "1")
+    private String doctorGroup;
+
+    @ExcelCollection(name = "",orderNum = "2")
+    private List<MedicalSeeByDeptDTO> medicalCheckTitleDTOS;
+}

+ 14 - 0
src/main/java/com/diagbot/dto/MedicalRecordDTO.java

@@ -17,6 +17,14 @@ public class MedicalRecordDTO implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+    /**
+     * 病人医院ID
+     */
+    private Long hospitalId;
     /**
      * 模块id
      */
@@ -31,4 +39,10 @@ public class MedicalRecordDTO implements Serializable {
      * 病历日期
      */
     private String recDate;
+
+    /**
+     *是否从结构化表中取数据(0-从文文书取 1-从结构化取)
+     */
+    private int isParsed = 0;
+
 }

+ 100 - 0
src/main/java/com/diagbot/dto/MedicalSeeByDeptDTO.java

@@ -0,0 +1,100 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:cy
+ * @time: 2020/9/9 13:19
+ */
+@Getter
+@Setter
+public class MedicalSeeByDeptDTO {
+
+    //主管医生
+    @Excel(name = "主管医生",orderNum = "1")
+    private String doctorName ;
+
+    //入院记录未24小时内
+    @Excel(name = "入院记录24小时内",orderNum = "2")
+    private String ryjlw_24 ;
+
+    //首次病程记录未8小时内
+    @Excel(name = "首次病程记录8小时内",orderNum = "3")
+    private String scbcjlw_8h;
+
+    @Excel( name = "副主任/主任医师首次查房72小时内完成",orderNum = "4")
+    //副主任/主任医师首次查房72小时内未完成
+    private String zrsccfw_72h;
+
+    //入院后未连记3天病程
+    @Excel(name = "入院后连记3天病程(不包括术后首程)",orderNum = "5")
+    private String ryhljbcw_3d;
+
+    //每周至少2次副主任/主任医师查房
+    @Excel(name = "每周至少2次副主任/主任医师查房",orderNum = "6")
+    private String zrcfw_2w;
+
+    //每周至少3次主治医师查房记录
+    @Excel(name = "每周至少3次主治医师查房记录",orderNum = "7")
+    private String zzcfw_3w;
+
+    //抢救记录未6小时内完成
+    @Excel(name = "抢救记录6小时内完成",orderNum = "8")
+    private String qjjlw_6h;
+
+    //会诊记录在会诊申请后未24小时完成
+    @Excel(name = "会诊记录在会诊申请后24小时完成",orderNum = "9")
+    private String hzjlw_24h;
+
+    //术前讨论、术前小结未完成
+    @Excel(name = "术前讨论、术前小结完成",orderNum = "10")
+    private String sqtlxjw;
+
+    //手术记录术后24小时内未完成
+    @Excel(name = "手术记录术后24小时内完成",orderNum = "11")
+    private String sxjlsw_24h;
+
+    //术后首程在术后30分钟内未完成
+    @Excel(name = "术后首程在术后30分钟内完成",orderNum = "12")
+    private String xhscw_30m;
+
+    //术后主刀查房24小时内未完成
+    @Excel(name = "术后主刀查房24小时内完成",orderNum = "13")
+    private String shzdcfw_24h;
+
+    //术后未连记3天病程
+    @Excel(name = "术后连记3天病程(包括术后首程)",orderNum = "14")
+    private String shjbcw_3d;
+
+    //转科后未连记3天病程
+    @Excel(name = "转科后连记3天病程(包括专科记录)",orderNum = "15")
+    private String zkjbcw_3d;
+
+    //转接科记录专科后24小时内未完成
+    @Excel(name = "转接科记录专科后24小时内完成",orderNum = "16")
+    private String zkjlw_24;
+
+    //病危/重患者未每日记录病程
+    @Excel(name = "病危/重患者每日记录病程",orderNum = "17")
+    private String bwzhjlbcw_md;
+
+    //输血后未完成输血记录
+    @Excel(name = "输血后完成输血记录",orderNum = "18")
+    private String sxhwjl;
+
+    //24小时未完成输血后评价
+    @Excel(name = "24小时完成输血后评价",orderNum = "19")
+    private String sxpjw_24;
+
+    //危急值未记录
+    @Excel(name = "危急值记录",orderNum = "20")
+    private String wjzwjl;
+
+    //住院30天未阶段小结
+    @Excel(name = "住院30天阶段小结",orderNum = "21")
+    private String wywwcxj;
+
+}

+ 8 - 0
src/main/java/com/diagbot/dto/MsgDTO.java

@@ -54,6 +54,14 @@ public class MsgDTO {
     private Date gmtCreate;
     // 记录修改时间,如果时间是1970年则表示纪录未修改
     private Date gmtModified;
+    // 记录修改人id
+    private String modifier;
+    // 记录修改人姓名
+    private String linkman;
+    // 逻辑删除标志位
+    private String isDeleted;
+    // 缺陷说明
+    private String explainInfo;
     // 条目id对应页面数据的key值
     private List<Long> pageKeyList = new ArrayList<>();
 }

+ 185 - 0
src/main/java/com/diagbot/dto/QualityControlDTO.java

@@ -0,0 +1,185 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description:病历质控报表返回结构
+ * @Author:cy
+ * @time: 2021/1/20 13:32
+ */
+@Getter
+@Setter
+public class QualityControlDTO {
+
+    /**
+     * 姓名
+     */
+    @Excel(name = "病人姓名", width = 12, orderNum = "1")
+    private String name;
+
+    /**
+     * 病人住院ID
+     */
+    @Excel(name = "住院号", width = 16, orderNum = "2")
+    private String behospitalCode;
+
+    /**
+     * 主管医生id
+     */
+    private String doctorId;
+
+    /**
+     * 年龄
+     */
+    private String age;
+
+    /**
+     * 医生姓名
+     */
+    @Excel(name = "主治医生", width = 12, orderNum = "3")
+    private String doctorName;
+
+    /**
+     * 科室id(科室编码)
+     */
+    private String deptId;
+    /**
+     * 科室名称
+     */
+    @Excel(name = "科室名称", width = 16, orderNum = "4")
+    private String deptName;
+
+    /**
+     * 入院时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date behospitalDate;
+
+    /**
+     * 出院时间
+     */
+    @Excel(name = "出院时间", width = 25, orderNum = "5", exportFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+
+    /**
+     * 病案首页--
+     */
+    @Excel(name = "病案首页", width = 30, orderNum = "6")
+    private String medHomePage = "无缺陷";
+    /**
+     * 病案首页扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "7")
+    private Double medHomePageScore= 0d;
+
+    /**
+     * 入院记录--
+     */
+    @Excel(name = "入院记录",width = 30, orderNum = "8")
+    private String admissionNote = "无缺陷";
+
+    /**
+     * 入院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "9")
+    private Double admissionNoteScore= 0d;
+
+    /**
+     * 首次病程录--
+     */
+    @Excel(name = "首次病程录",width = 30, orderNum = "10")
+    private String firstCourseNote = "无缺陷";
+
+    /**
+     * 首次病程录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "11")
+    private Double firstCourseNoteScore= 0d;
+
+    /**
+     * 病程记录--
+     */
+    @Excel(name = "病程记录",width = 30, orderNum = "12")
+    private String courseRecord = "无缺陷";
+
+    /**
+     * 病程记录扣分
+     */
+    @Excel(name = "扣分", width = 12,orderNum = "13")
+    private Double courseRecordScore= 0d;
+
+    /**
+     * 手术信息--
+     */
+    @Excel(name = "手术信息",width = 30, orderNum = "14")
+    private String  operationInfo = "无缺陷";
+
+    /**
+     * 手术信息扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "15")
+    private Double operationInfoScore= 0d;
+
+    /**
+     * 出院记录--
+     */
+    @Excel(name = "出院记录",width = 30, orderNum = "16")
+    private String  dischargeNote = "无缺陷";
+    /**
+     * 出院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "17")
+    private Double  dischargeNoteScore= 0d;
+
+    /**
+     * 医嘱单--
+     */
+    @Excel(name = "医嘱单",width = 30, orderNum = "18")
+    private String  docAdviceNote = "无缺陷";
+    /**
+     * 医嘱单扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "19")
+    private Double docAdviceNoteScore= 0d;
+
+    /**
+     * 其他
+     */
+    @Excel(name = "其他",width = 30, orderNum = "20")
+    private String  otherCase = "无缺陷";
+    /**
+     * 其他扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "21")
+    private Double otherCaseScore= 0d;
+
+    /**
+     * 总分
+     */
+    @Excel(name = "总分",width = 12, orderNum = "22")
+    private Double  totalScore= 0d;
+    /**
+     * 病历等级
+     */
+    @Excel(name = "病历等级",width = 12, orderNum = "23")
+    private String level;
+
+    /**
+     * 病案首页核查人
+     */
+    @Excel(name = "首页检查者", width = 12,orderNum = "24")
+    private String  mrName;
+    /**
+     * 病历核查人
+     */
+    @Excel(name = "病历检查者",width = 12, orderNum = "25")
+    private String chName;
+
+}

+ 188 - 0
src/main/java/com/diagbot/dto/QualityControlDeptDTO.java

@@ -0,0 +1,188 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:病历质控报表返回结构
+ * @Author:cy
+ * @time: 2021/1/20 13:32
+ */
+@Getter
+@Setter
+public class QualityControlDeptDTO {
+
+    /**
+     * 姓名
+     */
+    @Excel(name = "病人姓名", width = 12, orderNum = "1")
+    private String name;
+
+    /**
+     * 病人住院ID
+     */
+    @Excel(name = "住院号", width = 16, orderNum = "2")
+    private String behospitalCode;
+
+    /**
+     * 主管医生id
+     */
+    private String doctorId;
+
+    /**
+     * 年龄
+     */
+    private String age;
+
+    /**
+     * 医生姓名
+     */
+    @Excel(name = "主治医生", width = 12, orderNum = "3")
+    private String doctorName;
+
+    /**
+     * 科室id(科室编码)
+     */
+    private String deptId;
+    /**
+     * 科室名称
+     */
+    @Excel(name = "科室名称", width = 16, orderNum = "4")
+    private String deptName;
+
+    /**
+     * 入院时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date behospitalDate;
+
+    /**
+     * 出院时间
+     */
+    @Excel(name = "出院时间", width = 25, orderNum = "5", exportFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+
+    /**
+     * 病案首页--
+     */
+    @Excel(name = "病案首页", width = 30, orderNum = "6")
+    private String medHomePage = "无缺陷";
+    /**
+     * 病案首页扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "7")
+    private Double medHomePageScore= 0d;
+
+    /**
+     * 入院记录--
+     */
+    @Excel(name = "入院记录",width = 30, orderNum = "8")
+    private String admissionNote = "无缺陷";
+
+    /**
+     * 入院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "9")
+    private Double admissionNoteScore= 0d;
+
+
+    /**
+     * 首次病程录--
+     */
+    @Excel(name = "首次病程录",width = 30, orderNum = "10")
+    private String firstCourseNote = "无缺陷";
+
+    /**
+     * 首次病程录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "11")
+    private Double firstCourseNoteScore= 0d;
+
+    /**
+     * 病程记录--
+     */
+    @Excel(name = "病程记录",width = 30, orderNum = "12")
+    private String courseRecord = "无缺陷";
+
+    /**
+     * 病程记录扣分
+     */
+    @Excel(name = "扣分", width = 12,orderNum = "13")
+    private Double courseRecordScore= 0d;
+
+    /**
+     * 手术信息--
+     */
+    @Excel(name = "手术信息",width = 30, orderNum = "14")
+    private String  operationInfo = "无缺陷";
+
+    /**
+     * 手术信息扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "15")
+    private Double operationInfoScore= 0d;
+
+    /**
+     * 出院记录--
+     */
+    @Excel(name = "出院记录",width = 30, orderNum = "16")
+    private String  dischargeNote = "无缺陷";
+    /**
+     * 出院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "17")
+    private Double  dischargeNoteScore= 0d;
+
+    /**
+     * 医嘱单--
+     */
+    @Excel(name = "医嘱单",width = 30, orderNum = "18")
+    private String  docAdviceNote = "无缺陷";
+    /**
+     * 医嘱单扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "19")
+    private Double docAdviceNoteScore= 0d;
+
+    /**
+     * 其他
+     */
+    @Excel(name = "其他",width = 30, orderNum = "20")
+    private String  otherCase = "无缺陷";
+    /**
+     * 其他扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "21")
+    private Double otherCaseScore= 0d;
+
+    /**
+     * 总分
+     */
+    @Excel(name = "总分",width = 12, orderNum = "22")
+    private Double  totalScore= 0d;
+    /**
+     * 病历等级
+     */
+    @Excel(name = "病历等级",width = 12, orderNum = "23")
+    private String level;
+
+    /**
+     * 病案首页核查人
+     */
+    @Excel(name = "首页检查者", width = 12,orderNum = "24")
+    private String  mrName;
+    /**
+     * 病历核查人
+     */
+    @Excel(name = "病历检查者",width = 12, orderNum = "25")
+    private String chName;
+
+
+
+
+}

+ 139 - 0
src/main/java/com/diagbot/dto/QualityControlNullDTO.java

@@ -0,0 +1,139 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description:病历质控报表返回结构
+ * @Author:cy
+ * @time: 2021/1/20 13:32
+ */
+@Getter
+@Setter
+public class QualityControlNullDTO {
+
+
+
+    /**
+     * 病案首页--
+     */
+
+    private String medHomePage;
+
+    /**
+     * 入院记录--
+     */
+
+    private String admissionNote;
+
+
+
+    /**
+     * 首次病程录--
+     */
+
+    private String firstCourseNote;
+
+
+    /**
+     * 病程记录--
+     */
+
+    private String courseRecord;
+
+
+    /**
+     * 手术信息--
+     */
+
+    private String  operationInfo;
+
+
+    /**
+     * 出院记录--
+     */
+
+    private String  dischargeNote;
+
+    /**
+     * 医嘱单--
+     */
+
+    private String  docAdviceNote;
+
+    /**
+     * 其他
+     */
+
+    private String  otherCase;
+
+    /**
+     * 病案首页扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "7")
+    private Double medHomePageScore;
+
+
+    /**
+     * 入院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "9")
+    private Double admissionNoteScore;
+
+
+
+    /**
+     * 首次病程录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "11")
+    private Double firstCourseNoteScore;
+
+
+    /**
+     * 病程记录扣分
+     */
+    @Excel(name = "扣分", width = 12,orderNum = "13")
+    private Double courseRecordScore;
+
+
+    /**
+     * 手术信息扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "15")
+    private Double operationInfoScore;
+
+
+    /**
+     * 出院记录扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "17")
+    private Double  dischargeNoteScore;
+
+
+    /**
+     * 医嘱单扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "19")
+    private Double docAdviceNoteScore;
+
+
+    /**
+     * 其他扣分
+     */
+    @Excel(name = "扣分",width = 12, orderNum = "21")
+    private Double otherCaseScore;
+
+    /**
+     * 总分
+     */
+    @Excel(name = "总分",width = 12, orderNum = "22")
+    private Double  totalScore;
+
+
+
+}

+ 43 - 0
src/main/java/com/diagbot/dto/ReBeHosByDeptDTO.java

@@ -0,0 +1,43 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/16 13:43
+ */
+@Getter
+@Setter
+public class ReBeHosByDeptDTO {
+    /**
+     * 病案号
+     */
+    @Excel(name = "病案号", width = 20, needMerge = true, orderNum = "1")
+    private String fileCode;
+    /**
+     * 性别
+     */
+    @Excel(name = "性别", width = 10, needMerge = true, orderNum = "2")
+    private String sex;
+
+    /**
+     * 间隔天数
+     */
+    @Excel(name = "间隔天数", width = 10, needMerge = true, orderNum = "4")
+    private Integer diffDays;
+
+    @Excel(name = "是否有出院31天内再住院计划", width = 30, needMerge = true,  orderNum = "5")
+    private String lastAgainBehospitalPlan;//31天再入院计划(是/否)
+
+    /**
+     * 比较病历组
+     */
+    @ExcelCollection(name = "", orderNum = "6")
+    private List<ReBeHosDetailByDeptDTO> details;
+}

+ 7 - 6
src/main/java/com/diagbot/dto/ReBeHosDTO.java

@@ -25,19 +25,20 @@ public class ReBeHosDTO {
      */
     @Excel(name = "性别", width = 10, needMerge = true, orderNum = "2")
     private String sex;
-    /**
-     * 主诊断
-     */
-    @Excel(name = "主诊断", width = 50, needMerge = true, orderNum = "3")
-    private String diagnose;
+
     /**
      * 间隔天数
      */
     @Excel(name = "间隔天数", width = 10, needMerge = true, orderNum = "4")
     private Integer diffDays;
+
+
+    @Excel(name = "是否有出院31天内再住院计划", width = 30, needMerge = true,  orderNum = "5")
+    private String lastAgainBehospitalPlan;//31天再入院计划(是/否)
+
     /**
      * 比较病历组
      */
-    @ExcelCollection(name = "", orderNum = "5")
+    @ExcelCollection(name = "", orderNum = "6")
     private List<ReBeHosDetailDTO> details;
 }

+ 90 - 0
src/main/java/com/diagbot/dto/ReBeHosDetailByDeptDTO.java

@@ -0,0 +1,90 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/16 15:17
+ */
+@Getter
+@Setter
+public class ReBeHosDetailByDeptDTO {
+    /**
+     * 病人住院号
+     */
+    @Excel(name = "病人住院号", width = 20, orderNum = "1")
+    private String behospitalCode;
+    /**
+     * 病人姓名
+     */
+    @Excel(name = "病人姓名", width = 20, orderNum = "2")
+    private String name;
+
+    /**
+     * 病历等级
+     */
+    @Excel(name = "病历等级", width = 10, orderNum = "3")
+    private String level;
+    /**
+     * 病历得分
+     */
+    @Excel(name = "病历得分", width = 10, orderNum = "4")
+    private Double scoreRes;
+    /**
+     * 科室编码
+     */
+    private String behDeptId;
+
+    /**
+     * 科室
+     */
+   // @Excel(name = "科室", width = 50, orderNum = "5")
+    private String behDeptName;
+
+    /**
+     * 主管医生
+     */
+    @Excel(name = "主管医生", width = 50, orderNum = "6")
+    private String doctorName;
+
+    /**
+     * 入院诊断
+     */
+    @Excel(name = "入院诊断", width = 50, needMerge = true, orderNum = "7")
+    private String diagnose;
+
+    /**
+     * 出院诊断
+     */
+    @Excel(name = "出院诊断", width = 50, needMerge = true, orderNum = "8")
+    private String diagnoseName;
+
+    /**
+     * 出院日期
+     */
+    @Excel(name = "出院日期", format = "yyyy-MM-dd", width = 30, orderNum = "9")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+    /**
+     * 入院日期
+     */
+    @Excel(name = "入院日期", format = "yyyy-MM-dd", width = 30, orderNum = "10")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date behospitalDate;
+    /**
+     * 住院天数
+     */
+    @Excel(name = "住院天数", width = 15, orderNum = "11")
+    private String behospitalDayNum;
+    /**
+     * 住院费用
+     */
+    @Excel(name = "住院费用", width = 15, orderNum = "12")
+    private String totleFee;
+}

+ 21 - 4
src/main/java/com/diagbot/dto/ReBeHosDetailDTO.java

@@ -25,6 +25,8 @@ public class ReBeHosDetailDTO {
      */
     @Excel(name = "病人姓名", width = 20, orderNum = "2")
     private String name;
+
+
     /**
      * 病历等级
      */
@@ -44,26 +46,41 @@ public class ReBeHosDetailDTO {
      */
     @Excel(name = "科室", width = 50, orderNum = "5")
     private String behDeptName;
+
+    /**
+     * 入院诊断
+     */
+    @Excel(name = "入院诊断", width = 50, needMerge = true, orderNum = "6")
+    private String diagnose;
+
+    /**
+     * 出院诊断
+     */
+    @Excel(name = "出院诊断", width = 50, needMerge = true, orderNum = "7")
+    private String diagnoseName;
     /**
      * 出院日期
      */
-    @Excel(name = "出院日期", format = "yyyy-MM-dd", width = 30, orderNum = "6")
+    @Excel(name = "出院日期", format = "yyyy-MM-dd", width = 30, orderNum = "8")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date leaveHospitalDate;
     /**
      * 入院日期
      */
-    @Excel(name = "入院日期", format = "yyyy-MM-dd", width = 30, orderNum = "7")
+    @Excel(name = "入院日期", format = "yyyy-MM-dd", width = 30, orderNum = "9")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date behospitalDate;
     /**
      * 住院天数
      */
-    @Excel(name = "住院天数", width = 15, orderNum = "8")
+    @Excel(name = "住院天数", width = 15, orderNum = "10")
     private String behospitalDayNum;
     /**
      * 住院费用
      */
-    @Excel(name = "住院费用", width = 15, orderNum = "9")
+    @Excel(name = "住院费用", width = 15, orderNum = "11")
     private String totleFee;
+
+    private String age;
+
 }

+ 11 - 1
src/main/java/com/diagbot/dto/ReBeHosMergeDTO.java

@@ -15,9 +15,12 @@ import java.util.Date;
 @Setter
 public class ReBeHosMergeDTO {
     private String fileCode;
-    private String diagnose;
+    private String diagnose = "";
+    private String diagnoseName = "";//病案首页诊断
     private String name;
     private String sex;
+    private String doctorName;
+    private String doctorId;
     private String behDeptId;
     private String behDeptName;
     private String behospitalCode;
@@ -27,8 +30,11 @@ public class ReBeHosMergeDTO {
     private Date behospitalDate;
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date leaveHospitalDate;
+    private String lastDiagnose = "";
+    private String lastDiagnoseName = "";
     private String lastBehDeptId;
     private String lastBehDeptName;
+    private String lastDoctorName;
     private String lastBehospitalCode;
     private Double lastScoreRes;
     private String lastLevel;
@@ -39,6 +45,10 @@ public class ReBeHosMergeDTO {
     private Integer diffDays;
     private String totleFee;
     private String behospitalDayNum;
+    private String againBehospitalPlan;//31天再入院计划(是/否)
+    private String age;//年龄
+    private String lastAge;//年龄
     private String lastTotleFee;
     private String lastBehospitalDayNum;
+    private String lastAgainBehospitalPlan;//31天再入院计划(是/否)
 }

+ 35 - 0
src/main/java/com/diagbot/dto/StrAdmissionNoteDTO.java

@@ -0,0 +1,35 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 入院记录
+ * </p>
+ *
+ * @author cy
+ * @since 2020-10-09
+ */
+@Data
+public class StrAdmissionNoteDTO implements Serializable {
+
+
+    /**
+     * 记录编号
+     */
+    private String recId;
+
+
+    /**
+     * 结构化数据
+     */
+    private String wholeData;
+
+    /**
+     * modeId
+     */
+    private String modeId;
+
+}

+ 2 - 0
src/main/java/com/diagbot/dto/UnModifyMRDetailDTO.java

@@ -13,6 +13,8 @@ import lombok.Setter;
 public class UnModifyMRDetailDTO {
     private String deptId;
     private String deptName;
+    private String doctorId;
+    private String doctorName;
     private Long casesEntryId;
     private String casesEntryName;
     private Integer casesEntryNum;

+ 53 - 0
src/main/java/com/diagbot/entity/FilterRecordVO.java

@@ -0,0 +1,53 @@
+package com.diagbot.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+@Getter
+@Setter
+public class FilterRecordVO implements Serializable {
+        private Integer type;
+        /**
+         * 起始时间
+         */
+        @NotBlank(message = "请输入起始时间")
+        private String startDate;
+        /**
+         * 结束时间
+         */
+        @NotBlank(message = "请输入结束时间")
+        private String endDate;
+
+        /**
+         * 医院id
+         */
+        @ApiModelProperty(hidden = true)
+        private String hospitalId;
+        /**
+         * 限制条数
+         */
+        @ApiModelProperty(hidden = true)
+        private Integer limitCount = 10;
+
+        @ApiModelProperty(hidden = true)
+        private Long userId;
+
+        /**
+         * 科室分类
+         */
+        private String deptClass;
+        //科室名称
+        private String deptName;
+
+        private String level;
+        /**
+         * 是否归档(0:未归档,1:已归档)
+         */
+        private String isPlacefile = "1";
+
+
+}

+ 71 - 0
src/main/java/com/diagbot/entity/MedBehospitalType.java

@@ -0,0 +1,71 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+@TableName("med_behospital_type")
+@Data
+public class MedBehospitalType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病历号
+     */
+    private String behospitalCode;
+
+    /**
+     * 患者类型
+     */
+    private String behospitalType;
+
+    /**
+     * 类型分值
+     */
+    private Integer value;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 是否删除
+     */
+    private String isDeleted;
+
+    @Override
+    public String toString() {
+        return "MedBehospitalType{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", behospitalCode=" + behospitalCode +
+            ", behospitalType=" + behospitalType +
+            ", value=" + value +
+            ", createTime=" + createTime +
+            ", isDeleted=" + isDeleted +
+        "}";
+    }
+}

+ 56 - 99
src/main/java/com/diagbot/entity/MedCheckInfo.java

@@ -2,8 +2,10 @@ package com.diagbot.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -14,6 +16,7 @@ import java.util.Date;
  * @author wangfeng
  * @since 2020-07-06
  */
+@Data
 public class MedCheckInfo implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -79,116 +82,70 @@ public class MedCheckInfo implements Serializable {
      */
     private Integer status;
 
-    private Integer checkType;
-
-    public Integer getCheckType() {
-        return checkType;
-    }
-
-    public void setCheckType(Integer checkType) {
-        this.checkType = checkType;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-    public String getIsDeleted() {
-        return isDeleted;
-    }
-
-    public void setIsDeleted(String isDeleted) {
-        this.isDeleted = isDeleted;
-    }
-    public Date getGmtCreate() {
-        return gmtCreate;
-    }
-
-    public void setGmtCreate(Date gmtCreate) {
-        this.gmtCreate = gmtCreate;
-    }
-    public Date getGmtModified() {
-        return gmtModified;
-    }
-
-    public void setGmtModified(Date gmtModified) {
-        this.gmtModified = gmtModified;
-    }
-    public String getCreator() {
-        return creator;
-    }
+    /**
+     * 核查类型(0病历,1病案首页,2全部)
+     */
+    private Integer checkType = 2;
 
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-    public String getModifier() {
-        return modifier;
-    }
+    /**
+     * 核查任务创建人编号
+     */
+    private Long jobCreator;
 
-    public void setModifier(String modifier) {
-        this.modifier = modifier;
-    }
-    public String getBehospitalCode() {
-        return behospitalCode;
-    }
+    /**
+     * 核查任务创建人
+     */
+    private String jobCreatorName;
 
-    public void setBehospitalCode(String behospitalCode) {
-        this.behospitalCode = behospitalCode;
-    }
-    public Long getHospitalId() {
-        return hospitalId;
-    }
+    /**
+     * 核查任务生成时间
+     */
+    private Date jobCreateTime;
 
-    public void setHospitalId(Long hospitalId) {
-        this.hospitalId = hospitalId;
-    }
-    public Long getCheckId() {
-        return checkId;
-    }
+    /**
+     * 核查任务类型(0-科室任务 1-院级 2-质控科)
+     */
+    private Integer jobType;
 
-    public void setCheckId(Long checkId) {
-        this.checkId = checkId;
-    }
-    public String getCheckName() {
-        return checkName;
-    }
+    /**
+     * 核查任务分配人编号
+     */
+    private Long jobDistributor;
 
-    public void setCheckName(String checkName) {
-        this.checkName = checkName;
-    }
-    public Date getCheckTime() {
-        return checkTime;
-    }
+    /**
+     * 核查任务分配人姓名
+     */
+    private String jobDistributionName;
 
-    public void setCheckTime(Date checkTime) {
-        this.checkTime = checkTime;
-    }
-    public Integer getStatus() {
-        return status;
-    }
+    /**
+     * 核查任务分配时间
+     */
+    private Date jobDistributionTime;
 
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
 
     @Override
     public String toString() {
         return "MedCheckInfo{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", behospitalCode=" + behospitalCode +
-            ", hospitalId=" + hospitalId +
-            ", checkId=" + checkId +
-            ", checkName=" + checkName +
-            ", checkTime=" + checkTime +
-            ", status=" + status +
-        "}";
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", behospitalCode=" + behospitalCode +
+                ", hospitalId=" + hospitalId +
+                ", checkId=" + checkId +
+                ", checkName=" + checkName +
+                ", checkTime=" + checkTime +
+                ", status=" + status +
+                ", checkType=" + checkType +
+                ", jobCreator=" + jobCreator +
+                ", jobCreatorName=" + jobCreatorName +
+                ", jobCreateTime=" + jobCreateTime +
+                ", jobType=" + jobType +
+                ", jobDistributor=" + jobDistributor +
+                ", jobDistributionName=" + jobDistributionName +
+                ", jobDistributionTime=" + jobDistributionTime +
+                "}";
     }
 }

+ 77 - 0
src/main/java/com/diagbot/entity/MedIndexRelevance.java

@@ -0,0 +1,77 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-04-30
+ */
+@Data
+public class MedIndexRelevance implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 主缓存表id
+     */
+    private Integer indexResultId;
+
+    /**
+     * 病历条目关联表type
+     */
+    private Integer relevanceType;
+
+    /**
+     * 医院ID
+     */
+    private String hospitalId;
+
+    /**
+     * 病人病历号
+     */
+    private String behospitalCode;
+
+    private String startDate;
+
+    private String endDate;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+
+}

+ 144 - 0
src/main/java/com/diagbot/entity/MedIndexResult.java

@@ -0,0 +1,144 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-26
+ */
+@Data
+public class MedIndexResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 医院id
+     */
+    private String hospitalId;
+
+    /**
+     * 入院记录24小时内完成率--分母
+     */
+    private Double admissionResult;
+
+    /**
+     * 手术记录24小时内完成率--分母
+     */
+    private Double operationResult;
+
+    /**
+     * 出院记录24小时内完成率--分母
+     */
+    private Double leaveHospitalResult;
+
+    /**
+     * 病案首页24小时内完成率--分母
+     */
+    private Double medHomeResult;
+
+    /**
+     * CT检查记录符合率--分母
+     */
+    private Double ctResult;
+
+    /**
+     * MRI检查记录符合率--分母
+     */
+    private Double mriResult;
+
+    /**
+     * 病理检查记录符合率--分母
+     */
+    private Double pathologyResult;
+
+    /**
+     * 细菌培养检查记录符合率--分母
+     */
+    private Double germResult;
+
+    /**
+     * 抗菌药物使用记录符合率--分母
+     */
+    private Double antibiosisResult;
+
+    /**
+     * 恶性肿瘤化学治疗记录符合率--分母
+     */
+    private Double tumorChemistryResult;
+
+    /**
+     * 恶性肿瘤放射治疗记录符合率--分母
+     */
+    private Double tumorRadiationResult;
+
+    /**
+     * 手术相关记录完成率--分母
+     */
+    private Double operationCompleteResult;
+
+    /**
+     * 植入物相关记录符合率--分母
+     */
+    private Double implantsResult;
+
+    /**
+     * 临床用血相关记录符合率--分母
+     */
+    private Double bloodResult;
+
+    /**
+     * 患者抢救记录及时完成率--分母
+     */
+    private Double rescueResult;
+
+    /**
+     * 出院患者病历2日归档率--分子
+     */
+    private Double secFileResult;
+
+    /**
+     * 出院患者病历归档完整率--分子
+     */
+    private Double fileCompleteResult;
+
+    private String startDate;
+
+    private String endDate;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+}

+ 79 - 0
src/main/java/com/diagbot/entity/MedManagementInfo.java

@@ -0,0 +1,79 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 病案管理人员统计表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-04-13
+ */
+@Data
+public class MedManagementInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     *   1:住院病案管理人员 2:病案编码人员 3:门诊病案管理人员
+     */
+    private String positionId;
+
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDateTime startDate;
+
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDateTime endDate;
+
+    /**
+     * 单位时间内管理人员总人数
+     */
+    private Double workPerson;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+}

+ 260 - 0
src/main/java/com/diagbot/entity/MedQcresultDetail.java

@@ -0,0 +1,260 @@
+package com.diagbot.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 质控评分明细信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public class MedQcresultDetail implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+    /**
+     * 模块id
+     */
+    private Long casesId;
+
+    /**
+     * 模块总分
+     */
+    private BigDecimal casesScore;
+
+    /**
+     * 条目ID
+     */
+    private Long casesEntryId;
+
+    /**
+     * 人工修改分值
+     */
+    private BigDecimal score;
+
+    /**
+     * 提示信息
+     */
+    private String msg;
+
+    /**
+     * 质控返回提示信息
+     */
+    private String info;
+
+    /**
+     * 单项否决(1-单项否决 0-非)
+     */
+    private Integer isReject;
+
+    /**
+     * 初始类型(1:机器,2:人工)
+     */
+    private Integer gradeType;
+
+    /**
+     * 操作类型(1:新增,2:删除,3:修改)
+     */
+    private Integer optType;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public String getBehospitalCode() {
+        return behospitalCode;
+    }
+
+    public void setBehospitalCode(String behospitalCode) {
+        this.behospitalCode = behospitalCode;
+    }
+    public Long getCasesId() {
+        return casesId;
+    }
+
+    public void setCasesId(Long casesId) {
+        this.casesId = casesId;
+    }
+    public BigDecimal getCasesScore() {
+        return casesScore;
+    }
+
+    public void setCasesScore(BigDecimal casesScore) {
+        this.casesScore = casesScore;
+    }
+    public Long getCasesEntryId() {
+        return casesEntryId;
+    }
+
+    public void setCasesEntryId(Long casesEntryId) {
+        this.casesEntryId = casesEntryId;
+    }
+    public BigDecimal getScore() {
+        return score;
+    }
+
+    public void setScore(BigDecimal score) {
+        this.score = score;
+    }
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+    public String getInfo() {
+        return info;
+    }
+
+    public void setInfo(String info) {
+        this.info = info;
+    }
+    public Integer getIsReject() {
+        return isReject;
+    }
+
+    public void setIsReject(Integer isReject) {
+        this.isReject = isReject;
+    }
+    public Integer getGradeType() {
+        return gradeType;
+    }
+
+    public void setGradeType(Integer gradeType) {
+        this.gradeType = gradeType;
+    }
+    public Integer getOptType() {
+        return optType;
+    }
+
+    public void setOptType(Integer optType) {
+        this.optType = optType;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "MedQcresultDetail{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", behospitalCode=" + behospitalCode +
+            ", casesId=" + casesId +
+            ", casesScore=" + casesScore +
+            ", casesEntryId=" + casesEntryId +
+            ", score=" + score +
+            ", msg=" + msg +
+            ", info=" + info +
+            ", isReject=" + isReject +
+            ", gradeType=" + gradeType +
+            ", optType=" + optType +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 221 - 0
src/main/java/com/diagbot/entity/MedQcresultInfo.java

@@ -0,0 +1,221 @@
+package com.diagbot.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 质控评分主表信息
+每次评分增加一条信息,前面所有评分is_deleted全部设置为Y
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-03-26
+ */
+public class MedQcresultInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+    /**
+     * 等级
+     */
+    private String level;
+
+    /**
+     * 页面数据
+     */
+    private String pageData;
+
+    /**
+     * 菜单数据
+     */
+    private String menuData;
+
+    /**
+     * 评分类型(1:机器,2:人工)
+     */
+    private Integer gradeType;
+
+    /**
+     * 最后得分
+     */
+    private BigDecimal scoreRes;
+
+    /**
+     * 是否有病案首页(0:无,1:有)
+     */
+    private Integer haveHomePage;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public String getBehospitalCode() {
+        return behospitalCode;
+    }
+
+    public void setBehospitalCode(String behospitalCode) {
+        this.behospitalCode = behospitalCode;
+    }
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+    public String getPageData() {
+        return pageData;
+    }
+
+    public void setPageData(String pageData) {
+        this.pageData = pageData;
+    }
+    public String getMenuData() {
+        return menuData;
+    }
+
+    public void setMenuData(String menuData) {
+        this.menuData = menuData;
+    }
+    public Integer getGradeType() {
+        return gradeType;
+    }
+
+    public void setGradeType(Integer gradeType) {
+        this.gradeType = gradeType;
+    }
+    public BigDecimal getScoreRes() {
+        return scoreRes;
+    }
+
+    public void setScoreRes(BigDecimal scoreRes) {
+        this.scoreRes = scoreRes;
+    }
+    public Integer getHaveHomePage() {
+        return haveHomePage;
+    }
+
+    public void setHaveHomePage(Integer haveHomePage) {
+        this.haveHomePage = haveHomePage;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "MedQcresultInfo{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", behospitalCode=" + behospitalCode +
+            ", level=" + level +
+            ", pageData=" + pageData +
+            ", menuData=" + menuData +
+            ", gradeType=" + gradeType +
+            ", scoreRes=" + scoreRes +
+            ", haveHomePage=" + haveHomePage +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 54 - 0
src/main/java/com/diagbot/entity/QcCasesRelevanceEntry.java

@@ -0,0 +1,54 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 质控关联条目表
+ * </p>
+ *
+ * @author cy
+ * @since 2021-04-16
+ */
+@Data
+public class QcCasesRelevanceEntry implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 指标编号
+     */
+    private Integer type;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 指标名称
+     */
+    private String casesName;
+
+    /**
+     * 关联质控条目
+     */
+    private Long relevanceId;
+
+    /**
+     * 条目
+     */
+    private String name;
+
+    private String isDeleted;
+}

+ 53 - 22
src/main/java/com/diagbot/entity/QcType.java

@@ -29,20 +29,35 @@ public class QcType implements Serializable {
      */
     private Long hospitalId;
 
+    /**
+     * 质控类型名称
+     */
+    private String name;
+
+    /**
+     * 默认模版是否开启(0-否 1-是)
+     */
+    private Integer defaultModule;
+
+    /**
+     * 父类质控id
+     */
+    private String parentTypeId;
+
     /**
      * 性别
      */
     private String sex;
 
     /**
-     * 质控类型名称
+     * 科室ID
      */
-    private String name;
+    private String behDeptId;
 
     /**
-     * 默认模版是否开启(0-否 1-是)
+     * 科室名称
      */
-    private Long defaultModule;
+    private String behDeptName;
 
     /**
      * 备注
@@ -88,7 +103,27 @@ public class QcType implements Serializable {
     public void setHospitalId(Long hospitalId) {
         this.hospitalId = hospitalId;
     }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Integer getDefaultModule() {
+        return defaultModule;
+    }
 
+    public void setDefaultModule(Integer defaultModule) {
+        this.defaultModule = defaultModule;
+    }
+    public String getParentTypeId() {
+        return parentTypeId;
+    }
+
+    public void setParentTypeId(String parentTypeId) {
+        this.parentTypeId = parentTypeId;
+    }
     public String getSex() {
         return sex;
     }
@@ -96,15 +131,20 @@ public class QcType implements Serializable {
     public void setSex(String sex) {
         this.sex = sex;
     }
-
-    public String getName() {
-        return name;
+    public String getBehDeptId() {
+        return behDeptId;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public void setBehDeptId(String behDeptId) {
+        this.behDeptId = behDeptId;
+    }
+    public String getBehDeptName() {
+        return behDeptName;
     }
 
+    public void setBehDeptName(String behDeptName) {
+        this.behDeptName = behDeptName;
+    }
     public String getRemark() {
         return remark;
     }
@@ -112,7 +152,6 @@ public class QcType implements Serializable {
     public void setRemark(String remark) {
         this.remark = remark;
     }
-
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -120,7 +159,6 @@ public class QcType implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -128,7 +166,6 @@ public class QcType implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
-
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -136,7 +173,6 @@ public class QcType implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
-
     public String getCreator() {
         return creator;
     }
@@ -144,7 +180,6 @@ public class QcType implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
-
     public String getModifier() {
         return modifier;
     }
@@ -153,14 +188,6 @@ public class QcType implements Serializable {
         this.modifier = modifier;
     }
 
-    public Long getDefaultModule() {
-        return defaultModule;
-    }
-
-    public void setDefaultModule(Long defaultModule) {
-        this.defaultModule = defaultModule;
-    }
-
     @Override
     public String toString() {
         return "QcType{" +
@@ -168,6 +195,10 @@ public class QcType implements Serializable {
                 ", hospitalId=" + hospitalId +
                 ", name=" + name +
                 ", defaultModule=" + defaultModule +
+                ", parentTypeId=" + parentTypeId +
+                ", sex=" + sex +
+                ", behDeptId=" + behDeptId +
+                ", behDeptName=" + behDeptName +
                 ", remark=" + remark +
                 ", isDeleted=" + isDeleted +
                 ", gmtCreate=" + gmtCreate +

+ 4 - 0
src/main/java/com/diagbot/entity/QcresultDetail.java

@@ -111,4 +111,8 @@ public class QcresultDetail implements Serializable {
      * 备注
      */
     private String remark;
+    /**
+     * 质控条目说明
+     */
+    private String explainInfo;
 }

+ 167 - 0
src/main/java/com/diagbot/entity/StrInformedConsent.java

@@ -0,0 +1,167 @@
+package com.diagbot.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-01-04
+ */
+public class StrInformedConsent implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病历ID
+     */
+    private String recId;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病历标题
+     */
+    private String recTitle;
+
+    /**
+     * 文书内容(blob)
+     */
+    private String content;
+
+    /**
+     * 文书类别
+     */
+    private String recType;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    public String getRecId() {
+        return recId;
+    }
+
+    public void setRecId(String recId) {
+        this.recId = recId;
+    }
+    public String getBehospitalCode() {
+        return behospitalCode;
+    }
+
+    public void setBehospitalCode(String behospitalCode) {
+        this.behospitalCode = behospitalCode;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public String getRecTitle() {
+        return recTitle;
+    }
+
+    public void setRecTitle(String recTitle) {
+        this.recTitle = recTitle;
+    }
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+    public String getRecType() {
+        return recType;
+    }
+
+    public void setRecType(String recType) {
+        this.recType = recType;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+
+    @Override
+    public String toString() {
+        return "StrInformedConsent{" +
+            "recId=" + recId +
+            ", behospitalCode=" + behospitalCode +
+            ", hospitalId=" + hospitalId +
+            ", recTitle=" + recTitle +
+            ", content=" + content +
+            ", recType=" + recType +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+        "}";
+    }
+}

+ 167 - 0
src/main/java/com/diagbot/entity/StrTalkInform.java

@@ -0,0 +1,167 @@
+package com.diagbot.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-01-04
+ */
+public class StrTalkInform implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病历ID
+     */
+    private String recId;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病历标题
+     */
+    private String recTitle;
+
+    /**
+     * 文书内容(blob)
+     */
+    private String content;
+
+    /**
+     * 文书类别
+     */
+    private String recType;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    public String getRecId() {
+        return recId;
+    }
+
+    public void setRecId(String recId) {
+        this.recId = recId;
+    }
+    public String getBehospitalCode() {
+        return behospitalCode;
+    }
+
+    public void setBehospitalCode(String behospitalCode) {
+        this.behospitalCode = behospitalCode;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public String getRecTitle() {
+        return recTitle;
+    }
+
+    public void setRecTitle(String recTitle) {
+        this.recTitle = recTitle;
+    }
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+    public String getRecType() {
+        return recType;
+    }
+
+    public void setRecType(String recType) {
+        this.recType = recType;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+
+    @Override
+    public String toString() {
+        return "StrTalkInform{" +
+            "recId=" + recId +
+            ", behospitalCode=" + behospitalCode +
+            ", hospitalId=" + hospitalId +
+            ", recTitle=" + recTitle +
+            ", content=" + content +
+            ", recType=" + recType +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+        "}";
+    }
+}

+ 51 - 0
src/main/java/com/diagbot/enums/CheckJobTypeEnum.java

@@ -0,0 +1,51 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: 核查任务类型
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum CheckJobTypeEnum implements KeyedNamed {
+    DEPT_SUPERVISOR(0, "科室任务"),
+    QUAT_SUPERVISOR(1, "质控科任务"),
+    HOSP_SUPERVISOR(2, "院级任务");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    CheckJobTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static CheckJobTypeEnum getEnum(int key) {
+        for (CheckJobTypeEnum item : CheckJobTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        CheckJobTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 50 - 0
src/main/java/com/diagbot/enums/CheckStatusEnum.java

@@ -0,0 +1,50 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum CheckStatusEnum implements KeyedNamed {
+    Disable(0, "未核查"),
+    Enable(1, "已核查");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    CheckStatusEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static CheckStatusEnum getEnum(int key) {
+        for (CheckStatusEnum item : CheckStatusEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        CheckStatusEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 51 - 0
src/main/java/com/diagbot/enums/CheckTypeEnum.java

@@ -0,0 +1,51 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: 核查类型
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum CheckTypeEnum implements KeyedNamed {
+    COURSE(0, "病历"),
+    HOMEPAGE(1, "病案首页"),
+    ALL(2, "全部");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    CheckTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static CheckTypeEnum getEnum(int key) {
+        for (CheckTypeEnum item : CheckTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        CheckTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 54 - 0
src/main/java/com/diagbot/enums/CheckerRoleEnum.java

@@ -0,0 +1,54 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum CheckerRoleEnum implements KeyedNamed {
+    DEPT_SUPERVISOR(4, "临床科室监管人员"),
+    DEPT_GENERAL(7, "临床科室质控人员"),
+    QUAT_SUPERVISOR(5, "质控科监管人员"),
+    QUAT_GENERAL(8, "质控科质控人员"),
+    HOSP_SUPERVISOR(6, "院级监管人员"),
+    HOSP_GENERAL(9, "院级质控人员");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    CheckerRoleEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static CheckerRoleEnum getEnum(int key) {
+        for (CheckerRoleEnum item : CheckerRoleEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        CheckerRoleEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 172 - 0
src/main/java/com/diagbot/enums/QualityContent.java

@@ -0,0 +1,172 @@
+package com.diagbot.enums;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 新指标常用常量
+ */
+public class QualityContent {
+    public static final String recordNumber = "关联首页表质控病历人数";
+    public static final String NoRecordNumberId = "无病案首页病历ID";
+    public static final String DISCHARGED_PATIENTS = "出院人数";
+    public static final String NUMBER_OF_HOSPITAL = "入院人数";
+    public static final String NO_RECORD_OPERATION = "无病案首页手术患者";
+    public static final String NO_RECORD_OPERATION_PATHOLOGY = "无病案首页手术病理患者";
+    public static final double pathologyFee = 68.00;
+    /**
+     * 是否需要用到医嘱的指标名称
+     */
+    public static List<String> NO_MEDICAL_ADVICE = Arrays.asList("",
+            "入院记录24小时内完成率","出院记录24小时内完成率","病案首页24小时内完成率"
+    );
+    public static List<String> NEED_MEDICAL_ADVICE = Arrays.asList("",
+            "手术记录24小时内完成率","手术相关记录完成率","患者抢救记录及时完成率","临床用血相关记录符合率","CT检查记录符合率","MRI检查记录符合率","病理检查记录符合率","抗菌药物使用记录符合率","恶性肿瘤化学治疗记录符合率"
+    );
+    /**
+     * 关联首页无code需要去医嘱查询指标
+     */
+    public static List<String> NORecord_NEED_MEDICAL_ADVICE = Arrays.asList("",
+            "手术记录24小时内完成率","病理检查记录符合率","抗菌药物使用记录符合率"
+    );
+    /**
+     * 所有指标名称
+     */
+
+    public static final String QB = "";
+    public static final String ZYBA_CYHZ = "住院病案管理人员月均负担出院患者病历数";
+    public static final String BABM_CYHZ = "病案编码人员月均负担出院患者病历数";
+    public static final String MZBA_CYHZ = "门诊病案管理人员月均负担门诊患者病历数";
+    public static final String RYJL_24H_WCL = "入院记录24小时内完成率";
+    public static final String CYJL_24H_WCL = "出院记录24小时内完成率";
+    public static final String BASY_24H_WCL = "病案首页24小时内完成率";
+    public static final String SSJL_24H_WCL = "手术记录24小时内完成率";
+    public static final String CT_JCJL_FHL = "CT检查记录符合率";
+    public static final String MR_JCJL_FHL = "MRI检查记录符合率";
+    public static final String BL_JCJL_FHL = "病理检查记录符合率";
+    public static final String XJPY_JCJL_FHL = "细菌培养检查记录符合率";
+    public static final String KJYW_SY_FHL = "抗菌药物使用记录符合率";
+    public static final String EXZL_HXZL_FHL = "恶性肿瘤化学治疗记录符合率";
+    public static final String EXZL_FSZL_FHL = "恶性肿瘤放射治疗记录符合率";
+    public static final String SS_XGJL_WCL = "手术相关记录完成率";
+    public static final String ZRW_XGJL_WCL = "植入物相关记录符合率";
+    public static final String LCYX_XGJL_WCL = "临床用血相关记录符合率";
+    public static final String YSCF_JL_WCL = "医师查房记录完成率";
+    public static final String HZQJ_JLJS_WCL = "患者抢救记录及时完成率";
+    public static final String CCHZ_2DAY_GDL = "出院患者病历2日归档率";
+    public static final String CCHZ_GD_WZL = "出院患者病历归档完整率";
+    public static final String BHL_FZ_FSL = "不合理复制病历发生率";
+    public static final String ZQTYS_GF_QSL = "知情同意书规范签署率";
+    public static final String JJBLL = "甲级病历率";
+    /**
+     * 触发规则指标
+     */
+    public static final String RYJLWWC_24H = "residentAdmitNote";
+    public static final String SSJLWCC_24H = "operationNote";
+    public static final String CYJLWWC_24H = "dischargeRecord";
+    public static final String BASYWWC_24H = "medicalRecord";
+    /**
+     * 医嘱类型
+     */
+    public static final String STANDING_ORDER = "长期医嘱";
+    public static final String STAT_ORDER = "临时医嘱";
+    /**
+     * 医嘱状态
+     */
+    public static final String EXECUTE_ORDER = "执行";
+    public static final String IN_USE = "在用";
+    public static final String CANCELLATION_ORDER = "作废";
+    /**
+     * 医嘱判断相关
+     */
+    public static final String STOP = "停";
+    public static final String LAST = "前一次";
+    public static final String COUNTERMAND = "取消";
+    public static final String PAUSE = "暂停";
+    public static final String BACTERIAL_CULTURE = "细菌培养";
+    /**
+     * 病理判断
+     */
+    public static String[][] BL_LIST = {{"病理"}};
+
+    /**
+     * 医嘱CT相关
+     */
+    public static String[][] CT_LIST = {{"CT"},{"X线"}};
+    public static String[][] CT_REGULATION = {{"ATCH"},{"TCT"},{"HCT"},{"OCT"},{"NCT"},{"LCT"},{"ACT"},{"取消"},{"暂停"}};
+
+    /**
+     * 医嘱手术相关
+     */
+    public static String[][] OPERATION_LIST={
+            {"手术"}
+    };
+    public static String[][] OPERATION_ARG={
+            {"非手术"},
+            {"手术室"},
+            {"手术","取消"},
+            {"暂停","手术"},
+            {"静脉穿刺置管术"},
+            {"停"},
+            {"前一次"},
+            {"特殊病人手术使用一次性卫生材料"},
+            {"人免疫缺陷病毒抗体检测免费"}
+    };
+
+
+    /**
+     * 医嘱MR相关
+     */
+    public static final String MR = "MR";
+    public static String[][] MR_LIST = {{"MR"},{"磁共振"}};
+    public static String[][] MR_REGULATION = {{"IMRT"},{"mrs评分"},{"取消"}};
+    /**
+     * 抗菌药物目录
+     */
+    public static List<String> Antimicrobial_Drug_List = Arrays.asList(
+            "呋喃妥因", "呋喃唑酮", "盐酸小檗碱", "大蒜素", "鱼腥草素钠", "磺胺嘧啶", "甲氧苄啶", "复方磺胺甲恶唑",
+            "磺胺嘧啶银", "磺胺嘧啶锌", "盐酸四环素", "盐酸土霉素", "盐酸多西环素", "盐酸米诺环素", "盐酸美他环素", "硫酸庆大霉素", "硫酸链霉素"
+    );
+    /**
+     * 化疗药物目录
+     */
+    public static List<String> Chemotherapy_Drug_List = Arrays.asList(
+            "注射用盐酸表柔比星", "注射用盐酸吡柔比星", "注射用环磷酰胺", "卡铂注射液", "注射用奥沙利铂", "注射用阿糖胞苷", "注射用盐酸吉西他滨", "注射用甲氨蝶呤",
+            "注射用盐酸伊立替康", "紫杉醇注射液", "注射用培美曲塞二钠", "高三尖杉酯碱注射液", "注射用硫酸长春地辛", "多西他赛注射液", "注射用曲普瑞林", "注射用盐酸博来霉素", "注射用地西他滨",
+            "盐酸伊立替康注射液", "注射用盐酸托泊替康", "注射用氟尿嘧啶", "注射用达卡巴嗪", "醋酸戈舍瑞林缓释植入剂", "顺铂注射液"
+    );
+
+    /**
+     * 抢救药物  维护修改
+     */
+
+    public static List<String> RESCUEDRUGLIST = Arrays.asList(
+            "尼可刹米","可拉明","盐酸洛贝林","山梗菜碱","肾上腺素","阿拉明", "重酒石酸间羟胺", "多巴胺", "利血平", "25%硫酸镁注射液", "垂体后叶素","注射用血凝酶", "阿托品","氯解磷定注射液","盐酸纳洛酮","异丙嗪", "非那更","地西泮", "安定","20%甘露醇");
+
+
+    /**
+     *   临床用血
+     */
+    public static List<String> BLOODLIST = Arrays.asList(
+            "交叉配血","血交叉");
+
+    /**
+     * 用于代码判断指标1、2、3执行路径
+     */
+    public static List<String> FOURSTR = Arrays.asList(
+            "住院病案管理人员月均负担出院患者病历数", "病案编码人员月均负担出院患者病历数", "门诊病案管理人员月均负担门诊患者病历数");
+
+    // 放疗药物目录
+    public static List<String> radiotherapyDrugList = Arrays.asList(
+            "艾迪注射液", "康艾注射液", "康莱特注射液", "鸦胆子油乳注射液", "榄香烯乳注射液", "香菇多糖", "胎盘多肽注射液", "甘露聚糖肽注射液",
+            "脾多肽注射液", "E巨和粒", "欣粒生", "特尔津", "日达仙注射剂", "益比奥", "特比澳", "胸腺五肽", "古拉定","天晴甘美", "易善复", "己糖神经节苷脂钠",
+            "核糖核酸II", "参芪扶正注射液", "甘露醇注射液", "兰索拉唑", "奥西康", "卡络磺钠注射液", "维生素K1注射液", "氨甲苯酸注射液", "酚磺乙胺注射液",
+            "盐酸甲氧氯普胺注", "甲磺酸托烷司琼注射液", "伊班膦酸钠注射液", "唑来膦酸", "盐酸氨溴索注射液","氨茶碱注射液", "孟鲁司特钠片", "阿托伐他汀钙片",
+            "阿卡波糖片", "盐酸二甲双胍片", "瑞格列奈片", "格列齐特片","拉米夫定片","耐信","益血生胶囊","地榆升白片", "鲨肝醇片", "复方皂矾丸", "加巴喷丁胶囊",
+            "塞来昔布胶囊", "氨酚曲马多片", "盐酸羟考酮缓释片","硫酸吗啡缓释片", "盐酸吗啡片","复方甲氧那明胶囊","醋酸甲地孕酮分散","枸橼酸托瑞米芬片","标准桃金娘油肠溶",
+            "甲氧氯普胺片","多潘立酮片"
+    );
+}
+
+
+

+ 36 - 0
src/main/java/com/diagbot/enums/TimeContent.java

@@ -0,0 +1,36 @@
+package com.diagbot.enums;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 新指标常用常量
+ */
+public class TimeContent {
+
+    public static List<String> HolidaysTimeList = Arrays.asList(
+            "2021-01-01", "2021-01-02", "2021-01-03",//元旦
+            "2021-02-11", "2021-02-12", "2021-02-13", "2021-02-14", "2021-02-15", "2021-02-16", "2021-02-17",//春节
+            "2021-04-03", "2021-04-04", "2021-04-05",//清明节
+            "2021-05-01",  "2021-05-02", "2021-05-03", "2021-05-04", "2021-05-05",//劳动节
+            "2021-06-12",  "2021-06-13", "2021-06-14",//端午节
+            "2021-09-19", "2021-09-20", "2021-09-21",//中秋节
+            "2021-10-01", "2021-10-02", "2021-10-03", "2021-10-04", "2021-10-05", "2021-10-06", "2021-10-07",//国庆节
+
+            "2021-01-09", "2021-01-10", "2021-01-16", "2021-01-17", "2021-01-23", "2021-01-24", "2021-01-30", "2021-01-31",//一月周末假日
+            "2021-02-06", "2021-02-21", "2021-02-27", "2021-02-28", //二月周末假日
+            "2021-03-06", "2021-03-07", "2021-03-13", "2021-03-14", "2021-03-20", "2021-03-21", "2021-03-27", "2021-03-28",//三月周末假日
+            "2021-04-10", "2021-04-11", "2021-04-17", "2021-04-18", "2021-04-24", //四月周末假日
+            "2021-05-09", "2021-05-15", "2021-05-16", "2021-05-22", "2021-05-23", "2021-05-29", "2021-05-30",//五月周末假日
+            "2021-06-05", "2021-06-06", "2021-06-19", "2021-06-20", "2021-06-26", "2021-06-27",//六月周末假日
+            "2021-07-03", "2021-07-04", "2021-07-10", "2021-07-11", "2021-07-17", "2021-07-18", "2021-07-24", "2021-07-25","2021-07-31",//七月周末假日
+            "2021-08-01", "2021-08-07", "2021-08-08", "2021-08-14", "2021-08-15", "2021-08-21", "2021-08-22", "2021-08-28", "2021-08-29",//八月周末假日
+            "2021-09-04", "2021-09-05", "2021-09-11", "2021-09-12", "2021-09-25",//九月周末假日
+            "2021-10-10", "2021-10-16", "2021-10-17", "2021-10-23", "2021-10-24", "2021-10-30", "2021-10-31", //十月周末假日
+            "2021-11-06", "2021-11-07", "2021-11-13", "2021-11-14", "2021-11-20", "2021-11-21", "2021-11-27", "2021-11-28",//十一月周末假日
+            "2021-12-04", "2021-12-06", "2021-12-11", "2021-12-12", "2021-12-18", "2021-12-19", "2021-12-25", "2021-12-26" //十二周末假日
+    );
+}
+
+
+

+ 3 - 0
src/main/java/com/diagbot/exception/CommonExceptionHandler.java

@@ -73,6 +73,9 @@ public class CommonExceptionHandler {
         }
         resp.code = CommonErrorCode.FAIL.getCode();
         resp.msg = e.getMessage();
+        if (resp.msg == null) {
+            resp.msg = "操作异常,请联系管理员!!!";
+        }
         log.error("【系统异常】:{}", e.getMessage());
         e.printStackTrace();
         return new ResponseEntity(resp, HttpStatus.OK);

+ 45 - 3
src/main/java/com/diagbot/facade/AlgorithmFacade.java

@@ -1,6 +1,8 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.AlgorithmDTO;
+import com.diagbot.entity.QcresultDetail;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.BeanUtil;
@@ -28,10 +30,12 @@ import java.util.Map;
  */
 @Component
 public class AlgorithmFacade {
-    private final static List<Integer> types = Arrays.asList(0, 1, 2, 3);
+    private final static List<Integer> types = Arrays.asList(0, 1, 2, 3,4);
 
     @Autowired
     private SysHospitalSetFacade sysHospitalSetFacade;
+    @Autowired
+    private QcresultDetailFacade qcresultDetailFacade;
 
     /**
      * 获取评分结果和等级
@@ -193,10 +197,14 @@ public class AlgorithmFacade {
                 }
                 qcResultAlgVOList.add(algorithmVO.getOptResultAlgVO());
             }
-
+            if(ListUtil.isEmpty(qcResultAlgVOList)){
+                qcResultAlgVOList = new ArrayList<>();
+                qcResultAlgVOList.add(algorithmVO.getOptResultAlgVO());
+                algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+            }
         }
         //删除
-        else if (algorithmVO.getType().equals(2)) {
+        else if (algorithmVO.getType().equals(2)||(algorithmVO.getType().equals(4)&&0==algorithmVO.getDelStatus())) {
             if (null == algorithmVO.getOptResultAlgVO()) {
                 throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "删除操作条目不能为空!");
             }
@@ -216,6 +224,40 @@ public class AlgorithmFacade {
                 }
             }
         }
+        //恢复
+        else if (algorithmVO.getType().equals(4)&&1==algorithmVO.getDelStatus()) {
+            if (null == algorithmVO.getOptResultAlgVO()) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "恢复操作条目不能为空!");
+            }
+            //操作数据
+            Boolean hasData = false;
+            Long optId = algorithmVO.getOptResultAlgVO().getId(); // 操作id
+            QcresultDetail qcresultDetail = qcresultDetailFacade.getOne(new QueryWrapper<QcresultDetail>()
+                    .eq("id",optId));
+            if(qcresultDetail!=null)
+            {
+                QcResultAlgVO qcResultAlgVO = new QcResultAlgVO();
+                qcResultAlgVO.setScore(qcresultDetail.getScore());
+                qcResultAlgVO.setId(qcresultDetail.getId());
+                qcResultAlgVO.setCasesEntryId(qcresultDetail.getCasesEntryId());
+                qcResultAlgVO.setCasesId(qcresultDetail.getCasesId());
+                qcResultAlgVO.setMsg(qcresultDetail.getMsg());
+                qcResultAlgVO.setIsReject(qcresultDetail.getIsReject());
+                qcResultAlgVO.setCasesScore(qcresultDetail.getCasesScore());
+                if (ListUtil.isNotEmpty(qcResultAlgVOList)) {
+                    qcResultAlgVOList.add(qcResultAlgVO);
+                }else{
+                    qcResultAlgVOList = new ArrayList<>();
+                    qcResultAlgVOList.add(qcResultAlgVO);
+                    algorithmVO.setQcResultAlgVOList(qcResultAlgVOList);
+                }
+                hasData = true;
+            }
+                if (!hasData) {
+                    throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "恢复的条目不存在!");
+                }
+        }
+
         //修改
         else if (algorithmVO.getType().equals(3)) {
             if (null == algorithmVO.getOptResultAlgVO()) {

+ 87 - 12
src/main/java/com/diagbot/facade/BasDoctorInfoFacade.java

@@ -1,21 +1,96 @@
 package com.diagbot.facade;
 
-import java.util.List;
-
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.*;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.BasDoctorInfoServiceImpl;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.data.BasDoctorInfoVO;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import com.diagbot.entity.BasDoctorInfo;
-import com.diagbot.service.impl.BasDoctorInfoServiceImpl;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2020/12/24 14:38
+ */
 @Component
 public class BasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
-	
-	@Autowired
-	private BasDoctorInfoServiceImpl basDoctorInfoServiceImpl;
-	
-	@Autowired
-	private DataFacade dataFacade;
-	
-	
+    @Autowired
+    SysUserDeptFacade sysUserDeptFacade;
+    @Autowired
+    BasDeptInfoFacade basDeptInfoFacade;
+    @Autowired
+    BehospitalInfoFacade behospitalInfoFacade;
+
+    /**
+     * 获取医院医生下拉列表信息
+     *
+     * @param basDoctorInfoVO
+     * @return 医院医生下拉列表信息
+     */
+    public List<BasDoctorInfo> getDoctorByDept(BasDoctorInfoVO basDoctorInfoVO) {
+            basDoctorInfoVO.setHospitalId(Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+            basDoctorInfoVO.setUserId(Long.valueOf( SysUserUtils.getCurrentPrincipleID()));
+            QueryWrapper<SysUserDept> userDeptWrapper = new QueryWrapper<>();
+            List<BehospitalInfo> list = new ArrayList<>();
+            List<BasDoctorInfo> doctorData = new ArrayList<>();
+                    userDeptWrapper.eq("hospital_id",basDoctorInfoVO.getHospitalId());
+            userDeptWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+            userDeptWrapper.eq("user_id",basDoctorInfoVO.getUserId());
+            List<SysUserDept> UserDeptlist = sysUserDeptFacade.list(userDeptWrapper);
+            Set<String> deptSet = new HashSet<String>();
+
+        if(ListUtil.isNotEmpty(UserDeptlist)){
+                UserDeptlist.forEach(sysUserDept->{
+                    deptSet.add(sysUserDept.getDeptId());
+                });
+                QueryWrapper<BasDeptInfo> deptInfo = new QueryWrapper<>();
+                deptInfo.eq("hospital_id",basDoctorInfoVO.getHospitalId());
+                deptInfo.eq("is_deleted", IsDeleteEnum.N.getKey());
+                deptInfo.eq("dept_name",basDoctorInfoVO.getDeptName());
+                deptInfo.in("dept_id",deptSet);
+                List<BasDeptInfo> listInfo = basDeptInfoFacade.list(deptInfo);
+                Set<String> deptSetInfo = new HashSet<String>();
+                if(ListUtil.isNotEmpty(listInfo)){
+                    listInfo.forEach(basDeptInfo->{
+                        deptSetInfo.add(basDeptInfo.getDeptId());
+                    });
+                QueryWrapper<BehospitalInfo> QueryWrapper = new QueryWrapper<>();
+                QueryWrapper.eq("hospital_id",basDoctorInfoVO.getHospitalId());
+                QueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+                //QueryWrapper.eq("is_placefile", basDoctorInfoVO.getIsPlacefile());
+                QueryWrapper.in("beh_dept_id",deptSetInfo);
+
+                if(StringUtils.isNotEmpty(basDoctorInfoVO.getInputStr())){
+                    QueryWrapper.like("doctor_name",basDoctorInfoVO.getInputStr());
+                }
+                QueryWrapper.groupBy("doctor_name");
+                QueryWrapper.orderByAsc("doctor_name");
+                list = behospitalInfoFacade.list(QueryWrapper);
+                if(ListUtil.isNotEmpty(list)){
+                    list.forEach(behospitalInfo -> {
+                                if(behospitalInfo!= null && StringUtils.isNotEmpty(behospitalInfo.getDoctorName())){
+                                    BasDoctorInfo basDoctorInfo = new BasDoctorInfo();
+                                    basDoctorInfo.setHospitalId(behospitalInfo.getHospitalId());
+                                    basDoctorInfo.setDoctorId(behospitalInfo.getDoctorId());
+                                    basDoctorInfo.setName(behospitalInfo.getDoctorName());
+                                    doctorData.add(basDoctorInfo);
+                                }
+                            }
+                    );
+                }
+
+            }
+        }
+
+            return doctorData;
+    }
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 458 - 191
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java


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

@@ -0,0 +1,715 @@
+package com.diagbot.facade;
+
+import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.diagbot.dto.*;
+import com.diagbot.entity.SysHospitalSet;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.util.*;
+import com.diagbot.vo.*;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * @Description: 报表导出装饰层
+ * @author: gaodm
+ * @time: 2020/6/18 10:41
+ */
+@Component
+public class ConsoleByDeptExportFacade {
+
+    @Autowired
+    private ConsoleByDeptFacade consoleByDeptFacade;
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    private SysHospitalSetFacade sysHospitalSetFacade;
+    @Autowired
+    private FilterFacade filterFacade;
+    @Autowired
+    private QcresultInfoFacade qcresultInfoFacade;
+
+
+    /**
+     * 病案首页合格率占比
+     *
+     * @param filterOrderByDeptVO
+     * @return
+     */
+    public void homePageLevelExportByDept(HttpServletResponse response, FilterOrderByDeptVO filterOrderByDeptVO) {
+        List<HomePageByDeptDTO> res = consoleByDeptFacade.homePageLevelStatisticsByDept(filterOrderByDeptVO);
+        String fileName = "病案首页合格率占比.xls";
+        ExcelUtils.exportExcel(res, null, "sheet1", HomePageByDeptDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 病案首页不合格/合格数
+     *
+     * @param qcResultShortPageVO
+     * @return
+     */
+    public void homePageOrLevelExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
+        solveParam(qcResultShortPageVO);
+        qcResultShortPageVO.setCurrent(1L);
+        qcResultShortPageVO.setSize(Long.MAX_VALUE);
+        qcResultShortPageVO.setSearchCount(false);
+        List<ExportExcelByDeptDTO> records = behospitalInfoFacade.homePageOrLevelExportByDept(qcResultShortPageVO);
+        List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
+        if(ListUtil.isNotEmpty(records)){
+                ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+                exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+                exportByDeptDTO.setExportExcelByDeptDTOS(records);
+            resDTO.add(exportByDeptDTO);
+        }
+
+        List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            resWide = transList(records, resWide);
+        }
+        String fileName = null;
+        if("不合格数".equals(qcResultShortPageVO.getTitleName())){
+            fileName = "病案首页不合格数病历详情页.xls";
+        }else{
+            fileName = "病案首页合格数病历详情页.xls";
+        }
+        if("1".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
+        }
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
+        }
+   }
+
+    /**
+     * 缺陷详情-科室(分页)导出
+     *
+     * @param filterPageByDeptVO
+     * @return
+     */
+    public void entryGroupExportByDeptPage(HttpServletResponse response,FilterPageByDeptVO filterPageByDeptVO) {
+        filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
+        filterPageByDeptVO.setCurrent(1L);
+        filterPageByDeptVO.setSize(Long.MAX_VALUE);
+        filterPageByDeptVO.setSearchCount(false);
+        IPage<EntryNumGroupDTO> page = qcresultInfoFacade.entryCountGroupByEntryAndDeptPage(filterPageByDeptVO);
+        String fileName = "缺陷详情.xls";
+        ExcelUtils.exportExcel(page.getRecords(), null, "sheet1", EntryNumGroupDTO.class, fileName, response, 12.8f);
+    }
+
+
+    /**
+     *  各模块缺陷占比导出-科室
+     *
+     * @param filterPageByDeptVO
+     * @return
+     */
+    public void entryGroupExportByDeptCase(HttpServletResponse response,FilterPageByDeptVO filterPageByDeptVO) {
+        filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
+        filterPageByDeptVO.setCurrent(1L);
+        filterPageByDeptVO.setSize(Long.MAX_VALUE);
+        filterPageByDeptVO.setSearchCount(false);
+        IPage<NumDTO> page = qcresultInfoFacade.entryCountGroupByCaseAndDeptPage(filterPageByDeptVO);
+        String fileName = "各模块缺陷详情.xls";
+        ExcelUtils.exportExcel(page.getRecords(), null, "sheet1", NumDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     *  条目缺陷占比(内页)-科室
+     *
+     * @param filterPageByDeptVO
+     * @return
+     */
+    public void entryGroupByEntryDeptPage(HttpServletResponse response,FilterPageByDeptVO filterPageByDeptVO) {
+        filterFacade.filterPageByDeptVOSet(filterPageByDeptVO);
+        filterPageByDeptVO.setCurrent(1L);
+        filterPageByDeptVO.setSize(Long.MAX_VALUE);
+        filterPageByDeptVO.setSearchCount(false);
+        IPage<DeptEntryNumDTO> page = qcresultInfoFacade.entryGroupByEntryAndDeptInnerPage(filterPageByDeptVO);
+        String fileName = "条目缺陷占比详情.xls";
+        ExcelUtils.exportExcel(page.getRecords(), null, "sheet1", DeptEntryNumDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 缺陷详情质控评分页导出-科室
+     *
+     * @param qcResultShortPageVO
+     * @return
+     */
+    public void qcResultShortByDeptPageExport(HttpServletResponse response,QcResultShortPageVO qcResultShortPageVO) {
+        filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
+        nineTytime(qcResultShortPageVO);
+        qcResultShortPageVO.setCurrent(1L);
+        qcResultShortPageVO.setSize(Long.MAX_VALUE);
+        qcResultShortPageVO.setSearchCount(false);
+        List<ExportExcelByDeptDTO> records = behospitalInfoFacade.qcResultShortByDeptPageExport(qcResultShortPageVO);
+        //带缺陷
+        List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
+        if(ListUtil.isNotEmpty(records)){
+            ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+            exportByDeptDTO.setExportExcelByDeptDTOS(records);
+            resDTO.add(exportByDeptDTO);
+        }
+        String fileName = "缺陷详情质控评分.xls";
+        ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
+
+    }
+         public void nineTytime(QcResultShortPageVO qcResultShortPageVO){
+            Date startDate = qcResultShortPageVO.getStartDate();
+            Date endDate = qcResultShortPageVO.getEndDate();
+            //时间间隔90天
+            long interval = 90 * 24l * 60l * 60l * 1000l;
+            if (endDate.getTime() < startDate.getTime()) {
+                throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
+            }
+            if (endDate.getTime() - startDate.getTime() > interval) {
+                throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于90天");
+            }
+        };
+
+    /**
+     * 各科室缺陷占比-科室(组合)
+     *
+     * @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);
+    }
+    /**
+     * 出院人数统计导出-科室
+     *
+     * @param  qcResultShortPageVO
+     * @return
+     */
+    public void leaveHosMrPageExportByDept(HttpServletResponse response,QcResultShortPageVO qcResultShortPageVO) {
+        solveParam(qcResultShortPageVO);
+        qcResultShortPageVO.setCurrent(1L);
+        qcResultShortPageVO.setSize(Long.MAX_VALUE);
+        qcResultShortPageVO.setSearchCount(false);
+        List<ExportExcelByDeptDTO> records = behospitalInfoFacade.leaveHosMRPageExportByDept(qcResultShortPageVO);
+        List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
+        if(ListUtil.isNotEmpty(records)){
+            ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+            exportByDeptDTO.setExportExcelByDeptDTOS(records);
+            resDTO.add(exportByDeptDTO);
+        }
+
+        List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            resWide = transList(records, resWide);
+        }
+        String fileName = "出院人数统计.xls";
+        if("1".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
+        }
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
+        }
+    }
+    /**
+     * 质控核查统计导出-科室
+     *
+     * @param filterOrderVO
+     * @return
+     */
+    public void qcCheckStaExportByDept(HttpServletResponse response, FilterOrderVO filterOrderVO) {
+        List<ImproveByDeptDTO> record =consoleByDeptFacade.qcCheckStatisticsByDept(filterOrderVO);
+        ArrayList<ImproveExportByDeptDTO> records = new ArrayList<>();
+        ImproveExportByDeptDTO improveExportByDeptDTO = new ImproveExportByDeptDTO();
+        if(ListUtil.isNotEmpty(record)){
+            improveExportByDeptDTO.setDeptName(filterOrderVO.getDeptName());
+            improveExportByDeptDTO.setImproveByDeptDTOS(record);
+            records.add(improveExportByDeptDTO);
+        }
+
+        String fileName = "质控核查统计.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", ImproveExportByDeptDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 质控核查质控评分页-科室 导出
+     *
+     * @param qcResultShortPageVO
+     * @return
+     */
+    public void qcCheckMRPageExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
+        solveParam(qcResultShortPageVO);
+        qcResultShortPageVO.setCurrent(1L);
+        qcResultShortPageVO.setSize(Long.MAX_VALUE);
+        qcResultShortPageVO.setSearchCount(false);
+        List<ExportExcelByDeptDTO> records = behospitalInfoFacade.qcCheckMRPageExportByDept(qcResultShortPageVO);
+        List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
+        if(ListUtil.isNotEmpty(records)){
+            ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+            exportByDeptDTO.setExportExcelByDeptDTOS(records);
+            resDTO.add(exportByDeptDTO);
+        }
+
+        List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            resWide = transList(records, resWide);
+        }
+        String fileName = "质控核查质控评分详情.xls";
+        if("1".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
+        }
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
+        }
+    }
+
+
+    /**
+     * 病案首页改善率质控评分页导出-科室
+     *
+     * @param qcResultShortPageVO
+     * @return
+     */
+    public void improveMRExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
+        solveParam(qcResultShortPageVO);
+        qcResultShortPageVO.setCurrent(1L);
+        qcResultShortPageVO.setSize(Long.MAX_VALUE);
+        qcResultShortPageVO.setSearchCount(false);
+        List<ExportExcelByDeptDTO> records = behospitalInfoFacade.improveMRExportByDept(qcResultShortPageVO);
+        List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
+        if(ListUtil.isNotEmpty(records)){
+            ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+            exportByDeptDTO.setExportExcelByDeptDTOS(records);
+            resDTO.add(exportByDeptDTO);
+        }
+
+        List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            resWide = transList(records, resWide);
+        }
+        String fileName = "病案首页改善率质控评分详情.xls";
+        if("1".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
+        }
+        if("2".equals(qcResultShortPageVO.getRadioCheck())){
+            ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
+        }
+    }
+
+    /**
+     * 31天再入院统计导出-科室
+     *
+     * @param reBeHosPageVO
+     * @return
+     */
+    public void reHos31DaysPageExportByDept(HttpServletResponse response, ReBeHosPageVO reBeHosPageVO) {
+        reBeHosPageVO.setSearchCount(false);
+        reBeHosPageVO.setFlag(1);
+        IPage<ReBeHosByDeptDTO> page = consoleByDeptFacade.reHos31DaysPageByDept(reBeHosPageVO);
+        List<ReBeHosByDeptDTO> records = page.getRecords();
+        String fileName = "31天再入院统计详情.xls";
+        ExcelUtils.exportExcel(records, null, "sheet1", ReBeHosByDeptDTO.class, fileName, response);
+    }
+    /**
+     * 未整改病历详情页导出-科室
+     *
+     * @param qcResultShortPageVO
+     * @return
+     */
+    public void unModifyExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
+        solveParam(qcResultShortPageVO);
+        qcResultShortPageVO.setCurrent(1L);
+        qcResultShortPageVO.setSize(Long.MAX_VALUE);
+        qcResultShortPageVO.setSearchCount(false);
+        List<ExportExcelByDeptDTO> records = behospitalInfoFacade.unModifyExportByDept(qcResultShortPageVO);
+        String fileName = "未整改病历详情页.xls";
+        ExcelUtils.exportExcelUser(records, null, "sheet1", ExportExcelByDeptDTO.class, fileName, response);
+    }
+
+    /**
+     * 稽查统计导出-科室
+     *
+     * @param filterVO
+     * @return
+     */
+    public void medicalCheckExportByDept(HttpServletResponse response, FilterMedicalCheckVO filterVO) {
+        filterVO.setCurrent(1L);
+        filterVO.setSize(Long.MAX_VALUE);
+        filterVO.setSearchCount(false);
+        String fileName = null;
+        if ( "1".equals(filterVO.getIsPlacefile())) {
+            fileName = "终末病历稽查表.xls";
+        } else {
+            fileName = "运行病历稽查表.xls";
+        }
+        List<MedicalDeptDTO> records = consoleByDeptFacade.medicalCheckExportByDept(filterVO);
+        ExcelUtils.exportExcel(records, null, "sheet1", MedicalDeptDTO.class, fileName, response, 15.8f);
+    }
+
+    /**
+     * 病历质控报表-科室-导出
+     *
+     * @param behospitalPageVO
+     * @return
+     */
+    public void qualityControlExportByDept(HttpServletResponse response, BehospitalPageVO behospitalPageVO) {
+        behospitalPageVO.setCurrent(1L);
+        behospitalPageVO.setSize(Long.MAX_VALUE);
+        behospitalPageVO.setSearchCount(false);
+        Date startDate = behospitalPageVO.getLeaveHosDateStart();
+        Date endDate = behospitalPageVO.getLeaveHosDateEnd();
+      //  orderMethod(behospitalPageVO);
+        //时间间隔30天
+        long interval = 30 * 24l * 60l * 60l * 1000l;
+        if (endDate.getTime() < startDate.getTime()) {
+            throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
+        }
+        if (endDate.getTime() - startDate.getTime() > interval) {
+            throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于30天");
+        }
+        String  fileName = "病历质控报表.xls";
+        IPage<QualityControlDeptDTO> records = consoleByDeptFacade.qualityControlByDept(behospitalPageVO);
+        ExcelUtils.exportExcel(records.getRecords(), "病历质控报表", "sheet1", QualityControlDeptDTO.class, fileName, response, 26.8f);
+    }
+
+    static void orderMethod(BehospitalPageVO behospitalPageVO){
+        List orders = behospitalPageVO.getOrders();
+        Boolean flag = false;
+        List<OrderItem> itemList = new ArrayList<>();
+        List<OrderItem> targetItemList = new ArrayList<>();
+        for (Object order : orders) {
+            ObjectMapper objectMapper = new ObjectMapper();
+            OrderItem orderName = objectMapper.convertValue(order, OrderItem.class);
+            itemList.add(orderName);
+            if(!(orderName.getColumn().equals("deptName")||orderName.getColumn().equals("doctorName"))){
+                flag = true;
+            }
+        }
+        //科室、医生作为第一升序排列,传入排序随后 配合excel注解属性mergeVertical处理科室合并
+            OrderItem orderDept = new OrderItem();
+            orderDept.setAsc(true);
+            orderDept.setColumn("deptName");
+            targetItemList.add(orderDept);
+            OrderItem orderDoctor = new OrderItem();
+            orderDoctor.setAsc(true);
+            orderDoctor.setColumn("doctorName");
+            targetItemList.add(orderDoctor);
+        if(flag){
+            if(itemList.size()==1){
+                targetItemList.add(itemList.get(0));
+            }
+        }
+        behospitalPageVO.setOrders(targetItemList);
+
+    };
+
+
+
+    /**
+     * 未整改病历统计导出-科室
+     *
+     * @param response
+     * @param filterUnModifyMRVO
+     */
+    public void unModifyMRSExportByDept(HttpServletResponse response, FilterUnModifyMRVO filterUnModifyMRVO) {
+        filterFacade.filterUnModifyMRVOSet(filterUnModifyMRVO);
+        List<ExcelExportEntity> colList = Lists.newLinkedList();
+        ExcelExportEntity deptNameCol = new ExcelExportEntity("主管医生", "doctorName");
+        deptNameCol.setWidth(50);
+        colList.add(deptNameCol);
+
+        QueryWrapper<SysHospitalSet> hospitalSetQueryWrapper = new QueryWrapper<>();
+        hospitalSetQueryWrapper.eq("is_deleted", 'N')
+                .eq("hospital_id", filterUnModifyMRVO.getHospitalId())
+                .eq("code", "unmodify_mr_entry");
+        SysHospitalSet hospitalSet = sysHospitalSetFacade.getOne(hospitalSetQueryWrapper);
+        //缺陷条目未维护
+        if (hospitalSet == null || StringUtil.isBlank(hospitalSet.getValue())) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "未整改病历条目未设置");
+        }
+
+        List<String> columnSet = Arrays.asList(hospitalSet.getValue().split(","));
+        for (String valueStr : columnSet) {
+            if (StringUtil.isBlank(valueStr)) {
+                continue;
+            }
+            String[] keyValue = valueStr.split("--");
+            if (keyValue != null || keyValue.length > 1) {
+                ExcelExportEntity entryCol = new ExcelExportEntity(keyValue[1], "entry_" + keyValue[0] + "_num");
+                entryCol.setWidth(20);
+                colList.add(entryCol);
+            }
+        }
+        UnModifyMRDTO unModifyMRDTO = consoleByDeptFacade.unModifyMRSByDept(filterUnModifyMRVO);
+        List<Object> data = Lists.newLinkedList();
+        if (unModifyMRDTO != null && ListUtil.isNotEmpty(unModifyMRDTO.getData())) {
+            data = unModifyMRDTO.getData();
+        }
+        String fileName = "未整改病历统计.xls";
+        ExcelUtils.exportExcelDynamicCol(colList, data, null, "sheet1", fileName, response);
+    }
+
+
+
+    public void solveParam(QcResultShortPageVO qcResultShortPageVO){
+       String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+       qcResultShortPageVO.setHospitalId(hospitalId);
+        qcResultShortPageVO.setUserId(Long.valueOf(userId));
+       Date startDate = qcResultShortPageVO.getStartDate();
+       Date endDate = qcResultShortPageVO.getEndDate();
+       //时间间隔7天
+       long interval_7 = 7 * 24 * 60 * 60 * 1000;
+       long interval_90 = 90 * 24 * 60 * 60 * 1000l;
+
+       if("1".equals(qcResultShortPageVO.getRadioCheck())){
+           //时间间隔7天
+           if (endDate.getTime() < startDate.getTime()) {
+               throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
+           }
+           if (endDate.getTime() - startDate.getTime() > interval_7) {
+               throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于7天");
+           }
+       }else{
+           //时间间隔90天
+           if (endDate.getTime() < startDate.getTime()) {
+               throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
+           }
+           if (endDate.getTime() - startDate.getTime() > interval_90) {
+               throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于90天");
+           }
+       }
+   }
+
+    public List<ExportNinetyByDeptDTO> transList(List<ExportExcelByDeptDTO>res, List<ExportNinetyByDeptDTO>resWide){
+        if(ListUtil.isNotEmpty(res)){
+            ExportNinetyByDeptDTO exportNinetyByDeptDTO = new ExportNinetyByDeptDTO();
+            List<ExportWideExcelByDeptDTO>exportWideExcelByDeptDTOs  =  new ArrayList<ExportWideExcelByDeptDTO>();
+            res.forEach(exportExcelByDeptDTO->{
+                ExportWideExcelByDeptDTO exportWideExcelByDeptDTO = new ExportWideExcelByDeptDTO();
+                exportWideExcelByDeptDTO.setAvgScore(exportExcelByDeptDTO.getAvgScore());
+                exportNinetyByDeptDTO.setBehDeptName( exportExcelByDeptDTO.getBehDeptName());
+                exportWideExcelByDeptDTO.setDoctorName(exportExcelByDeptDTO.getDoctorName());
+                List<ExportExcelBehByDeptDTO> exportExcelBehByDeptDTOS = exportExcelByDeptDTO.getExcelBehospitalDTOS();
+                List<ExportExcelWideBehByDeptDTO> exportExcelWideBehByDepDTOs = new ArrayList<>();
+
+                exportExcelBehByDeptDTOS.forEach(exportExcelBehByDeptDTO->{
+                    ExportExcelWideBehByDeptDTO exportExcelWideBehByDeptDTO = new ExportExcelWideBehByDeptDTO();
+                    exportExcelWideBehByDeptDTO.setBehospitalCode(exportExcelBehByDeptDTO.getBehospitalCode());
+                    exportExcelWideBehByDeptDTO.setBehospitalDate(exportExcelBehByDeptDTO.getBehospitalDate());
+                    exportExcelWideBehByDeptDTO.setLeaveHospitalDate(exportExcelBehByDeptDTO.getLeaveHospitalDate());
+                    exportExcelWideBehByDeptDTO.setPatName(exportExcelBehByDeptDTO.getPatName());
+                    exportExcelWideBehByDeptDTO.setScore(exportExcelBehByDeptDTO.getScore());
+                    exportExcelWideBehByDeptDTO.setScoreBn(exportExcelBehByDeptDTO.getScoreBn());
+                    exportExcelWideBehByDepDTOs.add(exportExcelWideBehByDeptDTO);
+                });
+                exportWideExcelByDeptDTO.setExcelBehospitalDTOS(exportExcelWideBehByDepDTOs);
+                exportWideExcelByDeptDTOs.add(exportWideExcelByDeptDTO);
+            });
+            exportNinetyByDeptDTO.setExportExcelByDeptDTOS(exportWideExcelByDeptDTOs);
+            resWide.add(exportNinetyByDeptDTO);
+        }
+        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;
+    }
+
+
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1131 - 69
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java


+ 73 - 18
src/main/java/com/diagbot/facade/ConsoleExportFacade.java

@@ -1,27 +1,25 @@
 package com.diagbot.facade;
 
 import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.diagbot.dto.*;
 import com.diagbot.entity.SysHospitalSet;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.ExcelUtils;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.SysUserUtils;
+import com.diagbot.util.*;
 import com.diagbot.vo.*;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.Lists;
+import com.google.gson.JsonObject;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * @Description: 报表导出装饰层
@@ -230,7 +228,7 @@ public class ConsoleExportFacade {
         Date startDate = qcResultShortPageVO.getStartDate();
         Date endDate = qcResultShortPageVO.getEndDate();
         //时间间隔90天
-        long interval = 90l * 24l * 60l * 60l * 1000l;
+        long interval = 90 * 24l * 60l * 60l * 1000l;
         if (endDate.getTime() < startDate.getTime()) {
             throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
         }
@@ -263,7 +261,7 @@ public class ConsoleExportFacade {
         Date endDate = qcResultShortPageVO.getEndDate();
         //时间间隔7天
         long interval_7 = 7 * 24 * 60 * 60 * 1000;
-        long interval_90 = 90l * 24 * 60 * 60 * 1000;
+        long interval_90 = 90 * 24 * 60 * 60 * 1000l;
 
         if("1".equals(qcResultShortPageVO.getRadioCheck())){
             //时间间隔7天
@@ -310,7 +308,7 @@ public class ConsoleExportFacade {
                 List<ExportExcelWideBehospitalDTO> exportExcelWideBehospitalDTOs = new ArrayList<>();
                 excelBehospitalDTOS.forEach(exportExcelBehospitalDTO->{
                     ExportExcelWideBehospitalDTO exportExcelWideBehospitalDTO = new ExportExcelWideBehospitalDTO();
-                    exportExcelWideBehospitalDTO.setBehDoctorName(exportExcelBehospitalDTO.getBehDoctorName());
+                    exportExcelWideBehospitalDTO.setDoctorName(exportExcelBehospitalDTO.getDoctorName());
                     exportExcelWideBehospitalDTO.setBehospitalCode(exportExcelBehospitalDTO.getBehospitalCode());
                     exportExcelWideBehospitalDTO.setBehospitalDate(exportExcelBehospitalDTO.getBehospitalDate());
                     exportExcelWideBehospitalDTO.setLeaveHospitalDate(exportExcelBehospitalDTO.getLeaveHospitalDate());
@@ -354,7 +352,7 @@ public class ConsoleExportFacade {
         Date startDate = qcResultShortPageVO.getStartDate();
         Date endDate = qcResultShortPageVO.getEndDate();
         //时间间隔7天
-        long interval = 90l * 24l * 60l * 60l * 1000l;
+        long interval = 90 * 24l * 60l * 60l * 1000l;
         if (endDate.getTime() < startDate.getTime()) {
             throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
         }
@@ -387,7 +385,7 @@ public class ConsoleExportFacade {
         Date endDate = qcResultShortPageVO.getEndDate();
         //时间间隔7天
         long interval_7 = 7 * 24 * 60 * 60 * 1000;
-        long interval_90 = 90l * 24 * 60 * 60 * 1000;
+        long interval_90 = 90 * 24 * 60 * 60 * 1000l;
 
         if("1".equals(qcResultShortPageVO.getRadioCheck())){
             //时间间隔7天
@@ -480,9 +478,8 @@ public class ConsoleExportFacade {
      * @return
      */
     public void reHos31DaysPageExport(HttpServletResponse response, ReBeHosPageVO reBeHosPageVO) {
-        reBeHosPageVO.setCurrent(1L);
-        reBeHosPageVO.setSize(Long.MAX_VALUE);
         reBeHosPageVO.setSearchCount(false);
+        reBeHosPageVO.setFlag(1);
         IPage<ReBeHosDTO> page = consoleFacade.reHos31DaysPage(reBeHosPageVO);
         List<ReBeHosDTO> records = page.getRecords();
         String fileName = "31天再入院统计详情.xls";
@@ -506,7 +503,7 @@ public class ConsoleExportFacade {
         Date endDate = qcResultShortPageVO.getEndDate();
         //时间间隔7天
         long interval_7 = 7 * 24 * 60 * 60 * 1000;
-        long interval_90 = 90l * 24 * 60 * 60 * 1000;
+        long interval_90 = 90 * 24 * 60 * 60 * 1000l;
 
         if("1".equals(qcResultShortPageVO.getRadioCheck())){
             //时间间隔7天
@@ -561,7 +558,7 @@ public class ConsoleExportFacade {
 
         //时间间隔7天
         long interval_7 = 7 * 24 * 60 * 60 * 1000;
-        long interval_90 = 90l * 24 * 60 * 60 * 1000;
+        long interval_90 = 90 * 24 * 60 * 60 * 1000l;
 
         if("1".equals(qcResultShortPageVO.getRadioCheck())){
             //时间间隔7天
@@ -597,4 +594,62 @@ public class ConsoleExportFacade {
             ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportWideExcelDTO.class, fileName, response);
         }
     }
+
+
+    /**
+     * 病历质控报表分页导出
+     *
+     * @param behospitalPageVO
+     * @return
+     */
+    public void qualityControlExport(HttpServletResponse response, BehospitalPageVO behospitalPageVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        behospitalPageVO.setHospitalId(Long.valueOf(hospitalId));
+
+    Date startDate = behospitalPageVO.getLeaveHosDateStart();
+    Date endDate = behospitalPageVO.getLeaveHosDateEnd();
+    //时间间隔30天
+    long interval = 30 * 24l * 60l * 60l * 1000l;
+        if (endDate.getTime() < startDate.getTime()) {
+        throw new CommonException(CommonErrorCode.PARAM_ERROR, "截止时间不能小于起始时间");
+    }
+        if (endDate.getTime() - startDate.getTime() > interval) {
+        throw new CommonException(CommonErrorCode.PARAM_ERROR, "统计区间不能大于30天");
+    }
+
+        behospitalPageVO.setCurrent(1L);
+        behospitalPageVO.setSize(Long.MAX_VALUE);
+        behospitalPageVO.setSearchCount(false);
+      //  orderMethod(behospitalPageVO);
+
+        IPage<QualityControlDTO> page = consoleFacade.getQualityControlExport(behospitalPageVO);
+        List<QualityControlDTO> records = page.getRecords();
+
+        String fileName = "病历质控报表详情页.xls";
+        ExcelUtils.exportExcel(records, "病历质控报表", "sheet1", QualityControlDTO.class, fileName, response, 26.8f);
+    }
+
+   static void orderMethod(BehospitalPageVO behospitalPageVO){
+       List orders = behospitalPageVO.getOrders();
+       Boolean flag= false;
+       List<OrderItem> itemList = new ArrayList<>();
+       for (Object order : orders) {
+           ObjectMapper objectMapper = new ObjectMapper();
+           OrderItem orderName = objectMapper.convertValue(order, OrderItem.class);
+           itemList.add(orderName);
+           if(!orderName.getColumn().equals("deptName")){
+               flag = true;
+           }
+       }
+       //科室作为第一升序排列,传入排序随后 配合excel注解属性mergeVertical处理科室合并
+       if(flag){
+           OrderItem orderItem = new OrderItem();
+           orderItem.setAsc(true);
+           orderItem.setColumn("deptName");
+           itemList.add(orderItem);
+           Collections.reverse(itemList);
+           behospitalPageVO.setOrders(itemList);
+       }
+
+   };
 }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 2156 - 157
src/main/java/com/diagbot/facade/ConsoleFacade.java


+ 65 - 0
src/main/java/com/diagbot/facade/DataEditFacade.java

@@ -0,0 +1,65 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.dto.StrAdmissionNoteDTO;
+import com.diagbot.entity.*;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.*;
+import com.diagbot.util.*;
+import com.diagbot.vo.DataEditVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:wangsy
+ * @time: 2021/08/14 11:37
+ */
+@Component
+public class DataEditFacade {
+
+    @Autowired
+    @Qualifier("strAdmissionNoteServiceImpl")
+    StrAdmissionNoteService strAdmissionNoteService;
+
+    /**
+     * 数据检索
+     */
+    public StrAdmissionNoteDTO dataSearch() {
+        Long hospitalId = Long.valueOf(SysUserUtils.getCurrentHospitalID());
+        StrAdmissionNote strAdmissionNote= strAdmissionNoteService.getBaseMapper().selectOne(new QueryWrapper<StrAdmissionNote>()
+                .eq("hospital_id", hospitalId)
+                .eq("remark", hospitalId + "N")
+                .select("rec_id", "whole_data"));
+        StrAdmissionNoteDTO strAdmissionNoteDTO = new StrAdmissionNoteDTO();
+        BeanUtil.copyProperties(strAdmissionNote,strAdmissionNoteDTO);
+        strAdmissionNoteDTO.setModeId("200");
+        return strAdmissionNoteDTO;
+    }
+
+
+
+    /**
+     * 更新数据
+     *
+     * @param dataEditVO
+     * @return
+     */
+    public Boolean saveDataEditFacade(DataEditVO dataEditVO) {
+        return strAdmissionNoteService.update(new UpdateWrapper<StrAdmissionNote>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", SysUserUtils.getCurrentHospitalID())
+                .eq("rec_id", dataEditVO.getRecId())
+                .set("whole_data", dataEditVO.getWholeData())
+                .set("gmt_modified", DateUtil.now())
+                .set("modifier", SysUserUtils.getCurrentPrincipleID())
+        );
+    }
+
+}

+ 16 - 0
src/main/java/com/diagbot/facade/DoctorAdviceFacade.java

@@ -2,14 +2,20 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.DoctorAdviceDTO;
+import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.DoctorAdviceServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.DoctorAdviceVO;
+import com.diagbot.vo.FilterVO;
 import org.springframework.stereotype.Component;
 
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description:
  * @author: zhoutg
@@ -39,4 +45,14 @@ public class DoctorAdviceFacade extends DoctorAdviceServiceImpl {
         }
         return this.getPage(doctorAdviceVO);
     }
+
+    /**
+     * 获取医嘱
+     * @param filterVO
+     * @return
+     */
+    public List<Map<String, String>> getDoctorAdviceNum(FilterVO filterVO){
+        return baseMapper.getDoctorAdviceNum(filterVO);
+
+    }
 }

+ 95 - 1
src/main/java/com/diagbot/facade/FilterFacade.java

@@ -7,11 +7,13 @@ import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
-
+import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Description:
@@ -209,6 +211,84 @@ public class FilterFacade {
         }*/
     }
 
+    /**
+     * 入参拼接
+     *
+     * @param filterVO
+     */
+    public void filterSet(FilterVO filterVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        filterVO.setHospitalId(hospitalId);
+        filterVO.setUserId(Long.valueOf(userId));
+        if (filterVO.getLimitCount() == null || filterVO.getLimitCount().equals(0)) {
+            filterVO.setLimitCount(10);
+        }
+        try {
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
+            SimpleDateFormat dateFormatSec = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            Date dateStart = dateFormat.parse(filterVO.getStartDate());
+            Date dateEnd = dateFormat.parse(filterVO.getEndDate());
+            filterVO.setStartDate(dateFormatSec.format(dateStart));
+            filterVO.setEndDate(dateFormatSec.format(dateEnd));
+        } catch (ParseException e) {
+
+        }
+
+    }
+
+
+    /**
+     * 入参拼接
+     *
+     * @param filterVO
+     */
+          List<String> getTimeList(FilterVO filterVO) {
+              DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+              // 返回的日期集合
+              List<String> days = new ArrayList<String>();
+              Date start =new Date();
+              Date end =new Date();
+              try {
+              if(StringUtils.isEmpty(filterVO.getHospitalId())){
+                  String hospitalId = SysUserUtils.getCurrentHospitalID();
+                  String userId = SysUserUtils.getCurrentPrincipleID();
+                  filterVO.setHospitalId(hospitalId);
+                  filterVO.setUserId(Long.valueOf(userId));
+                   start = dateFormat.parse(filterVO.getStartDate()+" 00:00:00");
+                   end = dateFormat.parse(filterVO.getEndDate()+" 00:00:00");
+              }else{
+                  //执行上一天的操作
+                  Date dNow = new Date(); //当前时间
+                  Date dBefore = new Date();
+                  Calendar calendar = Calendar.getInstance(); //得到日历
+                  calendar.setTime(dNow);//把当前时间赋给日历
+                  calendar.add(Calendar.DAY_OF_MONTH, -1); //设置为前一天
+                  dBefore = calendar.getTime(); //得到前一天的时间
+                  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式
+                  String defaultStartDate = sdf.format(dBefore); //格式化前一天
+                  filterVO.setStartDate(defaultStartDate);
+                  filterVO.setEndDate(defaultStartDate);
+                  defaultStartDate = defaultStartDate+" 00:00:00";
+                  String defaultEndDate = defaultStartDate;
+                   start = dateFormat.parse(defaultStartDate);
+                   end = dateFormat.parse(defaultEndDate);
+              }
+            Calendar tempStart = Calendar.getInstance();
+            tempStart.setTime(start);
+            Calendar tempEnd = Calendar.getInstance();
+            tempEnd.setTime(end);
+            tempEnd.add(Calendar.DATE, +1);
+            while (tempStart.before(tempEnd)) {
+                days.add(dateFormat.format(tempStart.getTime()));
+                tempStart.add(Calendar.DAY_OF_YEAR, 1);
+            }
+        } catch (ParseException e) {
+            throw new IllegalArgumentException("参数异常");
+        }
+        return days;
+    }
+
     /**
      * 分页入参拼接
      *
@@ -393,6 +473,18 @@ public class FilterFacade {
         /*long interval = qcResultShortPageVO.getEndDate().getTime() + 1000;
         qcResultShortPageVO.setEndDate(new Date(Long.valueOf(interval)));*/
     }
+    /**
+     * 合格/不合格数病历号入参拼接-科室
+     *
+     * @param qcResultPageVO
+     */
+    public void OrGoodLevelPageVOSet(QcResultPageVO qcResultPageVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        qcResultPageVO.setHospitalId(hospitalId);
+        qcResultPageVO.setUserId(Long.valueOf(userId));
+    }
+
 
     /**
      * 关键条目缺陷占比入参拼接
@@ -426,10 +518,12 @@ public class FilterFacade {
      * @param reBeHosPageVO
      */
     public void reBeHosPageVOSet(ReBeHosPageVO reBeHosPageVO) {
+        if(null == reBeHosPageVO.getUserId() && StringUtils.isEmpty(reBeHosPageVO.getHospitalId())){
         String hospitalId = SysUserUtils.getCurrentHospitalID();
         String userId = SysUserUtils.getCurrentPrincipleID();
         reBeHosPageVO.setHospitalId(hospitalId);
         reBeHosPageVO.setUserId(Long.valueOf(userId));
+        }
     }
 
     /**

+ 722 - 2
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java

@@ -2,21 +2,43 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.CheckDeptDTO;
+import com.diagbot.dto.CheckJobDTO;
+import com.diagbot.dto.CheckUserDTO;
+import com.diagbot.dto.DeptCheckUserDTO;
+import com.diagbot.entity.BasDeptInfo;
 import com.diagbot.entity.MedCheckInfo;
+import com.diagbot.entity.SysRole;
 import com.diagbot.entity.SysUser;
+import com.diagbot.entity.SysUserDept;
+import com.diagbot.entity.SysUserRole;
+import com.diagbot.enums.CheckJobTypeEnum;
+import com.diagbot.enums.CheckerRoleEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.MedCheckInfoServiceImpl;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.CheckJobPageVO;
+import com.diagbot.vo.CheckUserVO;
+import com.diagbot.vo.DistributionJobVO;
 import com.diagbot.vo.MedCheckInfoAddVO;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * @author wangfeng
@@ -28,6 +50,17 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
 
     @Autowired
     SysUserFacade sysUserFacade;
+    @Autowired
+    SysUserRoleFacade sysUserRoleFacade;
+    @Autowired
+    SysRoleFacade sysRoleFacade;
+    @Autowired
+    SysUserDeptFacade sysUserDeptFacade;
+    @Autowired
+    BasDoctorInfoFacade basDoctorInfoFacade;
+    @Autowired
+    BasDeptInfoFacade basDeptInfoFacade;
+
 
     /**
      * @param medCheckInfoAddVO
@@ -41,8 +74,8 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
         QueryWrapper<SysUser> userQuer = new QueryWrapper<>();
         userQuer.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("id",principleId)
-                .eq("status",1);
+                .eq("id", principleId)
+                .eq("status", 1);
         SysUser user = sysUserFacade.getOne(userQuer);
         String principleName = user.getLinkman();
         Map<String, Object> mapAll = new HashMap<String, Object>();
@@ -108,4 +141,691 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         }
         return res;
     }
+
+    /**
+     * @Author songxl
+     * @Description 获取操作用户的核查科室以及人员
+     * @Date 2021/5/14
+     * @Param []
+     * @Return java.util.Map<java.lang.String, java.util.List < com.diagbot.dto.CheckDeptDTO>>
+     * @MethodName getCheckUserMap
+     */
+    public IPage<CheckJobDTO> getUserCheckList(CheckJobPageVO checkJobVO) {
+        //校验
+        userCheckPageSet(checkJobVO);
+        //质控管理员要判断该角色是否是质控科
+        //1.获取质控科id
+        //获取人员id 和 该人员的医院id
+        Long hospitalId = Long.valueOf(SysUserUtils.getCurrentHospitalID());
+        Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
+        //获取核查监管相关角色id
+        List<Long> checkRoleIds = sysRoleFacade.list(new QueryWrapper<SysRole>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .like("name", "监管人员")
+        ).stream().map(SysRole::getId).collect(Collectors.toList());
+        //查询该角色的所有角色id
+        List<Long> roleIds = sysUserRoleFacade.list(new QueryWrapper<SysUserRole>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("user_id", principleId)
+        ).stream().distinct().map(SysUserRole::getRoleId).collect(Collectors.toList());
+        List<Long> searchRoleIds = new ArrayList<>();
+        //当前用户是监管人员或者是超级管理员
+        if (roleIds.contains(-1L)) {
+            searchRoleIds.addAll(checkRoleIds);
+        } else {
+            searchRoleIds.addAll(containsRole(checkRoleIds, roleIds));
+        }
+        if (searchRoleIds.isEmpty()) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该用户不是核查监管人员!");
+        }
+        //质控科监管人员
+        if (searchRoleIds.contains(CheckerRoleEnum.QUAT_SUPERVISOR.getKey() * 1l)
+                && (CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "").equals(checkJobVO.getJobType())) {
+            //用户是不是质管科人员校验
+            BasDeptInfo deptInfo = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .eq("station", "质管"));
+            if (deptInfo == null || deptInfo.getDeptId() == null) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "科室质管科不存在,请联系管理员!");
+            }
+            //2.获取监管人员所在科室集合
+            List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .eq("user_id", principleId)
+            ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+            //3.判断这个人是否在质控科
+//            if(deptIds.contains(zkkDeptId))
+//            {
+//
+//            }
+            //质控科任务分配列表是任务类型是质控科的任务与科室无关
+            return getCheckList(checkJobVO);
+        }
+        //临床科室监管人员 或 院级监管人员
+        else if (searchRoleIds.contains(CheckerRoleEnum.DEPT_SUPERVISOR.getKey() * 1l)
+                || searchRoleIds.contains(CheckerRoleEnum.HOSP_SUPERVISOR.getKey() * 1l)) {
+            //查询没有指定科室
+            if (checkJobVO.getDeptList() == null || checkJobVO.getDeptList().isEmpty()) {
+                //科室获取待分配任务所在科室集合
+                if (CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() == Integer.parseInt(checkJobVO.getJobType())) {
+                    List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .eq("hospital_id", hospitalId)
+                            .eq("user_id", principleId)
+                    ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+
+                    if (deptIds != null && !deptIds.isEmpty()) {
+                        checkJobVO.setDeptList(deptIds);
+                        return getCheckList(checkJobVO);
+                    } else {
+                        return new CheckJobPageVO();
+                    }
+                }
+                //院区获取
+                if (CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() == Integer.parseInt(checkJobVO.getJobType())) {
+//                    //获取管理员所在科室
+//                    List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+//                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                            .eq("hospital_id",hospitalId)
+//                            .eq("user_id",principleId)
+//                    ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+//                    //获取所有院区核查人员所在科室
+//                    CheckUserVO checkUserVOS = new CheckUserVO();
+//                    checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l));
+//                    checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
+//                    checkUserVOS.setHospitalId(hospitalId);
+//                    List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
+//                    Set<String> hospGeneralDeptIds= checkUserDTOS.stream()
+//                            .map(CheckUserDTO::getDeptId).collect(Collectors.toSet());
+//                    //去除管理员所在科室
+//                    if(hospGeneralDeptIds!=null&&!hospGeneralDeptIds.isEmpty()&&deptIds!=null){
+//                        hospGeneralDeptIds.removeAll(deptIds);
+//                        checkJobVO.setDeptList(new ArrayList<>(hospGeneralDeptIds));
+//                    }
+                    return getCheckList(checkJobVO);
+                }
+            }
+            return getCheckList(checkJobVO);
+        } else {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该用户的角色和任务类型不对应!");
+        }
+    }
+
+    /**
+     * @Author songxl
+     * @Description 待分配列表页面校验
+     * @Date 2021/5/18
+     * @Param [checkJobVO]
+     * @Return void
+     * @MethodName userCheckPageSet
+     */
+    private void userCheckPageSet(CheckJobPageVO checkJobVO) {
+        if (StringUtil.isBlank(checkJobVO.getStartTime()) && StringUtil.isBlank(checkJobVO.getEndTime())
+                && StringUtil.isBlank(checkJobVO.getBehosDateStart()) && StringUtil.isBlank(checkJobVO.getBehosDateEnd())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "没有时间区间!");
+        }
+        if (StringUtil.isBlank(checkJobVO.getJobType())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "没有任务类型!");
+        }
+        if (StringUtil.isNotBlank(checkJobVO.getBehosDateStart()) && StringUtil.isNotBlank(checkJobVO.getBehosDateEnd())) {
+            if (DateUtil.after(DateUtil.parseDate(checkJobVO.getBehosDateStart()),
+                    DateUtil.parseDate(checkJobVO.getBehosDateEnd()))) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "出院时间的开始时间必须小于结束时间!");
+            }
+        }
+        if (StringUtil.isNotBlank(checkJobVO.getStartTime()) && StringUtil.isNotBlank(checkJobVO.getEndTime())) {
+            if (DateUtil.after(DateUtil.parseDate(checkJobVO.getStartTime()),
+                    DateUtil.parseDate(checkJobVO.getEndTime()))) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "任务生成的开始时间必须小于结束时间!");
+            }
+        }
+
+    }
+
+    /**
+     * @Author songxl
+     * @Description 获取操作用户的核查科室以及科室核查人员
+     * @Date 2021/5/14
+     * @Param []
+     * @Return java.util.Map<java.lang.String, java.util.List < com.diagbot.dto.CheckDeptDTO>>
+     * @MethodName getCheckUserMap
+     */
+    public Map<String, List<CheckDeptDTO>> getCheckUserMap() {
+
+        //1.获取当前用户对应的管理员角色
+        //获取人员id 和 该人员的医院id
+        Long hospitalId = Long.valueOf(SysUserUtils.getCurrentHospitalID());
+        Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
+        //获取核查监管相关角色id
+        List<Long> checkRoleIds = sysRoleFacade.list(new QueryWrapper<SysRole>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .like("name", "监管人员")
+        ).stream().map(SysRole::getId).collect(Collectors.toList());
+        //查询该角色的所有角色id
+        List<Long> roleIds = sysUserRoleFacade.list(new QueryWrapper<SysUserRole>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("user_id", principleId)
+        ).stream().distinct().map(SysUserRole::getRoleId).collect(Collectors.toList());
+        List<Long> searchRoleIds = new ArrayList<>();
+        //当前用户是监管人员或者是超级管理员
+        if (roleIds.contains(-1L)) {
+            searchRoleIds.addAll(checkRoleIds);
+        } else {
+            searchRoleIds.addAll(containsRole(checkRoleIds, roleIds));
+        }
+        if (searchRoleIds.isEmpty()) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该用户不是核查监管人员!");
+        }
+        //2.获取相应角色对应的科室以及核查人员
+        Map<String, List<CheckDeptDTO>> checkUserMap = getCheckRoleMap(searchRoleIds, hospitalId, principleId);
+        return checkUserMap;
+    }
+
+    /**
+     * @Author songxl
+     * @Description 获取相应角色对应的科室以及核查人员
+     * @Date 2021/5/14
+     * @Param [searchRoleIds]
+     * @Return java.util.Map<java.lang.String, java.util.List < java.util.Map < java.lang.String, java.lang.Object>>>
+     * @MethodName getCheckRoleMap
+     */
+
+    private Map<String, List<CheckDeptDTO>> getCheckRoleMap(List<Long> searchRoleIds, Long hospitalId, Long principleId) {
+        Map<String, List<CheckDeptDTO>> checkRoleMap = new HashMap<>();
+        for (Long id : searchRoleIds) {
+            try {
+                //不同角色不同查询方式
+                switch (id.intValue()) {
+                    //临床科室监管人员
+                    case 4:
+                        getDeptCheckInfo(checkRoleMap, hospitalId, principleId);
+                        break;
+                    //质控科监管人员
+                    case 5:
+                        getZKKCheckInfo(checkRoleMap, hospitalId, principleId);
+                        break;
+                    //院级监管人员
+                    case 6:
+                        getYQCheckInfo(checkRoleMap, hospitalId, principleId);
+                        break;
+                    default:
+                        break;
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return checkRoleMap;
+    }
+
+    /**
+     * @Author songxl
+     * @Description 院区管理员获取管理的科室以及科室包涵质控人员
+     * @Date 2021/5/17
+     * @Param [checkRoleMap, hospitalId, principleId]
+     * @Return void
+     * @MethodName getYQCheckInfo
+     */
+    private void getYQCheckInfo(Map<String, List<CheckDeptDTO>> checkRoleMap, Long hospitalId, Long principleId) {
+        //1.获取院级质控人员有哪些
+        //1.1获取院级质控人员角色id
+        CheckUserVO checkUserVOS = new CheckUserVO();
+        checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.HOSP_GENERAL.getKey() * 1l));
+        checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
+        checkUserVOS.setHospitalId(hospitalId);
+        List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
+        //2.用户科室整合
+        margeDept(checkRoleMap, checkUserDTOS, CheckerRoleEnum.HOSP_SUPERVISOR.getKey() + "");
+        if (!ListUtil.isEmpty(checkRoleMap.get(CheckerRoleEnum.HOSP_SUPERVISOR.getKey() + ""))) {
+            //2.3获取所有医生信息的核查数
+            CheckUserVO checkUserVO = new CheckUserVO();
+            checkUserVO.setJobType(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
+            //通过核查人员id获取核查人员的核查任务数
+            List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
+            addCheckInfoMaps(checkRoleMap, null, userJobs, checkUserDTOS, CheckerRoleEnum.HOSP_SUPERVISOR.getKey(), CheckJobTypeEnum.HOSP_SUPERVISOR.getKey());
+        } else {
+            checkRoleMap.put(CheckerRoleEnum.HOSP_SUPERVISOR.getKey() + "", new ArrayList<>());
+        }
+
+    }
+
+    /**
+     * @Author songxl
+     * @Description 院区人员用户科室合并
+     * @Date 2021/6/1
+     * @Param [checkRoleMap, checkUserDTOS, s]
+     * @Return void
+     * @MethodName margeDept
+     */
+    private void margeDept(Map<String, List<CheckDeptDTO>> checkRoleMap, List<CheckUserDTO> checkUserDTOS, String roleId) {
+        if (ListUtil.isEmpty(checkUserDTOS)) {
+            return;
+        }
+        Set<String> userIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toSet());
+        try {
+            List<CheckDeptDTO> tempDepts = new ArrayList<>();
+            //全部
+            CheckDeptDTO allCheckDept = new CheckDeptDTO();
+            allCheckDept.setDeptId("-1");
+            allCheckDept.setDeptName("全部");
+            userIds.stream().forEach(userId -> {
+                //获取该用户的科室拼接
+                StringBuilder deptIdBuilder = new StringBuilder();
+                StringBuilder deptNameBuilder = new StringBuilder();
+                StringBuilder userName = new StringBuilder();
+                checkUserDTOS.stream().forEach(checkUserDTO -> {
+                    if (userId.equals(checkUserDTO.getDoctorId())) {
+                        deptIdBuilder.append(checkUserDTO.getDeptId()).append(",");
+                        deptNameBuilder.append(checkUserDTO.getDeptName()).append(",");
+                        if (userName.length() == 0) {
+                            userName.append(checkUserDTO.getDoctorName());
+                        }
+                        //除了全部以外添加科室信息
+                        if (!tempDepts.stream().map(CheckDeptDTO::getDeptId).collect(Collectors.toList())
+                                .contains(checkUserDTO.getDeptId())) {
+                            CheckDeptDTO oneCheckUser = new CheckDeptDTO();
+                            oneCheckUser.setDeptId(checkUserDTO.getDeptId());
+                            oneCheckUser.setDeptName(checkUserDTO.getDeptName());
+                            tempDepts.add(oneCheckUser);
+                        }
+                    }
+                });
+
+                //合并科室
+                String deptId = deptIdBuilder.substring(0, deptIdBuilder.length() - 1);
+                String deptName = deptNameBuilder.substring(0, deptNameBuilder.length() - 1);
+                //科室用户
+                DeptCheckUserDTO deptCheckUserDTO = new DeptCheckUserDTO();
+                deptCheckUserDTO.setDoctorId(userId);
+                deptCheckUserDTO.setDoctorName(userName.toString());
+                deptCheckUserDTO.setDeptId(deptId);
+                deptCheckUserDTO.setDeptName(deptName);
+                AtomicBoolean hasFlag = new AtomicBoolean(false);
+                //全部处理
+                if (ListUtil.isEmpty(allCheckDept.getDeptcheckUsers())) {
+                    allCheckDept.getDeptcheckUsers().add(deptCheckUserDTO);
+                }
+                allCheckDept.getDeptcheckUsers().forEach(oneDeptCheckUser -> {
+                    if (!userId.equals(oneDeptCheckUser.getDoctorId())) {
+                        hasFlag.set(true);
+                    }
+                });
+                if (hasFlag.get()) {
+                    allCheckDept.getDeptcheckUsers().add(deptCheckUserDTO);
+                }
+
+                tempDepts.stream().forEach(checkDeptDTO -> {
+                    if (deptId.contains(checkDeptDTO.getDeptId())) {
+                        checkDeptDTO.getDeptcheckUsers().add(deptCheckUserDTO);
+                    }
+                });
+            });
+            tempDepts.add(0, allCheckDept);
+            checkRoleMap.put(roleId + "", tempDepts);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    /**
+     * @Author songxl
+     * @Description 质控科管理员获取管理的科室以及科室包涵质控人员
+     * @Date 2021/5/17
+     * @Param [checkRoleMap, hospitalId, principleId]
+     * @Return void
+     * @MethodName getZKKCheckInfo
+     */
+    private void getZKKCheckInfo(Map<String, List<CheckDeptDTO>> checkRoleMap, Long hospitalId, Long principleId) {
+        //1.获取质控科id
+        BasDeptInfo deptInfo = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("station", "质管"));
+        if (deptInfo == null || deptInfo.getDeptId() == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "科室质管科不存在,请联系管理员!");
+        }
+//        //2.获取监管人员所在科室集合
+//        List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+//                .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                .eq("hospital_id",hospitalId)
+//                .eq("user_id",principleId)
+//        ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+//        //3.判断这个人是否在质控科
+//        if(deptIds.contains(zkkDeptId))
+//        {
+//
+//
+//        }
+        CheckUserVO checkUserVOS = new CheckUserVO();
+        //质管科人员角色
+        checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.QUAT_GENERAL.getKey() * 1l));
+        //质管科
+        checkUserVOS.setDeptStations(Lists.newArrayList("质管"));
+        checkUserVOS.setDeptIds(Lists.newArrayList(deptInfo.getDeptId()));
+        checkUserVOS.setHospitalId(hospitalId);
+        List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
+        //2.1获取科室详情
+        Map<String, String> deptMap = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .in("dept_id", Lists.newArrayList(deptInfo.getDeptId()))).stream()
+                .collect(Collectors.toMap(BasDeptInfo::getDeptId, BasDeptInfo::getDeptName, (v1, v2) -> v2));
+        if (deptMap != null && !deptMap.isEmpty()) {
+            //2.3获取质控科核查人员的核查数
+            List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
+            CheckUserVO checkUserVO = new CheckUserVO();
+            checkUserVO.setJobType(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey());
+            checkUserVO.setUserList(doctorIds);
+            //通过核查人员id获取核查人员的核查任务数
+            List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
+            userJobs.stream().forEach(deptCheckUserDTO -> {
+                deptCheckUserDTO.setDeptId(deptInfo.getDeptId());
+            });
+            addCheckInfoMaps(checkRoleMap, deptMap, userJobs, checkUserDTOS, CheckerRoleEnum.QUAT_SUPERVISOR.getKey(), CheckJobTypeEnum.QUAT_SUPERVISOR.getKey());
+        } else {
+            checkRoleMap.put(CheckerRoleEnum.QUAT_SUPERVISOR.getKey() + "", new ArrayList<>());
+        }
+
+    }
+
+    /**
+     * @Author songxl
+     * @Description 临床科室管理员获取管理的科室以及科室包涵质控人员
+     * @Date 2021/5/17
+     * @Param [checkRoleMap, hospitalId, principleId]
+     * @Return void
+     * @MethodName getDeptCheckInfo
+     */
+    private void getDeptCheckInfo(Map<String, List<CheckDeptDTO>> checkRoleMap, Long hospitalId, Long principleId) {
+
+        //1.获取监管人员所在科室集合
+        List<String> deptIds = sysUserDeptFacade.list(new QueryWrapper<SysUserDept>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("user_id", principleId)
+        ).stream().map(SysUserDept::getDeptId).collect(Collectors.toList());
+        if (deptIds.isEmpty()) {
+            return;
+        }
+        //1.2去除质管科
+        BasDeptInfo deptInfo = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("station", "质管"));
+        if (deptInfo == null || deptInfo.getDeptId() == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "科室质管科不存在,请联系管理员!");
+        }
+        if (StringUtil.isNotBlank(deptInfo.getDeptId())) {
+            deptIds.remove(deptInfo.getDeptId());
+        }
+        CheckUserVO checkUserVOS = new CheckUserVO();
+        //科室普通核查人员角色筛选
+        checkUserVOS.setRoleIds(Lists.newArrayList(CheckerRoleEnum.DEPT_GENERAL.getKey() * 1l));
+        checkUserVOS.setDeptIds(deptIds);
+        checkUserVOS.setDeptStations(Lists.newArrayList("住院"));
+        checkUserVOS.setHospitalId(hospitalId);
+        List<CheckUserDTO> checkUserDTOS = baseMapper.getCheckUser(checkUserVOS);
+        //2.1获取科室详情
+        Map<String, String> deptMap = basDeptInfoFacade.list(new QueryWrapper<BasDeptInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .in("dept_id", deptIds)).stream()
+                .collect(Collectors.toMap(BasDeptInfo::getDeptId, BasDeptInfo::getDeptName, (v1, v2) -> v2));
+        if (deptMap != null && !deptMap.isEmpty()) {
+            //2.3获取所有医生信息的核查数
+            List<String> doctorIds = checkUserDTOS.stream().map(CheckUserDTO::getDoctorId).collect(Collectors.toList());
+            CheckUserVO checkUserVO = new CheckUserVO();
+            checkUserVO.setJobType(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey());
+            checkUserVO.setUserList(doctorIds);
+            checkUserVO.setDeptIds(deptIds);
+            //通过核查人员id获取核查人员的核查任务数
+            List<DeptCheckUserDTO> userJobs = baseMapper.getDeptJobNumByUserId(checkUserVO);
+            addCheckInfoMaps(checkRoleMap, deptMap, userJobs, checkUserDTOS, CheckerRoleEnum.DEPT_SUPERVISOR.getKey(), CheckJobTypeEnum.DEPT_SUPERVISOR.getKey());
+        } else {
+            checkRoleMap.put(CheckerRoleEnum.DEPT_SUPERVISOR.getKey() + "", new ArrayList<>());
+        }
+
+
+    }
+
+    /**
+     * @Author songxl
+     * @Description 拼装科室、核查人员、任务数对象
+     * @Date 2021/5/17
+     * @Param [checkRoleMap, doctorInfos, userJobs, deptInfos, roleId]
+     * @Return void
+     * @MethodName addCheckInfoMap
+     */
+    private void addCheckInfoMaps(Map<String, List<CheckDeptDTO>> checkRoleMap, Map<String, String> deptMap,
+                                  List<DeptCheckUserDTO> userJobs, List<CheckUserDTO> checkUserDTOS, int roleId, int jobType) {
+        //非院区任务
+        if (CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() != jobType) {
+            if (deptMap.isEmpty() || checkUserDTOS.isEmpty()) {
+                return;
+            }
+            checkRoleMap.put(roleId + "", new ArrayList<>());
+            //遍历科室
+            for (String deptId : deptMap.keySet()) {
+                //科室对象
+                CheckDeptDTO checkDeptDTO = new CheckDeptDTO();
+                checkDeptDTO.setDeptId(deptId);
+                checkDeptDTO.setDeptName(deptMap.get(deptId));
+                checkDeptDTO.setDeptcheckUsers(new ArrayList<DeptCheckUserDTO>());
+                //遍历医生
+                for (CheckUserDTO checkUserDTO : checkUserDTOS) {
+                    //同一科室
+                    if (checkDeptDTO.getDeptId().equals(checkUserDTO.getDeptId())) {
+                        DeptCheckUserDTO deptCheckUserDTO = new DeptCheckUserDTO();
+                        deptCheckUserDTO.setDeptId(checkUserDTO.getDeptId());
+                        deptCheckUserDTO.setDeptName(checkUserDTO.getDeptName());
+                        deptCheckUserDTO.setDoctorId(checkUserDTO.getDoctorId());
+                        deptCheckUserDTO.setDoctorName(checkUserDTO.getDoctorName());
+                        checkDeptDTO.getDeptcheckUsers().add(deptCheckUserDTO);
+                    }
+                }
+                for (DeptCheckUserDTO deptCheckUserDTO : checkDeptDTO.getDeptcheckUsers()) {
+                    //遍历数量
+                    for (DeptCheckUserDTO jobNumDto : userJobs) {
+                        //这个科室有这个人
+                        if (deptCheckUserDTO.getDeptId().equals(jobNumDto.getDeptId())) {
+                            if (deptCheckUserDTO.getDoctorId().equals(jobNumDto.getDoctorId())) {
+                                if (jobNumDto.getStatus() == 0) {
+                                    deptCheckUserDTO.setJobNum(jobNumDto.getJobNum());
+                                }
+                                if (jobNumDto.getStatus() == 1) {
+
+                                    deptCheckUserDTO.setCheckNum(jobNumDto.getJobNum());
+                                }
+                            }
+
+                        }
+                    }
+                }
+                checkRoleMap.get(roleId + "").add(checkDeptDTO);
+            }
+        }
+        //院区任务不是同一科室的人员数量增加
+        else if (CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() == jobType) {
+            checkRoleMap.get(roleId + "").stream().forEach(checkDeptDTO -> {
+                if (!ListUtil.isEmpty(checkDeptDTO.getDeptcheckUsers())) {
+                    checkDeptDTO.getDeptcheckUsers().stream().forEach(deptCheckUser -> {
+                        userJobs.stream().forEach(userJob -> {
+                            if (deptCheckUser.getDoctorId().equals(userJob.getDoctorId())) {
+                                if (userJob.getStatus() == 0) {
+                                    deptCheckUser.setJobNum(userJob.getJobNum());
+                                }
+                                if (userJob.getStatus() == 1) {
+                                    deptCheckUser.setCheckNum(userJob.getJobNum());
+                                }
+                            }
+                        });
+                    });
+                }
+            });
+        }
+    }
+
+
+    /**
+     * @Author songxl
+     * @Description list求交集
+     * @Date 2021/5/14
+     * @Param [checkRoleIds, roleIds]
+     * @Return java.util.List<java.lang.Long>
+     * @MethodName containsRole
+     */
+    private List<Long> containsRole(List<Long> checkRoleIds, List<Long> roleIds) {
+
+        List<Long> searchRoleIds = new ArrayList<>();
+        for (Long id : roleIds) {
+            if (checkRoleIds.contains(id)) {
+                searchRoleIds.add(id);
+            }
+        }
+        return searchRoleIds;
+    }
+
+    /**
+     * @Author songxl
+     * @Description 分配/取消核查任务
+     * @Date 2021/5/17
+     * @Param [distributionJobVO]
+     * @Return boolean
+     * @MethodName distributionJobs
+     */
+    public boolean distributionJobs(DistributionJobVO distributionJobVO) {
+
+        //1非空校验
+        if (StringUtil.isBlank(distributionJobVO.getCheckId()) ||
+                StringUtil.isBlank(distributionJobVO.getCheckName()) ||
+                StringUtil.isBlank(distributionJobVO.getDistributionType()) ||
+                distributionJobVO.getBehospitalCodes() == null ||
+                distributionJobVO.getBehospitalCodes().isEmpty()) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "入参为空");
+        }
+        if (StringUtil.isBlank(distributionJobVO.getCheckDept())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "核查人科室(checkDept)为空");
+        }
+        if (distributionJobVO.getBehospitalDepts() == null
+                || distributionJobVO.getBehospitalDepts().isEmpty()) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "核查任务科室集合(behospitalDepts)为空");
+        }
+        if (StringUtil.isEmpty(distributionJobVO.getJobType())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "核查任务类型(jobType)为空");
+        }
+        //全院的话要判断院级核查人员和核查病历不是同一科室
+        if (CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() == Integer.parseInt(distributionJobVO.getJobType())) {
+            for (String deptId : distributionJobVO.getCheckDept().split(",")) {
+                if (distributionJobVO.getBehospitalDepts().contains(deptId)) {
+                    throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "院级核查人员和核查病历是同一科室");
+                }
+            }
+
+        }
+        //获取人员id 和 该人员的医院id
+        Long hospitalId = Long.valueOf(SysUserUtils.getCurrentHospitalID());
+        Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
+        //2.获取任务类型 0分配 1取消
+        String distributionType = distributionJobVO.getDistributionType();
+        //3 分配
+        if (StringUtil.isNotBlank(distributionType) && "0".equals(distributionType)) {
+            //3.1 任务未分配校验
+            List<String> distributionNames = this.list(new QueryWrapper<MedCheckInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .in("behospital_code", distributionJobVO.getBehospitalCodes())
+            ).stream().filter(s -> s.getJobDistributionName() != null).map(MedCheckInfo::getJobDistributionName)
+                    .collect(Collectors.toList());
+            if (distributionNames != null && distributionNames.size() > 0) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "待分配任务列表存在已分配任务!");
+            }
+
+            //获取分配用户信息
+            QueryWrapper<SysUser> userQuer = new QueryWrapper<>();
+            userQuer.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("id", principleId)
+                    .eq("status", 1);
+            SysUser user = sysUserFacade.getOne(userQuer);
+            String principleName = user.getLinkman();
+            //用户名称如果是null(目的:分配用户名为null表示用户未分配)
+            if (principleName == null) {
+                principleName = "";
+            }
+            Date now = DateUtil.now();
+            //3.2分配核查任务
+            return this.update(new UpdateWrapper<MedCheckInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .in("behospital_code", distributionJobVO.getBehospitalCodes())
+                    .set("job_distributor", principleId)
+                    .set("job_distribution_name", principleName)
+                    .set("check_id", distributionJobVO.getCheckId())
+                    .set("check_name", distributionJobVO.getCheckName())
+                    .set("job_distribution_time", now));
+
+        }
+        //4 取消分配
+        else if (StringUtil.isNotBlank(distributionType) && "1".equals(distributionType)) {
+            //4.1 任务已取消校验
+            Set<Long> checkIds = this.list(new QueryWrapper<MedCheckInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .in("behospital_code", distributionJobVO.getBehospitalCodes())
+            ).stream().map(MedCheckInfo::getCheckId).collect(Collectors.toSet());
+            //4.2获取出来的核查用户存在但不是一个
+            if (checkIds == null || checkIds.isEmpty() ||
+                    (checkIds.size() != 1 && checkIds.contains(distributionJobVO.getCheckId()))) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "待取消分配任务列表不存在或存在不是该用户的任务!");
+            } else {
+                Date now = DateUtil.now();
+                //4.3取消分配
+                Long a = null;
+                return this.update(new UpdateWrapper<MedCheckInfo>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .eq("hospital_id", hospitalId)
+                        .eq("check_id", distributionJobVO.getCheckId())
+                        .in("behospital_code", distributionJobVO.getBehospitalCodes())
+                        .set("job_distributor", a)
+                        .set("job_distribution_name", a)
+                        .set("check_id", a)
+                        .set("check_name", a)
+                        .set("job_distribution_time", now));
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * @Author songxl
+     * @Description 获取指定核查人员的核查任务
+     * @Date 2021/5/17
+     * @Param [checkJobVO]
+     * @Return java.util.List<com.diagbot.dto.CheckJobDTO>
+     * @MethodName getCheckListByUserId
+     */
+    public IPage<CheckJobDTO> getCheckListByUserId(CheckJobPageVO checkJobVO) {
+        //非空校验
+        if (StringUtil.isBlank(checkJobVO.getCheckId())) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "没有传核查用户id!");
+        }
+        IPage<CheckJobDTO> checkJobDTOS = baseMapper.getCheckListByUserId(checkJobVO);
+        //获取当前登录人员
+        Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
+        List<CheckJobDTO> outCheckJobDTOS = new ArrayList<>();
+        //判断分配人员是否是当前人员
+        for (CheckJobDTO checkJobDTO : checkJobDTOS.getRecords()) {
+            if (principleId.equals(checkJobDTO.getJobDistributor())) {
+                checkJobDTO.setDelFlag(true);
+            } else {
+                checkJobDTO.setDelFlag(false);
+            }
+            outCheckJobDTOS.add(checkJobDTO);
+        }
+        checkJobDTOS.setRecords(outCheckJobDTOS);
+        return checkJobDTOS;
+    }
 }

+ 310 - 0
src/main/java/com/diagbot/facade/MedCheckWorkFacade.java

@@ -0,0 +1,310 @@
+package com.diagbot.facade;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.BasDeptInfoDTO;
+import com.diagbot.dto.BehospitalInfoAgeDTO;
+import com.diagbot.dto.CheckWorkDTO;
+import com.diagbot.dto.MedicalRecordDTO;
+import com.diagbot.entity.MedBehospitalType;
+import com.diagbot.entity.MedCheckInfo;
+import com.diagbot.entity.SysTaskCron;
+import com.diagbot.entity.SysUser;
+import com.diagbot.enums.CheckJobTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
+import com.diagbot.service.impl.MedCheckInfoServiceImpl;
+import com.diagbot.service.impl.MedicalRecordServiceImpl;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.CheckWorkPageVO;
+import com.diagbot.vo.MedCheckWorkAddVO;
+import com.diagbot.vo.RecordTypeVO;
+import com.diagbot.vo.SysUserBaseVO;
+import com.google.common.collect.Lists;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+
+/**
+ * @author songxl
+ * @since 2021-05-11
+ */
+@Slf4j
+@Component
+public class MedCheckWorkFacade {
+    @Autowired
+    SysUserFacade sysUserFacade;
+    @Autowired
+    private MedCheckInfoServiceImpl medCheckInfoServiceImpl;
+    @Autowired
+    private MedCheckInfoFacade medCheckInfoFacade;
+    @Autowired
+    private MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
+    @Autowired
+    private MedicalRecordServiceImpl medicalRecordServiceImpl;
+    @Autowired
+    private SysTaskCronFacade sysTaskCronFacade;
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
+
+    /**
+     * @Author songxl
+     * @Description 批量操作核查任务(增加和删除)
+     * @Date 2021/5/11
+     * @Param [medCheckWorkVO]
+     * @Return java.lang.Boolean
+     * @MethodName addCheck
+     */
+    public Boolean addCheckWork(MedCheckWorkAddVO medCheckWorkVO) {
+
+        boolean flag = false;
+        Date now = DateUtil.now();
+        //获取核查任务类型(0-科室任务 1-院级 2-质控科)
+        Integer workType = medCheckWorkVO.getJobType();
+        //获取操作类型(0-取消,1-添加)
+        Integer checkStatus = medCheckWorkVO.getCheckStatus();
+        Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
+        Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
+        SysUser user = sysUserFacade.getOne(new QueryWrapper<SysUser>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", principleId)
+                .eq("status", 1));
+        String principleName = user.getLinkman();
+        //取消核查任务【操作类型(0-取消,1-添加)】
+        if (checkStatus != null && checkStatus == 0) {
+            //判断核查任务是否生成
+            QueryWrapper<MedCheckInfo> medicalRecordQe = new QueryWrapper<>();
+            medicalRecordQe.eq("hospital_id", hospitalId);
+            medicalRecordQe.eq("is_deleted", IsDeleteEnum.N.getKey());
+            if (medCheckWorkVO.getBehospitalCodeList().size() > 0) {
+                medicalRecordQe.in("behospital_code", medCheckWorkVO.getBehospitalCodeList());
+            }
+            List<MedCheckInfo> list = medCheckInfoFacade.list(medicalRecordQe);
+            if (ListUtil.isEmpty(list)) {
+                throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL, "存在未生成核查任务!");
+            }
+
+            //创建用户集合
+            Set<Long> creaters = list.stream().map(MedCheckInfo::getJobCreator).collect(Collectors.toSet());
+            if (creaters != null) {
+                //移除当前用户如果还有其他用户
+                creaters.remove(principleId);
+                if (creaters.size() > 0) {
+                    throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL, "无法取消他人生成任务!");
+                }
+            }
+            int i = medCheckInfoFacade.getBaseMapper().deleteBatchCodes(medCheckWorkVO.getBehospitalCodeList());
+            if (i != 0) {
+                return true;
+            }
+        } else if (checkStatus != null && checkStatus == 1) {
+            //生成核查任务
+            MedCheckInfo data = medCheckInfoFacade.getOne(new QueryWrapper<MedCheckInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", hospitalId)
+                    .in("behospital_code", medCheckWorkVO.getBehospitalCodeList())
+            );
+            //任务是否存在
+            if (data != null) {
+                throw new CommonException(CommonErrorCode.UPDATE_INFO_FAIL, "核查任务已存在!");
+            }
+
+            //该病历没有核查的时候, 就添加核查记录
+            List<MedCheckInfo> medCheckInfoList = new ArrayList<>();
+            for (String behospitalCode : medCheckWorkVO.getBehospitalCodeList()) {
+                MedCheckInfo medCheckInfo = new MedCheckInfo();
+                medCheckInfo.setIsDeleted(IsDeleteEnum.N.getKey());
+                medCheckInfo.setGmtCreate(now);
+                medCheckInfo.setBehospitalCode(behospitalCode);
+                medCheckInfo.setHospitalId(hospitalId);
+                medCheckInfo.setCheckType(medCheckWorkVO.getCheckType());
+                medCheckInfo.setJobCreator(principleId);
+                medCheckInfo.setJobCreatorName(principleName);
+                medCheckInfo.setJobCreateTime(now);
+                medCheckInfo.setJobType(medCheckWorkVO.getJobType());
+                medCheckInfoList.add(medCheckInfo);
+            }
+            flag = medCheckInfoServiceImpl.saveBatch(medCheckInfoList);
+        }
+        return flag;
+    }
+
+    /**
+     * @Author songxl
+     * @Description 获取每日住院患者的类型(出院、病危、抢救。。。)
+     * @Date 2021/5/11
+     * @Param [param]
+     * @Return void
+     * @MethodName execute
+     */
+    public void execute(String param) {
+        JSONObject paramJson = JSONObject.parseObject(param);
+        JSONObject typeValue = paramJson.getJSONObject("typeVal");
+        JSONObject typeName = paramJson.getJSONObject("typeName");
+        int searchSize = paramJson.getInteger("searchSize");
+        int batchSize = paramJson.getInteger("batchSize");
+
+
+        //定义批量插入的集合
+        HashMap<String, MedBehospitalType> medBehospitalTypeMap = new HashMap<>();
+        //1.获取有指定文书、没有患者类型的患者数据
+        RecordTypeVO recordContentVO = new RecordTypeVO();
+        recordContentVO.setModeList(new ArrayList<>(typeValue.keySet()));
+        List<MedicalRecordDTO> medicalRecordList = medicalRecordServiceImpl.getMedicalRecord(recordContentVO);
+        if (medicalRecordList != null && !medicalRecordList.isEmpty()) {
+            getPatientRecordType(medBehospitalTypeMap, medicalRecordList, typeValue, typeName);
+        }
+        //2.批量执行插入操作
+        try {
+            if (medBehospitalTypeMap != null && medBehospitalTypeMap.size() > 0) {
+                List<MedBehospitalType> medBehospitalTypeList = new ArrayList<>(medBehospitalTypeMap.values());
+                medBehospitalTypeServiceImpl.saveOrUpdateBatch(medBehospitalTypeList, batchSize);
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
+    }
+
+    /**
+     * @Author songxl
+     * @Description 获取患者类型存入批量插入map
+     * @Date 2021/5/11
+     * @Param [medBehospitalTypeMap, medicalRecordList, typeValue, typeName, hospiatlId]
+     * @Return void
+     * @MethodName getPatientRecordType
+     */
+    private void getPatientRecordType(HashMap<String, MedBehospitalType> medBehospitalTypeMap,
+                                      List<MedicalRecordDTO> medicalRecordList,
+                                      JSONObject typeValue,
+                                      JSONObject typeName) {
+
+        if (medicalRecordList == null || medicalRecordList.isEmpty()) {
+            return;
+        }
+        //1.遍历查询出来的结果
+        for (MedicalRecordDTO medicalRecordDTO : medicalRecordList) {
+            //2.判断批量插入map中有没有这个患者
+            if (medBehospitalTypeMap.containsKey(medicalRecordDTO.getBehospitalCode())) {
+                //3.比较这两次的分值大小
+                int lval = medBehospitalTypeMap.get(medicalRecordDTO.getBehospitalCode()).getValue();
+                int nval = typeValue.getInteger(medicalRecordDTO.getModeId() + "");
+                if (nval > lval) {
+                    medBehospitalTypeMap.get(medicalRecordDTO.getBehospitalCode()).setValue(nval);
+                    medBehospitalTypeMap.get(medicalRecordDTO.getBehospitalCode())
+                            .setBehospitalType(typeName.getString(medicalRecordDTO.getModeId() + ""));
+                }
+            } else {
+                //4.获取分值记录这个患者
+                MedBehospitalType medBehospitalType = new MedBehospitalType();
+                medBehospitalType.setBehospitalCode(medicalRecordDTO.getBehospitalCode());
+                medBehospitalType.setBehospitalType(typeName.getString(medicalRecordDTO.getModeId() + ""));
+                medBehospitalType.setValue(typeValue.getInteger(medicalRecordDTO.getModeId() + ""));
+                medBehospitalType.setCreateTime(DateUtil.now());
+                medBehospitalType.setHospitalId(medicalRecordDTO.getHospitalId());
+                medBehospitalTypeMap.put(medicalRecordDTO.getBehospitalCode(), medBehospitalType);
+            }
+        }
+    }
+
+
+    /**
+     * 分页
+     *
+     * @param checkWorkPageVO
+     * @return
+     */
+    public IPage<CheckWorkDTO> pageFac(CheckWorkPageVO checkWorkPageVO) {
+        checkWorkPageSet(checkWorkPageVO);
+        IPage<CheckWorkDTO> res = medCheckInfoFacade.getBaseMapper().getCheckWorkPage(checkWorkPageVO);
+        if (res == null || ListUtil.isEmpty(res.getRecords())) {
+            return res;
+        }
+
+        List<String> behospitalCodes = res.getRecords().stream().map(CheckWorkDTO::getBehospitalCode).collect(Collectors.toList());
+        Map<String, BehospitalInfoAgeDTO> ageMap = behospitalInfoFacade.getBehospitalInfoAge(checkWorkPageVO.getHospitalId(), behospitalCodes).stream().collect(Collectors.toMap(i -> i.getBehospitalCode(), i -> i));
+        res.getRecords().forEach(i -> {
+            i.setAge(ageMap.get(i.getBehospitalCode()) == null ? "" : ageMap.get(i.getBehospitalCode()).getAge());
+        });
+
+        //更新delFlag
+        Long principleId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
+        res.getRecords().stream().forEach(checkWorkDTO -> {
+            if (principleId.equals(checkWorkDTO.getJobCreator())) {
+                checkWorkDTO.setDelFlag(true);
+            }
+        });
+        return res;
+    }
+
+    private void checkWorkPageSet(CheckWorkPageVO checkWorkPageVO) {
+        //入参验证
+        //出院时间
+        if (null != checkWorkPageVO && null != checkWorkPageVO.getStartDate()) {
+            checkWorkPageVO.setStartDate(DateUtil.getFirstTimeOfDay(checkWorkPageVO.getStartDate()));
+        }
+        if (null != checkWorkPageVO && null != checkWorkPageVO.getEndDate()) {
+            checkWorkPageVO.setEndDate(DateUtil.getFirstTimeOfDay(DateUtil.addDay(checkWorkPageVO.getEndDate(), 1)));
+        }
+        if (null != checkWorkPageVO && null != checkWorkPageVO.getStartDate() && null != checkWorkPageVO.getEndDate()) {
+            if (DateUtil.after(checkWorkPageVO.getStartDate(), checkWorkPageVO.getEndDate())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "出院时间的开始时间必须小于结束时间!");
+            }
+        }
+        //住院天数
+        if (null != checkWorkPageVO && null != checkWorkPageVO.getSmallDay() && null != checkWorkPageVO.getBigDay()) {
+            if (checkWorkPageVO.getSmallDay() > checkWorkPageVO.getBigDay()) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "住院天数区间有误!");
+            }
+        }
+        checkWorkPageVO.setHospitalId(Long.parseLong(SysUserUtils.getCurrentHospitalID()));
+
+        if (StringUtil.isNotBlank(checkWorkPageVO.getJobType()) && (CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "").equals(checkWorkPageVO.getJobType())) {
+            SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+            sysUserBaseVO.setUserId(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
+            List<String> deptIds = Lists.newArrayList();
+            List<BasDeptInfoDTO> selDepts = sysUserFacade.getUserDepts(sysUserBaseVO).getSelDepts();
+            if (ListUtil.isNotEmpty(selDepts)) {
+                deptIds = selDepts.stream().map(i -> i.getDeptId()).collect(Collectors.toList());
+            }
+            if (ListUtil.isNotEmpty(checkWorkPageVO.getDepartment())) {
+                deptIds.retainAll(checkWorkPageVO.getDepartment());
+            }
+            if (ListUtil.isEmpty(deptIds)) {
+                deptIds.add("999999999999");
+            }
+            checkWorkPageVO.setDepartment(deptIds);
+        }
+    }
+
+    public boolean createMedBeHospitalInfoType() {
+        //1.获取定时任务
+        SysTaskCron task = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
+                .eq("cron_code", "TASK019"), false);
+        //2.执行定时任务
+        if (null != task && StringUtil.isNotBlank(task.getCron())) {
+            try {
+                execute(task.getParam());
+            } catch (Exception e) {
+                e.printStackTrace();
+                return false;
+            }
+            return true;
+        }
+        return false;
+    }
+}

+ 14 - 0
src/main/java/com/diagbot/facade/MedIndexRelevanceFacade.java

@@ -0,0 +1,14 @@
+package com.diagbot.facade;
+import com.diagbot.service.impl.MedIndexRelevanceServiceImpl;
+
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class MedIndexRelevanceFacade extends MedIndexRelevanceServiceImpl {
+}

+ 13 - 0
src/main/java/com/diagbot/facade/MedIndexResultFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+import com.diagbot.service.impl.MedIndexResultServiceImpl;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2020/4/12 11:39
+ */
+@Component
+public class MedIndexResultFacade extends MedIndexResultServiceImpl {
+}

+ 19 - 0
src/main/java/com/diagbot/facade/QcCasesRelevanceEntryFacade.java

@@ -0,0 +1,19 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.SysHospitalSet;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.QcCasesRelevanceEntryServiceImpl;
+import com.diagbot.service.impl.SysHospitalSetServiceImpl;
+import com.diagbot.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2021/4/16 12:29
+ */
+@Component
+public class QcCasesRelevanceEntryFacade extends QcCasesRelevanceEntryServiceImpl {
+
+}

+ 59 - 0
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.AlgorithmDTO;
 import com.diagbot.dto.AnalyzeDTO;
 import com.diagbot.dto.QcResultDTO;
 import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.MedCheckInfo;
 import com.diagbot.entity.MedQcresultCases;
 import com.diagbot.entity.QcresultDetail;
 import com.diagbot.entity.QcresultInfo;
@@ -45,6 +46,8 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
     @Autowired
     private BehospitalInfoFacade behospitalInfoFacade;
     @Autowired
+    private MedCheckInfoFacade medCheckInfoFacade;
+    @Autowired
     @Qualifier("medQcresultCasesServiceImpl")
     private MedQcresultCasesServiceImpl medQcresultCasesService;
 
@@ -103,11 +106,13 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
         algorithmVO.setHospitalId(hospitalId);
         algorithmVO.setBehospitalCode(qcresultVO.getBehospitalCode());
         algorithmVO.setIsPlacefile(behospitalInfos.get(0).getIsPlacefile());
+        algorithmVO.setDelStatus(qcresultVO.getDelStatus());
         AlgorithmDTO algorithmDTO = algorithmFacade.getAlgorithmRes(algorithmVO);
         //更新质控评分结果信息
         AnalyzeVO analyzeVO = new AnalyzeVO();
         analyzeVO.setHospitalId(hospitalId);
         analyzeVO.setBehospitalCode(qcresultVO.getBehospitalCode());
+        analyzeVO.setDelStatus(qcresultVO.getDelStatus());
         Date date = this.saveQcResult(algorithmDTO, algorithmVO, analyzeVO, null, null, false, qcresultInfo);
         //返回参数组装
         AnalyzeDTO analyzeDTO = new AnalyzeDTO();
@@ -244,9 +249,63 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                         .set("msg", algorithmVO.getOptResultAlgVO().getMsg())
                         .set("score", algorithmVO.getOptResultAlgVO().getScore())
                         .set("opt_type", 3)
+                        .set("grade_type",2)
                         .set("modifier", useId)
                         .set("gmt_modified", now)
+                        .set("explain_info",algorithmVO.getOptResultAlgVO().getExplainInfo())
                 );
+                break;
+            case 4:
+                //获取病历核查人员id,该操作只能是核查员操作
+                Long checkId = medCheckInfoFacade.getOne(new QueryWrapper<MedCheckInfo>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .eq("hospital_id", analyzeVO.getHospitalId())
+                        .eq("behospital_code", analyzeVO.getBehospitalCode())).getCheckId();
+                if(checkId==null)
+                {
+                    throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "病历没有分配核查人员");
+                }
+                if(!checkId.equals(useId))
+                {
+                    throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "当前用户不是分配的核查人员");
+                }
+                //逻辑删除质控明细 0删除
+                if(analyzeVO.getDelStatus()==0)
+                {
+                    qcresultDetailServiceImpl.update(new UpdateWrapper<QcresultDetail>()
+                            .eq("id", algorithmVO.getOptResultAlgVO().getId())
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .eq("hospital_id", analyzeVO.getHospitalId())
+                            .eq("behospital_code", analyzeVO.getBehospitalCode())
+                            .set("is_deleted", IsDeleteEnum.Y.getKey())
+                            .set("grade_type",2)
+                            .set("opt_type", 2)
+                            .set("modifier", useId)
+                            .set("gmt_modified", now)
+                    );
+                }
+                //1恢复
+                else if(analyzeVO.getDelStatus()==1)
+                {
+                    //该条目是机器插入条目
+                    qcresultDetailServiceImpl.update(new UpdateWrapper<QcresultDetail>()
+                            .eq("id", algorithmVO.getOptResultAlgVO().getId())
+                            .eq("is_deleted", IsDeleteEnum.Y.getKey())
+                            .eq("hospital_id", analyzeVO.getHospitalId())
+                            .eq("behospital_code", analyzeVO.getBehospitalCode())
+                            .set("is_deleted", IsDeleteEnum.N.getKey())
+                            .set("grade_type",2)
+                            .set("opt_type", 1)
+                            .set("modifier", useId)
+                            .set("remark", null)
+                            .set("gmt_modified", now)
+                    );
+                }
+                else {
+                    throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "delStatus参数错误");
+                }
+
+
                 break;
             default:
                 /* DO NOTHING */

+ 216 - 0
src/main/java/com/diagbot/facade/RecordCheckFacade.java

@@ -0,0 +1,216 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.BehospitalInfoAgeDTO;
+import com.diagbot.dto.CheckedRecordListDTO;
+import com.diagbot.dto.SysUserDeptDTO;
+import com.diagbot.entity.BasDeptInfo;
+import com.diagbot.entity.MedBehospitalType;
+import com.diagbot.entity.MedCheckInfo;
+import com.diagbot.entity.SysUserDept;
+import com.diagbot.entity.SysUserRole;
+import com.diagbot.enums.CheckJobTypeEnum;
+import com.diagbot.enums.CheckStatusEnum;
+import com.diagbot.enums.CheckTypeEnum;
+import com.diagbot.enums.CheckerRoleEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.MedQcresultDetailService;
+import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.CheckedRecordListVO;
+import com.diagbot.vo.RecordCheckVO;
+import com.diagbot.vo.SysUserBaseVO;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2021/5/17 18:43
+ */
+@Component
+public class RecordCheckFacade {
+
+    @Autowired
+    SysUserFacade sysUserFacade;
+    @Autowired
+    SysUserDeptFacade sysUserDeptFacade;
+    @Autowired
+    SysUserRoleFacade sysUserRoleFacade;
+    @Autowired
+    MedCheckInfoFacade medCheckInfoFacade;
+    @Autowired
+    MedQcresultDetailService medQcresultDetailService;
+    @Autowired
+    BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    BasDeptInfoFacade basDeptInfoFacade;
+    @Autowired
+    MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
+
+
+    public IPage<CheckedRecordListDTO> checkedRecordList(CheckedRecordListVO checkedRecordListVO) {
+        Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
+        Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
+        SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+        sysUserBaseVO.setUserId(userId);
+        List<Long> roleIds = sysUserFacade.getUserRoles(sysUserBaseVO).getSelRoles().stream().map(i -> i.getId()).collect(Collectors.toList());
+        List<String> deptIds = Lists.newArrayList();
+        SysUserDeptDTO sysUserDeptDTO = sysUserFacade.getUserDepts(sysUserBaseVO);
+        if (ListUtil.isNotEmpty(sysUserDeptDTO.getSelDepts())) {
+            deptIds.addAll(sysUserDeptDTO.getSelDepts().stream().map(i -> i.getDeptId()).collect(Collectors.toList()));
+        }
+        //1.2去除质管科
+        BasDeptInfo deptInfo = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("station", "质管"));
+        if (deptInfo == null || deptInfo.getDeptId() == null) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "科室质管科不存在,请联系管理员!");
+        }
+        List<Long> userIds = Lists.newArrayList();
+        List<String> JobTypes = Lists.newArrayList();
+        roleIds.forEach(roleId -> {
+            if (roleId.intValue() == CheckerRoleEnum.HOSP_SUPERVISOR.getKey()
+                    && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + ""))) {
+                userIds.addAll(getUserIdsOfRoleId(hospitalId, null, CheckerRoleEnum.HOSP_GENERAL.getKey()));
+                JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
+            } else if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey()
+                    && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + ""))) {
+                //添加质管科人员
+                deptIds.add(deptInfo.getDeptId());
+                userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.QUAT_GENERAL.getKey()));
+                JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
+            } else if (roleId.intValue() == CheckerRoleEnum.DEPT_SUPERVISOR.getKey() && ListUtil.isNotEmpty(deptIds)
+                    && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + ""))) {
+                //移除质管科人员
+                deptIds.remove(deptInfo.getDeptId());
+                JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
+                userIds.addAll(getUserIdsOfRoleId(hospitalId, deptIds, CheckerRoleEnum.DEPT_GENERAL.getKey()));
+            } else if ((roleId.intValue() == CheckerRoleEnum.DEPT_GENERAL.getKey() && ListUtil.isNotEmpty(deptIds))
+                    || roleId.intValue() == CheckerRoleEnum.QUAT_GENERAL.getKey() || roleId.intValue() == CheckerRoleEnum.HOSP_GENERAL.getKey()) {
+                userIds.add(userId);
+            }
+        });
+
+        //如果用户是质控科核查人员,在不传入任务类型的时候要添加质控科任务类型进行筛选
+        if (roleIds.contains(CheckerRoleEnum.QUAT_GENERAL.getKey() * 1l)) {
+            JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
+        }
+        if (roleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey() * 1l)) {
+            JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
+        }
+        if (roleIds.contains(CheckerRoleEnum.HOSP_GENERAL.getKey() * 1l)) {
+            JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
+        }
+
+        if (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes())) {
+            checkedRecordListVO.setCheckJobTypes(JobTypes);
+        }
+        if (ListUtil.isEmpty(userIds)) {
+            userIds.add(999999999999999999l);
+        }
+        checkedRecordListVO.setCurrentDeptIds(String.join(",", deptIds));
+        checkedRecordListVO.setCurrentGeneralUserIds(userIds);
+        checkedRecordListVO.setHospitalId(hospitalId);
+        IPage<CheckedRecordListDTO> iPage = medCheckInfoFacade.getBaseMapper().checkedRecordList(checkedRecordListVO);
+
+        if (ListUtil.isNotEmpty(iPage.getRecords())) {
+            List<String> behospitalCodes = iPage.getRecords().stream().map(i -> i.getBehospitalCode()).collect(Collectors.toList());
+            Map<String, BehospitalInfoAgeDTO> ageMap = behospitalInfoFacade.getBehospitalInfoAge(hospitalId, behospitalCodes).stream().collect(Collectors.toMap(i -> i.getBehospitalCode(), i -> i));
+            iPage.getRecords().forEach(i -> {
+                i.setMonth(i.getJobDistributionTime());
+                i.setStatus(CheckStatusEnum.getName(Integer.parseInt(i.getStatus())));
+                i.setAge(ageMap.get(i.getBehospitalCode()) == null ? "" : ageMap.get(i.getBehospitalCode()).getAge());
+            });
+        }
+
+        return iPage;
+    }
+
+    private List<Long> getUserIdsOfRoleId(Long hospitalId, List<String> deptIds, long roleId) {
+        QueryWrapper<SysUserDept> sysUserDeptQueryWrapper = new QueryWrapper<>();
+        sysUserDeptQueryWrapper.eq("hospital_id", hospitalId);
+        sysUserDeptQueryWrapper.in(ListUtil.isNotEmpty(deptIds), "dept_id", deptIds);
+        List<Long> userIds = sysUserDeptFacade.list(sysUserDeptQueryWrapper).stream().map(i -> i.getUserId()).collect(Collectors.toList());
+
+        if (ListUtil.isEmpty(userIds)) {
+            return null;
+        }
+        QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
+        sysUserRoleQueryWrapper.in("user_id", userIds);
+        sysUserRoleQueryWrapper.eq("role_id", roleId);
+        return sysUserRoleFacade.list(sysUserRoleQueryWrapper).stream().map(i -> i.getUserId()).collect(Collectors.toList());
+    }
+
+    public boolean recordCheck(RecordCheckVO recordCheckVO) {
+        Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
+        Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
+
+        QueryWrapper<MedCheckInfo> medCheckInfoQueryWrapper = new QueryWrapper<>();
+        medCheckInfoQueryWrapper.eq("behospital_code", recordCheckVO.getBehospitalCode());
+        medCheckInfoQueryWrapper.eq("hospital_id", hospitalId);
+        medCheckInfoQueryWrapper.eq("check_id", userId);
+        medCheckInfoQueryWrapper.eq("check_type", CheckTypeEnum.ALL.getKey());
+        MedCheckInfo medCheckInfo = medCheckInfoFacade.getOne(medCheckInfoQueryWrapper);
+        if (medCheckInfo == null) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据您暂无核查权限!");
+        }
+
+        medCheckInfo.setStatus(1);
+        medCheckInfo.setCheckTime(DateUtil.now());
+        medCheckInfoFacade.updateById(medCheckInfo);
+
+        return true;
+    }
+
+    /**
+     * @Author songxl
+     * @Description获取当前用户的任务来源 和筛选分值
+     * @Date 2021/5/28
+     * @Param []
+     * @Return java.util.Map<java.lang.String, java.lang.String>
+     * @MethodName getCheckType
+     */
+    public Map<String, Object> getCheckType() {
+        Map<String, Object> out = Maps.newLinkedHashMap();
+        Map<Integer, String> checkTypes = Maps.newLinkedHashMap();
+        Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
+        SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+        sysUserBaseVO.setUserId(userId);
+        List<Long> roleIds = sysUserFacade.getUserRoles(sysUserBaseVO).getSelRoles().stream().map(i -> i.getId()).collect(Collectors.toList());
+        roleIds.stream().forEach(roleId -> {
+            if (roleId.intValue() == CheckerRoleEnum.DEPT_SUPERVISOR.getKey() || roleId.intValue() == CheckerRoleEnum.DEPT_GENERAL.getKey()) {
+                checkTypes.put(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey(), CheckJobTypeEnum.DEPT_SUPERVISOR.getName());
+            }
+            if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey() || roleId.intValue() == CheckerRoleEnum.QUAT_GENERAL.getKey()) {
+                checkTypes.put(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey(), CheckJobTypeEnum.QUAT_SUPERVISOR.getName());
+            }
+            if (roleId.intValue() == CheckerRoleEnum.HOSP_SUPERVISOR.getKey() || roleId.intValue() == CheckerRoleEnum.HOSP_GENERAL.getKey()) {
+                checkTypes.put(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey(), CheckJobTypeEnum.HOSP_SUPERVISOR.getName());
+            }
+        });
+        Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
+        List<Integer> valus = medBehospitalTypeServiceImpl.list(new QueryWrapper<MedBehospitalType>()
+                .eq("hospital_id", hospitalId)
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .isNotNull("value")
+                .groupBy("value")).stream().map(MedBehospitalType::getValue).collect(Collectors.toList());
+        out.put("source", checkTypes);
+        out.put("value", valus);
+        return out;
+    }
+}

+ 1 - 0
src/main/java/com/diagbot/facade/SysDictionaryFacade.java

@@ -60,4 +60,5 @@ public class SysDictionaryFacade extends SysDictionaryInfoServiceImpl {
         }
         return res;
     }
+
 }

+ 143 - 30
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -4,19 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.AuthServiceClient;
-import com.diagbot.dto.BasDeptInfoDTO;
-import com.diagbot.dto.BasHospitalInfoDTO;
-import com.diagbot.dto.JwtDTO;
-import com.diagbot.dto.LoginDTO;
-import com.diagbot.dto.SysRoleDTO;
-import com.diagbot.dto.SysUserDeptDTO;
-import com.diagbot.dto.SysUserPermissionDTO;
-import com.diagbot.dto.SysUserQueryDTO;
-import com.diagbot.dto.SysUserRoleDTO;
-import com.diagbot.dto.UserLoginDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.BasHospitalInfo;
 import com.diagbot.entity.JWT;
 import com.diagbot.entity.JwtStore;
+import com.diagbot.entity.SysHospitalSet;
 import com.diagbot.entity.SysUser;
 import com.diagbot.entity.SysUserDept;
 import com.diagbot.entity.SysUserHospital;
@@ -43,12 +35,9 @@ import org.springframework.security.crypto.factory.PasswordEncoderFactories;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.stereotype.Component;
+import org.springframework.util.DigestUtils;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -87,10 +76,36 @@ public class SysUserFacade extends SysUserServiceImpl {
 
     @Autowired
     private SysUserHospitalFacade sysUserHospitalFacade;
+    @Autowired
+    private SysUserRoleFacade sysUserRoleFacade;
+    @Autowired
+    private SysDictionaryFacade sysDictionaryFacade;
+    @Autowired
+    private SysHospitalSetFacade sysHospitalSetFacade;
+
 
+
+
+    /**
+     * 获取标识--选择登录页面
+     * @return java.lang.Long
+     */
+    public Long getHospitalMark() {
+        Long mark = 0L;//0-默认通用医院 1-湘雅医院特殊登录页面
+        SysHospitalSet sysHospitalSet = sysHospitalSetFacade.lambdaQuery()
+                .eq(SysHospitalSet::getHospitalId, 35)
+                .eq(SysHospitalSet::getIsDeleted, IsDeleteEnum.N.getKey())
+                .eq(SysHospitalSet::getCode, "special_page_csxy").one();
+        if(null != sysHospitalSet){
+            String val = sysHospitalSet.getValue();
+            if(StringUtil.isNotBlank(val) && "1".equals(val)){
+               mark =  Long.valueOf(val);
+            }
+        }
+        return mark;
+    }
     /**
      * 获取jwt
-     *
      * @param username 用户名
      * @param password 密码
      * @return jwt
@@ -105,6 +120,8 @@ public class SysUserFacade extends SysUserServiceImpl {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请输入密码");
         }
+        //使用MD5对密码进行加密
+        String MD5Password = DigestUtils.md5DigestAsHex(password.getBytes());
         QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
         userQueryWrapper.eq("username", username)
                 .eq("status", StatusEnum.Enable.getKey())
@@ -114,11 +131,11 @@ public class SysUserFacade extends SysUserServiceImpl {
             throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
         }
         PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
-        if (!passwordEncoder.matches(password, user.getPassword())) {
+        if (!passwordEncoder.matches(MD5Password, user.getPassword())) {
             throw new CommonException(ServiceErrorCode.USER_PASSWORD_ERROR);
         }
         JWT jwt = authServiceClient.getToken("Basic dWFhLXNlcnZpY2U6MTIzNDU2",
-                "password", username, password);
+                "password", username, MD5Password);
         if (null == jwt) {
             throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
         }
@@ -126,11 +143,43 @@ public class SysUserFacade extends SysUserServiceImpl {
         data.setRefreshToken(jwt.getRefresh_token());
         data.setType(user.getType());
         data.setTypeCn(ConstantEnum.getName(user.getType()));//返回中文
+        //获取用户角色
+        try {
+            SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+            sysUserBaseVO.setUserId(user.getId());
+            List<SysRoleDTO> selRoles =getlocalUserRoles(sysUserBaseVO);
+            if(selRoles!=null&&!selRoles.isEmpty())
+            {
+                data.setSelRoles(selRoles);
+            }
+
+        }
+        catch (Exception e)
+        {
+            e.printStackTrace();
+        }
         //token存入redis
         JwtStore jwtStore = new JwtStore();
         jwtStore.setAccessToken(jwt.getAccess_token());
         jwtStore.setRefreshToken(jwt.getRefresh_token());
         tokenFacade.createToken(jwtStore);
+        /***
+         * 未经过MD5加密密码复杂度判断
+         */
+     //   获取用户医院id
+   //     String hospitalID = SysUserUtils.getCurrentHospitalID();
+        Long id = user.getId();
+        QueryWrapper<SysUserHospital> UserHospitalQueryWrapper = new QueryWrapper<>();
+        UserHospitalQueryWrapper
+                .eq("user_id", id)
+                .eq("is_deleted", IsDeleteEnum.N.getKey());
+        SysUserHospital userHospital = sysUserHospitalFacade.getOne(UserHospitalQueryWrapper, false);
+        Long hospitalId = userHospital.getHospitalId();
+        String idStr = String.valueOf(hospitalId);
+        Boolean passwordRegular = passwordRegular(password,idStr);
+        if(!passwordRegular){
+            data.setPasswordComplexity("未修改初始密码,请及时修改密码");
+        }
         return data;
     }
 
@@ -227,19 +276,23 @@ public class SysUserFacade extends SysUserServiceImpl {
      * @return 修改密码是否成功
      */
     public Boolean modifyPassword(String password, String modifyPassword) {
+        //使用MD5对原密码和新密码进行加密
+        String MD5Password = DigestUtils.md5DigestAsHex(password.getBytes());
+        String MD5ModifyPassword = DigestUtils.md5DigestAsHex(modifyPassword.getBytes());
         if (StringUtil.isBlank(password)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "请输入密码");
+                    "请输入密码");
         }
         if (StringUtil.isBlank(modifyPassword)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请输入新密码");
         }
-        if (password.equals(modifyPassword)) {
-            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
-                    "原密码和新密码不能相同");
+        //对传入的密码进行格式验证
+        String hospitalID = SysUserUtils.getCurrentHospitalID();
+        Boolean regularBoolean = passwordRegular(modifyPassword,hospitalID);
+        if(!regularBoolean){
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "请输入正确格式的新密码");
         }
-
         String userId = SysUserUtils.getCurrentPrincipleID();
         SysUser user = this.getOne(new QueryWrapper<SysUser>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
@@ -248,14 +301,16 @@ public class SysUserFacade extends SysUserServiceImpl {
         if (null == user) {
             throw new CommonException(ServiceErrorCode.USER_NOT_FOUND);
         }
-
         PasswordEncoder passwordEncoder
                 = PasswordEncoderFactories.createDelegatingPasswordEncoder();
-        if (!passwordEncoder.matches(password, user.getPassword())) {
+        if (!passwordEncoder.matches(MD5Password, user.getPassword())) {
             throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "原密码错误");
         }
-
-        String entryPassword = passwordEncoder.encode(modifyPassword);
+        if (password.equals(modifyPassword)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR,
+                    "原密码和新密码不能相同");
+        }
+        String entryPassword = passwordEncoder.encode(MD5ModifyPassword);
         user.setPassword(entryPassword);
         user.setGmtModified(DateUtil.now());
         user.setModifier(userId);
@@ -263,6 +318,25 @@ public class SysUserFacade extends SysUserServiceImpl {
         return true;
     }
 
+    /**
+     * 未加密密文正则表达式  至少8个字符,1个大写字母,1个小写字母,1个数字和1个特殊字符:
+     * @param password
+     * @return
+     */
+    public Boolean passwordRegular(String password,String hospitalId){
+        boolean check=true;
+        Map<String, Map<String, String>> dictionaryWithKey = sysDictionaryFacade.getDictionaryWithKey();
+        if(dictionaryWithKey!=null){
+            Map<String, String> stringStringMap = dictionaryWithKey.get("30");
+            if(stringStringMap!=null) {
+                String regular = stringStringMap.get(hospitalId);
+                if(StringUtil.isNotEmpty(regular)) {
+                    check = password.matches(regular);
+                }
+            }
+        }
+        return check;
+    }
     /**
      * 登录
      *
@@ -270,12 +344,21 @@ public class SysUserFacade extends SysUserServiceImpl {
      */
     public LoginDTO getUserOrgMenu() {
         LoginDTO data = new LoginDTO();
-
+        Set<String> roleSet = new HashSet<>();
         Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
         SysUser user = this.getOne(new QueryWrapper<SysUser>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("status", StatusEnum.Enable.getKey())
                 .eq("id", userId), false);
+        QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
+        sysUserRoleQueryWrapper.eq("user_id",userId);
+        sysUserRoleQueryWrapper .eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<SysUserRole> sysUserRoleList = sysUserRoleFacade.list(sysUserRoleQueryWrapper);
+        if(ListUtil.isNotEmpty(sysUserRoleList)){
+            sysUserRoleList.forEach(sysUserRole ->{
+                roleSet.add(sysUserRole.getRoleId()+"");
+            } );
+        }
         if (user == null) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR,
                     "用户不存在【" + userId + "】");
@@ -297,8 +380,8 @@ public class SysUserFacade extends SysUserServiceImpl {
         }
 
         //添加菜单信息
-        List<SysMenuWrapper> menuList = sysMenuFacade.getByRole(user.getId());
-        List<SysUserPermissionDTO> sysUserPermissionDTOList = sysMenuFacade.getByRolePermission(user.getId());
+        List<SysMenuWrapper> menuList = sysMenuFacade.getByRole(user.getId(),roleSet);
+        List<SysUserPermissionDTO> sysUserPermissionDTOList = sysMenuFacade.getByRolePermission(user.getId(),roleSet);
         Map<Long, List<SysMenuWrapper>> menuMap = EntityUtil.makeEntityListMap(menuList, "parentId");
         Map<Long, List<SysUserPermissionDTO>> menuPermissionMap = EntityUtil.makeEntityListMap(sysUserPermissionDTOList, "menuId");
         List<SysMenuWrapper> menuRes = menuMap.get(-1L);
@@ -454,6 +537,36 @@ public class SysUserFacade extends SysUserServiceImpl {
 
         return sysUserRoleDTO;
     }
+    /**
+     * 获取用户角色
+     *
+     * @param sysUserBaseVO 获取用户角色入参
+     * @return 用户角色信息
+     */
+    private List<SysRoleDTO> getlocalUserRoles(SysUserBaseVO sysUserBaseVO) {
+        SysUserRoleDTO sysUserRoleDTO = new SysUserRoleDTO();
+        sysUserRoleDTO.setUserId(sysUserBaseVO.getUserId());
+        List<SysRoleDTO> sysRoleDTOList = sysRoleFacade.listFac();
+        List<SysUserRole> sysUserRoleList
+                = sysUserRoleService.list(new QueryWrapper<SysUserRole>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("user_id", sysUserBaseVO.getUserId())
+        );
+        List<SysRoleDTO> selRoles = new ArrayList<>();
+        if (ListUtil.isNotEmpty(sysUserRoleList)) {
+            Set<Long> selRoleIds = sysUserRoleList.stream()
+                    .map(SysUserRole::getRoleId)
+                    .collect(Collectors.toSet());
+            for (SysRoleDTO sysRoleDTO : sysRoleDTOList) {
+                if (selRoleIds.contains(sysRoleDTO.getId())) {
+                    selRoles.add(sysRoleDTO);
+                }
+            }
+            sysUserRoleDTO.setSelRoles(selRoles);
+        }
+
+        return selRoles;
+    }
 
     /**
      * 用户启用

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

@@ -12,6 +12,7 @@ import com.diagbot.vo.data.ABasDeptInfoVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -25,6 +26,8 @@ public class ABasDeptInfoFacade extends BasDeptInfoServiceImpl{
     private BasDeptInfoServiceImpl basDeptInfoService;
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -52,54 +55,59 @@ public class ABasDeptInfoFacade extends BasDeptInfoServiceImpl{
      * @return
      */
     public RespDTO<List<ABasDeptInfoDTO>> executeDept(List<ABasDeptInfoVO> list) {
-        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);
+        try{
+            if(list!=null && list.size()>0){
+                List<BasDeptInfo> basDeptInfoList=Lists.newArrayList();
+                basDeptInfoList=BeanUtil.listCopyTo(list,BasDeptInfo.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("请输入科室名称!");
+                    }
+                }
+                execute(basDeptInfoList);
 
-            //循环验证数据有效性
-            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("请输入科室名称!");
+                if(logSwitch){
+                    basDeptInfoList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("科室信息-正常","", JSON.toJSONString(list),"","");
+                    });
                 }
+                return RespDTO.onSuc("操作正常!");
+            }else {
+                return RespDTO.onError("未接收到数据!");
             }
-            execute(basDeptInfoList);
-            return RespDTO.onSuc(basDeptInfoDtoList);
-        }else {
-            return RespDTO.onError("未接收到数据!");
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("科室信息-异常","", JSON.toJSONString(list),"",e.getMessage());
+            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()), false);
-                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);
+        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()), false);
+            if (basDeptInfo != null) {
+                s.setGmtModified(new Date());
+                updateE.add(s);
+            } else {
+                s.setGmtCreate(new Date());
+                addE.add(s);
             }
-        }catch (Exception e){
-            log.error(e.getMessage(),e);
-            aMedAbnormalInfoFacade.saveAbnormalInfo("科室信息","", JSON.toJSONString(basDeptInfoList),"",e.getMessage());
+        });
+        if(updateE.size()>0){
+            basDeptInfoService.updateBatchByKey(updateE);
+        }
+        if(addE.size()>0){
+            basDeptInfoService.saveBatch(addE);
         }
     }
 }

+ 46 - 39
src/main/java/com/diagbot/facade/data/ABasDoctorInfoFacade.java

@@ -12,6 +12,7 @@ import com.diagbot.vo.data.ABasDoctorInfoVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -24,7 +25,8 @@ public class ABasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
     private BasDoctorInfoServiceImpl basDoctorInfoService;
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
-
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -50,51 +52,56 @@ public class ABasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
      * @return
      */
     public RespDTO<List<ABasDoctorInfoDTO>> executeDoctor(List<ABasDoctorInfoVO> list) {
-        if(list!=null && list.size()>0){
-            List<BasDoctorInfo> basDoctorInfoList=Lists.newArrayList();
-            List<ABasDoctorInfoDTO> basDoctorDtoList=Lists.newArrayList();
-            basDoctorInfoList=BeanUtil.listCopyTo(list,BasDoctorInfo.class);
-            basDoctorDtoList=BeanUtil.listCopyTo(list,ABasDoctorInfoDTO.class);
-            //循环验证数据有效性
-            for (BasDoctorInfo basDoctorInfo:basDoctorInfoList) {
-                if("".equals(basDoctorInfo.getDoctorId())) {
-                    return RespDTO.onError("请输入医生编码!");
-                }else if(basDoctorInfo.getHospitalId()==null){
-                    return RespDTO.onError("请输入医院编码!");
+        try {
+            if(list!=null && list.size()>0){
+                List<BasDoctorInfo> basDoctorInfoList=Lists.newArrayList();
+                basDoctorInfoList=BeanUtil.listCopyTo(list,BasDoctorInfo.class);
+                //循环验证数据有效性
+                for (BasDoctorInfo basDoctorInfo:basDoctorInfoList) {
+                    if("".equals(basDoctorInfo.getDoctorId())) {
+                        return RespDTO.onError("请输入医生编码!");
+                    }else if(basDoctorInfo.getHospitalId()==null){
+                        return RespDTO.onError("请输入医院编码!");
+                    }
+                }
+                execute(basDoctorInfoList);
+
+                if(logSwitch){
+                    basDoctorInfoList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("医生信息-正常","", JSON.toJSONString(list),"","");
+                    });
                 }
+                return RespDTO.onSuc("操作正常!");
+            }else{
+                return RespDTO.onError("未接收到数据!");
             }
-            execute(basDoctorInfoList);
-            return RespDTO.onSuc(basDoctorDtoList);
-        }else{
-            return RespDTO.onError("未接收到数据!");
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("医生信息-异常","", JSON.toJSONString(list),"",e.getMessage());
+            return RespDTO.onError("数据处理异常,详情查看日志表");
         }
     }
 
     public void execute(List<BasDoctorInfo> basDoctorInfoList){
-        try {
-            List<BasDoctorInfo> addE=Lists.newArrayList();
-            List<BasDoctorInfo> updateE=Lists.newArrayList();
-            basDoctorInfoList.stream().forEach(s -> {
-                BasDoctorInfo basDoctorInfo =this.baseMapper.selectOne(new QueryWrapper<BasDoctorInfo>()
-                        .eq("doctor_id", s.getDoctorId())
-                        .eq("hospital_id", s.getHospitalId()));
-                if (basDoctorInfo != null) {
-                    s.setGmtModified(new Date());
-                    updateE.add(s);
-                } else {
-                    s.setGmtCreate(new Date());
-                    addE.add(s);
-                }
-            });
-            if(updateE.size()>0){
-                basDoctorInfoService.updateBatchByKey(updateE);
-            }
-            if(addE.size()>0){
-                basDoctorInfoService.saveBatch(addE);
+        List<BasDoctorInfo> addE=Lists.newArrayList();
+        List<BasDoctorInfo> updateE=Lists.newArrayList();
+        basDoctorInfoList.stream().forEach(s -> {
+            BasDoctorInfo basDoctorInfo =this.baseMapper.selectOne(new QueryWrapper<BasDoctorInfo>()
+                    .eq("doctor_id", s.getDoctorId())
+                    .eq("hospital_id", s.getHospitalId()));
+            if (basDoctorInfo != null) {
+                s.setGmtModified(new Date());
+                updateE.add(s);
+            } else {
+                s.setGmtCreate(new Date());
+                addE.add(s);
             }
-        }catch (Exception e){
-            log.error(e.getMessage(),e);
-            aMedAbnormalInfoFacade.saveAbnormalInfo("医生信息","", JSON.toJSONString(basDoctorInfoList),"",e.getMessage());
+        });
+        if(updateE.size()>0){
+            basDoctorInfoService.updateBatchByKey(updateE);
+        }
+        if(addE.size()>0){
+            basDoctorInfoService.saveBatch(addE);
         }
     }
 }

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

@@ -3,21 +3,26 @@ package com.diagbot.facade.data;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ABehospitalInfoDTO;
-import com.diagbot.entity.*;
+import com.diagbot.entity.BehospitalInfo;
+import com.diagbot.entity.MedicalRecord;
+import com.diagbot.entity.QcType;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.facade.QcAbnormalFacade;
 import com.diagbot.facade.QcTypeFacade;
 import com.diagbot.service.impl.BehospitalInfoServiceImpl;
-import com.diagbot.util.*;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.ABehospitalInfoVO;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.APlaceFileVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -25,39 +30,24 @@ import java.util.List;
 
 @Component
 public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
-
     @Autowired
     @Qualifier("behospitalInfoServiceImpl")
     private BehospitalInfoServiceImpl behospitalInfoService;
-
     @Autowired
     private QcTypeFacade qcTypeFacade;
-
-    @Autowired
-    private AMedicalRecordFacade aMedicalRecordFacade;
-
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
-
-    @Autowired
-    private QcAbnormalFacade qcAbnormalFacade;
-
-    @Autowired
-    private AMedRecordTypeFacade aMedRecordTypeFacade;
-    @Autowired
-    private SqlProperties sqlProperties;
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
-    private YWAnalysis ywAnalysis = new YWAnalysis();
     /**
      * 终末质控-同步前一天的入院记录
      */
     public void executeBehospital() {
         //String sql="select * from br_inpatientinfo where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        //String sql="select * from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
-        String sql = "select * from AI_V_SENDPATIENTINFO where leavehospitaldate >=to_date('2020-06-01','yyyy-mm-dd') and leavehospitaldate<to_date('2020-10-01','yyyy-mm-dd') and BEHDEPTID is not null";
-//        String sql = sqlProperties.getBeHospitalInfoSql();
+        String sql="select * from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
         List<BehospitalInfo> behospitalInfoList = tzDBConn.getBehospitalInfo(sql);
         execute(behospitalInfoList);
     }
@@ -71,6 +61,7 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
         execute(behospitalInfoList);
     }
 
+
     /**
      * 通过接口更新病人住院记录信息
      * @param list
@@ -80,7 +71,6 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
         try {
             if(list!=null && list.size()>0) {
                 List<BehospitalInfo> behospitalInfoList = Lists.newArrayList();
-                List<ABehospitalInfoDTO> behospitalInfoDtoList = Lists.newArrayList();
                 list.stream().forEach(s->{
                     BehospitalInfo behospitalInfo=new BehospitalInfo();
                     BeanUtil.copyProperties(s,behospitalInfo);
@@ -102,105 +92,91 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
 
                 //循环验证数据有效性
                 for (BehospitalInfo behospitalInfo:behospitalInfoList) {
-                    if(StringUtil.isEmpty(behospitalInfo.getBehospitalCode())) {
+                    if("".equals(behospitalInfo.getBehospitalCode())) {
                         return RespDTO.onError("请输入病人住院编码!");
                     }else if(behospitalInfo.getHospitalId()==null){
                         return RespDTO.onError("请输入医院编码!");
-                    }else if(StringUtil.isEmpty(behospitalInfo.getBehDeptId())){
+                    }else if("".equals(behospitalInfo.getBehDeptId())){
                         return RespDTO.onError("请输入住院科室编码!");
-                    }else if(StringUtil.isEmpty(behospitalInfo.getBehDeptName())){
+                    }else if("".equals(behospitalInfo.getBehDeptName())){
                         return RespDTO.onError("请输入住院科室名称!");
                     }
                 }
                 execute(behospitalInfoList);
-                behospitalInfoDtoList = BeanUtil.listCopyTo(list, ABehospitalInfoDTO.class);
-                return RespDTO.onSuc(behospitalInfoDtoList);
+                if(logSwitch){
+                    behospitalInfoList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-正常","", JSON.toJSONString(list),"","");
+                    });
+                }
+                return RespDTO.onSuc("操作正常!");
             }else{
-                aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记","",JSON.toJSONString(list),"","未接收到数据!");
                 return RespDTO.onError("未接收到数据!");
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记","",JSON.toJSONString(list),"",e.getMessage());
-            return RespDTO.onError(e.getMessage());
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-异常","", JSON.toJSONString(list),"",e.getMessage());
+            return RespDTO.onError("数据处理异常,详情查看日志表");
         }
     }
 
     public void execute(List<BehospitalInfo> behospitalInfoList){
-        try{
-            List<BehospitalInfo> addE = Lists.newLinkedList();
-            List<BehospitalInfo> updateE = Lists.newLinkedList();
-            behospitalInfoList.stream().forEach(s -> {
-                BehospitalInfo behospitalInfo = this.getOne(new QueryWrapper<BehospitalInfo>()
-                        .eq("behospital_code", s.getBehospitalCode())
-                        .eq("hospital_id", s.getHospitalId()), false);
-                String wardCode = s.getWardCode();
-                if(s.getBehDeptId().equals("52103")){
-                    if((wardCode.equals("501") || wardCode.equals("502") || wardCode.equals("520"))){
-                        //产一东(501)、产一西(502)、幸福颐家东(520)对应产一科
-                        s.setBehDeptId("5210301");
-                        s.setBehDeptName("产一");
-                    }else if((wardCode.equals("503") || wardCode.equals("504") || wardCode.equals("521"))){
-                        //产二东(503)、产二西(504)、幸福颐家西(521)对应产二科
-                        s.setBehDeptId("5210302");
-                        s.setBehDeptName("产二");
-                    }
-                }
-                if (behospitalInfo != null) {
-                    s.setGmtModified(new Date());
-                    s.setQcTypeId(initQcTypeId(s));
-                    s.setIsDeleted(IsDeleteEnum.N.getKey());
-                    updateE.add(s);
-                } else {
-                    s.setGmtCreate(new Date());
-                    s.setQcTypeId(initQcTypeId(s));
-                    addE.add(s);
-                }
-            });
-            if(addE.size()>0){
-                behospitalInfoService.saveBatch(addE);
+        List<BehospitalInfo> addE = Lists.newLinkedList();
+        List<BehospitalInfo> updateE = Lists.newLinkedList();
+        behospitalInfoList.stream().forEach(s -> {
+            BehospitalInfo behospitalInfo = this.getOne(new QueryWrapper<BehospitalInfo>()
+                    .eq("behospital_code", s.getBehospitalCode())
+                    .eq("hospital_id", s.getHospitalId())
+                    .eq("is_deleted",IsDeleteEnum.N), false);
+            if (behospitalInfo != null) {
+                s.setGmtModified(new Date());
+                s.setQcTypeId(initQcTypeId(s));
+                updateE.add(s);
+            } else {
+                s.setGmtCreate(new Date());
+                s.setQcTypeId(initQcTypeId(s));
+                addE.add(s);
             }
-            if(updateE.size()>0){
-                behospitalInfoService.updateBatchByKey(updateE);
-            }
-            //aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记",JSON.toJSONString(behospitalInfoList),"","操作成功!");
-        }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记","",JSON.toJSONString(behospitalInfoList),"",e.getMessage());
+        });
+        if(addE.size()>0){
+            behospitalInfoService.saveBatch(addE);
+        }
+        if(updateE.size()>0){
+            behospitalInfoService.updateBatchByKey(updateE);
         }
     }
 
+    /**
+     * 初始化QcTypeId
+     * @param s
+     * @return
+     */
     private Long initQcTypeId(BehospitalInfo s) {
         Long qcTypeId = Long.valueOf("0");
-        List<MedicalRecord> medicalRecord = aMedicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
-                .eq("behospital_code", s.getBehospitalCode())
-                .eq("hospital_id", s.getHospitalId())
-                .eq("mode_id", Long.valueOf("1"))
-                .eq("is_deleted", IsDeleteEnum.N)
-                .orderByDesc("rec_date"));
+        //根据科室查找对应质控类型
         List<QcType> qcTypeList = qcTypeFacade.list(new QueryWrapper<QcType>()
                 .eq("beh_dept_id", s.getBehDeptId())
                 .eq("hospital_id", s.getHospitalId())
                 .eq("is_deleted", IsDeleteEnum.N));
-        if (medicalRecord.size() > 0) {
-                if(qcTypeList == null || qcTypeList.size() == 0){
-                    QcType qcType = qcTypeFacade.getOne(new QueryWrapper<QcType>()
-                            .eq("default_module", 1)
-                            .eq("hospital_id", s.getHospitalId())
-                            .eq("is_deleted", IsDeleteEnum.N));
-                    qcTypeId = qcType.getId();
-                } else if (qcTypeList.size() == 1) {
-                    qcTypeId = qcTypeList.get(0).getId();
-                }else {
-                    QcType qcType = new QcType();
-                    qcTypeList.stream().forEach(ss -> {
-                        if (ss.getSex().equals(s.getSex())) {
-                            qcType.setId(ss.getId());
-                        }
-                    });
+        if(qcTypeList == null || qcTypeList.size() == 0){
+            //无质控类型时,新增后初始化
+            QcType qcType = qcTypeFacade.getOne(new QueryWrapper<QcType>()
+                    .eq("default_module", 1)
+                    .eq("hospital_id", s.getHospitalId())
+                    .eq("is_deleted", IsDeleteEnum.N));
+            qcTypeId = qcType.getId();
+        } else if (qcTypeList.size() == 1) {
+            qcTypeId = qcTypeList.get(0).getId();
+        }else {
+            //查找是否有性别区分质控类型
+            for (QcType qcType:qcTypeList) {
+                if (qcType.getSex().equals(s.getSex())) {
                     qcTypeId = qcType.getId();
                 }
+            }
         }
         return qcTypeId;
     }
+
     public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
         try {
             //验证数据是否存在
@@ -221,7 +197,7 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 return RespDTO.onSuc(flag);
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-删除",aDeleteFlagVO.getRecId(),JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-删除","",JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
             return RespDTO.onError(e.getMessage());
         }
     }
@@ -229,9 +205,7 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
     public RespDTO placeFileFlag(APlaceFileVO aPlaceFileVO){
         try {
             //验证数据是否存在
-            if(StringUtil.isBlank(aPlaceFileVO.getIsProfile())){
-                return RespDTO.onError("请选择是否归档!");
-            } else if(StringUtil.isBlank(aPlaceFileVO.getBehospitalCode())){
+            if(StringUtil.isBlank(aPlaceFileVO.getBehospitalCode())){
                 return RespDTO.onError("请输入病人住院编码!");
             }else if(aPlaceFileVO.getHospitalId()==null){
                 return RespDTO.onError("请输入医院编码!");
@@ -240,14 +214,15 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 updateWrapper.eq("behospital_code", aPlaceFileVO.getBehospitalCode())
                         .eq("hospital_id", aPlaceFileVO.getHospitalId())
                         .eq("is_deleted",IsDeleteEnum.N)
-                        .set("is_placefile",aPlaceFileVO.getIsProfile())
-                        .set("placefile_date",StringUtil.isNotEmpty(aPlaceFileVO.getPlaceFileDate())?DateUtil.formatDateTime(DateUtil.now()):DateUtil.parseDateTime(aPlaceFileVO.getPlaceFileDate()))
+                        .set("is_placefile","1")
+                        .set("placefile_date",aPlaceFileVO.getPlaceFileDate().isEmpty()?DateUtil.formatDateTime(DateUtil.now()):DateUtil.parseDateTime(aPlaceFileVO.getPlaceFileDate()))
                         .set("gmt_modified", DateUtil.now());
+
                 Boolean flag=update(new BehospitalInfo(),updateWrapper);
                 return RespDTO.onSuc(flag);
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-归档","", JSON.toJSONString(aPlaceFileVO),"",e.getMessage());
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-归档","",JSON.toJSONString(aPlaceFileVO),"",e.getMessage());
             return RespDTO.onError(e.getMessage());
         }
     }

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

@@ -4,18 +4,19 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.data.ADoctorAdviceDTO;
 import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.enums.IsDeleteEnum;
-import com.diagbot.enums.data.DaPrescriptionEnum;
-import com.diagbot.enums.data.DoctorAdviceTypeEnum;
 import com.diagbot.service.impl.DoctorAdviceServiceImpl;
-import com.diagbot.util.*;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.ADoctorAdviceVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -27,12 +28,10 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
     @Autowired
     @Qualifier("doctorAdviceServiceImpl")
     private DoctorAdviceServiceImpl doctorAdviceService;
-
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
-
-    @Autowired
-    private SqlProperties sqlProperties;
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -41,10 +40,7 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
      */
     public void executeDoctorAdvice() {
         //String sql="select * from br_doctadvice where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        //String sql="select * from br_doctadvice where BRZYID in (select BRZYID from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) and requestflag='1')";
-//        String sql = sqlProperties.getDoctorAdviceSql();
-//        String sql ="select * from ai_v_senddoctoradvice where behospitalcode in(select behospitalcode from AI_V_SENDPATIENTINFO where leavehospitaldate >=to_date('2020-10-01','yyyy-mm-dd') and leavehospitaldate<to_date('2020-11-22','yyyy-mm-dd'))";
-        String sql ="select * from ai_v_senddoctoradvice where behospitalcode in()";
+        String sql="select * from br_doctadvice where BRZYID in (select BRZYID from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) and requestflag='1')";
         List<DoctorAdvice> doctorAdviceList = tzDBConn.getDoctorAdvice(sql);
         execute(doctorAdviceList);
     }
@@ -59,7 +55,7 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
      * @param list
      * @return
      */
-    public RespDTO<List<ADoctorAdviceDTO>> executeDoctorAdvice(List<ADoctorAdviceVO> list) {
+    public RespDTO executeDoctorAdvice(List<ADoctorAdviceVO> list) {
         try {
             if(list!=null && list.size()>0){
                 //循环验证数据有效性
@@ -74,7 +70,6 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
                 }
                 //初始、格式化数据
                 List<DoctorAdvice> doctorAdviceList=Lists.newArrayList();
-                List<ADoctorAdviceDTO> doctorAdviceDtoList=Lists.newArrayList();
                 list.stream().forEach(s->{
                     DoctorAdvice doctorAdvice=new DoctorAdvice();
                     BeanUtil.copyProperties(s,doctorAdvice);
@@ -84,55 +79,48 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
                     if(StringUtil.isNotBlank(s.getDaStopDate())){
                         doctorAdvice.setDaStopDate(DateUtil.parseDateTime(s.getDaStopDate()));
                     }
-                    if(StringUtil.isNotEmpty(s.getDoctorAdviceType())){
-                        doctorAdvice.setDoctorAdviceType(DoctorAdviceTypeEnum.getName(s.getDoctorAdviceType().toUpperCase()));
-                    }
-                    if(StringUtil.isNotEmpty(s.getDaPrescriptionType())){
-                        doctorAdvice.setDaPrescriptionType(DaPrescriptionEnum.getName(s.getDaPrescriptionType().toUpperCase()));
-                    }
                     doctorAdviceList.add(doctorAdvice);
                 });
                 execute(doctorAdviceList);
-                doctorAdviceDtoList=BeanUtil.listCopyTo(list,ADoctorAdviceDTO.class);
-                return RespDTO.onSuc(doctorAdviceDtoList);
+                if(logSwitch){
+                    doctorAdviceList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱-正常","", JSON.toJSONString(list),"","");
+                    });
+                }
+                return RespDTO.onSuc("操作正常!");
             }else{
-                aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱","",JSON.toJSONString(list),"","未接收到数据!");
                 return RespDTO.onError("未接收到数据!");
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱","",JSON.toJSONString(list),"",e.getMessage());
-            return RespDTO.onError(e.getMessage());
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱-异常","", JSON.toJSONString(list),"",e.getMessage());
+            return RespDTO.onError("数据处理异常,详情查看日志表");
         }
     }
 
     public void execute(List<DoctorAdvice> doctorAdviceList){
-        try {
-            List<DoctorAdvice> addE = Lists.newLinkedList();
-            List<DoctorAdvice> updateE = Lists.newLinkedList();
-            if (doctorAdviceList != null && doctorAdviceList.size() > 0) {
-                doctorAdviceList.stream().forEach(s -> {
-                    DoctorAdvice doctorAdvice = this.getOne(new QueryWrapper<DoctorAdvice>()
-                            .eq("doctor_advice_id", s.getDoctorAdviceId())
-                            .eq("hospital_id", s.getHospitalId())
-                            .eq("behospital_code",s.getBehospitalCode()), false);
-                    if (doctorAdvice != null) {
-                        s.setGmtModified(new Date());
-                        updateE.add(s);
-                    } else {
-                        s.setGmtCreate(new Date());
-                        addE.add(s);
-                    }
-                });
-            }
-            if(addE.size()>0){
-                doctorAdviceService.saveBatch(addE);
-            }
-            if(updateE.size()>0){
-                doctorAdviceService.updateBatchByKey(updateE);
-            }
-            //aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱",JSON.toJSONString(doctorAdviceList),"","操作成功!");
-        }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱","",JSON.toJSONString(doctorAdviceList),"",e.getMessage());
+        List<DoctorAdvice> addE = Lists.newLinkedList();
+        List<DoctorAdvice> updateE = Lists.newLinkedList();
+        if (doctorAdviceList != null && doctorAdviceList.size() > 0) {
+            doctorAdviceList.stream().forEach(s -> {
+                DoctorAdvice doctorAdvice = this.getOne(new QueryWrapper<DoctorAdvice>()
+                        .eq("doctor_advice_id", s.getDoctorAdviceId())
+                        .eq("hospital_id", s.getHospitalId())
+                        .eq("behospital_code",s.getBehospitalCode()), false);
+                if (doctorAdvice != null) {
+                    s.setGmtModified(new Date());
+                    updateE.add(s);
+                } else {
+                    s.setGmtCreate(new Date());
+                    addE.add(s);
+                }
+            });
+        }
+        if(addE.size()>0){
+            doctorAdviceService.saveBatch(addE);
+        }
+        if(updateE.size()>0){
+            doctorAdviceService.updateBatchByKey(updateE);
         }
     }
 
@@ -150,7 +138,7 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
                 updateWrapper.eq("doctor_advice_id", aDeleteFlagVO.getDoctorAdviceId())
                         .eq("behospital_code", aDeleteFlagVO.getBehospitalCode())
                         .eq("hospital_id", aDeleteFlagVO.getHospitalId())
-                        .eq("is_deleted",IsDeleteEnum.N)
+                        .eq("is_deleted", IsDeleteEnum.N)
                         .set("is_deleted",IsDeleteEnum.Y)
                         .set("gmt_modified", DateUtil.now());
 
@@ -159,7 +147,7 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
                 return RespDTO.onSuc(flag);
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱-删除",aDeleteFlagVO.getRecId(), JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院医嘱-删除","",JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
             return RespDTO.onError(e.getMessage());
         }
     }

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

@@ -8,12 +8,16 @@ import com.diagbot.dto.data.AHomeDiagnoseDTO;
 import com.diagbot.entity.HomeDiagnoseInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.HomeDiagnoseInfoServiceImpl;
-import com.diagbot.util.*;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AHomeDiagnoseVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -25,13 +29,10 @@ public class AHomeDiagnoseInfoFacade extends HomeDiagnoseInfoServiceImpl{
     @Autowired
     @Qualifier("homeDiagnoseInfoServiceImpl")
     private HomeDiagnoseInfoServiceImpl homeDiagnoseInfoService;
-
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
-
-    @Autowired
-    private SqlProperties sqlProperties;
-
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -41,9 +42,7 @@ public class AHomeDiagnoseInfoFacade extends HomeDiagnoseInfoServiceImpl{
     public void executeHomeDiagnose() {
         //String sql="select * from br_recdiagnose where BASYID in (select BASYID from br_rechome where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate())";//今年的数据
         //前一天的数据
-        //String sql="select * from br_recdiagnose where BASYID in (select BASYID from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-1,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)))";
-//        String sql = sqlProperties.getHomeDiagnoseInfoSql();
-        String sql ="select * from ai_v_sendhomepageing_cyzd where homepageid in()";
+        String sql="select * from br_recdiagnose where BASYID in (select BASYID from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-1,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)))";
         List<HomeDiagnoseInfo> homeDiagnoseList = tzDBConn.getHomeDiagnose(sql);
         execute(homeDiagnoseList);
     }
@@ -54,75 +53,54 @@ public class AHomeDiagnoseInfoFacade extends HomeDiagnoseInfoServiceImpl{
      * @return
      */
     public RespDTO<List<AHomeDiagnoseDTO>> executeHomeDiagnose(List<AHomeDiagnoseVO> list) {
-        try {
+        try{
             if(list!=null && list.size()>0){
                 List<HomeDiagnoseInfo> homeDiagnoseList=Lists.newArrayList();
-                List<AHomeDiagnoseDTO> homeDiagnoseDtoList=Lists.newArrayList();
-
                 homeDiagnoseList=BeanUtil.listCopyTo(list,HomeDiagnoseInfo.class);
-                homeDiagnoseDtoList=BeanUtil.listCopyTo(list,AHomeDiagnoseDTO.class);
                 execute(homeDiagnoseList);
-                return RespDTO.onSuc(homeDiagnoseDtoList);
+                if(logSwitch){
+                    homeDiagnoseList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页医嘱-正常","", JSON.toJSONString(list),"","");
+                    });
+                }
+                return RespDTO.onSuc("操作正常!");
             }else{
-                aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-诊断","",JSON.toJSONString(list),"","未接收到数据!");
                 return RespDTO.onError("未接收到数据!");
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-诊断","",JSON.toJSONString(list),"",e.getMessage());
-            return RespDTO.onError(e.getMessage());
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页医嘱-异常","", JSON.toJSONString(list),"",e.getMessage());
+            return RespDTO.onError("数据处理异常,详情查看日志表");
         }
+
     }
 
     public void execute(List<HomeDiagnoseInfo> homeDiagnoseList){
-        try {
-            List<HomeDiagnoseInfo> addE = Lists.newLinkedList();
-            List<HomeDiagnoseInfo> updateE = Lists.newLinkedList();
-            List<String> tempDiagnoseOrderNo = Lists.newLinkedList();
-            List<String> tempHomePageId = Lists.newLinkedList();
-            List<HomeDiagnoseInfo> tempHomeDiagnoseList = homeDiagnoseInfoService.list(new QueryWrapper<HomeDiagnoseInfo>()
-                    .eq("home_page_id",homeDiagnoseList.get(0).getHomePageId())
-                    .eq("hospital_id",homeDiagnoseList.get(0).getHospitalId())
-                    .eq("is_deleted",IsDeleteEnum.N));
-            if (homeDiagnoseList != null && homeDiagnoseList.size() > 0) {
-                homeDiagnoseList.stream().forEach(s -> {
-                    if(s.getHomePageId()!=null && !"".equals(s.getDiagnoseOrderNo())){
-                        tempDiagnoseOrderNo.add(s.getDiagnoseOrderNo());
-                        tempHomePageId.add(s.getHomePageId());
-                        HomeDiagnoseInfo diagnoseInfo = this.getOne(new QueryWrapper<HomeDiagnoseInfo>()
-                                .eq("home_page_id", s.getHomePageId())
-                                .eq("hospital_id", s.getHospitalId())
-                                .eq("diagnose_order_no", s.getDiagnoseOrderNo()), false);
-                        if (diagnoseInfo != null) {
-                            s.setGmtModified(new Date());
-                            updateE.add(s);
-                        } else {
-                            s.setGmtCreate(new Date());
-                            addE.add(s);
-                        }
+        List<HomeDiagnoseInfo> addE = Lists.newLinkedList();
+        List<HomeDiagnoseInfo> updateE = Lists.newLinkedList();
+        if (homeDiagnoseList != null && homeDiagnoseList.size() > 0) {
+            homeDiagnoseList.stream().forEach(s -> {
+                if(s.getHomePageId()!=null && !"".equals(s.getDiagnoseOrderNo())){
+                    HomeDiagnoseInfo diagnoseInfo = this.getOne(new QueryWrapper<HomeDiagnoseInfo>()
+                            .eq("home_page_id", s.getHomePageId())
+                            .eq("hospital_id", s.getHospitalId())
+                            .eq("diagnose_order_no", s.getDiagnoseOrderNo()), false);
+                    if (diagnoseInfo != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
                     }
-                });
-            }
-            if(tempHomeDiagnoseList != null && tempHomeDiagnoseList.size() > 0){
-                tempHomeDiagnoseList.stream().forEach(s ->{
-                    if(!tempDiagnoseOrderNo.contains(s.getDiagnoseOrderNo()) && tempHomePageId.contains(s.getHomePageId())){
-                        homeDiagnoseInfoService.remove(new QueryWrapper<HomeDiagnoseInfo>()
-                                .eq("home_page_id",s.getHomePageId())
-                                .eq("hospital_id",s.getHospitalId())
-                                .eq("diagnose_order_no",s.getDiagnoseOrderNo()));
-                    }
-                });
-            }
-            if(addE.size()>0){
-                homeDiagnoseInfoService.saveBatch(addE);
-            }
-            if(updateE.size()>0){
-                homeDiagnoseInfoService.updateBatchByKey(updateE);
-            }
-            //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-诊断",JSON.toJSONString(homeDiagnoseList),"","操作成功!");
-        }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-诊断","",JSON.toJSONString(homeDiagnoseList),"",e.getMessage());
+                }
+            });
+        }
+        if(addE.size()>0){
+            homeDiagnoseInfoService.saveBatch(addE);
+        }
+        if(updateE.size()>0){
+            homeDiagnoseInfoService.updateBatchByKey(updateE);
         }
-
     }
 
     public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
@@ -139,7 +117,7 @@ public class AHomeDiagnoseInfoFacade extends HomeDiagnoseInfoServiceImpl{
                 updateWrapper.eq("home_page_id", aDeleteFlagVO.getHomePageId())
                         .eq("hospital_id", aDeleteFlagVO.getHospitalId())
                         .eq("diagnose_order_no", aDeleteFlagVO.getDiagnoseOrderNo())
-                        .eq("is_deleted",IsDeleteEnum.N)
+                        .eq("is_deleted", IsDeleteEnum.N)
                         .set("is_deleted",IsDeleteEnum.Y)
                         .set("gmt_modified", DateUtil.now());
 

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

@@ -8,12 +8,16 @@ import com.diagbot.dto.data.AHomeOperationDTO;
 import com.diagbot.entity.HomeOperationInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.HomeOperationInfoServiceImpl;
-import com.diagbot.util.*;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AHomeOperationVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -25,12 +29,10 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
     @Autowired
     @Qualifier("homeOperationInfoServiceImpl")
     private HomeOperationInfoServiceImpl homeOperationInfoService;
-
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
-
-    @Autowired
-    private SqlProperties sqlProperties;
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -40,9 +42,7 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
     public void executeHomeOperation() {
         //String sql="select * from br_recoperation where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
         //前一天数据
-        //String sql="select * from br_recoperation where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
-//        String sql = sqlProperties.getHomeOperationInfoSql();
-        String sql = "select * from ai_v_sendhomepageing_ssqk where homepageid in()";
+        String sql="select * from br_recoperation where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
         List<HomeOperationInfo> homeOperationList = tzDBConn.getHomeOperation(sql);
         execute(homeOperationList);
     }
@@ -52,71 +52,61 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
      * @param list
      * @return
      */
-    public List<AHomeOperationDTO> executeHomeOperation(List<AHomeOperationVO> list) {
-        List<HomeOperationInfo> homeOperationList=Lists.newArrayList();
-        List<AHomeOperationDTO> homeOperationDtoList=Lists.newArrayList();
-        if(list!=null && list.size()>0){
-            list.stream().forEach(s->{
-                HomeOperationInfo homeOperationInfo=new HomeOperationInfo();
-                BeanUtil.copyProperties(s,homeOperationInfo);
-                homeOperationInfo.setOperationDate(DateUtil.parseDateTime(s.getOperationDate()));
-                homeOperationList.add(homeOperationInfo);
-            });
-            homeOperationDtoList=BeanUtil.listCopyTo(list,AHomeOperationDTO.class);
-            execute(homeOperationList);
+    public RespDTO executeHomeOperation(List<AHomeOperationVO> list) {
+        try {
+            List<HomeOperationInfo> homeOperationList=Lists.newArrayList();
+            List<AHomeOperationDTO> homeOperationDtoList=Lists.newArrayList();
+            if(list!=null && list.size()>0){
+                list.stream().forEach(s->{
+                    HomeOperationInfo homeOperationInfo=new HomeOperationInfo();
+                    BeanUtil.copyProperties(s,homeOperationInfo);
+                    homeOperationInfo.setOperationDate(DateUtil.parseDateTime(s.getOperationDate()));
+                    homeOperationList.add(homeOperationInfo);
+                });
+                homeOperationDtoList=BeanUtil.listCopyTo(list,AHomeOperationDTO.class);
+                execute(homeOperationList);
+                if(logSwitch){
+                    homeOperationList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页手术-正常","", JSON.toJSONString(list),"","");
+                    });
+                }
+                return RespDTO.onSuc("操作正常!");
+            }else{
+                return RespDTO.onError("未接收到数据!");
+            }
+        }catch (Exception e){
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页手术-异常","",JSON.toJSONString(list),"",e.getMessage());
+            return RespDTO.onError("数据处理异常,详情查看日志表");
         }
-        return homeOperationDtoList;
     }
 
     public void execute(List<HomeOperationInfo> homeOperationList){
-        try {
-            List<HomeOperationInfo> addE = Lists.newLinkedList();
-            List<HomeOperationInfo> updateE = Lists.newLinkedList();
-            List<String> tempOperationOrderNo = Lists.newLinkedList();
-            List<String> tempHomePageId = Lists.newLinkedList();
-            List<HomeOperationInfo> homeOperationInfoList = homeOperationInfoService.list(new QueryWrapper<HomeOperationInfo>()
-                    .eq("home_page_id",homeOperationList.get(0).getHomePageId())
-                    .eq("hospital_id",homeOperationList.get(0).getHospitalId())
-                    .eq("is_deleted",IsDeleteEnum.N));
-            if (homeOperationList != null && homeOperationList.size() > 0) {
-                homeOperationList.stream().forEach(s -> {
-                    if(s.getHomePageId()!=null && !"".equals(s.getOperationOrderNo())) {
-                        tempOperationOrderNo.add(s.getOperationOrderNo());
-                        tempHomePageId.add(s.getHomePageId());
-                        QueryWrapper<HomeOperationInfo> queryWrapper = new QueryWrapper<>();
-                        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, false);
-                        if (operationInfo != null) {
-                            s.setGmtModified(new Date());
-                            updateE.add(s);
-                        } else {
-                            s.setGmtCreate(new Date());
-                            addE.add(s);
-                        }
-                    }
-                });
-            }
-            if(homeOperationInfoList != null && homeOperationInfoList.size() > 0){
-                homeOperationInfoList.stream().forEach(s ->{
-                    if(!tempOperationOrderNo.contains(s.getOperationOrderNo()) && tempHomePageId.contains(s.getHomePageId())){
-                        homeOperationInfoService.remove(new QueryWrapper<HomeOperationInfo>()
-                                .eq("home_page_id",s.getHomePageId())
-                                .eq("hospital_id",s.getHospitalId())
-                                .eq("operation_order_no",s.getOperationOrderNo()));
+        List<HomeOperationInfo> addE = Lists.newLinkedList();
+        List<HomeOperationInfo> updateE = Lists.newLinkedList();
+        if (homeOperationList != null && homeOperationList.size() > 0) {
+            homeOperationList.stream().forEach(s -> {
+                if(s.getHomePageId()!=null && !"".equals(s.getOperationOrderNo())) {
+                    QueryWrapper<HomeOperationInfo> queryWrapper = new QueryWrapper<>();
+                    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, false);
+                    if (operationInfo != null) {
+                        s.setGmtModified(new Date());
+                        updateE.add(s);
+                    } else {
+                        s.setGmtCreate(new Date());
+                        addE.add(s);
                     }
-                });
-            }
-            if(addE.size()>0){
-                homeOperationInfoService.saveBatch(addE);
-            }
-            if(updateE.size()>0){
-                homeOperationInfoService.updateBatchByKey(updateE);
-            }
-            //aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-手术",JSON.toJSONString(homeOperationList),"","操作正常!");
-        }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-手术","",JSON.toJSONString(homeOperationList),"",e.getMessage());
+                }
+            });
+        }
+        if(addE.size()>0){
+            homeOperationInfoService.saveBatch(addE);
+        }
+        if(updateE.size()>0){
+            homeOperationInfoService.updateBatchByKey(updateE);
         }
     }
 
@@ -134,7 +124,7 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
                 updateWrapper.eq("home_page_id", aDeleteFlagVO.getHomePageId())
                         .eq("hospital_id", aDeleteFlagVO.getHospitalId())
                         .eq("operation_order_no", aDeleteFlagVO.getOperationOrderNo())
-                        .eq("is_deleted",IsDeleteEnum.N)
+                        .eq("is_deleted", IsDeleteEnum.N)
                         .set("is_deleted",IsDeleteEnum.Y)
                         .set("gmt_modified", DateUtil.now());
 
@@ -143,7 +133,7 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
                 return RespDTO.onSuc(flag);
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-手术-删除",aDeleteFlagVO.getRecId(), JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
+            aMedAbnormalInfoFacade.saveAbnormalInfo("病案首页-手术-删除","",JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
             return RespDTO.onError(e.getMessage());
         }
     }

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

@@ -17,6 +17,7 @@ import com.diagbot.vo.data.*;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -50,6 +51,9 @@ public class AHomePageFacade extends HomePageServiceImpl{
     private SqlProperties sqlProperties;
 
 
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**

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

@@ -2,88 +2,81 @@ package com.diagbot.facade.data;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.AMedCrisisDTO;
-import com.diagbot.entity.HomePage;
 import com.diagbot.entity.MedCrisisInfo;
-import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedCrisisInfoServiceImpl;
-import com.diagbot.util.*;
-import com.diagbot.vo.data.ADeleteFlagVO;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
 import com.diagbot.vo.data.AMedCrisisVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
 import java.util.List;
 
 @Component
-public class AMedCrisisFacade extends MedCrisisInfoServiceImpl{
+public class AMedCrisisFacade extends MedCrisisInfoServiceImpl {
 
     @Autowired
     @Qualifier("medCrisisInfoServiceImpl")
     private MedCrisisInfoServiceImpl medCrisisInfoService;
-
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
-
-    @Autowired
-    private SqlProperties sqlProperties;
-    private TZDBConn tzDBConn = new TZDBConn();
-
-    public void executeMedCrisisResult() {
-        String sql = sqlProperties.getCrisisInfoSql();
-        List<MedCrisisInfo> medCrisisInfoList = tzDBConn.getMedCrisisInfo(sql);
-        execute(medCrisisInfoList);
-    }
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
 
     public RespDTO<List<AMedCrisisDTO>> executeMedCrisis(List<AMedCrisisVO> list) {
-        try {
-            if(list!=null && list.size()>0){
+        try{
+            if (list != null && list.size() > 0) {
                 //循环验证数据有效性
-                for (AMedCrisisVO aMedCrisisVO:list) {
-                    if("".equals(aMedCrisisVO.getRecId())){
+                for (AMedCrisisVO aMedCrisisVO : list) {
+                    if ("".equals(aMedCrisisVO.getRecId())) {
                         return RespDTO.onError("请输入文书编码!");
-                    }else if("".equals(aMedCrisisVO.getBehospitalCode())) {
+                    } else if ("".equals(aMedCrisisVO.getBehospitalCode())) {
                         return RespDTO.onError("请输入病人住院编码!");
-                    }else if(aMedCrisisVO.getHospitalId()==null){
+                    } else if (aMedCrisisVO.getHospitalId() == null) {
                         return RespDTO.onError("请输入医院编码!");
-                    }else if("".equals(aMedCrisisVO.getRecType())){
+                    } else if ("".equals(aMedCrisisVO.getRecType())) {
                         return RespDTO.onError("请输入危急值类型!");
                     }
                 }
 
-                List<MedCrisisInfo> medCrisisList=Lists.newArrayList();
-                list.stream().forEach(s->{
-                    MedCrisisInfo medCrisisInfo=new MedCrisisInfo();
-                    BeanUtil.copyProperties(s,medCrisisInfo);
+                List<MedCrisisInfo> medCrisisList = Lists.newArrayList();
+                list.stream().forEach(s -> {
+                    MedCrisisInfo medCrisisInfo = new MedCrisisInfo();
+                    BeanUtil.copyProperties(s, medCrisisInfo);
                     medCrisisInfo.setRepDate(DateUtil.parseDateTime(s.getRepDate()));
                     medCrisisInfo.setSendDate(DateUtil.parseDateTime(s.getSendDate()));
                     medCrisisList.add(medCrisisInfo);
                 });
                 execute(medCrisisList);
 
-                List<AMedCrisisDTO> medCrisisDtoList=BeanUtil.listCopyTo(list,AMedCrisisDTO.class);
-                return RespDTO.onSuc(medCrisisDtoList);
-            }else{
-                aMedAbnormalInfoFacade.saveAbnormalInfo("危急值","",JSON.toJSONString(list),"","未接收到数据!");
+                if(logSwitch){
+                    medCrisisList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("危急值信息-正常","", JSON.toJSONString(list),"","");
+                    });
+                }
+                return RespDTO.onSuc("操作正常!");
+            } else {
                 return RespDTO.onError("未接收到数据!");
             }
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("危急值","",JSON.toJSONString(list),"",e.getMessage());
-            return RespDTO.onError(e.getMessage());
+            log.error(e.getMessage(),e);
+            aMedAbnormalInfoFacade.saveAbnormalInfo("危急值信息-异常","", JSON.toJSONString(list),"",e.getMessage());
+            return RespDTO.onError("数据处理异常,详情查看日志表");
         }
     }
 
-    public void execute(List<MedCrisisInfo> medCrisisList){
-        try {
-            List<MedCrisisInfo> addE = Lists.newLinkedList();
-            List<MedCrisisInfo> updateE = Lists.newLinkedList();
-            if (medCrisisList != null && medCrisisList.size() > 0) {
-                medCrisisList.stream().forEach(s -> {
+    public void execute(List<MedCrisisInfo> medCrisisList) {
+        List<MedCrisisInfo> addE = Lists.newLinkedList();
+        List<MedCrisisInfo> updateE = Lists.newLinkedList();
+        if (medCrisisList != null && medCrisisList.size() > 0) {
+            medCrisisList.forEach(s -> {
+                try {
                     MedCrisisInfo medCrisisInfo = this.getOne(new QueryWrapper<MedCrisisInfo>()
                             .eq("rec_id", s.getRecId())
                             .eq("hospital_id", s.getHospitalId())
@@ -96,45 +89,17 @@ public class AMedCrisisFacade extends MedCrisisInfoServiceImpl{
                         s.setGmtCreate(new Date());
                         addE.add(s);
                     }
-                });
-            }
-            if(addE.size()>0){
-                medCrisisInfoService.saveBatch(addE);
-            }
-            if(updateE.size()>0){
-                medCrisisInfoService.updateBatchByKey(updateE);
-            }
-            //aMedAbnormalInfoFacade.saveAbnormalInfo("危急值",JSON.toJSONString(medCrisisList),"","操作成功!");
-        }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("危急值","",JSON.toJSONString(medCrisisList),"",e.getMessage());
+                } catch (Exception e) {
+                    log.error(e.getMessage(), e);
+                    aMedAbnormalInfoFacade.saveAbnormalInfo("数据解析", s.getRecId(), JSON.toJSONString(medCrisisList), "", e.getMessage());
+                }
+            });
         }
-    }
-
-    public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
-        try {
-            //验证数据是否存在
-            if(StringUtil.isEmpty(aDeleteFlagVO.getRecId())){
-                return RespDTO.onError("请输入文书编码!");
-            }else if(StringUtil.isEmpty(aDeleteFlagVO.getBehospitalCode())) {
-                return RespDTO.onError("请输入病人住院编码!");
-            }else if(aDeleteFlagVO.getHospitalId()==null){
-                return RespDTO.onError("请输入医院编码!");
-            }else {
-                UpdateWrapper<MedCrisisInfo> updateWrapper=new UpdateWrapper<>();
-                updateWrapper.eq("home_page_id", aDeleteFlagVO.getHomePageId())
-                        .eq("hospital_id", aDeleteFlagVO.getHospitalId())
-                        .eq("operation_order_no", aDeleteFlagVO.getOperationOrderNo())
-                        .eq("is_deleted",IsDeleteEnum.N)
-                        .set("is_deleted",IsDeleteEnum.Y)
-                        .set("gmt_modified", DateUtil.now());
-
-                Boolean flag=update(new MedCrisisInfo(),updateWrapper);
-                //aMedAbnormalInfoFacade.saveAbnormalInfo("危急值-删除",JSON.toJSONString(aDeleteFlagVO),JSON.toJSONString(RespDTO.onSuc(flag)),"操作成功!");
-                return RespDTO.onSuc(flag);
-            }
-        }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("危急值-删除","",JSON.toJSONString(aDeleteFlagVO),"",e.getMessage());
-            return RespDTO.onError(e.getMessage());
+        if (addE.size() > 0) {
+            medCrisisInfoService.saveBatch(addE);
+        }
+        if (updateE.size() > 0) {
+            medCrisisInfoService.updateBatchByKey(updateE);
         }
     }
 }

+ 58 - 41
src/main/java/com/diagbot/facade/data/AMedLisInfoFacade.java

@@ -7,14 +7,16 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.MedLisInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedLisInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
-import com.diagbot.util.SqlProperties;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.ADeleteFlagVO;
+import com.diagbot.vo.data.AMedLisInfoVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -24,57 +26,72 @@ import java.util.List;
 public class AMedLisInfoFacade extends MedLisInfoServiceImpl {
 
     private TZDBConn tzDBConn = new TZDBConn();
-
-    @Autowired
-    private SqlProperties sqlProperties;
-
     @Autowired
     @Qualifier("medLisInfoServiceImpl")
     private MedLisInfoServiceImpl medLisInfoServiceImpl;
-
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
+    @Value("${log_switch.enable}")
+    private boolean logSwitch;
 
-
-    /**
-     * 同步前一天
-     */
-    public void executeMedPacsResult() {
-        //String sql="select * from br_rechome where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        //同步前一天的数据
-        //String sql="select * from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
-        String sql = sqlProperties.getLisInfoSql();
-        List<MedLisInfo> medLisInfoList= tzDBConn.getLisInfo(sql);
-        execute(medLisInfoList);
-    }
-
-    public void execute(List<MedLisInfo> medLisInfoList){
+    public RespDTO  dealData(List<AMedLisInfoVO> list) {
         try {
-            List<MedLisInfo> addE = Lists.newLinkedList();
-            List<MedLisInfo> updateE = Lists.newLinkedList();
-            if (medLisInfoList != null && medLisInfoList.size() > 0) {
-                medLisInfoList.stream().forEach(s -> {
-                    MedLisInfo medLisInfo = this.getOne(new QueryWrapper<MedLisInfo>()
-                            .eq("rep_no", s.getRepNo())
-                            .eq("hospital_id", s.getHospitalId()), false);
-                    if (medLisInfo != null) {
-                        s.setGmtModified(new Date());
-                        updateE.add(s);
-                    } else {
-                        s.setGmtCreate(new Date());
-                        addE.add(s);
+            if(list!=null && list.size()>0){
+                //循环验证数据有效性
+                for (AMedLisInfoVO aMedLisInfoVO:list) {
+                    if(StringUtil.isEmpty(aMedLisInfoVO.getRepNo())){
+                        return RespDTO.onError("请输入报告单号!");
+                    }else if(aMedLisInfoVO.getHospitalId()==null){
+                        return RespDTO.onError("请输入医院编码!");
+                    }else if(StringUtil.isEmpty(aMedLisInfoVO.getBehospitalCode())) {
+                        return RespDTO.onError("请输入病人住院编码!");
                     }
+                }
+
+                List<MedLisInfo> medLisInfoList=Lists.newArrayList();
+                list.stream().forEach(s->{
+                    MedLisInfo medLisInfo=new MedLisInfo();
+                    BeanUtil.copyProperties(s,medLisInfo);
+                    medLisInfoList.add(medLisInfo);
                 });
+                execute(medLisInfoList);
+                if(logSwitch){
+                    medLisInfoList.forEach(s->{
+                        aMedAbnormalInfoFacade.saveAbnormalInfo("检验信息-正常","", JSON.toJSONString(list),"","");
+                    });
+                }
+                return RespDTO.onSuc("操作正常!");
+            }else{
+                return RespDTO.onError("未接收到数据!");
             }
-            if(addE.size()>0){
-                medLisInfoServiceImpl.saveBatch(addE);
-            }
-            if(updateE.size()>0){
-                this.baseMapper.updateBatchByKey(updateE);
-            }
-            //aMedAbnormalInfoFacade.saveAbnormalInfo("检查",JSON.toJSONString(medPacsResultList),"","操作成功!");
         }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("检验信息-保存异常","",JSON.toJSONString(medLisInfoList),"",e.getMessage());
+            aMedAbnormalInfoFacade.saveAbnormalInfo("检验信息-异常","",JSON.toJSONString(list),"",e.getMessage());
+            return RespDTO.onError(e.getMessage());
+        }
+    }
+    
+    public void execute(List<MedLisInfo> medLisInfoList){
+        List<MedLisInfo> addE = Lists.newLinkedList();
+        List<MedLisInfo> updateE = Lists.newLinkedList();
+        if (medLisInfoList != null && medLisInfoList.size() > 0) {
+            medLisInfoList.stream().forEach(s -> {
+                MedLisInfo medLisInfo = this.getOne(new QueryWrapper<MedLisInfo>()
+                        .eq("rep_no", s.getRepNo())
+                        .eq("hospital_id", s.getHospitalId()), false);
+                if (medLisInfo != null) {
+                    s.setGmtModified(new Date());
+                    updateE.add(s);
+                } else {
+                    s.setGmtCreate(new Date());
+                    addE.add(s);
+                }
+            });
+        }
+        if(addE.size()>0){
+            medLisInfoServiceImpl.saveBatch(addE);
+        }
+        if(updateE.size()>0){
+            this.baseMapper.updateBatchByKey(updateE);
         }
     }
 

+ 0 - 0
src/main/java/com/diagbot/facade/data/AMedLisResultFacade.java


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio