Bladeren bron

Merge remote-tracking branch 'origin/test_qiyuan' into his/hzqy

# Conflicts:
#	src/main/java/com/diagbot/entity/BasDoctorInfo.java
#	src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
#	src/main/resources/application-dev.yml
shiyue 3 jaren geleden
bovenliggende
commit
edbe2b6271
100 gewijzigde bestanden met toevoegingen van 4967 en 961 verwijderingen
  1. 12 0
      doc/034.20210804_2.0.5/qc_initv2.0.5.sql
  2. 191 0
      doc/035.20211108_2.1.0/qc_initv2.1.0.sql
  3. 18 3
      pom.xml
  4. 8 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  5. 9 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  6. 139 0
      src/main/java/com/diagbot/dto/BehospitalInfoDeptDTO.java
  7. 2 2
      src/main/java/com/diagbot/dto/CheckDeptDTO.java
  8. 16 0
      src/main/java/com/diagbot/dto/CheckJobDTO.java
  9. 23 0
      src/main/java/com/diagbot/dto/CheckMedoupDTO.java
  10. 18 2
      src/main/java/com/diagbot/dto/CheckUserDTO.java
  11. 23 0
      src/main/java/com/diagbot/dto/CheckWardDTO.java
  12. 22 0
      src/main/java/com/diagbot/dto/CheckWorkDTO.java
  13. 18 0
      src/main/java/com/diagbot/dto/CheckedRecordListDTO.java
  14. 17 0
      src/main/java/com/diagbot/dto/DeptCheckUserDTO.java
  15. 1 0
      src/main/java/com/diagbot/dto/EntryStasByDeptDTO.java
  16. 2 0
      src/main/java/com/diagbot/dto/ExportExcelBehByDeptDTO.java
  17. 2 0
      src/main/java/com/diagbot/dto/ExportExcelBehospitalDTO.java
  18. 4 0
      src/main/java/com/diagbot/dto/ExportExcelByDeptDTO.java
  19. 2 0
      src/main/java/com/diagbot/dto/ExportExcelWideBehByDeptDTO.java
  20. 2 0
      src/main/java/com/diagbot/dto/ExportExcelWideBehospitalDTO.java
  21. 2 0
      src/main/java/com/diagbot/dto/ExportNinetyByDeptDTO.java
  22. 2 0
      src/main/java/com/diagbot/dto/ExportSevenByDeptDTO.java
  23. 5 1
      src/main/java/com/diagbot/dto/ExportWideExcelByDeptDTO.java
  24. 5 3
      src/main/java/com/diagbot/dto/ImproveByDeptDTO.java
  25. 1 1
      src/main/java/com/diagbot/dto/ImproveExportByDeptDTO.java
  26. 29 0
      src/main/java/com/diagbot/dto/MedoupDTO.java
  27. 6 6
      src/main/java/com/diagbot/dto/QcResultShortDTO.java
  28. 136 0
      src/main/java/com/diagbot/dto/QcResultShortDeptDTO.java
  29. 1 1
      src/main/java/com/diagbot/dto/ReBeHosByDeptDTO.java
  30. 1 1
      src/main/java/com/diagbot/dto/ReBeHosDTO.java
  31. 1 1
      src/main/java/com/diagbot/dto/ReBeHosMergeDTO.java
  32. 22 0
      src/main/java/com/diagbot/dto/RegionDTO.java
  33. 26 0
      src/main/java/com/diagbot/dto/RegionMedoupDTO.java
  34. 35 0
      src/main/java/com/diagbot/dto/StrAdmissionNoteDTO.java
  35. 3 86
      src/main/java/com/diagbot/entity/BasDoctorInfo.java
  36. 146 0
      src/main/java/com/diagbot/entity/DeptMedoup.java
  37. 61 0
      src/main/java/com/diagbot/entity/ImageCaptchaParams.java
  38. 6 0
      src/main/java/com/diagbot/entity/MedQcresultCases.java
  39. 146 0
      src/main/java/com/diagbot/entity/Medoup.java
  40. 4 0
      src/main/java/com/diagbot/entity/QcresultDetail.java
  41. 224 0
      src/main/java/com/diagbot/entity/Region.java
  42. 81 0
      src/main/java/com/diagbot/entity/RegionDept.java
  43. 3 0
      src/main/java/com/diagbot/exception/CommonExceptionHandler.java
  44. 55 0
      src/main/java/com/diagbot/facade/BasDoctorInfoFacade.java
  45. 357 226
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  46. 58 3
      src/main/java/com/diagbot/facade/ConsoleByDeptExportFacade.java
  47. 16 8
      src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java
  48. 65 0
      src/main/java/com/diagbot/facade/DataEditFacade.java
  49. 393 309
      src/main/java/com/diagbot/facade/MedCheckInfoFacade.java
  50. 195 14
      src/main/java/com/diagbot/facade/MedCheckWorkFacade.java
  51. 88 28
      src/main/java/com/diagbot/facade/QcresultInfoFacade.java
  52. 90 24
      src/main/java/com/diagbot/facade/RecordCheckFacade.java
  53. 69 3
      src/main/java/com/diagbot/facade/SysUserFacade.java
  54. 19 8
      src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java
  55. 16 0
      src/main/java/com/diagbot/mapper/DeptMedoupMapper.java
  56. 1 1
      src/main/java/com/diagbot/mapper/MedCheckInfoMapper.java
  57. 16 0
      src/main/java/com/diagbot/mapper/MedoupMapper.java
  58. 16 0
      src/main/java/com/diagbot/mapper/RegionDeptMapper.java
  59. 16 0
      src/main/java/com/diagbot/mapper/RegionMapper.java
  60. 7 7
      src/main/java/com/diagbot/service/BehospitalInfoService.java
  61. 16 0
      src/main/java/com/diagbot/service/DeptMedoupService.java
  62. 16 0
      src/main/java/com/diagbot/service/MedoupService.java
  63. 16 0
      src/main/java/com/diagbot/service/RegionDeptService.java
  64. 16 0
      src/main/java/com/diagbot/service/RegionService.java
  65. 9 9
      src/main/java/com/diagbot/service/impl/BehospitalInfoServiceImpl.java
  66. 20 0
      src/main/java/com/diagbot/service/impl/DeptMedoupServiceImpl.java
  67. 20 0
      src/main/java/com/diagbot/service/impl/MedoupServiceImpl.java
  68. 20 0
      src/main/java/com/diagbot/service/impl/RegionDeptServiceImpl.java
  69. 20 0
      src/main/java/com/diagbot/service/impl/RegionServiceImpl.java
  70. 60 0
      src/main/java/com/diagbot/util/ImageCaptchaUtil.java
  71. 611 0
      src/main/java/com/diagbot/util/RedisUtils.java
  72. 2 1
      src/main/java/com/diagbot/vo/AnalyzeVO.java
  73. 21 0
      src/main/java/com/diagbot/vo/BehospitalPageVO.java
  74. 8 3
      src/main/java/com/diagbot/vo/CheckJobPageVO.java
  75. 5 0
      src/main/java/com/diagbot/vo/CheckUserVO.java
  76. 22 1
      src/main/java/com/diagbot/vo/CheckWorkPageVO.java
  77. 6 2
      src/main/java/com/diagbot/vo/CheckedRecordListVO.java
  78. 18 0
      src/main/java/com/diagbot/vo/DataEditVO.java
  79. 10 0
      src/main/java/com/diagbot/vo/ExportQcresultVO.java
  80. 15 0
      src/main/java/com/diagbot/vo/FilterPageVO.java
  81. 31 0
      src/main/java/com/diagbot/vo/GetRegionAndMedoupInfoVO.java
  82. 17 0
      src/main/java/com/diagbot/vo/QcResultPageVO.java
  83. 16 0
      src/main/java/com/diagbot/vo/QcResultShortPageVO.java
  84. 2 1
      src/main/java/com/diagbot/vo/UserLoginVO.java
  85. 5 1
      src/main/java/com/diagbot/vo/data/BasDoctorInfoVO.java
  86. 9 0
      src/main/java/com/diagbot/web/BasDoctorInfoController.java
  87. 2 2
      src/main/java/com/diagbot/web/BehospitalInfoController.java
  88. 22 6
      src/main/java/com/diagbot/web/ConsoleByDeptController.java
  89. 7 0
      src/main/java/com/diagbot/web/ConsoleByDeptExportController.java
  90. 54 0
      src/main/java/com/diagbot/web/DataEditController.java
  91. 3 2
      src/main/java/com/diagbot/web/MedCheckInfoController.java
  92. 17 1
      src/main/java/com/diagbot/web/MedCheckWorkController.java
  93. 21 2
      src/main/java/com/diagbot/web/SysUserController.java
  94. 1 1
      src/main/resources/application-dev.yml
  95. 5 8
      src/main/resources/application-test.yml
  96. 1 1
      src/main/resources/bootstrap.yml
  97. 1 1
      src/main/resources/logback-spring.xml
  98. 1 0
      src/main/resources/mapper/BasDoctorInfoMapper.xml
  99. 869 181
      src/main/resources/mapper/BehospitalInfoMapper.xml
  100. 0 0
      src/main/resources/mapper/DeptMedoupMapper.xml

+ 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数据');
+
+
+

+ 191 - 0
doc/035.20211108_2.1.0/qc_initv2.1.0.sql

@@ -0,0 +1,191 @@
+use `qc`;
+
+/**
+执行脚本前请先看注意事项:
+  
+ */
+
+/**
+med_qcresult_detail表新增评分结果主表id字段
+ */
+ALTER TABLE `med_qcresult_detail` ADD COLUMN qcresult_info_id BIGINT (20) DEFAULT NULL COMMENT '评分结果id' AFTER `behospital_code`;
+
+/**
+med_qcresult_cases表新增评分结果主表id字段
+ */
+ALTER TABLE `med_qcresult_cases` ADD COLUMN qcresult_info_id BIGINT (20) DEFAULT NULL COMMENT '评分结果id' AFTER `behospital_code`;
+
+
+/**
+新建 sys_region 病区表
+ */
+-- ----------------------------
+-- Table structure for sys_region
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_region`;
+CREATE TABLE `sys_region` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `hospital_id` bigint(20) NOT NULL COMMENT '组织机构ID',
+  `hospital_name` varchar(30) DEFAULT NULL COMMENT '医院名称',
+  `code` varchar(32) DEFAULT NULL COMMENT '病区代码',
+  `name` varchar(32) NOT NULL COMMENT '病区名称',
+  `spell` varchar(64) DEFAULT NULL COMMENT '首字母拼音',
+  `station` varchar(64) DEFAULT NULL COMMENT '区域类别',
+  `order_no` varchar(8) DEFAULT NULL COMMENT '排序',
+  `status` char(1) NOT NULL DEFAULT '1' COMMENT '状态 0:禁用,1:启用',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(32) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(32) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `remark` varchar(128) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='病区表';
+
+
+/**
+新建 sys_region_dept 病区与科室关联表
+ */
+-- ----------------------------
+-- Table structure for sys_region_dept
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_region_dept`;
+CREATE TABLE `sys_region_dept` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `hospital_id` bigint(20) NOT NULL COMMENT '组织机构ID',
+  `region_code` varchar(20) NOT NULL COMMENT '病区ID',
+  `dept_id` bigint(20) NOT NULL COMMENT '科室ID',
+  `order_no` varchar(8) DEFAULT NULL COMMENT '排序',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(32) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(32) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `remark` varchar(128) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='病区与科室关联表';
+
+
+
+/**
+新建 sys_medoup 医疗组表
+ */
+-- ----------------------------
+-- Table structure for sys_medoup
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_medoup`;
+CREATE TABLE `sys_medoup` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `code` varchar(32) NOT NULL COMMENT '医疗组代码',
+  `name` varchar(32) NOT NULL COMMENT '医疗组名称',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(32) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(32) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `remark` varchar(128) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='医疗组表';
+
+
+
+
+/**
+新建 sys_dept_medoup 科室与医疗组关联表
+ */
+-- ----------------------------
+-- Table structure for sys_dept_medoup
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_dept_medoup`;
+CREATE TABLE `sys_dept_medoup` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `dept_id` varchar(20) NOT NULL COMMENT '科室ID',
+  `medoup_code` varchar(32) NOT NULL COMMENT '医疗组Code',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(32) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(32) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `remark` varchar(128) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COMMENT='科室与医疗组关联表';
+
+
+/**
+列设置,展示相关字段需要在列设置上恢复默认(初始化)然后勾选保存
+ */
+UPDATE `sys_user_pageset` SET  `order_no`='23', `remark`=NULL WHERE (`val`='behDeptName');
+UPDATE `sys_user_pageset` SET  `order_no`='25', `remark`=NULL WHERE (`val`='gradeTime');
+INSERT INTO `sys_user_pageset` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `user_id`, `page_type`, `name`, `val`, `status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '1', '病区', 'wardName', '1', '22', NULL);
+INSERT INTO `sys_user_pageset` ( `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `user_id`, `page_type`, `name`, `val`, `status`, `order_no`, `remark`) VALUES ( 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '-1', '1', '医疗组', 'medoupName', '1', '24', NULL);
+
+/**
+
+关闭病历稽查报表
+ */
+UPDATE `sys_menu` SET  `is_deleted`='Y'  WHERE (`code`='YH-ZKK-YXBLJCB');
+UPDATE `sys_menu` SET  `is_deleted`='Y'  WHERE (`code`='YH-ZKK-ZMBLJCB');
+UPDATE `sys_menu` SET  `is_deleted`='Y'  WHERE (`code`='YH-KSZR-ZMBLJCS_XQ');
+UPDATE `sys_menu` SET  `is_deleted`='Y'  WHERE (`code`='YH-KSZR-YXBLJCS_XQ');
+
+
+
+
+/**以下脚本执行建议备份下原表med_behospital_info
+doctorId回查
+ */
+ 
+ UPDATE med_behospital_info a,
+ (
+	SELECT
+		doctor_id,
+		name
+		NAME
+	FROM
+		bas_doctor_info b
+	WHERE
+		b.hospital_id = 14
+	AND b.is_deleted = 'N'
+) c
+SET a.doctor_name = c. NAME
+WHERE
+	a.doctor_id = c.doctor_id
+AND a.hospital_id = 14
+AND (a.doctor_name is null or a.doctor_name = '' or a.doctor_name ='-' or a.doctor_name ='—' or LENGTH(a.doctor_name)>64);
+
+UPDATE med_behospital_info a,
+ (
+	SELECT
+		doctor_id,
+		NAME
+	FROM
+		bas_doctor_info b
+	WHERE
+		b.hospital_id = 14
+	AND b.is_deleted = 'N'
+) c
+SET a.doctor_id = c.doctor_id
+WHERE
+	a.doctor_name = c. NAME
+AND a.hospital_id = 14
+AND (a.doctor_id is null or a.doctor_id = '' or a.doctor_id ='-' or a.doctor_id ='—' or LENGTH(a.doctor_id)>64);
+
+
+/**
+空字段统一处理
+ */
+UPDATE med_behospital_info a set a.doctor_id = '-' where a.hospital_id =14  and (a.doctor_id is null or a.doctor_id = ''  or a.doctor_id = '—' or LENGTH(a.doctor_id)>64);
+
+UPDATE med_behospital_info a set a.doctor_name = '-' where a.hospital_id =14  and (a.doctor_name is null or a.doctor_name = '' or a.doctor_name = '—' or LENGTH(a.doctor_name)>64);
+
+UPDATE med_behospital_info a set a.bed_code = '-' where a.hospital_id =14  and (a.bed_code is null or a.bed_code = '' or a.bed_code = '—' or LENGTH(a.bed_code)>64);
+
+UPDATE med_behospital_info a set a.bed_name = '-' where a.hospital_id =14  and (a.bed_name is null or a.bed_name = '' or a.bed_name = '—' or LENGTH(a.bed_name)>64);
+
+/**
+七院生成核查任务,vip开房病区科室id配置
+ */
+INSERT INTO `sys_hospital_set` (`hospital_id`, `name`, `code`, `value`, `remark`) VALUES ('14', '病历核查(杭州七院,科室医生特殊病历)', 'check_order_info', '2015,2019', '科室核查任务除了本科室还要VIP、开放病区医生病历')
+
+
+

+ 18 - 3
pom.xml

@@ -6,7 +6,7 @@
 
     <groupId>com.diagbot</groupId>
     <artifactId>mrqc-sys</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>qiyuan-0.0.1-SNAPSHOT</version>
     <packaging>jar</packaging>
 
     <name>mrqc-sys</name>
@@ -36,9 +36,11 @@
         <aggregator.version>1.1.0</aggregator.version>
         <okhttp.version>4.2.2</okhttp.version>
         <easypoi.version>4.2.0</easypoi.version>
+        <patchca.version>1.1.2</patchca.version>
+        <hutool.version>5.0.7</hutool.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.241:5000/diagbotcloud</docker.image.prefix>
+        <registryUrl>http://192.168.2.241:5000/repository/diagbotcloud/</registryUrl>
     </properties>
 
     <dependencyManagement>
@@ -108,6 +110,19 @@
             <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.bladejava</groupId>
+            <artifactId>blade-patchca</artifactId>
+            <version>${patchca.version}</version>
+
+        </dependency>
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>${hutool.version}</version>
+        </dependency>
+
         <!--swagger-->
         <dependency>
             <groupId>io.springfox</groupId>

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

@@ -38,6 +38,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .authorizeRequests()
                 .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
                 .antMatchers("/sys/user/getJwt").permitAll()
+                .antMatchers("/sys/user/getCaptcha").permitAll()
+                .antMatchers("/sys/user/getHospitalMark").permitAll()
                 .antMatchers("/sys/user/getJwtNoPass").permitAll()
                 .antMatchers("/sys/user/refreshJwt").permitAll()
                 .antMatchers("/sys/user/checkToken").permitAll()
@@ -126,6 +128,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/consoleByDept/levelStatisticsByDept").permitAll()
                 .antMatchers("/consoleByDept/mrCountByDept").permitAll()
                 .antMatchers("/consoleByDept/qcResultShortByDeptPage").permitAll()
+                .antMatchers("/consoleByDept/levelStatisticsByDeptPage").permitAll()
                 .antMatchers("/consoleByDept/resultStatisticsByDeptAndDoctorPage").permitAll()
                 .antMatchers("/console/export/homePageLevelExport").permitAll()
                 .antMatchers("/console/export/entryGroupByEntryExport").permitAll()
@@ -213,9 +216,11 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/consoleByDept/beHosCountByDept").permitAll()
                 .antMatchers("/consoleByDept/casesEntryStatisticsByDept").permitAll()
                 .antMatchers("/bas/doctor/getList").permitAll()
+                .antMatchers("/bas/doctor/getRegionAndMedoupList").permitAll()
                 .antMatchers("/consoleByDept/homePageOrGoodLevelByDept").permitAll()
                 .antMatchers("/print/export/homePageLevelExportByDept").permitAll()
                 .antMatchers("/print/export/homePageOrLevelExportByDept").permitAll()
+                .antMatchers("/print/export/levelStatisticsExportByDept").permitAll()
                 .antMatchers("/print/export/entryGroupExportByDeptPage").permitAll()
                 .antMatchers("/print/export/entryGroupExportByDeptCase").permitAll()
                 .antMatchers("/print/export/entryGroupExportByDeptEntry").permitAll()
@@ -247,7 +252,10 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/behospitalInfo/getMedQualityCoList").permitAll()
                 .antMatchers("/console/saveMedicaIndicator").permitAll()
                 .antMatchers("/qc/medCheckInfo/createMedBeHospitalInfoType").permitAll()
+                .antMatchers("/qc/medCheckWork/getLocalRegionMedoup").permitAll()
                 .antMatchers("/qc/medCheckInfo/addMedCheckInfo").permitAll()
+                .antMatchers("/qc/medCheckInfo/getDataEdit").permitAll()
+                .antMatchers("/qc/medCheckInfo/saveDataEdit").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

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

@@ -81,6 +81,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/actuator/**", request)
                 || matchers("/hystrix/**", request)
                 || matchers("/sys/user/getJwt", request)
+                || matchers("/sys/user/getCaptcha", request)
+                || matchers("/sys/user/getHospitalMark", request)
                 || matchers("/sys/user/getJwtNoPass", request)
                 || matchers("/sys/user/refreshJwt", request)
                 || matchers("/sys/dictionaryInfo/getDictionary", request)
@@ -170,6 +172,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/consoleByDept/levelStatisticsByDept", request)
                 || matchers("/consoleByDept/mrCountByDept", request)
                 || matchers("/consoleByDept/qcResultShortByDeptPage", request)
+                || matchers("/consoleByDept/levelStatisticsByDeptPage", request)
                 || matchers("/consoleByDept/resultStatisticsByDeptAndDoctorPage", request)
                 || matchers("/console/export/homePageLevelExport", request)
                 || matchers("/console/export/entryGroupByEntryExport", request)
@@ -257,9 +260,11 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/consoleByDept/beHosCountByDept", request)
                 || matchers("/consoleByDept/casesEntryStatisticsByDept", request)
                 || matchers("/bas/doctor/getList", request)
+                || matchers("/bas/doctor/getRegionAndMedoupList", request)
                 || matchers("/consoleByDept/homePageOrGoodLevelByDept", request)
                 || matchers("/print/export/homePageLevelExportByDept", request)
                 || matchers("/print/export/homePageOrLevelExportByDept", request)
+                || matchers("/print/export/levelStatisticsExportByDept", request)
                 || matchers("/print/export/entryGroupExportByDeptPage", request)
                 || matchers("/print/export/entryGroupExportByDeptCase", request)
                 || matchers("/print/export/entryGroupExportByDeptEntry", request)
@@ -291,13 +296,17 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/behospitalInfo/getMedQualityCoList", request)
                 || matchers("/console/saveMedicaIndicator", request)
                 || matchers("/qc/medCheckInfo/createMedBeHospitalInfoType", request)
+                || matchers("/qc/medCheckWork/getLocalRegionMedoup", 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)) {

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

@@ -0,0 +1,139 @@
+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 BehospitalInfoDeptDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 出生日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date birthday;
+
+    /**
+     * 档案号
+     */
+    private String fileCode;
+
+    /**
+     * 病区名称
+     */
+    private String wardName;
+
+    /**
+     * 住院科室名称
+     */
+    private String behDeptName;
+
+    /**
+     * 医疗组
+     */
+    private String medoupName;
+
+    /**
+     * 床位号
+     */
+    private String bedCode;
+
+    /**
+     * 入院时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date behospitalDate;
+
+    /**
+     * 出院时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+
+    /**
+     * 疾病名称
+     */
+    private String diagnose;
+
+    /**
+     * 医生姓名
+     */
+    private String doctorName;
+
+    /**
+     * 年龄
+     */
+    private String age;
+
+    /**
+     * 病历等级
+     */
+    private String level;
+
+    /**
+     * 最后得分
+     */
+    private Double scoreRes;
+
+    /**
+     * 病案首页得分
+     */
+    private Double scoreBn;
+
+    /**
+     * 评分类型(1:机器,2:人工)
+     */
+    private String gradeType;
+
+    /**
+     * 评分时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date gradeTime;
+
+    private String directorDoctorName ;
+
+    private String behDoctorName;
+
+    /**
+     * 归档时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date placefileDate;
+
+    private Integer checkStatus;
+    private Integer mrStatus;
+    private String chName;
+    private String mrName;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date chTime;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date mrTime;
+}

+ 2 - 2
src/main/java/com/diagbot/dto/CheckDeptDTO.java

@@ -18,6 +18,6 @@ public class CheckDeptDTO {
     private String deptId;
     //科室名称
     private String deptName;
-    //科室质控人员列表
-    private List<DeptCheckUserDTO> deptcheckUsers = new ArrayList<>();
+    //科室医疗组列表
+    private List<CheckMedoupDTO> checkMedoups = new ArrayList<>();
 }

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

@@ -17,6 +17,22 @@ public class CheckJobDTO {
     private String behospitalCode;
     //病人姓名
     private String name;
+    /**
+     * 病区code
+     */
+    private String wardCode;
+    /**
+     * 病区名称
+     */
+    private String wardName;
+    /**
+     * 医疗组Code
+     */
+    private String medoupCode;
+    /**
+     * 医疗组名称
+     */
+    private String medoupName;
     //科室
     private String behospitalDept;
     //主管医生

+ 23 - 0
src/main/java/com/diagbot/dto/CheckMedoupDTO.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 CheckMedoupDTO {
+    //医疗组code
+    private String medoupCode;
+    //医疗组名称
+    private String medoupName;
+    //科室质控人员列表
+    private List<DeptCheckUserDTO> deptcheckUsers = new ArrayList<>();
+}

+ 18 - 2
src/main/java/com/diagbot/dto/CheckUserDTO.java

@@ -1,5 +1,6 @@
 package com.diagbot.dto;
 
+import lombok.Data;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -8,13 +9,28 @@ import lombok.Setter;
  * @Author:songxl
  * @time: 2021/5/14 13:45
  */
-@Getter
-@Setter
+@Data
 public class CheckUserDTO {
+    /**
+     * 病区code
+     */
+    private String wardCode;
+    /**
+     * 病区名称
+     */
+    private String wardName;
     //科室id
     private String deptId;
     //科室名称
     private String deptName;
+    /**
+     * 医疗组Code
+     */
+    private String medoupCode;
+    /**
+     * 医疗组名称
+     */
+    private String medoupName;
     //医生id
     private String doctorId;
     //医生名称

+ 23 - 0
src/main/java/com/diagbot/dto/CheckWardDTO.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 CheckWardDTO {
+    //病区id
+    private String wardCode;
+    //病区名称
+    private String wardName;
+    //病区科室集合
+    private List<CheckDeptDTO> checkDepts = new ArrayList<>();
+}

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

@@ -44,11 +44,33 @@ public class CheckWorkDTO {
     private String ageMon;
     private String ageDay;
 
+    /**
+     * 病区code
+     */
+    private String wardCode;
+    /**
+     * 病区名称
+     */
+    private String wardName;
+
+    /**
+     * 科室id
+     */
+    private String deptId;
     /**
      * 科室
      */
     private String behDeptName;
 
+    /**
+     * 医疗组Code
+     */
+    private String medoupCode;
+    /**
+     * 医疗组名称
+     */
+    private String medoupName;
+
     /**
      * 出院日期
      */

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

@@ -41,6 +41,14 @@ public class CheckedRecordListDTO {
      */
     @ApiModelProperty("任务来源")
     private String jobTypeName;
+    /**
+     * 医疗组Code
+     */
+    private String medoupCode;
+    /**
+     * 医疗组名称
+     */
+    private String medoupName;
 
     /**
      * 科室
@@ -48,6 +56,16 @@ public class CheckedRecordListDTO {
     @ApiModelProperty("科室")
     private String behDeptName;
 
+    /**
+     * 病区code
+     */
+    private String wardCode;
+    /**
+     * 病区名称
+     */
+    private String wardName;
+
+
     /**
      * 病人姓名
      */

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

@@ -11,10 +11,27 @@ import lombok.Setter;
 @Getter
 @Setter
 public class DeptCheckUserDTO {
+
+    /**
+     * 病区code
+     */
+    private String wardCode;
+    /**
+     * 病区名称
+     */
+    private String wardName;
     //科室id
     private String deptId;
     //科室名称
     private String deptName;
+    /**
+     * 医疗组Code
+     */
+    private String medoupCode;
+    /**
+     * 医疗组名称
+     */
+    private String medoupName;
     //医生id
     private String doctorId;
     //医生名称

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

@@ -21,6 +21,7 @@ public class EntryStasByDeptDTO {
      */
     @Excel(name = "主管医生", width = 30, orderNum = "1")
     private String doctorName;
+    private String doctorId;
     /**
      * 未在24小时内完成会诊数
      */

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

@@ -18,6 +18,8 @@ import java.util.List;
 public class ExportExcelBehByDeptDTO {
     @Excel(name = "患者姓名", needMerge = true)
     private String patName;
+    @Excel(name = "病案号", needMerge = true)
+    private String fileCode;
     @Excel(name = "住院号", needMerge = true)
     private String behospitalCode;
     @Excel(name = "入院时间", needMerge = true, exportFormat = "yyyy/MM/dd")

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

@@ -20,6 +20,8 @@ public class ExportExcelBehospitalDTO {
     private String doctorName;
     @Excel(name = "患者姓名", needMerge = true)
     private String patName;
+    @Excel(name = "病案号", needMerge = true)
+    private String fileCode;
     @Excel(name = "住院号", needMerge = true)
     private String behospitalCode;
     @Excel(name = "入院时间", needMerge = true, exportFormat = "yyyy/MM/dd")

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

@@ -15,8 +15,12 @@ import java.util.List;
 @Getter
 @Setter
 public class ExportExcelByDeptDTO {
+   // @Excel(name = "病区", needMerge = true)
+    private String wardName;
 //    @Excel(name = "科室", needMerge = true)
     private String behDeptName;
+    @Excel(name = "医疗组", needMerge = true)
+    private String medoupName;
     @Excel(name = "主管医生", needMerge = true)
     private String doctorName;
     @Excel(name = "平均分数", needMerge = true)

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

@@ -16,6 +16,8 @@ import java.util.Date;
 public class ExportExcelWideBehByDeptDTO {
     @Excel(name = "患者姓名", needMerge = true)
     private String patName;
+    @Excel(name = "病案号", needMerge = true)
+    private String fileCode;
     @Excel(name = "住院号", needMerge = true)
     private String behospitalCode;
     @Excel(name = "入院时间", needMerge = true, exportFormat = "yyyy/MM/dd")

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

@@ -16,6 +16,8 @@ public class ExportExcelWideBehospitalDTO {
     private String doctorName;
     @Excel(name = "患者姓名", needMerge = true)
     private String patName;
+    @Excel(name = "病案号", needMerge = true)
+    private String fileCode;
     @Excel(name = "住院号", needMerge = true)
     private String behospitalCode;
     @Excel(name = "入院时间", needMerge = true, exportFormat = "yyyy/MM/dd")

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

@@ -15,6 +15,8 @@ import java.util.List;
 @Getter
 @Setter
 public class ExportNinetyByDeptDTO {
+    @Excel(name = "病区", needMerge = true)
+    private String wardName;
     @Excel(name = "科室", needMerge = true)
     private String behDeptName;
     @ExcelCollection(name = "")

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

@@ -15,6 +15,8 @@ import java.util.List;
 @Getter
 @Setter
 public class ExportSevenByDeptDTO {
+    @Excel(name = "病区", needMerge = true)
+    private String wardName;
     @Excel(name = "科室", needMerge = true)
     private String behDeptName;
     @ExcelCollection(name = "")

+ 5 - 1
src/main/java/com/diagbot/dto/ExportWideExcelByDeptDTO.java

@@ -15,8 +15,12 @@ import java.util.List;
 @Getter
 @Setter
 public class ExportWideExcelByDeptDTO {
-//    @Excel(name = "科室", needMerge = true)
+    // @Excel(name = "科室", needMerge = true)
     private String behDeptName;
+    // @Excel(name = "病区", needMerge = true)
+    private String wardName;
+    @Excel(name = "医疗组", needMerge = true)
+    private String medoupName;
     @Excel(name = "主管医生", needMerge = true)
     private String doctorName;
     @Excel(name = "平均分数", needMerge = true)

+ 5 - 3
src/main/java/com/diagbot/dto/ImproveByDeptDTO.java

@@ -20,17 +20,19 @@ public class ImproveByDeptDTO {
     /**
      * 主治医生
      */
-    @Excel(name = "主治医生", width = 30)
+    @Excel(name = "主管医生", width = 15)
     private String doctorName;
+
+    private String doctorId;
     /**
      * 质控总数(总病历数)
      */
     @Excel(name = "质控总数", width = 10)
     private Integer mrNum = 0;
     /**
-     * 核查数量
+     * 病历核查数量
      */
-    @Excel(name = "核查数量", width = 10)
+    @Excel(name = "病历核查数量", width = 15)
     private Integer checkedNum = 0;
     /**
      * 核查占比

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

@@ -19,7 +19,7 @@ public class ImproveExportByDeptDTO {
     /**
      * 科室
      */
-    @Excel(name = "科室", width = 30,needMerge = true)
+    @Excel(name = "科室", width = 20,needMerge = true)
     private String deptName;
     @ExcelCollection(name = "")
     private List<ImproveByDeptDTO> improveByDeptDTOS;

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

@@ -0,0 +1,29 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 医疗组表
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@Data
+public class MedoupDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 医疗组代码
+     */
+    private String code;
+    /**
+     * 医疗组名称
+     */
+    private String name;
+
+}

+ 6 - 6
src/main/java/com/diagbot/dto/QcResultShortDTO.java

@@ -70,6 +70,9 @@ public class QcResultShortDTO {
     private String directorDoctorId;
     @Excel(name = "主任医生", width = 30, orderNum = "16")
     private String directorDoctorName;
+    //病区code
+    private String ward_code;
+    private String wardName;
     /**
      * 科室编码
      */
@@ -77,9 +80,10 @@ public class QcResultShortDTO {
     /**
      * 科室名称
      */
-    @Excel(name = "科室", width = 70, orderNum = "17")
+    @Excel(name = "科室", width = 70, orderNum = "18")
     private String behDeptName;
-    @Excel(name = "评分时间", format = "yyyy-MM-dd", width = 30, orderNum = "18")
+
+    @Excel(name = "评分时间", format = "yyyy-MM-dd", width = 30, orderNum = "20")
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date gradeTime;
 
@@ -89,10 +93,6 @@ public class QcResultShortDTO {
     private Integer gradeType;
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date birthday;
-    /**
-     * 病区名称
-     */
-    private String wardName;
 
     /**
      * 病历核查状态

+ 136 - 0
src/main/java/com/diagbot/dto/QcResultShortDeptDTO.java

@@ -0,0 +1,136 @@
+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/6/16 16:54
+ */
+@Getter
+@Setter
+public class QcResultShortDeptDTO {
+    /**
+     * 医院id
+     */
+    private String hospitalId;
+
+    /**
+     * 病历等级
+     */
+    @Excel(name = "病历等级", width = 30, orderNum = "1")
+    private String level;
+    /**
+     * 病历得分
+     */
+    @Excel(name = "病历得分", width = 30, orderNum = "2")
+    private Double scoreRes;
+    @Excel(name = "病案首页得分", width = 30, orderNum = "2.5")
+    private Double scoreBn;
+    @Excel(name = "病人住院序号", width = 40, orderNum = "3")
+    private String behospitalCode;
+    @Excel(name = "病案号", width = 30, orderNum = "5")
+    private String fileCode;
+    @Excel(name = "病人姓名", width = 30, orderNum = "6")
+    private String name;
+    @Excel(name = "性别", width = 20, orderNum = "7")
+    private String sex;
+    @Excel(name = "年龄", width = 20, orderNum = "8")
+    private String age;
+    @Excel(name = "床号", width = 30, orderNum = "9")
+    private String bedCode;
+    @Excel(name = "入院日期", format = "yyyy-MM-dd", width = 30, orderNum = "10")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date behospitalDate;
+    @Excel(name = "出院日期", format = "yyyy-MM-dd", width = 30, orderNum = "11")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date leaveHospitalDate;
+    @Excel(name = "归档日期", format = "yyyy-MM-dd", width = 30, orderNum = "12")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date placefileDate;
+    @Excel(name = "主诊断", width = 60, orderNum = "13")
+    private String diagnose;
+    private String behDoctorId;
+    @Excel(name = "住院医生", width = 30, orderNum = "14")
+    private String behDoctorName;
+    /**
+     * 主治医生id
+     */
+    private String doctorId;
+    /**
+     * 主治医生姓名
+     */
+    @Excel(name = "主管医生", width = 30, orderNum = "15")
+    private String doctorName;
+
+    //病区code
+    private String ward_code;
+    /**
+     * 病区
+     */
+    @Excel(name = "病区", width = 30, orderNum = "16")
+    private String wardName;
+
+    private String directorDoctorId;
+    @Excel(name = "主任医生", width = 30, orderNum = "17")
+    private String directorDoctorName;
+
+    /**
+     * 科室编码
+     */
+    private String behDeptId;
+    /**
+     * 科室名称
+     */
+    @Excel(name = "科室", width = 70, orderNum = "18")
+    private String behDeptName;
+    //医疗组id
+    private String MedoupId;
+
+    //医疗组
+    @Excel(name = "科室", width = 70, orderNum = "19")
+    private String medoupName;
+    @Excel(name = "评分时间", format = "yyyy-MM-dd", width = 30, orderNum = "20")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date gradeTime;
+
+    /**
+     * 评分类型
+     */
+    private Integer gradeType;
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date birthday;
+
+    /**
+     * 病历核查状态
+     */
+    //@Excel(name = "核查状态", width = 20, orderNum = "4",replace = { "已核查_1", "未核查_0", "_null" })
+    private Integer checkStatus;
+    /**
+     * 首页核查状态
+     */
+    private Integer mrStatus;
+    /**
+     * 病历核查人员
+     */
+    private String chName;
+    /**
+     * 首页核查人员
+     */
+    private String mrName;
+    /**
+     * 病历核查时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date chTime;
+    /**
+     * 首页核查时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date mrTime;
+}

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

@@ -30,7 +30,7 @@ public class ReBeHosByDeptDTO {
      * 间隔天数
      */
     @Excel(name = "间隔天数", width = 10, needMerge = true, orderNum = "4")
-    private Integer diffDays;
+    private String diffDays;
 
     @Excel(name = "是否有出院31天内再住院计划", width = 30, needMerge = true,  orderNum = "5")
     private String lastAgainBehospitalPlan;//31天再入院计划(是/否)

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

@@ -30,7 +30,7 @@ public class ReBeHosDTO {
      * 间隔天数
      */
     @Excel(name = "间隔天数", width = 10, needMerge = true, orderNum = "4")
-    private Integer diffDays;
+    private String diffDays;
 
 
     @Excel(name = "是否有出院31天内再住院计划", width = 30, needMerge = true,  orderNum = "5")

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

@@ -42,7 +42,7 @@ public class ReBeHosMergeDTO {
     private Date lastBehospitalDate;
     @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date lastLeaveHospitalDate;
-    private Integer diffDays;
+    private String diffDays;
     private String totleFee;
     private String behospitalDayNum;
     private String againBehospitalPlan;//31天再入院计划(是/否)

+ 22 - 0
src/main/java/com/diagbot/dto/RegionDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+
+/**
+ * @Description:
+ * @author: wangsy
+ * @time: 2021/5/13 15:00
+ */
+@Data
+public class RegionDTO {
+
+    /**
+     * 病区code
+     */
+    private String code;
+    /**
+     * 病区名称
+     */
+    private String name;
+}

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

@@ -0,0 +1,26 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * @Description:病区、医疗组 对象
+ * @author: wangsy
+ * @time: 2021/5/13 15:00
+ */
+@Data
+public class RegionMedoupDTO {
+  @ApiModelProperty("病区集合")
+  List<RegionDTO> regions;
+  @ApiModelProperty("医疗组集合")
+  List<MedoupDTO> medoups;
+  @ApiModelProperty("医生医疗组")
+  String localMedoupCode;
+  @ApiModelProperty("全部显示flag")
+  boolean showAllFlag;
+
+
+}

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

+ 3 - 86
src/main/java/com/diagbot/entity/BasDoctorInfo.java

@@ -2,6 +2,7 @@ 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;
@@ -14,6 +15,7 @@ import java.util.Date;
  * @author gaodm
  * @since 2020-04-17
  */
+@Data
 public class BasDoctorInfo implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -49,7 +51,7 @@ public class BasDoctorInfo implements Serializable {
      */
     private String occup;
     /**
-     * 医疗组id
+     * 职业医师资格
      */
     private String groupId;
 
@@ -78,83 +80,6 @@ public class BasDoctorInfo implements Serializable {
      */
     private String modifier;
 
-    public String getDoctorId() {
-        return doctorId;
-    }
-
-    public void setDoctorId(String doctorId) {
-        this.doctorId = doctorId;
-    }
-    public Long getHospitalId() {
-        return hospitalId;
-    }
-
-    public void setHospitalId(Long hospitalId) {
-        this.hospitalId = hospitalId;
-    }
-    public String getDeptId() {
-        return deptId;
-    }
-
-    public void setDeptId(String deptId) {
-        this.deptId = deptId;
-    }
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-    public String getProfessor() {
-        return professor;
-    }
-
-    public void setProfessor(String professor) {
-        this.professor = professor;
-    }
-    public String getOccup() {
-        return occup;
-    }
-
-    public void setOccup(String occup) {
-        this.occup = occup;
-    }
-    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() {
@@ -173,12 +98,4 @@ public class BasDoctorInfo implements Serializable {
                 ", modifier=" + modifier +
                 "}";
     }
-
-    public String getGroupId() {
-        return groupId;
-    }
-
-    public void setGroupId(String groupId) {
-        this.groupId = groupId;
-    }
 }

+ 146 - 0
src/main/java/com/diagbot/entity/DeptMedoup.java

@@ -0,0 +1,146 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 科室与医疗组关联表
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@TableName("sys_dept_medoup")
+public class DeptMedoup implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 科室ID
+     */
+    private String deptId;
+
+    /**
+     * 医疗组Code
+     */
+    private String medoupCode;
+
+    /**
+     * 是否删除,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 String getDeptId() {
+        return deptId;
+    }
+
+    public void setDeptId(String deptId) {
+        this.deptId = deptId;
+    }
+    public String getMedoupCode() {
+        return medoupCode;
+    }
+
+    public void setMedoupCode(String medoupCode) {
+        this.medoupCode = medoupCode;
+    }
+    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 "DeptMedoup{" +
+            "id=" + id +
+            ", deptId=" + deptId +
+            ", medoupCode=" + medoupCode +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 61 - 0
src/main/java/com/diagbot/entity/ImageCaptchaParams.java

@@ -0,0 +1,61 @@
+package com.diagbot.entity;
+import lombok.Data;
+
+
+/**
+ * @Author chengyao
+ * @Date 2021/10/14 19:57
+ * @Version 1.0
+ */
+
+@Data
+public class ImageCaptchaParams {
+    /**
+     * 默认图片验证码的文字内容
+     */
+    public static final String DEFAULT_WORDS = "123456789abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
+    public static final String DEFAULT_FORMAT = "png";
+    /**
+     * 图片验证码宽度
+     */
+    private int width;
+    /**
+     * 图片验证码高度
+     */
+    private int height;
+    /**
+     * 最多生成几个文字
+     */
+    private int maxWordAmount;
+    /**
+     * 最小生成几个文字
+     */
+    private int minWordAmount;
+    /**
+     * 字体最大尺寸
+     */
+    private int maxFontSize;
+    /**
+     * 文字最小尺寸
+     */
+    private int minFontSize;
+    /**
+     * 生成图片验证码内容的字体
+     */
+    private String words;
+    /**
+     * 图片类型
+     */
+    private String format;
+
+    public ImageCaptchaParams(){
+        this.width = 105;
+        this.height = 35;
+        this.maxWordAmount = 4;
+        this.minWordAmount = 4;
+        this.minFontSize = 24;
+        this.maxFontSize = 25;
+        this.words = DEFAULT_WORDS;
+        this.format = DEFAULT_FORMAT;
+    }
+}

+ 6 - 0
src/main/java/com/diagbot/entity/MedQcresultCases.java

@@ -2,6 +2,7 @@ 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.math.BigDecimal;
@@ -15,6 +16,7 @@ import java.util.Date;
  * @author gaodm
  * @since 2020-05-19
  */
+@Data
 public class MedQcresultCases implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -26,6 +28,10 @@ public class MedQcresultCases implements Serializable {
      * 医院ID
      */
     private Long hospitalId;
+    /**
+     * 评分结果ID
+     */
+    private Long qcresultInfoId;
 
     /**
      * 病人住院ID

+ 146 - 0
src/main/java/com/diagbot/entity/Medoup.java

@@ -0,0 +1,146 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 医疗组表
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@TableName("sys_medoup")
+public class Medoup implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医疗组代码
+     */
+    private String code;
+
+    /**
+     * 医疗组名称
+     */
+    private String name;
+
+    /**
+     * 是否删除,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 String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    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 "Medoup{" +
+            "id=" + id +
+            ", code=" + code +
+            ", name=" + name +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

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

@@ -31,6 +31,10 @@ public class QcresultDetail implements Serializable {
      * 医院ID
      */
     private Long hospitalId;
+    /**
+     * 评分结果ID
+     */
+    private Long qcresultInfoId;
 
     /**
      * 病人住院ID

+ 224 - 0
src/main/java/com/diagbot/entity/Region.java

@@ -0,0 +1,224 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 病区表
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@TableName("sys_region")
+public class Region implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 组织机构ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 医院名称
+     */
+    private String hospitalName;
+
+    /**
+     * 病区代码
+     */
+    private String code;
+
+    /**
+     * 病区名称
+     */
+    private String name;
+
+    /**
+     * 首字母拼音
+     */
+    private String spell;
+
+    /**
+     * 区域类别
+     */
+    private String station;
+
+    /**
+     * 排序
+     */
+    private String orderNo;
+
+    /**
+     * 状态 0:禁用,1:启用
+     */
+    private String status;
+
+    /**
+     * 是否删除,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 getHospitalName() {
+        return hospitalName;
+    }
+
+    public void setHospitalName(String hospitalName) {
+        this.hospitalName = hospitalName;
+    }
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getSpell() {
+        return spell;
+    }
+
+    public void setSpell(String spell) {
+        this.spell = spell;
+    }
+    public String getStation() {
+        return station;
+    }
+
+    public void setStation(String station) {
+        this.station = station;
+    }
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+    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 "Region{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", hospitalName=" + hospitalName +
+            ", code=" + code +
+            ", name=" + name +
+            ", spell=" + spell +
+            ", station=" + station +
+            ", orderNo=" + orderNo +
+            ", status=" + status +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 81 - 0
src/main/java/com/diagbot/entity/RegionDept.java

@@ -0,0 +1,81 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 病区与科室关联表
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@TableName("sys_region_dept")
+@Data
+public class RegionDept implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 组织机构ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病区code
+     */
+    private String regionCode;
+
+    /**
+     * 科室ID
+     */
+    private Long deptId;
+
+    /**
+     * 排序
+     */
+    private String orderNo;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

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

+ 55 - 0
src/main/java/com/diagbot/facade/BasDoctorInfoFacade.java

@@ -1,11 +1,17 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.MedoupDTO;
+import com.diagbot.dto.RegionDTO;
+import com.diagbot.dto.RegionMedoupDTO;
 import com.diagbot.entity.*;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.BasDoctorInfoServiceImpl;
+import com.diagbot.service.impl.MedoupServiceImpl;
+import com.diagbot.service.impl.RegionServiceImpl;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.GetRegionAndMedoupInfoVO;
 import com.diagbot.vo.data.BasDoctorInfoVO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +35,53 @@ public class BasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
     BasDeptInfoFacade basDeptInfoFacade;
     @Autowired
     BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    private RegionServiceImpl regionService;
+    @Autowired
+    private MedoupServiceImpl medoupService;
+
+    /**
+     * 获取医院医生下拉列表信息
+     *
+     * @param getRegionAndMedoupInfoVO
+     * @return 医院医生下拉列表信息
+     */
+    public RegionMedoupDTO getRegionAndMedoupList(GetRegionAndMedoupInfoVO getRegionAndMedoupInfoVO) {
+        getRegionAndMedoupInfoVO.setHospitalId(Long.valueOf(SysUserUtils.getCurrentHospitalID()));
+        RegionMedoupDTO regionMedoupDTO = new RegionMedoupDTO();
+        if("1".equals(getRegionAndMedoupInfoVO.getMark())){
+            List<Region> regions = regionService.lambdaQuery()
+                    .eq(Region::getIsDeleted, IsDeleteEnum.N.getKey())
+                    .eq(Region::getHospitalId, getRegionAndMedoupInfoVO.getHospitalId())
+                    .like(StringUtils.isNotBlank(getRegionAndMedoupInfoVO.getRegionStr()), Region::getName,getRegionAndMedoupInfoVO.getRegionStr())
+                    .select(Region::getName, Region::getCode).list();
+            List<RegionDTO> regionDTOS = new ArrayList<>();
+
+            regions.forEach(region->{
+                RegionDTO regionDTO = new RegionDTO();
+                regionDTO.setCode(region.getCode());
+                regionDTO.setName(region.getName());
+                regionDTOS.add(regionDTO);
+            });
+            regionMedoupDTO.setRegions(regionDTOS);
+        }
+        if("2".equals(getRegionAndMedoupInfoVO.getMark())){
+            List<MedoupDTO> medoupDTOS = new ArrayList<>();
+            List<Medoup> medoups = medoupService.lambdaQuery()
+                    .eq(Medoup::getIsDeleted, IsDeleteEnum.N.getKey())
+                    .like(StringUtils.isNotBlank(getRegionAndMedoupInfoVO.getMedoupStr()), Medoup::getName,getRegionAndMedoupInfoVO.getMedoupStr())
+                    .select(Medoup::getName, Medoup::getCode).list();
+            medoups.forEach(medoup->{
+                MedoupDTO medoupDTO = new MedoupDTO();
+                medoupDTO.setCode(medoup.getCode());
+                medoupDTO.setName(medoup.getName());
+                medoupDTOS.add(medoupDTO);
+            });
+            regionMedoupDTO.setMedoups(medoupDTOS);
+        }
+        return regionMedoupDTO;
+
+    }
 
     /**
      * 获取医院医生下拉列表信息
@@ -68,6 +121,8 @@ public class BasDoctorInfoFacade extends BasDoctorInfoServiceImpl {
                 QueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
                 //QueryWrapper.eq("is_placefile", basDoctorInfoVO.getIsPlacefile());
                 QueryWrapper.in("beh_dept_id",deptSetInfo);
+                QueryWrapper.ne("qc_type_id",0);
+                QueryWrapper.eq("is_placefile",basDoctorInfoVO.getIsPlacefile());
 
                 if(StringUtils.isNotEmpty(basDoctorInfoVO.getInputStr())){
                     QueryWrapper.like("doctor_name",basDoctorInfoVO.getInputStr());

File diff suppressed because it is too large
+ 357 - 226
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java


+ 58 - 3
src/main/java/com/diagbot/facade/ConsoleByDeptExportFacade.java

@@ -52,6 +52,42 @@ public class ConsoleByDeptExportFacade {
         ExcelUtils.exportExcel(res, null, "sheet1", HomePageByDeptDTO.class, fileName, response, 12.8f);
     }
 
+    /**
+     * 各科室缺陷占比科室导出
+     *
+     * @param response
+     * @param exportQcresultVO
+     */
+    public void levelStatisticsExportByDept(HttpServletResponse response, ExportQcresultVO exportQcresultVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        exportQcresultVO.setHospitalId(hospitalId);
+        exportQcresultVO.setUserId(Long.valueOf(userId));
+        //时间设置
+       BehospitalInfoFacade.exportQcresultVOSet(exportQcresultVO);
+        List<ExportExcelByDeptDTO> records = behospitalInfoFacade.getBaseMapper().levelStatisticsExportByDept(exportQcresultVO);
+        List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
+        if(ListUtil.isNotEmpty(records)){
+            ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setWardName(records.get(0).getWardName());
+            exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+            exportByDeptDTO.setExportExcelByDeptDTOS(records);
+            resDTO.add(exportByDeptDTO);
+        }
+        List<ExportNinetyByDeptDTO> resWide = new ArrayList<ExportNinetyByDeptDTO>();
+        if("2".equals(exportQcresultVO.getRadioCheck())){
+            resWide = ConsoleByDeptExportFacade.transList(records, resWide);
+        }
+        String fileName = "抽查住院病历质量情况.xls";
+        response.setContentType("text/html;charset=UTF-8");
+        if ("1".equals(exportQcresultVO.getRadioCheck())) {
+            ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
+        }
+        if ("2".equals(exportQcresultVO.getRadioCheck())) {
+            ExcelUtils.exportExcelUser(resWide, null, "sheet1", ExportNinetyByDeptDTO.class, fileName, response);
+        }
+    }
+
     /**
      * 病案首页不合格/合格数
      *
@@ -67,6 +103,7 @@ public class ConsoleByDeptExportFacade {
         List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
         if(ListUtil.isNotEmpty(records)){
                 ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+                exportByDeptDTO.setWardName(records.get(0).getWardName());
                 exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
                 exportByDeptDTO.setExportExcelByDeptDTOS(records);
             resDTO.add(exportByDeptDTO);
@@ -156,6 +193,7 @@ public class ConsoleByDeptExportFacade {
         List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
         if(ListUtil.isNotEmpty(records)){
             ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setWardName(records.get(0).getWardName());
             exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
             exportByDeptDTO.setExportExcelByDeptDTOS(records);
             resDTO.add(exportByDeptDTO);
@@ -221,6 +259,7 @@ public class ConsoleByDeptExportFacade {
         List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
         if(ListUtil.isNotEmpty(records)){
             ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setWardName(records.get(0).getWardName());
             exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
             exportByDeptDTO.setExportExcelByDeptDTOS(records);
             resDTO.add(exportByDeptDTO);
@@ -273,6 +312,7 @@ public class ConsoleByDeptExportFacade {
         List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
         if(ListUtil.isNotEmpty(records)){
             ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setWardName(records.get(0).getWardName());
             exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
             exportByDeptDTO.setExportExcelByDeptDTOS(records);
             resDTO.add(exportByDeptDTO);
@@ -308,6 +348,7 @@ public class ConsoleByDeptExportFacade {
         if(ListUtil.isNotEmpty(records)){
             ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
             exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+            exportByDeptDTO.setWardName(records.get(0).getWardName());
             exportByDeptDTO.setExportExcelByDeptDTOS(records);
             resDTO.add(exportByDeptDTO);
         }
@@ -346,13 +387,24 @@ public class ConsoleByDeptExportFacade {
      * @return
      */
     public void unModifyExportByDept(HttpServletResponse response, QcResultShortPageVO qcResultShortPageVO) {
-        solveParam(qcResultShortPageVO);
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        qcResultShortPageVO.setHospitalId(hospitalId);
+        qcResultShortPageVO.setUserId(Long.valueOf(userId));
         qcResultShortPageVO.setCurrent(1L);
         qcResultShortPageVO.setSize(Long.MAX_VALUE);
         qcResultShortPageVO.setSearchCount(false);
         List<ExportExcelByDeptDTO> records = behospitalInfoFacade.unModifyExportByDept(qcResultShortPageVO);
+        List<ExportSevenByDeptDTO> resDTO = new ArrayList<ExportSevenByDeptDTO>();
+        if(ListUtil.isNotEmpty(records)){
+            ExportSevenByDeptDTO exportByDeptDTO = new ExportSevenByDeptDTO();
+            exportByDeptDTO.setBehDeptName(records.get(0).getBehDeptName());
+            exportByDeptDTO.setWardName(records.get(0).getWardName());
+            exportByDeptDTO.setExportExcelByDeptDTOS(records);
+            resDTO.add(exportByDeptDTO);
+        }
         String fileName = "未整改病历详情页.xls";
-        ExcelUtils.exportExcelUser(records, null, "sheet1", ExportExcelByDeptDTO.class, fileName, response);
+        ExcelUtils.exportExcelUser(resDTO, null, "sheet1", ExportSevenByDeptDTO.class, fileName, response);
     }
 
     /**
@@ -510,7 +562,7 @@ public class ConsoleByDeptExportFacade {
        }
    }
 
-    public List<ExportNinetyByDeptDTO> transList(List<ExportExcelByDeptDTO>res, List<ExportNinetyByDeptDTO>resWide){
+    public static List<ExportNinetyByDeptDTO> transList(List<ExportExcelByDeptDTO>res, List<ExportNinetyByDeptDTO>resWide){
         if(ListUtil.isNotEmpty(res)){
             ExportNinetyByDeptDTO exportNinetyByDeptDTO = new ExportNinetyByDeptDTO();
             List<ExportWideExcelByDeptDTO>exportWideExcelByDeptDTOs  =  new ArrayList<ExportWideExcelByDeptDTO>();
@@ -518,13 +570,16 @@ public class ConsoleByDeptExportFacade {
                 ExportWideExcelByDeptDTO exportWideExcelByDeptDTO = new ExportWideExcelByDeptDTO();
                 exportWideExcelByDeptDTO.setAvgScore(exportExcelByDeptDTO.getAvgScore());
                 exportNinetyByDeptDTO.setBehDeptName( exportExcelByDeptDTO.getBehDeptName());
+                exportNinetyByDeptDTO.setWardName( exportExcelByDeptDTO.getWardName());
                 exportWideExcelByDeptDTO.setDoctorName(exportExcelByDeptDTO.getDoctorName());
+                exportWideExcelByDeptDTO.setMedoupName(exportExcelByDeptDTO.getMedoupName());
                 List<ExportExcelBehByDeptDTO> exportExcelBehByDeptDTOS = exportExcelByDeptDTO.getExcelBehospitalDTOS();
                 List<ExportExcelWideBehByDeptDTO> exportExcelWideBehByDepDTOs = new ArrayList<>();
 
                 exportExcelBehByDeptDTOS.forEach(exportExcelBehByDeptDTO->{
                     ExportExcelWideBehByDeptDTO exportExcelWideBehByDeptDTO = new ExportExcelWideBehByDeptDTO();
                     exportExcelWideBehByDeptDTO.setBehospitalCode(exportExcelBehByDeptDTO.getBehospitalCode());
+                    exportExcelWideBehByDeptDTO.setFileCode(exportExcelBehByDeptDTO.getFileCode());
                     exportExcelWideBehByDeptDTO.setBehospitalDate(exportExcelBehByDeptDTO.getBehospitalDate());
                     exportExcelWideBehByDeptDTO.setLeaveHospitalDate(exportExcelBehByDeptDTO.getLeaveHospitalDate());
                     exportExcelWideBehByDeptDTO.setPatName(exportExcelBehByDeptDTO.getPatName());

+ 16 - 8
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java

@@ -676,7 +676,7 @@ public class ConsoleByDeptFacade {
      * @param qcResultPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> homePageOrGoodLevelByDept(QcResultPageVO qcResultPageVO) {
+    public IPage<QcResultShortDeptDTO> homePageOrGoodLevelByDept(QcResultPageVO qcResultPageVO) {
         filterFacade.OrGoodLevelPageVOSet(qcResultPageVO);
         return behospitalInfoFacade.getOrGoodLevelByDept(qcResultPageVO);
     }
@@ -826,13 +826,21 @@ public class ConsoleByDeptFacade {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> qcResultShortByDeptPage(QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> qcResultShortByDeptPage(QcResultShortPageVO qcResultShortPageVO) {
         filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
-        IPage<QcResultShortDTO> page = behospitalInfoFacade.qcResultShortByDeptPage(qcResultShortPageVO);
+        IPage<QcResultShortDeptDTO> page = behospitalInfoFacade.qcResultShortByDeptPage(qcResultShortPageVO);
         return page;
     }
 
 
+    public IPage<BehospitalInfoDeptDTO> levelStatisticsByDeptPage(BehospitalPageVO behospitalPageVO) {
+        behospitalPageSet(behospitalPageVO);
+        behospitalPageVO.setUserId(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
+        IPage<BehospitalInfoDeptDTO> res = behospitalInfoFacade.getBaseMapper().levelStatisticsByDeptPage(behospitalPageVO);
+        return res;
+    }
+
+
     /**
      * 关键条目缺陷占比统计-科室
      *
@@ -854,9 +862,9 @@ public class ConsoleByDeptFacade {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> leaveHosMRPageByDept(QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> leaveHosMRPageByDept(QcResultShortPageVO qcResultShortPageVO) {
         filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
-        IPage<QcResultShortDTO> page = behospitalInfoFacade.leaveHosMRPageByDept(qcResultShortPageVO);
+        IPage<QcResultShortDeptDTO> page = behospitalInfoFacade.leaveHosMRPageByDept(qcResultShortPageVO);
         return page;
     }
 
@@ -877,7 +885,7 @@ public class ConsoleByDeptFacade {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
         return behospitalInfoFacade.qcCheckMRPageByDept(qcResultShortPageVO);
     }
@@ -887,7 +895,7 @@ public class ConsoleByDeptFacade {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
         return behospitalInfoFacade.hmImproveMRPageByDept(qcResultShortPageVO);
     }
@@ -987,7 +995,7 @@ public class ConsoleByDeptFacade {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> unModifyMRByDept(QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> unModifyMRByDept(QcResultShortPageVO qcResultShortPageVO) {
         filterFacade.qcResultShortPageVOSet(qcResultShortPageVO);
         return behospitalInfoFacade.unModifyMRByDept(qcResultShortPageVO);
     }

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

File diff suppressed because it is too large
+ 393 - 309
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java


+ 195 - 14
src/main/java/com/diagbot/facade/MedCheckWorkFacade.java

@@ -7,31 +7,46 @@ import com.diagbot.dto.BasDeptInfoDTO;
 import com.diagbot.dto.BehospitalInfoAgeDTO;
 import com.diagbot.dto.CheckWorkDTO;
 import com.diagbot.dto.MedicalRecordDTO;
+import com.diagbot.dto.MedoupDTO;
+import com.diagbot.dto.RegionDTO;
+import com.diagbot.dto.RegionMedoupDTO;
+import com.diagbot.entity.BasDoctorInfo;
+import com.diagbot.entity.DeptMedoup;
 import com.diagbot.entity.MedBehospitalType;
 import com.diagbot.entity.MedCheckInfo;
+import com.diagbot.entity.Medoup;
+import com.diagbot.entity.Region;
+import com.diagbot.entity.RegionDept;
 import com.diagbot.entity.SysTaskCron;
 import com.diagbot.entity.SysUser;
 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.DeptMedoupServiceImpl;
 import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
 import com.diagbot.service.impl.MedCheckInfoServiceImpl;
 import com.diagbot.service.impl.MedicalRecordServiceImpl;
+import com.diagbot.service.impl.MedoupServiceImpl;
+import com.diagbot.service.impl.RegionDeptServiceImpl;
+import com.diagbot.service.impl.RegionServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.SpringContextUtil;
 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.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -61,7 +76,20 @@ public class MedCheckWorkFacade {
     private SysTaskCronFacade sysTaskCronFacade;
     @Autowired
     private BehospitalInfoFacade behospitalInfoFacade;
-
+    @Autowired
+    private RegionDeptServiceImpl regionDeptService;
+    @Autowired
+    private RegionServiceImpl regionService;
+    @Autowired
+    private DeptMedoupServiceImpl deptMedoupService;
+    @Autowired
+    private MedoupServiceImpl medoupService;
+    @Autowired
+    private BasDoctorInfoFacade medoupUserService;
+    @Autowired
+    private BasDoctorInfoFacade basDoctorInfoFacade;
+    @Autowired
+    private SysHospitalSetFacade sysHospitalSetFacade;
     /**
      * @Author songxl
      * @Description 批量操作核查任务(增加和删除)
@@ -272,22 +300,56 @@ public class MedCheckWorkFacade {
             }
         }
         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());
+//            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);
+            //如果没有添加医疗组筛选条件默认查询科室所有数据+医疗组所有人数据
+            List<String> codes = null;
+            if (ListUtil.isEmpty(checkWorkPageVO.getMedoups())) {
+                //获取当前用户科室
+                SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+                sysUserBaseVO.setUserId(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
+                List<String> deptIds = new ArrayList<>();
+                List<BasDeptInfoDTO> selDepts = sysUserFacade.getUserDepts(sysUserBaseVO).getSelDepts();
+                if (ListUtil.isNotEmpty(selDepts)) {
+                    deptIds = selDepts.stream().map(i -> i.getDeptId()).collect(Collectors.toList());
+                }
+                //通过科室获取医疗组
+                List<DeptMedoup> deptMedoups = deptMedoupService.list(new QueryWrapper<DeptMedoup>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("dept_id", deptIds));
+                if (ListUtil.isNotEmpty(deptMedoups)) {
+                    codes = deptMedoups.stream().map(DeptMedoup::getMedoupCode).collect(Collectors.toList());
+                }
+            } else {
+                codes = checkWorkPageVO.getMedoups();
             }
-            if (ListUtil.isNotEmpty(checkWorkPageVO.getDepartment())) {
-                deptIds.retainAll(checkWorkPageVO.getDepartment());
+            if (ListUtil.isNotEmpty(codes)) {
+                List<BasDoctorInfo> basDoctorInfos = basDoctorInfoFacade.list(new QueryWrapper<BasDoctorInfo>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .in("group_id", codes)
+                        .or().isNull("group_id")
+                        .in(ListUtil.isNotEmpty(checkWorkPageVO.getDepts()),"dept_id",checkWorkPageVO.getDepts()));
+                checkWorkPageVO.setDoctorIds(basDoctorInfos.stream().map(BasDoctorInfo::getDoctorId).collect(Collectors.toList()));
             }
-            if (ListUtil.isEmpty(deptIds)) {
-                deptIds.add("999999999999");
+            //获取VIP开房病区科室id
+            String deptsStr = sysHospitalSetFacade.getValue(Long.parseLong(SysUserUtils.getCurrentHospitalID()), "check_order_info");
+            if(StringUtil.isNotEmpty(deptsStr)){
+                checkWorkPageVO.setOrderDepts(Arrays.asList(deptsStr.split(",")));
             }
-            checkWorkPageVO.setDepartment(deptIds);
         }
     }
 
@@ -307,4 +369,123 @@ public class MedCheckWorkFacade {
         }
         return false;
     }
+
+    /**
+     * @param
+     * @Description获取当前用户的病区信息
+     * @Return java.util.List<com.diagbot.dto.RegionDTO>
+     */
+    public RegionMedoupDTO getLocalRegionMedoup() {
+
+        Long userId = Long.parseLong(SysUserUtils.getCurrentPrincipleID());
+        SysUserBaseVO sysUserRoleBaseVO = new SysUserBaseVO();
+        sysUserRoleBaseVO.setUserId(userId);
+        List<Long> roleIds = sysUserFacade.getUserRoles(sysUserRoleBaseVO).getSelRoles().stream().map(i -> i.getId()).collect(Collectors.toList());
+        if(ListUtil.isEmpty(roleIds)){
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该用户无角色信息");
+        }
+        RegionMedoupDTO regionMedoup = new RegionMedoupDTO();
+        SysUserBaseVO sysUserBaseVO = new SysUserBaseVO();
+        sysUserBaseVO.setUserId(Long.parseLong(SysUserUtils.getCurrentPrincipleID()));
+        //获取当前登录用户的科室信息
+        List<BasDeptInfoDTO> selDepts = sysUserFacade.getUserDepts(sysUserBaseVO).getSelDepts();
+        //获取科室关联的病区
+        List<RegionDTO> regions = getLocalRegion(selDepts);
+        if (ListUtil.isEmpty(regions)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该用户无病区关联信息");
+        }
+        regionMedoup.setRegions(regions);
+        //获取科室关联的医疗组
+        List<MedoupDTO> medoups = getLocalMdeoup(selDepts);
+        if (ListUtil.isEmpty(medoups)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "当前用户所属科室无医疗组关联信息");
+        }
+        regionMedoup.setMedoups(medoups);
+        //获取当前用户的医疗组信息
+        List<String> userNames = sysUserFacade.list(new QueryWrapper<SysUser>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", SysUserUtils.getCurrentPrincipleID())
+        ).stream().map(SysUser::getUsername).collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(userNames)) {
+            List<String> medoupTemps = medoupUserService.list(new QueryWrapper<BasDoctorInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("doctor_id", userNames)
+            ).stream().map(BasDoctorInfo::getGroupId).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(medoups)) {
+                regionMedoup.setLocalMedoupCode(medoupTemps.get(0));
+            }
+        }
+        if(roleIds.contains(CheckerRoleEnum.DEPT_SUPERVISOR.getKey() * 1l)){
+            regionMedoup.setShowAllFlag(true);
+        }
+        return regionMedoup;
+    }
+
+    private List<MedoupDTO> getLocalMdeoup(List<BasDeptInfoDTO> selDepts) {
+        List<MedoupDTO> medoups = new ArrayList<>();
+        if (ListUtil.isNotEmpty(selDepts)) {
+            List<String> deptIds = selDepts.stream().map(BasDeptInfoDTO::getDeptId).collect(Collectors.toList());
+            //获取本人科室关联的医疗组code
+            List<DeptMedoup> deptMedoups = deptMedoupService.list(new QueryWrapper<DeptMedoup>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("dept_id", deptIds));
+            List<String> medoupCodes = null;
+//            List<String> doctorIds = sysUserFacade.list(new QueryWrapper<SysUser>()
+//                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                    .eq("id", SysUserUtils.getCurrentPrincipleID())
+//            ).stream().map(SysUser::getUsername).collect(Collectors.toList());
+            if (ListUtil.isNotEmpty(deptMedoups)) {
+                medoupCodes = deptMedoups.stream().map(DeptMedoup::getMedoupCode).collect(Collectors.toList());
+//                medoupCodes = medoupUserService.list(new QueryWrapper<BasDoctorInfo>()
+//                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+//                        .in("doctor_id", doctorIds)
+//                ).stream().map(BasDoctorInfo::getGroupId).collect(Collectors.toList());
+            }
+
+            if (ListUtil.isNotEmpty(medoupCodes)) {
+                //通过code获取医疗组详情
+                if (ListUtil.isNotEmpty(medoupCodes)) {
+                    List<Medoup> medoupTemps = medoupService.list(new QueryWrapper<Medoup>()
+                            .in("code", medoupCodes)
+                            .eq("is_deleted", IsDeleteEnum.N.getKey()));
+                    if (ListUtil.isNotEmpty(medoupTemps)) {
+                        medoupTemps.stream().forEach(medoup -> {
+                            MedoupDTO MedoupDTOTemp = new MedoupDTO();
+                            BeanUtils.copyProperties(medoup, MedoupDTOTemp);
+                            medoups.add(MedoupDTOTemp);
+                        });
+                    }
+                }
+            }
+        }
+        return medoups;
+    }
+
+    private List<RegionDTO> getLocalRegion(List<BasDeptInfoDTO> selDepts) {
+        List<RegionDTO> regions = new ArrayList<>();
+        if (ListUtil.isNotEmpty(selDepts)) {
+            List<String> deptIds = selDepts.stream().map(BasDeptInfoDTO::getDeptId).collect(Collectors.toList());
+            List<RegionDept> regionDepts = regionDeptService.list(new QueryWrapper<RegionDept>()
+                    .eq("hospital_id", SysUserUtils.getCurrentHospitalID())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("dept_id", deptIds));
+            if (ListUtil.isNotEmpty(regionDepts)) {
+                List<String> regionCodes = regionDepts.stream().map(RegionDept::getRegionCode).collect(Collectors.toList());
+                if (ListUtil.isNotEmpty(regionCodes)) {
+                    List<Region> regionTemps = regionService.list(new QueryWrapper<Region>()
+                            .in("code", regionCodes)
+                            .eq("is_deleted", IsDeleteEnum.N.getKey())
+                            .eq("hospital_id", SysUserUtils.getCurrentHospitalID()));
+                    if (ListUtil.isNotEmpty(regionTemps)) {
+                        regionTemps.stream().forEach(region -> {
+                            RegionDTO RegionDTOTemp = new RegionDTO();
+                            BeanUtils.copyProperties(region, RegionDTOTemp);
+                            regions.add(RegionDTOTemp);
+                        });
+                    }
+                }
+            }
+        }
+        return regions;
+    }
 }

+ 88 - 28
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -149,12 +149,18 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
             try {
                 useId = Long.valueOf(SysUserUtils.getCurrentPrincipleID());
             } catch (Exception e) {
-            //analyze_run运行质控没有登录认证   所以会获取不到
+                //analyze_run运行质控没有登录认证   所以会获取不到
                 useId = 952795279527L;
             }
         }
+        //获取上一次人工添加的缺陷
+        QcresultInfo qcresultInfoup
+                = this.getOne(
+                new QueryWrapper<QcresultInfo>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .eq("hospital_id", analyzeVO.getHospitalId())
+                        .eq("behospital_code", analyzeVO.getBehospitalCode()), false);
         Date now = DateUtil.now();
-        //逻辑删除记录
         this.update(new UpdateWrapper<QcresultInfo>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id", analyzeVO.getHospitalId())
@@ -192,16 +198,43 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
         qcresultInfo.setGmtModified(now);
         qcresultInfo.setModifier(useId.toString());
         this.save(qcresultInfo);
+        Long newId = qcresultInfo.getId();
         //更新质控评分明细信息
         switch (algorithmVO.getType()) {
             //自动评分
             case 0:
                 //删除记录
-                qcresultDetailServiceImpl.remove(new QueryWrapper<QcresultDetail>()
+//                qcresultDetailServiceImpl.remove(new QueryWrapper<QcresultDetail>()
+//                        .eq("hospital_id", analyzeVO.getHospitalId())
+//                        .eq("behospital_code", analyzeVO.getBehospitalCode()));
+
+                //上一次人工评分条目
+                List<QcresultDetail> oldQcresultDetails = null;
+                if (qcresultInfoup != null) {
+                    oldQcresultDetails = qcresultDetailServiceImpl.list(new QueryWrapper<QcresultDetail>()
+                            .eq("hospital_id", analyzeVO.getHospitalId())
+                            .eq("qcresult_info_id", qcresultInfoup.getId())
+                            .eq("grade_type", "2")
+                            .eq("behospital_code", analyzeVO.getBehospitalCode()));
+                }
+
+                qcresultDetailServiceImpl.update(new UpdateWrapper<QcresultDetail>()
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
                         .eq("hospital_id", analyzeVO.getHospitalId())
-                        .eq("behospital_code", analyzeVO.getBehospitalCode()));
+                        .eq("behospital_code", analyzeVO.getBehospitalCode())
+                        .set("is_deleted", IsDeleteEnum.Y.getKey())
+                        .set("modifier", useId)
+                        .set("gmt_modified", now));
+                //
                 //批量插入新的数据
                 List<QcresultDetail> qcresultDetailList = new ArrayList<>();
+                if (ListUtil.isNotEmpty(oldQcresultDetails)) {
+                    qcresultDetailList.addAll(oldQcresultDetails);
+                    qcresultDetailList.forEach(qcresultDetail -> {
+                        //原手动添加缺陷绑定新机器评分id
+                        qcresultDetail.setQcresultInfoId(newId);
+                    });
+                }
                 List<QcResultAlgVO> qcResultAlgVORes = algorithmVO.getQcResultAlgVOList();
                 if (ListUtil.isNotEmpty(qcResultAlgVORes)) {
                     for (QcResultAlgVO qcResultAlgVO : qcResultAlgVORes) {
@@ -216,6 +249,7 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                         qcresultDetail.setGmtModified(now);
                         qcresultDetail.setModifier(useId.toString());
                         qcresultDetail.setInfo(StringUtil.isNotBlank(qcResultAlgVO.getInfo()) ? qcResultAlgVO.getInfo() : "");
+                        qcresultDetail.setQcresultInfoId(newId);
                         qcresultDetailList.add(qcresultDetail);
                     }
                     qcresultDetailServiceImpl.saveBatch(qcresultDetailList);
@@ -233,6 +267,7 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                 qcresultDetailAdd.setCreator(useId.toString());
                 qcresultDetailAdd.setGmtModified(now);
                 qcresultDetailAdd.setModifier(useId.toString());
+                qcresultDetailAdd.setQcresultInfoId(newId);
                 qcresultDetailServiceImpl.save(qcresultDetailAdd);
                 break;
             case 2:
@@ -253,44 +288,44 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                         .set("msg", algorithmVO.getOptResultAlgVO().getMsg())
                         .set("score", algorithmVO.getOptResultAlgVO().getScore())
                         .set("opt_type", 3)
-                        .set("grade_type",2)
+                        .set("grade_type", 2)
                         .set("modifier", useId)
+                        .set("qcresult_info_id", newId)
                         .set("gmt_modified", now)
-                        .set("explain_info",algorithmVO.getOptResultAlgVO().getExplainInfo())
+                        .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, "当前用户不是分配的核查人员");
-                }
+//                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)
-                {
+                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("grade_type", 2)
                             .set("opt_type", 2)
+                            .set("qcresult_info_id", newId)
                             .set("modifier", useId)
                             .set("gmt_modified", now)
                     );
                 }
                 //1恢复
-                else if(analyzeVO.getDelStatus()==1)
-                {
+                else if (analyzeVO.getDelStatus() == 1) {
                     //该条目是机器插入条目
                     qcresultDetailServiceImpl.update(new UpdateWrapper<QcresultDetail>()
                             .eq("id", algorithmVO.getOptResultAlgVO().getId())
@@ -298,24 +333,48 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                             .eq("hospital_id", analyzeVO.getHospitalId())
                             .eq("behospital_code", analyzeVO.getBehospitalCode())
                             .set("is_deleted", IsDeleteEnum.N.getKey())
-                            .set("grade_type",2)
+                            .set("grade_type", 2)
                             .set("opt_type", 1)
+                            .set("qcresult_info_id", newId)
                             .set("modifier", useId)
                             .set("remark", null)
                             .set("gmt_modified", now)
                     );
-                }
-                else {
+                } else {
                     throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "delStatus参数错误");
                 }
-
-
                 break;
             default:
                 /* DO NOTHING */
                 break;
         }
 
+        //如果不是自动评分(是新增修改删除条目)修改评分主表id
+        if (algorithmVO.getType() != 0) {
+            //修改上一次人工条目 评分主表id
+            if (qcresultInfoup != null && qcresultInfoup.getId() != null) {
+                qcresultDetailServiceImpl.update(new UpdateWrapper<QcresultDetail>()
+                        .eq("qcresult_info_id", qcresultInfoup.getId())
+                        .eq("hospital_id", analyzeVO.getHospitalId())
+                        .eq("grade_type", 2)
+                        .eq("behospital_code", analyzeVO.getBehospitalCode())
+                        .set("qcresult_info_id", newId)
+                        .set("modifier", useId)
+                        .set("gmt_modified", now)
+                );
+            }
+            //未删除的 评分主表id
+            qcresultDetailServiceImpl.update(new UpdateWrapper<QcresultDetail>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("hospital_id", analyzeVO.getHospitalId())
+                    .eq("behospital_code", analyzeVO.getBehospitalCode())
+                    .set("qcresult_info_id", newId)
+                    .set("modifier", useId)
+                    .set("gmt_modified", now)
+            );
+        }
+
+
         //质控模块评分数据
         //统一为长兴的算法
         //逻辑删除数据
@@ -337,6 +396,7 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                 medQcresultCases.setCreator(useId.toString());
                 medQcresultCases.setGmtModified(now);
                 medQcresultCases.setModifier(useId.toString());
+                medQcresultCases.setQcresultInfoId(newId);
                 medQcresultCasesList.add(medQcresultCases);
             }
             medQcresultCasesService.saveBatch(medQcresultCasesList);

+ 90 - 24
src/main/java/com/diagbot/facade/RecordCheckFacade.java

@@ -6,8 +6,12 @@ import com.diagbot.dto.BehospitalInfoAgeDTO;
 import com.diagbot.dto.CheckedRecordListDTO;
 import com.diagbot.dto.SysUserDeptDTO;
 import com.diagbot.entity.BasDeptInfo;
+import com.diagbot.entity.BasDoctorInfo;
+import com.diagbot.entity.DeptMedoup;
 import com.diagbot.entity.MedBehospitalType;
 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;
@@ -18,9 +22,11 @@ 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.DeptMedoupServiceImpl;
 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;
@@ -28,8 +34,10 @@ 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.security.core.userdetails.User;
 import org.springframework.stereotype.Component;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -50,6 +58,8 @@ public class RecordCheckFacade {
     @Autowired
     SysUserRoleFacade sysUserRoleFacade;
     @Autowired
+    SysRoleFacade sysRoleFacade;
+    @Autowired
     MedCheckInfoFacade medCheckInfoFacade;
     @Autowired
     MedQcresultDetailService medQcresultDetailService;
@@ -59,6 +69,10 @@ public class RecordCheckFacade {
     BasDeptInfoFacade basDeptInfoFacade;
     @Autowired
     MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
+    @Autowired
+    DeptMedoupServiceImpl deptMedoupService;
+    @Autowired
+    BasDoctorInfoFacade basDoctorInfoFacade;
 
 
     public IPage<CheckedRecordListDTO> checkedRecordList(CheckedRecordListVO checkedRecordListVO) {
@@ -73,10 +87,11 @@ public class RecordCheckFacade {
             deptIds.addAll(sysUserDeptDTO.getSelDepts().stream().map(i -> i.getDeptId()).collect(Collectors.toList()));
         }
         //1.2去除质管科
-        String zkkDeptId = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
+        BasDeptInfo deptInfo = basDeptInfoFacade.getOne(new QueryWrapper<BasDeptInfo>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("hospital_id",hospitalId)
-                .eq("station","质管")).getDeptId();
+                .eq("hospital_id", hospitalId)
+                .eq("station", "质管"));
+
         List<Long> userIds = Lists.newArrayList();
         List<String> JobTypes = Lists.newArrayList();
         roleIds.forEach(roleId -> {
@@ -87,13 +102,17 @@ public class RecordCheckFacade {
             } else if (roleId.intValue() == CheckerRoleEnum.QUAT_SUPERVISOR.getKey()
                     && (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes()) || checkedRecordListVO.getCheckJobTypes().contains(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + ""))) {
                 //添加质管科人员
-                deptIds.add(zkkDeptId);
+                if (deptInfo != null || deptInfo.getDeptId() != null) {
+                    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(zkkDeptId);
+                if (deptInfo != null || deptInfo.getDeptId() != null) {
+                    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))
@@ -103,17 +122,17 @@ public class RecordCheckFacade {
         });
 
         //如果用户是质控科核查人员,在不传入任务类型的时候要添加质控科任务类型进行筛选
-        if(roleIds.contains(CheckerRoleEnum.QUAT_GENERAL.getKey()*1l)){
+        if (roleIds.contains(CheckerRoleEnum.QUAT_GENERAL.getKey() * 1l)) {
             JobTypes.add(CheckJobTypeEnum.QUAT_SUPERVISOR.getKey() + "");
         }
-        if(roleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey()*1l)){
+        if (roleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey() * 1l)) {
             JobTypes.add(CheckJobTypeEnum.DEPT_SUPERVISOR.getKey() + "");
         }
-        if(roleIds.contains(CheckerRoleEnum.HOSP_GENERAL.getKey()*1l)){
+        if (roleIds.contains(CheckerRoleEnum.HOSP_GENERAL.getKey() * 1l)) {
             JobTypes.add(CheckJobTypeEnum.HOSP_SUPERVISOR.getKey() + "");
         }
 
-        if(ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes())){
+        if (ListUtil.isEmpty(checkedRecordListVO.getCheckJobTypes())) {
             checkedRecordListVO.setCheckJobTypes(JobTypes);
         }
         if (ListUtil.isEmpty(userIds)) {
@@ -122,6 +141,11 @@ public class RecordCheckFacade {
         checkedRecordListVO.setCurrentDeptIds(String.join(",", deptIds));
         checkedRecordListVO.setCurrentGeneralUserIds(userIds);
         checkedRecordListVO.setHospitalId(hospitalId);
+
+        //通过主治医生去查,病区、科室、医疗组不作为筛选条件
+        checkedRecordListVO.setDepts(null);
+        checkedRecordListVO.setWards(null);
+//        checkedRecordListVO.setMedoups(null);
         IPage<CheckedRecordListDTO> iPage = medCheckInfoFacade.getBaseMapper().checkedRecordList(checkedRecordListVO);
 
         if (ListUtil.isNotEmpty(iPage.getRecords())) {
@@ -137,6 +161,7 @@ public class RecordCheckFacade {
         return iPage;
     }
 
+
     private List<Long> getUserIdsOfRoleId(Long hospitalId, List<String> deptIds, long roleId) {
         QueryWrapper<SysUserDept> sysUserDeptQueryWrapper = new QueryWrapper<>();
         sysUserDeptQueryWrapper.eq("hospital_id", hospitalId);
@@ -156,46 +181,87 @@ public class RecordCheckFacade {
         Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
         Long userId = Long.parseLong(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", userId)
+        ).stream().distinct().map(SysUserRole::getRoleId).collect(Collectors.toList());
+        if (ListUtil.isNotEmpty(checkRoleIds)) {
+            checkRoleIds.retainAll(roleIds);
+        }
+
+        if (ListUtil.isEmpty(checkRoleIds)) {
+            throw new CommonException(CommonErrorCode.NOT_EXISTS, "您暂无核查权限,请联系管理员~");
+        }
+        //获取判断是否有生成分配的核查任务
         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());
+//        medCheckInfoQueryWrapper.eq("check_id", userId);
+//        medCheckInfoQueryWrapper.eq("check_type", CheckTypeEnum.ALL.getKey());
         MedCheckInfo medCheckInfo = medCheckInfoFacade.getOne(medCheckInfoQueryWrapper);
+        SysUser user = sysUserFacade.getOne(new QueryWrapper<SysUser>()
+                .eq("id", userId)
+                .eq("is_deleted", IsDeleteEnum.N.getKey()));
         if (medCheckInfo == null) {
-            throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据您暂无核查权限!");
+            MedCheckInfo insertCheckInfo = new MedCheckInfo();
+            insertCheckInfo.setBehospitalCode(recordCheckVO.getBehospitalCode());
+            insertCheckInfo.setCheckId(userId);
+            if (user != null) {
+                insertCheckInfo.setCheckName(user.getLinkman());
+            }
+            insertCheckInfo.setCheckType(CheckTypeEnum.ALL.getKey());
+            insertCheckInfo.setHospitalId(hospitalId);
+            insertCheckInfo.setStatus(1);
+            //有科室核查人员角色就讲任务定义为科室核查任务(只针对七院科室核查)
+            if(checkRoleIds.contains(CheckerRoleEnum.DEPT_GENERAL.getKey()*1l)){
+                insertCheckInfo.setCheckType(0);
+            }
+            insertCheckInfo.setCheckTime(DateUtil.now());
+            return medCheckInfoFacade.save(insertCheckInfo);
+
         }
 
+        medCheckInfo.setCheckId(userId);
+        if (user != null) {
+            medCheckInfo.setCheckName(user.getLinkman());
+        }
         medCheckInfo.setStatus(1);
         medCheckInfo.setCheckTime(DateUtil.now());
         medCheckInfoFacade.updateById(medCheckInfo);
 
         return true;
     }
+
     /**
      * @Author songxl
      * @Description获取当前用户的任务来源 和筛选分值
-     * @Date  2021/5/28
+     * @Date 2021/5/28
      * @Param []
-     * @Return java.util.Map<java.lang.String,java.lang.String>
+     * @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();
+        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.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.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());
+            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());
@@ -204,8 +270,8 @@ public class RecordCheckFacade {
                 .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);
+        out.put("source", checkTypes);
+        out.put("value", valus);
         return out;
     }
 }

+ 69 - 3
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.AuthServiceClient;
 import com.diagbot.dto.*;
 import com.diagbot.entity.BasHospitalInfo;
+import com.diagbot.entity.ImageCaptchaParams;
 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;
@@ -25,7 +27,9 @@ import com.diagbot.service.impl.SysUserServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ImageCaptchaUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.RedisUtils;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.BasDeptInfoVO;
@@ -40,7 +44,16 @@ 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 org.springframework.util.StringUtils;
+
+import javax.imageio.ImageIO;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -84,15 +97,57 @@ public class SysUserFacade extends SysUserServiceImpl {
     private SysUserRoleFacade sysUserRoleFacade;
     @Autowired
     private SysDictionaryFacade sysDictionaryFacade;
+    @Autowired
+    private SysHospitalSetFacade sysHospitalSetFacade;
+    @Autowired
+    private RedisUtils redisUtils;
+
+
+
+
+    public void getCaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        response.setContentType("image/png");
+        response.setHeader("Pragma", "no-cache");
+        response.setHeader("Cache-Control", "no-cache");
+        response.setDateHeader("Expires", 0);
+        HttpSession session = request.getSession();
+        String captchaId = session.getId();
+        ServletOutputStream outputStream = response.getOutputStream();
+        ImageCaptchaUtil imageCaptchaUtil = new ImageCaptchaUtil();
+        BufferedImage image = imageCaptchaUtil.createRandom();
+        String captcha = imageCaptchaUtil.getText();
+        redisUtils.set("user:captchaIds:" + captchaId, captcha, 60 * 3);
+        ImageIO.write(image, ImageCaptchaParams.DEFAULT_FORMAT, outputStream);
+        outputStream.flush();
+        outputStream.close();
+    }
 
+
+    /**
+     * 获取标识--选择登录页面
+     * @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
      */
-    public JwtDTO getJwt(String username, String password) {
+    public JwtDTO getJwt(HttpServletRequest request, String username, String password, String captcha) {
         JwtDTO data = new JwtDTO();
         if (StringUtil.isBlank(username)) {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
@@ -102,6 +157,16 @@ public class SysUserFacade extends SysUserServiceImpl {
             throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
                     "请输入密码");
         }
+        if (StringUtils.isEmpty(captcha)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL,
+                    "请输入验证码");
+        }
+        // 验证码校验
+        String captchaId = request.getSession().getId();
+        Object captchaObject = redisUtils.get("user:captchaIds:" + captchaId);
+        if (null == captchaObject || StringUtil.isBlank(captchaObject.toString()) || !captchaObject.toString().trim().equalsIgnoreCase(captcha)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_ERROR, "验证码错误");
+        }
         //使用MD5对密码进行加密
         String MD5Password = DigestUtils.md5DigestAsHex(password.getBytes());
         QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
@@ -121,6 +186,7 @@ public class SysUserFacade extends SysUserServiceImpl {
         if (null == jwt) {
             throw new CommonException(ServiceErrorCode.GET_TOKEN_FAIL);
         }
+        redisUtils.del("user:captchaIds:" + captchaId);
         data.setAccessToken(jwt.getAccess_token());
         data.setRefreshToken(jwt.getRefresh_token());
         data.setType(user.getType());

+ 19 - 8
src/main/java/com/diagbot/mapper/BehospitalInfoMapper.java

@@ -62,7 +62,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
 
     public List<BehospitalInfo> getNoGrade(TaskVO taskVO);
 
-    IPage<BehospitalInfoDTO> getPageByDept(BehospitalPageVO behospitalPageVO);
+    IPage<BehospitalInfoDeptDTO> getPageByDept(BehospitalPageVO behospitalPageVO);
 
     IPage<BehospitalInfoDTO> getPageByPerson(BehospitalPageVO behospitalPageVO);
 
@@ -230,6 +230,15 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      */
     public List<HomePageByDeptDTO> homePageLevelStatisticsByDept(FilterOrderByDeptVO filterOrderByDeptVO);
 
+
+    /**
+     * 各科室缺陷占比科室导出
+     *
+     * @param exportQcresultVO
+     * @return
+     */
+    public List<ExportExcelByDeptDTO> levelStatisticsExportByDept(ExportQcresultVO exportQcresultVO);
+
     /**
      * 单条条目缺陷统计-首页
      *
@@ -253,7 +262,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param qcResultPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> getIsGoodLevelByDept(QcResultPageVO qcResultPageVO);
+    public IPage<QcResultShortDeptDTO> getIsGoodLevelByDept(QcResultPageVO qcResultPageVO);
 
     /**
      * 各科室缺陷占比(组合)-全院-根据内外科系统统计-关联上级科室
@@ -295,7 +304,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param exportQcresultVO
      * @return
      */
-    public List<ExportExcelDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO);
+    public List<ExportExcelByDeptDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO);
 
     /**
      * 医疗组质控评分导出到excel
@@ -319,7 +328,9 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> qcResultShortByDeptPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> qcResultShortByDeptPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+
+    IPage<BehospitalInfoDeptDTO> levelStatisticsByDeptPage(BehospitalPageVO behospitalPageVO);
 
     /**
      * 根据两个主键-批量修改
@@ -391,7 +402,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> leaveHosMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> leaveHosMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
 
     /**
@@ -526,7 +537,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> unModifyMRByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> unModifyMRByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
     /**
      * 不合格/合格数病历号(内页)
@@ -632,7 +643,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
 
     /**
@@ -683,7 +694,7 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
     /**
      * 质控核查质控评分页导出

+ 16 - 0
src/main/java/com/diagbot/mapper/DeptMedoupMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.DeptMedoup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 科室与医疗组关联表 Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface DeptMedoupMapper extends BaseMapper<DeptMedoup> {
+
+}

+ 1 - 1
src/main/java/com/diagbot/mapper/MedCheckInfoMapper.java

@@ -38,5 +38,5 @@ public interface MedCheckInfoMapper extends BaseMapper<MedCheckInfo> {
 
     IPage<CheckedRecordListDTO> checkedRecordList(CheckedRecordListVO checkedRecordListVO);
     //获取核查人员用户科室、姓名、角色
-    List<CheckUserDTO> getCheckUser(CheckUserVO checkUserVOS);
+    List<DeptCheckUserDTO> getCheckUser(CheckUserVO checkUserVOS);
 }

+ 16 - 0
src/main/java/com/diagbot/mapper/MedoupMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.Medoup;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 医疗组表 Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface MedoupMapper extends BaseMapper<Medoup> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/mapper/RegionDeptMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.RegionDept;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 病区与科室关联表 Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface RegionDeptMapper extends BaseMapper<RegionDept> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/mapper/RegionMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.Region;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 病区表 Mapper 接口
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface RegionMapper extends BaseMapper<Region> {
+
+}

+ 7 - 7
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -47,7 +47,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
 
     public List<BehospitalInfo> getNoGrade(TaskVO taskVO);
 
-    IPage<BehospitalInfoDTO> getPageByDept(BehospitalPageVO behospitalPageVO);
+    IPage<BehospitalInfoDeptDTO> getPageByDept(BehospitalPageVO behospitalPageVO);
 
     IPage<BehospitalInfoDTO> getPageByPerson(BehospitalPageVO behospitalPageVO);
 
@@ -310,7 +310,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param exportQcresultVO
      * @return
      */
-    public List<ExportExcelDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO);
+    public List<ExportExcelByDeptDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO);
 
     /**
      * 科室质控评分导出到excel
@@ -334,7 +334,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> qcResultShortByDeptPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> qcResultShortByDeptPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
     /**
      * 关键条目缺陷占比统计
@@ -401,7 +401,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> leaveHosMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> leaveHosMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
     /**
      * 改善率统计-全院(首页)
@@ -516,7 +516,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> unModifyMRByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> unModifyMRByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
     /**
      * 不合格数病历号(内页)
@@ -605,7 +605,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
     /**
      * 病案首页改善率质控评分页导出
@@ -638,7 +638,7 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
 
     /**
      * 质控核查质控评分页导出

+ 16 - 0
src/main/java/com/diagbot/service/DeptMedoupService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.DeptMedoup;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 科室与医疗组关联表 服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface DeptMedoupService extends IService<DeptMedoup> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/MedoupService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.Medoup;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 医疗组表 服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface MedoupService extends IService<Medoup> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/RegionDeptService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.RegionDept;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 病区与科室关联表 服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface RegionDeptService extends IService<RegionDept> {
+
+}

+ 16 - 0
src/main/java/com/diagbot/service/RegionService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.Region;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 病区表 服务类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+public interface RegionService extends IService<Region> {
+
+}

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

@@ -70,7 +70,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     }
 
     @Override
-    public IPage<BehospitalInfoDTO> getPageByDept(BehospitalPageVO behospitalPageVO) {
+    public IPage<BehospitalInfoDeptDTO> getPageByDept(BehospitalPageVO behospitalPageVO) {
         return baseMapper.getPageByDept(behospitalPageVO);
     }
 
@@ -180,7 +180,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @param qcResultPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> getOrGoodLevelByDept(QcResultPageVO qcResultPageVO) {
+    public IPage<QcResultShortDeptDTO> getOrGoodLevelByDept(QcResultPageVO qcResultPageVO) {
         return  baseMapper.getIsGoodLevelByDept(qcResultPageVO);
     }
 
@@ -381,7 +381,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @param exportQcresultVO
      * @return
      */
-    public List<ExportExcelDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO) {
+    public List<ExportExcelByDeptDTO> exportQcresultByDept(ExportQcresultVO exportQcresultVO) {
         return baseMapper.exportQcresultByDept(exportQcresultVO);
     }
 
@@ -406,7 +406,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @param qcResultShortPageVO
      * @return
      */
-    public IPage<QcResultShortDTO> qcResultShortByDeptPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> qcResultShortByDeptPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.qcResultShortByDeptPage(qcResultShortPageVO);
     }
 
@@ -503,8 +503,8 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @return
      */
     @Override
-    public IPage<QcResultShortDTO> leaveHosMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
-        IPage<QcResultShortDTO> qcResultShortDTOIPage = baseMapper.leaveHosMRPageByDept(qcResultShortPageVO);
+    public IPage<QcResultShortDeptDTO> leaveHosMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
+        IPage<QcResultShortDeptDTO> qcResultShortDTOIPage = baseMapper.leaveHosMRPageByDept(qcResultShortPageVO);
         return qcResultShortDTOIPage;
     }
 
@@ -868,7 +868,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @return
      */
     @Override
-    public IPage<QcResultShortDTO> unModifyMRByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> unModifyMRByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.unModifyMRByDept(qcResultShortPageVO);
     }
 
@@ -992,7 +992,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @return
      */
     @Override
-    public IPage<QcResultShortDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> hmImproveMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.hmImproveMRPageByDept(qcResultShortPageVO);
     }
 
@@ -1068,7 +1068,7 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
      * @return
      */
     @Override
-    public IPage<QcResultShortDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
+    public IPage<QcResultShortDeptDTO> qcCheckMRPageByDept(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO) {
         return baseMapper.qcCheckMRPageByDept(qcResultShortPageVO);
     }
 

+ 20 - 0
src/main/java/com/diagbot/service/impl/DeptMedoupServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.DeptMedoup;
+import com.diagbot.mapper.DeptMedoupMapper;
+import com.diagbot.service.DeptMedoupService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 科室与医疗组关联表 服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@Service
+public class DeptMedoupServiceImpl extends ServiceImpl<DeptMedoupMapper, DeptMedoup> implements DeptMedoupService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/MedoupServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.Medoup;
+import com.diagbot.mapper.MedoupMapper;
+import com.diagbot.service.MedoupService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 医疗组表 服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@Service
+public class MedoupServiceImpl extends ServiceImpl<MedoupMapper, Medoup> implements MedoupService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/RegionDeptServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.RegionDept;
+import com.diagbot.mapper.RegionDeptMapper;
+import com.diagbot.service.RegionDeptService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 病区与科室关联表 服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@Service
+public class RegionDeptServiceImpl extends ServiceImpl<RegionDeptMapper, RegionDept> implements RegionDeptService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/RegionServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.Region;
+import com.diagbot.mapper.RegionMapper;
+import com.diagbot.service.RegionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 病区表 服务实现类
+ * </p>
+ *
+ * @author zhanghang
+ * @since 2021-10-20
+ */
+@Service
+public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements RegionService {
+
+}

+ 60 - 0
src/main/java/com/diagbot/util/ImageCaptchaUtil.java

@@ -0,0 +1,60 @@
+package com.diagbot.util;
+
+import com.diagbot.entity.ImageCaptchaParams;
+import org.patchca.color.SingleColorFactory;
+import org.patchca.filter.predefined.CurvesRippleFilterFactory;
+import org.patchca.font.RandomFontFactory;
+import org.patchca.service.Captcha;
+import org.patchca.service.ConfigurableCaptchaService;
+import org.patchca.word.RandomWordFactory;
+
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+
+/**
+ * @author huangrusheng
+ * @version 1.0
+ * @date 2021/5/20 9:54
+ */
+public class ImageCaptchaUtil {
+    private String text;
+
+    /**
+     * 以Web的img识别的base64返回
+     * @param
+     * @return 图片文字内容+base64格式的img标签识别的图片
+     * @throws IOException
+     */
+    public BufferedImage createRandom() throws IOException{
+        ImageCaptchaParams params = new ImageCaptchaParams();
+        ConfigurableCaptchaService  captchaService = new ConfigurableCaptchaService();
+        captchaService.setColorFactory(new SingleColorFactory(Color.black));
+        CurvesRippleFilterFactory curvesRippleFilterFactory = new CurvesRippleFilterFactory();
+        curvesRippleFilterFactory.setColorFactory(captchaService.getColorFactory());
+        curvesRippleFilterFactory.setStrokeMin(1);
+        curvesRippleFilterFactory.setStrokeMax(1.5f);
+        captchaService.setFilterFactory(curvesRippleFilterFactory);
+        captchaService.setHeight(params.getHeight());
+        captchaService.setWidth(params.getWidth());
+        RandomWordFactory wordFactory = new RandomWordFactory();
+        wordFactory.setCharacters(params.getWords());
+        wordFactory.setMaxLength(params.getMaxWordAmount());
+        wordFactory.setMinLength(params.getMinWordAmount());
+        captchaService.setWordFactory(wordFactory);
+        RandomFontFactory fontFactory = new RandomFontFactory();
+        fontFactory.setMaxSize(params.getMaxFontSize());
+        fontFactory.setMinSize(params.getMinFontSize());
+        captchaService.setFontFactory(fontFactory);
+        Captcha captcha = captchaService.getCaptcha();
+        this.text = captcha.getChallenge();
+        return captcha.getImage();
+    }
+
+    /**
+     * 获取验证码文本的方法
+     */
+    public String getText() {
+        return text;
+    }
+}

+ 611 - 0
src/main/java/com/diagbot/util/RedisUtils.java

@@ -0,0 +1,611 @@
+
+package com.diagbot.util;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+@Component
+public class RedisUtils {
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
+
+    public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
+        this.redisTemplate = redisTemplate;
+    }
+    // =============================common============================
+
+    /**
+     * 普通缓存获取
+     *
+     * @param
+     * @return 值
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public Set<String> keys(String pattern) {
+        return redisTemplate.keys(pattern);
+    }
+
+    /**
+     * 指定缓存失效时间
+     *
+     * @param key  键
+     * @param time 时间(秒)
+     * @return
+     */
+    public boolean expire(String key, long time) {
+        try {
+            if (time > 0) {
+                redisTemplate.expire(key, time, TimeUnit.SECONDS);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 根据key 获取过期时间
+     *
+     * @param key 键 不能为null
+     * @return 时间(秒) 返回0代表为永久有效
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public long getExpire(String key) {
+        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
+    }
+
+    /**
+     * 判断key是否存在
+     *
+     * @param key 键
+     * @return true 存在 false不存在
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public boolean hasKey(String key) {
+        try {
+            return redisTemplate.hasKey(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 删除缓存
+     *
+     * @param key 可以传一个值 或多个
+     */
+    @SuppressWarnings("unchecked")
+    public void del(String... key) {
+        if (key != null && key.length > 0) {
+            if (key.length == 1) {
+                redisTemplate.delete(key[0]);
+            } else {
+                redisTemplate.delete(CollectionUtils.arrayToList(key));
+            }
+        }
+    }
+
+    // ============================String=============================
+
+    /**
+     * 普通缓存获取
+     *
+     * @param key 键
+     * @return 值
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public Object get(String key) {
+        return key == null ? null : redisTemplate.opsForValue().get(key);
+    }
+
+    /**
+     * 普通缓存放入
+     *
+     * @param key   键
+     * @param value 值
+     * @return true成功 false失败
+     */
+    public boolean set(String key, Object value) {
+        try {
+            redisTemplate.opsForValue().set(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+
+    }
+
+    /**
+     * 普通缓存放入并设置时间
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期
+     * @return true成功 false 失败
+     */
+    public boolean set(String key, Object value, long time) {
+        try {
+            if (time > 0) {
+                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+            } else {
+                set(key, value);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 递增
+     *
+     * @param key   键
+     * @param delta 要增加几(大于0)
+     * @return
+     */
+    public long incr(String key, long delta) {
+        if (delta < 0) {
+            throw new RuntimeException("递增因子必须大于0");
+        }
+        return redisTemplate.opsForValue().increment(key, delta);
+    }
+
+    /**
+     * 递减
+     *
+     * @param key   键
+     * @param delta 要减少几(小于0)
+     * @return
+     */
+    public long decr(String key, long delta) {
+        if (delta < 0) {
+            throw new RuntimeException("递减因子必须大于0");
+        }
+        return redisTemplate.opsForValue().increment(key, -delta);
+    }
+
+    // ================================Map=================================
+
+    /**
+     * HashGet
+     *
+     * @param key  键 不能为null
+     * @param item 项 不能为null
+     * @return 值
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public Object hget(String key, String item) {
+        return redisTemplate.opsForHash().get(key, item);
+    }
+
+    /**
+     * 获取hashKey对应的所有键值
+     *
+     * @param key 键
+     * @return 对应的多个键值
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public Map<Object, Object> hmget(String key) {
+        return redisTemplate.opsForHash().entries(key);
+    }
+
+    /**
+     * HashSet
+     *
+     * @param key 键
+     * @param map 对应多个键值
+     * @return true 成功 false 失败
+     */
+    public boolean hmset(String key, Map<String, Object> map) {
+        try {
+            redisTemplate.opsForHash().putAll(key, map);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * HashSet 并设置时间
+     *
+     * @param key  键
+     * @param map  对应多个键值
+     * @param time 时间(秒)
+     * @return true成功 false失败
+     */
+    public boolean hmset(String key, Map<String, Object> map, long time) {
+        try {
+            redisTemplate.opsForHash().putAll(key, map);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 向一张hash表中放入数据,如果不存在将创建
+     *
+     * @param key   键
+     * @param item  项
+     * @param value 值
+     * @return true 成功 false失败
+     */
+    public boolean hset(String key, String item, Object value) {
+        try {
+            redisTemplate.opsForHash().put(key, item, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 向一张hash表中放入数据,如果不存在将创建
+     *
+     * @param key   键
+     * @param item  项
+     * @param value 值
+     * @param time  时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
+     * @return true 成功 false失败
+     */
+    public boolean hset(String key, String item, Object value, long time) {
+        try {
+            redisTemplate.opsForHash().put(key, item, value);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 删除hash表中的值
+     *
+     * @param key  键 不能为null
+     * @param item 项 可以使多个 不能为null
+     */
+    public void hdel(String key, Object... item) {
+        redisTemplate.opsForHash().delete(key, item);
+    }
+
+    /**
+     * 判断hash表中是否有该项的值
+     *
+     * @param key  键 不能为null
+     * @param item 项 不能为null
+     * @return true 存在 false不存在
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public boolean hHasKey(String key, String item) {
+        return redisTemplate.opsForHash().hasKey(key, item);
+    }
+
+    /**
+     * hash递增 如果不存在,就会创建一个 并把新增后的值返回
+     *
+     * @param key  键
+     * @param item 项
+     * @param by   要增加几(大于0)
+     * @return
+     */
+    public double hincr(String key, String item, double by) {
+        return redisTemplate.opsForHash().increment(key, item, by);
+    }
+
+    /**
+     * hash递减
+     *
+     * @param key  键
+     * @param item 项
+     * @param by   要减少记(小于0)
+     * @return
+     */
+    public double hdecr(String key, String item, double by) {
+        return redisTemplate.opsForHash().increment(key, item, -by);
+    }
+
+    // ============================set=============================
+
+    /**
+     * 根据key获取Set中的所有值
+     *
+     * @param key 键
+     * @return
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public Set<Object> sGet(String key) {
+        try {
+            return redisTemplate.opsForSet().members(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 根据value从一个set中查询,是否存在
+     *
+     * @param key   键
+     * @param value 值
+     * @return true 存在 false不存在
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public boolean sHasKey(String key, Object value) {
+        try {
+            return redisTemplate.opsForSet().isMember(key, value);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 将数据放入set缓存
+     *
+     * @param key    键
+     * @param values 值 可以是多个
+     * @return 成功个数
+     */
+    public long sSet(String key, Object... values) {
+        try {
+            return redisTemplate.opsForSet().add(key, values);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    /**
+     * 将set数据放入缓存
+     *
+     * @param key    键
+     * @param time   时间(秒)
+     * @param values 值 可以是多个
+     * @return 成功个数
+     */
+    public long sSetAndTime(String key, long time, Object... values) {
+        try {
+            Long count = redisTemplate.opsForSet().add(key, values);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return count;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    /**
+     * 获取set缓存的长度
+     *
+     * @param key 键
+     * @return
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public long sGetSetSize(String key) {
+        try {
+            return redisTemplate.opsForSet().size(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    /**
+     * 移除值为value的
+     *
+     * @param key    键
+     * @param values 值 可以是多个
+     * @return 移除的个数
+     */
+    public long setRemove(String key, Object... values) {
+        try {
+            Long count = redisTemplate.opsForSet().remove(key, values);
+            return count;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+    // ===============================list=================================
+
+    /**
+     * 获取list缓存的内容
+     *
+     * @param key   键
+     * @param start 开始
+     * @param end   结束 0 到 -1代表所有值
+     * @return
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public List<Object> lGet(String key, long start, long end) {
+        try {
+            return redisTemplate.opsForList().range(key, start, end);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 获取list缓存的长度
+     *
+     * @param key 键
+     * @return
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public long lGetListSize(String key) {
+        try {
+            return redisTemplate.opsForList().size(key);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    /**
+     * 通过索引 获取list中的值
+     *
+     * @param key   键
+     * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
+     * @return
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public Object lGetIndex(String key, long index) {
+        try {
+            return redisTemplate.opsForList().index(key, index);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒)
+     * @return
+     */
+    public boolean lSet(String key, Object value) {
+        try {
+            redisTemplate.opsForList().rightPush(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒)
+     * @return
+     */
+    public boolean lSet(String key, Object value, long time) {
+        try {
+            redisTemplate.opsForList().rightPush(key, value);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒)
+     * @return
+     */
+    public boolean lSet(String key, List<Object> value) {
+        try {
+            redisTemplate.opsForList().rightPushAll(key, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 将list放入缓存
+     *
+     * @param key   键
+     * @param value 值
+     * @param time  时间(秒)
+     * @return
+     */
+    public boolean lSet(String key, List<Object> value, long time) {
+        try {
+            redisTemplate.opsForList().rightPushAll(key, value);
+            if (time > 0) {
+                expire(key, time);
+            }
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 根据索引修改list中的某条数据
+     *
+     * @param key   键
+     * @param index 索引
+     * @param value 值
+     * @return
+     */
+    public boolean lUpdateIndex(String key, long index, Object value) {
+        try {
+            redisTemplate.opsForList().set(key, index, value);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+
+    /**
+     * 移除N个值为value
+     *
+     * @param key   键
+     * @param count 移除多少个
+     * @param value 值
+     * @return 移除的个数
+     */
+    public long lRemove(String key, long count, Object value) {
+        try {
+            Long remove = redisTemplate.opsForList().remove(key, count, value);
+            return remove;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return 0;
+        }
+    }
+
+    /**
+     * 按键的排序获取对应的值
+     *
+     * @param keys 多个键
+     * @return List<Object>
+     */
+    @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
+    public List<Object> mget(Collection<String> keys) {
+        return redisTemplate.opsForValue().multiGet(keys);
+    }
+
+}

+ 2 - 1
src/main/java/com/diagbot/vo/AnalyzeVO.java

@@ -12,6 +12,7 @@ import lombok.Data;
 public class AnalyzeVO {
 
     private String behospitalCode; // 病历id
+    private Long qcresultInfoId; // 病历主表id
     @ApiModelProperty(hidden = true)
     private Long hospitalId; //医院ID
     @ApiModelProperty(hidden = true)
@@ -29,5 +30,5 @@ public class AnalyzeVO {
     private Integer delStatus;
     //已核查不能再次评分校验
     @ApiModelProperty("已核查不能再次评分标志位,false表示核查与评分无关已核查也可以评分")
-    private Boolean checkFlag = false;
+    private Boolean checkFlag = true;
 }

+ 21 - 0
src/main/java/com/diagbot/vo/BehospitalPageVO.java

@@ -36,6 +36,17 @@ public class BehospitalPageVO extends Page implements Serializable {
      */
     private String name;
 
+    /**
+     * 病区name
+     */
+    private String wardName;
+
+
+    /**
+     * 医疗组name
+     */
+    private String medoupName;
+
     /**
      * 档案号
      */
@@ -71,6 +82,11 @@ public class BehospitalPageVO extends Page implements Serializable {
      */
     private String deptName;
 
+    /**
+     * 住院科室id
+     */
+    private String deptId;
+
     /**
      * 主诊断
      */
@@ -81,6 +97,11 @@ public class BehospitalPageVO extends Page implements Serializable {
      */
     private String doctorName;
 
+    /**
+     * 医生id
+     */
+    private String doctorId;
+
     @ApiModelProperty(hidden = true)
     private Long userId;
 

+ 8 - 3
src/main/java/com/diagbot/vo/CheckJobPageVO.java

@@ -43,12 +43,17 @@ public class CheckJobPageVO extends Page implements Serializable {
     @ApiModelProperty("主诊断医生")
     private String doctorName;
     //科室id集合
-    @ApiModelProperty(hidden = true)
-    private List<String> deptList;
+    @ApiModelProperty("科室id集合")
+    private List<String> depts;
+    @ApiModelProperty("病区集合")
+    private List<String> wards;
+    @ApiModelProperty("医疗组集合")
+    private List<String> medoups;
     //筛选分值集合
     @ApiModelProperty("筛选分值集合")
     private List<String> values;
 
-
+    @ApiModelProperty("医生id")
+    private List<String> doctorIds;
 
 }

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

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.List;
@@ -19,6 +20,10 @@ public class CheckUserVO {
     private List<Long> roleIds;
     //用户科室集合
     private List<String> deptIds;
+    @ApiModelProperty("病区编号集合")
+    private List<String> region;
+    @ApiModelProperty("医疗组编号集合")
+    private List<String> medoup;
     //医院
     private Long hospitalId;
     //核查状态 0未核查1核查

+ 22 - 1
src/main/java/com/diagbot/vo/CheckWorkPageVO.java

@@ -57,16 +57,31 @@ public class CheckWorkPageVO extends Page implements Serializable {
     @ApiModelProperty("病人住院序号")
     private String behospitalCode;
 
+    /**
+     * 病区编号集合
+     */
+    @ApiModelProperty("病区编号集合")
+    private List<String> wards;
     /**
      * 科室编号集合
      */
     @ApiModelProperty("科室编号集合")
-    private List<String> department;
+    private List<String> depts;
+    /**
+     * 医疗组编号集合
+     */
+    @ApiModelProperty("医疗组编号集合")
+    private List<String> medoups;
     /**
      * 病人住院序号集合
      */
     @ApiModelProperty(hidden = true)
     private List<String> behospitalCodes;
+    /**
+     * 其他病区集合
+     */
+    @ApiModelProperty(hidden = true)
+    private List<String> orderDepts;
 
     /**
      * 病历等级
@@ -80,6 +95,12 @@ public class CheckWorkPageVO extends Page implements Serializable {
     @ApiModelProperty("病人姓名")
     private String name;
 
+    /**
+     * 医生id
+     */
+    @ApiModelProperty("医生id")
+    private List<String> doctorIds;
+
     /**
      * 医生姓名
      */

+ 6 - 2
src/main/java/com/diagbot/vo/CheckedRecordListVO.java

@@ -36,8 +36,8 @@ public class CheckedRecordListVO extends Page implements Serializable {
     /**
      * 科室
      */
-    @ApiModelProperty("科室")
-    private String behDeptId;
+    @ApiModelProperty("科室id集合")
+    private List<String> depts;
 
     /**
      * 病人姓名
@@ -89,6 +89,10 @@ public class CheckedRecordListVO extends Page implements Serializable {
     @ApiModelProperty(hidden = true)
     private String currentDeptIds;
 
+    @ApiModelProperty("病区集合")
+    private List<String> wards;
+    @ApiModelProperty("医疗组集合")
+    private List<String> medoups;
     /**
      * 当前用户下级普通质控员Id集合
      */

+ 18 - 0
src/main/java/com/diagbot/vo/DataEditVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @author: wangsy
+ * @time: 2021/8/4 9:53
+ */
+@Data
+public class DataEditVO {
+    // 医院ID
+    private Long hospitalId;
+    // id
+    private String recId;
+    // json字符串
+    private String wholeData;
+}

+ 10 - 0
src/main/java/com/diagbot/vo/ExportQcresultVO.java

@@ -32,6 +32,16 @@ public class ExportQcresultVO {
     @ApiModelProperty(hidden = true)
     private Long userId;
     private Long deptId;
+    /**
+     * 病区name
+     */
+    private String wardName;
+
+
+    /**
+     * 医疗组name
+     */
+    private String medoupName;
     /**
      * 主诊断
      */

+ 15 - 0
src/main/java/com/diagbot/vo/FilterPageVO.java

@@ -51,6 +51,21 @@ public class FilterPageVO extends Page {
      */
     private String deptName;
 
+    /**
+     * 科室id
+     */
+    private String deptId;
+
+    /**
+     * 医生姓名
+     */
+    private String doctorName;
+
+    /**
+     * 医生id
+     */
+    private String doctorId;
+
     /**
      * 模块id:243=病案首页
      */

+ 31 - 0
src/main/java/com/diagbot/vo/GetRegionAndMedoupInfoVO.java

@@ -0,0 +1,31 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: cy
+ * @time: 2020/12/24 11:28
+ */
+@Getter
+@Setter
+public class GetRegionAndMedoupInfoVO {
+    /**
+     * 病区搜索参数
+     */
+    private String regionStr;
+    /**
+     * 医疗组搜索参数
+     */
+    private String medoupStr;
+    /**
+     * 1-病区 2-医疗组
+     */
+    private String mark;
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+}

+ 17 - 0
src/main/java/com/diagbot/vo/QcResultPageVO.java

@@ -45,6 +45,18 @@ public class QcResultPageVO extends Page {
      */
     private String diagnose;
 
+    /**
+     * 病区name
+     */
+    private String wardName;
+
+
+    /**
+     * 医疗组name
+     */
+    private String medoupName;
+
+
     /**
      * 条目id
      */
@@ -66,6 +78,11 @@ public class QcResultPageVO extends Page {
      */
     private String deptClass;
 
+    /**
+     * 科室id
+     */
+    private String deptId;
+
     /**
      * 医生姓名
      */

+ 16 - 0
src/main/java/com/diagbot/vo/QcResultShortPageVO.java

@@ -43,6 +43,17 @@ public class QcResultShortPageVO extends Page {
      */
     private String diagnose;
 
+    /**
+     * 病区name
+     */
+    private String wardName;
+
+
+    /**
+     * 医疗组name
+     */
+    private String medoupName;
+
     /**
      * title名称
      */
@@ -64,6 +75,11 @@ public class QcResultShortPageVO extends Page {
      * 科室名称
      */
     private String deptName;
+
+    /**
+     * 科室id
+     */
+    private String deptId;
     /**
      * 医生姓名
      */

+ 2 - 1
src/main/java/com/diagbot/vo/UserLoginVO.java

@@ -18,5 +18,6 @@ public class UserLoginVO {
     private String username;
     @NotBlank(message = "请输入密码!")
     private String password;
-
+   //验证码
+    private String captcha;
 }

+ 5 - 1
src/main/java/com/diagbot/vo/data/BasDoctorInfoVO.java

@@ -16,7 +16,11 @@ public class BasDoctorInfoVO {
      * 搜索参数
      */
     private String inputStr;
-    private String deptName;
+    private String deptName = "";
+    /**
+     * 是否归档(0:未归档,1:已归档)
+     */
+    private String isPlacefile = "1";
     @ApiModelProperty(hidden = true)
     private String deptId;
     @ApiModelProperty(hidden = true)

+ 9 - 0
src/main/java/com/diagbot/web/BasDoctorInfoController.java

@@ -2,9 +2,11 @@ package com.diagbot.web;
 
 
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RegionMedoupDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.BasDoctorInfo;
 import com.diagbot.facade.BasDoctorInfoFacade;
+import com.diagbot.vo.GetRegionAndMedoupInfoVO;
 import com.diagbot.vo.data.BasDoctorInfoVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -39,4 +41,11 @@ public class BasDoctorInfoController {
     public RespDTO<List<BasDoctorInfo>> getList(@RequestBody BasDoctorInfoVO basDoctorInfoVO) {
         return RespDTO.onSuc(basDoctorInfoFacade.getDoctorByDept(basDoctorInfoVO));
     }
+
+    @ApiOperation(value = "获取病区、医疗组[by:cy]")
+    @PostMapping("/getRegionAndMedoupList")
+    @SysLogger("getRegionAndMedoupList")
+    public RespDTO<RegionMedoupDTO> getRegionAndMedoupList(@RequestBody GetRegionAndMedoupInfoVO getRegionAndMedoupInfoVO) {
+        return RespDTO.onSuc(basDoctorInfoFacade.getRegionAndMedoupList(getRegionAndMedoupInfoVO));
+    }
 }

+ 2 - 2
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -196,8 +196,8 @@ public class BehospitalInfoController {
                     "leaveHosDateEnd:出院时间结束时间<br>")
     @PostMapping("/page_dept")
     @SysLogger("page_dept")
-    public RespDTO<IPage<BehospitalInfoDTO>> pageDept(@RequestBody BehospitalPageVO behospitalPageVO) {
-        IPage<BehospitalInfoDTO> data = behospitalInfoFacade.pageDept(behospitalPageVO);
+    public RespDTO<IPage<BehospitalInfoDeptDTO>> pageDept(@RequestBody BehospitalPageVO behospitalPageVO) {
+        IPage<BehospitalInfoDeptDTO> data = behospitalInfoFacade.pageDept(behospitalPageVO);
         return RespDTO.onSuc(data);
     }
 

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

@@ -251,7 +251,7 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/homePageOrGoodLevelByDept")
     @SysLogger("homePageOrGoodLevelByDept")
-    public RespDTO<IPage<QcResultShortDTO>> homePageOrGoodLevelByDept(@RequestBody @Valid QcResultPageVO qcResultPageVO) {
+    public RespDTO<IPage<QcResultShortDeptDTO>> homePageOrGoodLevelByDept(@RequestBody @Valid QcResultPageVO qcResultPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.homePageOrGoodLevelByDept(qcResultPageVO));
     }
 
@@ -278,10 +278,26 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/qcResultShortByDeptPage")
     @SysLogger("qcResultShortByDeptPage")
-    public RespDTO<IPage<QcResultShortDTO>> qcResultShortByDeptPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
+    public RespDTO<IPage<QcResultShortDeptDTO>> qcResultShortByDeptPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.qcResultShortByDeptPage(qcResultShortPageVO));
     }
 
+    @ApiOperation(value = "各科室缺陷占比病历列表[by:zhoutg]",
+            notes = "name:姓名<br>" +
+                    "fileCode:档案号<br>" +
+                    "statisticsType: 统计维度 1-本月,2-本年<br>" +
+                    "behosDateStart:入院时间开始时间<br>" +
+                    "behosDateEnd:入院时间结束时间<br>" +
+                    "leaveHosDateStart:出院时间开始时间<br>" +
+                    "leaveHosDateEnd:出院时间结束时间<br>")
+    @PostMapping("/levelStatisticsByDeptPage")
+    @SysLogger("levelStatisticsByDeptPage")
+    public RespDTO<IPage<BehospitalInfoDeptDTO>> levelStatisticsByDeptPage(@RequestBody BehospitalPageVO behospitalPageVO) {
+        IPage<BehospitalInfoDeptDTO> data = consoleByDeptFacade.levelStatisticsByDeptPage(behospitalPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+
     /**
      * 关键条目缺陷占比统计-科室
      *
@@ -328,7 +344,7 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/leaveHosMRPageByDept")
     @SysLogger("leaveHosMRPageByDept")
-    public RespDTO<IPage<QcResultShortDTO>> leaveHosMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
+    public RespDTO<IPage<QcResultShortDeptDTO>> leaveHosMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.leaveHosMRPageByDept(qcResultShortPageVO));
     }
 
@@ -377,7 +393,7 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/qcCheckMRPageByDept")
     @SysLogger("qcCheckMRPageByDept")
-    public RespDTO<IPage<QcResultShortDTO>> qcCheckMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
+    public RespDTO<IPage<QcResultShortDeptDTO>> qcCheckMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.qcCheckMRPageByDept(qcResultShortPageVO));
     }
 
@@ -408,7 +424,7 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/hmImproveMRPageByDept")
     @SysLogger("hmImproveMRPageByDept")
-    public RespDTO<IPage<QcResultShortDTO>> hmImproveMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
+    public RespDTO<IPage<QcResultShortDeptDTO>> hmImproveMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.hmImproveMRPageByDept(qcResultShortPageVO));
     }
 
@@ -476,7 +492,7 @@ public class ConsoleByDeptController {
                     "isPlacefile: 是否归档(0:未归档,1:已归档) <br>")
     @PostMapping("/unModifyMRPageByDept")
     @SysLogger("unModifyMRPageByDept")
-    public RespDTO<IPage<QcResultShortDTO>> unModifyMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
+    public RespDTO<IPage<QcResultShortDeptDTO>> unModifyMRPageByDept(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleByDeptFacade.unModifyMRByDept(qcResultShortPageVO));
     }
 

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

@@ -86,6 +86,13 @@ public class ConsoleByDeptExportController {
         consoleByDeptExportFacade.homePageOrLevelExportByDept(response, qcResultShortPageVO);
     }
 
+    @ApiOperation(value = "各科室缺陷占比科室导出[by:zhaops]",
+            notes = "")
+    @PostMapping("/levelStatisticsExportByDept")
+    @SysLogger("levelStatisticsExportByDept")
+    public void levelStatisticsExportByDept(HttpServletResponse response, @RequestBody ExportQcresultVO exportQcresultVO) {
+        consoleByDeptExportFacade.levelStatisticsExportByDept(response, exportQcresultVO);
+    }
 
 
     @ApiOperation(value = "缺陷详情内页-科室[by:cy]",

+ 54 - 0
src/main/java/com/diagbot/web/DataEditController.java

@@ -0,0 +1,54 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.StrAdmissionNoteDTO;
+import com.diagbot.facade.DataEditFacade;
+import com.diagbot.vo.DataEditVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 数据导入 前端控制器
+ * </p>
+ *
+ * @author wangsy
+ * @since 2020-04-27
+ */
+@RestController
+@RequestMapping("/qc/dataEdit")
+@SuppressWarnings("unchecked")
+@Api(value = "数据编辑API", tags = {"数据编辑API"})
+public class DataEditController {
+
+    @Autowired
+    DataEditFacade dateEditFacade;
+
+    @ApiOperation(value = "获取入院记录结构化json数据")
+    @PostMapping("/getDataEdit")
+    @SysLogger("getDataEdit")
+    public RespDTO<StrAdmissionNoteDTO>getDataEdit() {
+        return RespDTO.onSuc(dateEditFacade.dataSearch());
+    }
+
+    @ApiOperation(value = "更新数据", notes = "recId: id\n" +
+            "wholeData: json字符串")
+    @PostMapping("/saveDataEdit")
+    @SysLogger("saveDataEdit")
+    @Transactional
+    public RespDTO<Boolean> saveDataEdit(@RequestBody @Valid DataEditVO dataEditVO) {
+        Boolean data = dateEditFacade.saveDataEditFacade(dataEditVO);
+        return RespDTO.onSuc(data);
+    }
+
+
+}

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.CheckDeptDTO;
 import com.diagbot.dto.CheckJobDTO;
+import com.diagbot.dto.CheckWardDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.MedCheckInfoFacade;
 import com.diagbot.facade.MedCheckWorkFacade;
@@ -59,8 +60,8 @@ public class MedCheckInfoController {
             notes = "获取核查人员列表")
     @PostMapping("/getCheckUserMap")
     @SysLogger("getCheckUserMap")
-    public RespDTO<Map<String, List<CheckDeptDTO>>> getCheckUserMap() {
-        Map<String, List<CheckDeptDTO>> userInfoMap = medCheckInfoFacade.getCheckUserMap();
+    public RespDTO<Map<String, List<CheckWardDTO>>> getCheckUserMap() {
+        Map<String, List<CheckWardDTO>> userInfoMap = medCheckInfoFacade.getCheckUserMap();
         return RespDTO.onSuc(userInfoMap);
     }
 

+ 17 - 1
src/main/java/com/diagbot/web/MedCheckWorkController.java

@@ -4,6 +4,8 @@ package com.diagbot.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.CheckWorkDTO;
+import com.diagbot.dto.RegionDTO;
+import com.diagbot.dto.RegionMedoupDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.MedCheckWorkFacade;
 import com.diagbot.vo.CheckWorkPageVO;
@@ -17,6 +19,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  *
  * @author songxl
@@ -50,7 +54,9 @@ public class MedCheckWorkController {
                     "jobType:核查任务类型(0-科室任务 1-质控科 2-院级) <br>" +
                     "hospitalId: 医院ID<br>" +
                     "behospitalCode:病人住院序号<br>" +
-                    "departments:科室<br>" +
+                    "ward:病区<br>" +
+                    "depts:科室<br>" +
+                    "medoups:医疗组<br>" +
                     "level:病历等级<br>" +
                     "name:病人姓名<br>" +
                     "doctorName:医生姓名<br>" +
@@ -64,4 +70,14 @@ public class MedCheckWorkController {
         IPage<CheckWorkDTO> data = medCheckworkFacade.pageFac(checkWorkPageVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "获取当前用户所属病区医疗组信息[by:wangsy]",
+            notes = "")
+    @PostMapping("/getLocalRegionMedoup")
+    @SysLogger("getLocalRegionMedoup")
+    public RespDTO<RegionMedoupDTO> getLocalRegionMedoup() {
+        RegionMedoupDTO data = medCheckworkFacade.getLocalRegionMedoup();
+        return RespDTO.onSuc(data);
+    }
+
 }

+ 21 - 2
src/main/java/com/diagbot/web/SysUserController.java

@@ -24,13 +24,18 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.IOException;
+
 
 /**
  * @Description: 用户账号API
@@ -64,11 +69,25 @@ public class SysUserController {
                     "password:密码, 必填, 默认密码:a123456<br> ")
     @PostMapping("/getJwt")
     @SysLogger("getJwt")
-    public RespDTO<JwtDTO> getJwt(@RequestBody UserLoginVO userLoginVO) {
-        JwtDTO data = userFacade.getJwt(userLoginVO.getUsername(), userLoginVO.getPassword());
+    public RespDTO<JwtDTO> getJwt(HttpServletRequest request,@RequestBody UserLoginVO userLoginVO) {
+        JwtDTO data = userFacade.getJwt(request,userLoginVO.getUsername(), userLoginVO.getPassword(),userLoginVO.getCaptcha());
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "获取验证码[by:cy]")
+    @GetMapping("/getCaptcha")
+    @SysLogger("getCaptcha")
+    public void getCaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException {
+           userFacade.getCaptcha(request, response);
+    }
+
+    @ApiOperation(value = "获取标识--选择登录页面[by:cy]")
+    @PostMapping("/getHospitalMark")
+    @SysLogger("getHospitalMark")
+    public RespDTO<Long> getHospitalMark() {
+        Long mark = userFacade.getHospitalMark();
+        return RespDTO.onSuc(mark);
+    }
     @ApiOperation(value = "登录获取jwt[by:gaodm]",
             notes = "username:用户名,必填<br>")
     @PostMapping("/getJwtNoPass")

+ 1 - 1
src/main/resources/application-dev.yml

@@ -59,7 +59,7 @@ spring:
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       platform: mysql
-      url: jdbc:mysql://192.168.2.236:3306/qc_qy?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://192.168.2.237:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
       # 连接池的配置信息

+ 5 - 8
src/main/resources/application-test.yml

@@ -1,5 +1,5 @@
 server:
-  port: 5858
+  port: 5859
   max-http-header-size: 10MB
 
 hystrix:
@@ -109,12 +109,9 @@ spring:
   #redis
   redis:
     database:
-#      cache: 8 # cache索引
-#      token: 8 # Token索引
-#    host: 192.168.2.241  #Redis服务器地址
-      cache: 3 # cache索引
-      token: 3 # Token索引
-    host: 192.168.2.236  #Redis服务器地址
+      cache: 2 # cache索引
+      token: 2 # Token索引
+    host: 192.168.2.241  #Redis服务器地址
     port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
     password: lantone # Redis服务器连接密码(默认为空)
     lettuce:
@@ -167,7 +164,7 @@ oath.self.address: http://${myhost}:${server.port}
 
 # 加解密开关
 encrypt:
-  enable: true
+  enable: false
 
 swagger:
   enable: true

+ 1 - 1
src/main/resources/bootstrap.yml

@@ -2,7 +2,7 @@ spring:
   application:
     name: mrqc-sys
   profiles:
-    active: local
+    active: test
   main:
     allow-bean-definition-overriding: true
 

+ 1 - 1
src/main/resources/logback-spring.xml

@@ -3,7 +3,7 @@
     <!-- 项目名称 -->
     <property name="APPDIR" value="mrqc-sys"/>
     <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
-    <property name="LOG_PATH" value="../logs"/>
+    <property name="LOG_PATH" value="../logs/qy"/>
 
     <!-- 彩色日志 -->
     <!-- 彩色日志依赖的渲染类 -->

+ 1 - 0
src/main/resources/mapper/BasDoctorInfoMapper.xml

@@ -10,6 +10,7 @@
         <result column="name" property="name" />
         <result column="professor" property="professor" />
         <result column="occup" property="occup" />
+        <result column="group_id" property="groupId" />
         <result column="is_deleted" property="isDeleted" />
         <result column="gmt_create" property="gmtCreate" />
         <result column="gmt_modified" property="gmtModified" />

File diff suppressed because it is too large
+ 869 - 181
src/main/resources/mapper/BehospitalInfoMapper.xml


+ 0 - 0
src/main/resources/mapper/DeptMedoupMapper.xml


Some files were not shown because too many files changed in this diff