Ver código fonte

Merge branch 'master' into his/tzmh

# Conflicts:
#	src/main/java/com/diagbot/entity/MedLisResult.java
#	src/main/java/com/diagbot/entity/MedPacsResult.java
#	src/main/java/com/diagbot/mapper/MedLisResultMapper.java
#	src/main/java/com/diagbot/mapper/MedPacsResultMapper.java
#	src/main/java/com/diagbot/service/MedLisResultService.java
#	src/main/java/com/diagbot/service/MedPacsResultService.java
#	src/main/java/com/diagbot/service/impl/MedLisResultServiceImpl.java
#	src/main/java/com/diagbot/service/impl/MedPacsResultServiceImpl.java
#	src/main/resources/mapper/MedLisResultMapper.xml
#	src/main/resources/mapper/MedPacsResultMapper.xml
#	src/test/java/com/diagbot/CodeGeneration.java
lantone 5 anos atrás
pai
commit
dd5efb9bcc

+ 8 - 0
doc/011.20200619v1.3.6.1/qc_initv1.3.6.1.sql

@@ -0,0 +1,8 @@
+use `qc`;
+
+-- 新增权限
+INSERT INTO `sys_permission`(`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `code`, `permissionUrl`, `method`, `descritpion`, `remark`) VALUES (100, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '关键条目缺陷占比', 'FUNC000100', '/console/entryStatistics', 'ALL', '数据报表明细-关键条目缺陷占比', NULL);
+INSERT INTO `sys_role_permission`(`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `role_id`, `permission_id`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', -1, 100, '数据报表明细-关键条目缺陷占比');
+INSERT INTO `sys_menu_permission`(`is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `menu_id`, `permission_id`, `remark`) VALUES ('N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', 34, 100, '数据报表明细-关键条目缺陷占比');
+INSERT INTO `sys_menu`(`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `name`, `parent_id`, `code`, `show_status`, `maintain_status`, `order_no`, `remark`) VALUES (34, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '关键条目缺陷占比', 17, 'YH-ZKK-GJTMQXZB', 1, 1, 10, '用户-质控科-关键条目缺陷占比');
+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, 34, '用户-质控科-关键条目缺陷占比');

+ 85 - 0
doc/011.20200628化验辅检危急值/qc_init.sql

@@ -0,0 +1,85 @@
+use `qc`;
+
+drop table if exists med_lis_result;
+CREATE TABLE `med_lis_result` (
+  `rept_no` int(11) NOT NULL COMMENT '报告单号',
+  `hospital_id` int(11) NOT NULL COMMENT '医院ID',
+  `behospital_code` varchar(255) DEFAULT NULL COMMENT '住院病人ID',
+  `item_code` varchar(255) DEFAULT NULL COMMENT '报告代码',
+  `item_name` varchar(255) DEFAULT NULL COMMENT '报告名称',
+  `result` varchar(255) DEFAULT NULL COMMENT '检验结果',
+  `reference_min` varchar(255) DEFAULT NULL COMMENT '最小参考值',
+  `reference_max` varchar(255) DEFAULT NULL COMMENT '最大参考值',
+  `unit` varchar(255) DEFAULT NULL COMMENT '单位',
+  `abnormal` varchar(255) DEFAULT NULL COMMENT '异常标志',
+  `color` varchar(255) DEFAULT NULL COMMENT '异常颜色',
+  `is_deleted` char(3) DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(60) DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(60) DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  PRIMARY KEY (`rept_no`,`hospital_id`),
+  KEY `behospital_code` (`behospital_code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+drop table if exists med_pacs_result;
+CREATE TABLE `med_pacs_result` (
+  `rept_no` varchar(50) NOT NULL COMMENT '报告单号',
+  `hospital_id` int(11) NOT NULL COMMENT '医院ID',
+  `behospital_code` varchar(50) DEFAULT NULL COMMENT '住院病人ID',
+  `rept_name` varchar(255) DEFAULT NULL COMMENT '报告名称',
+  `part` varchar(255) DEFAULT NULL COMMENT '检查部位',
+  `clinic_sight` varchar(255) DEFAULT NULL COMMENT '检查所见',
+  `rept_diag` varchar(255) DEFAULT NULL COMMENT '检查结果诊断',
+  `remark` varchar(1024) DEFAULT NULL COMMENT '观察记录',
+  `clinic_diag` varchar(255) DEFAULT NULL COMMENT '临床诊断',
+  `apply_doctor` varchar(50) DEFAULT NULL COMMENT '申请医生',
+  `checker_doctor` varchar(50) DEFAULT NULL COMMENT '审核医生',
+  `report_doctor` varchar(50) DEFAULT NULL COMMENT '报告医生',
+  `dept_name` varchar(50) DEFAULT NULL COMMENT '科室名称',
+  `is_deleted` char(3) DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(60) DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(60) DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  PRIMARY KEY (`rept_no`,`hospital_id`),
+  KEY `behospital_code` (`behospital_code`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+
+
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('297', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'hospitalId', '医院ID', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('298', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'behospitalCode', '病人住院ID', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('299', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'recType', '记录类型', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('300', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'crisisId', '危急值ID', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('301', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'crisisName', '危急值名称', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('302', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'deptId', '开单科室ID', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('303', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'deptName', '开单科室名称', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('304', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'doctorId', '开单医生ID', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('305', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'doctorName', '开单医生姓名', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('306', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'crisisValue', '危急结果值', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('307', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'crisisDesc', '危急值描述', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('308', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'crisisStatus', '危急值状态', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('309', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'crisisTopValue', '参考上限', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('310', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'crisisLowerValue', '参考下限', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('311', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'sendDate', '送检时间', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('312', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '20', 'repDate', '报告时间', '2', '0', '危急值');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('313', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'reptNo', '报告单号', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('314', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'itemCode', '报告代码', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('315', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'itemName', '报告名称', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('316', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'result', '检验结果', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('317', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'referenceMin', '最小参考值', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('318', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'referenceMax', '最大参考值', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('319', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'unit', '单位', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('320', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'abnormal', '异常标志', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('321', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '21', 'color', '异常颜色', '2', '0', '化验');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('322', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'reptNo', '报告单号', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('323', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'reptName', '报告名称', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('324', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'part', '检查部位', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('325', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'clinicSight', '检查所见', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('326', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'reptDiag', '检查结果诊断', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('327', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'remark', '观察记录', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('328', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'clinicDiag', '临床诊断', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('329', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'applyDoctor', '申请医生', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('330', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'checkerDoctor', '审核医生', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('331', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'reportDoctor', '报告医生', '2', '0', '辅检');
+INSERT INTO `qc`.`sys_dictionary_info` (`id`, `is_deleted`, `gmt_create`, `gmt_modified`, `creator`, `modifier`, `group_type`, `name`, `val`, `return_type`, `order_no`, `remark`) VALUES ('332', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '22', 'deptName', '科室名称', '2', '0', '辅检');

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

@@ -131,6 +131,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/export/homePageLevelExport").permitAll()
                 .antMatchers("/console/export/entryGroupByEntryExport").permitAll()
                 .antMatchers("/console/export/levelExport").permitAll()
+                .antMatchers("/console/entryStatistics").permitAll()
                 .antMatchers("/console/export/levelExport_TZ").permitAll()
                 .antMatchers("/qc/data/sendDoctorInfos").permitAll()
                 .antMatchers("/qc/data/sendDeptInfos").permitAll()

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

@@ -159,6 +159,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/export/homePageLevelExport", request)
                 || matchers("/console/export/entryGroupByEntryExport", request)
                 || matchers("/console/export/levelExport", request)
+                || matchers("/console/entryStatistics", request)
                 || matchers("/console/export/levelExport_TZ", request)
                 || matchers("/qc/data/sendDoctorInfos", request)
                 || matchers("/qc/data/sendDeptInfos", request)

+ 158 - 0
src/main/java/com/diagbot/dto/EntryStatisticsDTO.java

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

+ 59 - 7
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -27,6 +27,9 @@ import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.entity.HomeDiagnoseInfo;
 import com.diagbot.entity.HomeOperationInfo;
 import com.diagbot.entity.HomePage;
+import com.diagbot.entity.MedCrisisInfo;
+import com.diagbot.entity.MedLisResult;
+import com.diagbot.entity.MedPacsResult;
 import com.diagbot.entity.MedicalRecord;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
@@ -115,6 +118,12 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     ModelHospitalFacade modelHospitalFacade;
     @Autowired
     private FilterFacade filterFacade;
+    @Autowired
+    MedLisResultFacade medLisResultFacade;
+    @Autowired
+    MedPacsResultFacade medPacsResultFacade;
+    @Autowired
+    MedCrisisInfoFacade medCrisisInfoFacade;
 
     /**
      * 分页
@@ -238,6 +247,27 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 .eq("behospital_code", analyzeVO.getBehospitalCode())
         );
 
+        // 危急值
+        List<MedCrisisInfo> medCrisisInfoList = medCrisisInfoFacade.list(new QueryWrapper<MedCrisisInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("behospital_code", analyzeVO.getBehospitalCode())
+        );
+
+        // 化验
+        List<MedLisResult> medLisResultList = medLisResultFacade.list(new QueryWrapper<MedLisResult>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("behospital_code", analyzeVO.getBehospitalCode())
+        );
+
+        // 辅检
+        List<MedPacsResult> medPacsResultList = medPacsResultFacade.list(new QueryWrapper<MedPacsResult>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId)
+                .eq("behospital_code", analyzeVO.getBehospitalCode())
+        );
+
         // 获取病案首页
         HomePage homePage = homePageFacade.getOne(new QueryWrapper<HomePage>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
@@ -329,6 +359,24 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
                     dicMap.get("1"), Arrays.asList("daStartDate", "daStopDate"));
         }
 
+        // 危急值
+        if (ListUtil.isNotEmpty(medCrisisInfoList)) {
+            addDataWithKeyConvert("危急值", medCrisisInfoList, medrecVoList,
+                    dicMap.get("20"), Arrays.asList("sendDate", "repDate"));
+        }
+
+        // 化验
+        if (ListUtil.isNotEmpty(medLisResultList)) {
+            addDataWithKeyConvert("化验", medLisResultList, medrecVoList,
+                    dicMap.get("21"), new ArrayList<>());
+        }
+
+        // 辅检
+        if (ListUtil.isNotEmpty(medPacsResultList)) {
+            addDataWithKeyConvert("辅检", medPacsResultList, medrecVoList,
+                    dicMap.get("22"), new ArrayList<>());
+        }
+
         // 病案首页
         if (homePage != null) {
             addDataWithFirstPage("病案首页", homePage, medrecVoList, dicMap,
@@ -533,24 +581,24 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
     }
 
     /**
-     * 拼接数据(医嘱),从数据字典获取信息转换
+     * 拼接数据,从数据字典获取信息转换
      *
      * @param key
      * @param list
      * @param medrecVoList
      * @param map
      */
-    public void addDataWithKeyConvert(String key, List<DoctorAdvice> list,
+    public <T> void addDataWithKeyConvert(String key, List<T> list,
                                       List<MedrecVo> medrecVoList, Map<String, String> map, List<String> dateList) {
         MedrecVo medrecVo = new MedrecVo();
         medrecVo.setTitle(key);
         Map<String, Object> content = new HashMap<>();
         List<String> contents = new ArrayList<>();
 
-        for (DoctorAdvice doctorAdvice : list) {
+        for (T bean : list) {
             try {
                 Map<String, String> res = new HashMap<>();
-                Map<String, Object> objectMap = MapUtil.objectToMap(doctorAdvice);
+                Map<String, Object> objectMap = MapUtil.objectToMap(bean);
                 for (String objKey : objectMap.keySet()) {
                     if (map.get(objKey) != null) {
                         if (dateList.contains(objKey)) {
@@ -766,6 +814,7 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         GetDetailVO getDetailVO = new GetDetailVO();
         getDetailVO.setHospitalId(analyzeApiVO.getHospitalId());
         getDetailVO.setBehospitalCode(analyzeApiVO.getBehospitalCode());
+        getDetailVO.setNeedGroup(analyzeApiVO.getNeedGroup());
         return getByBehospitalCodeApi(getDetailVO);
     }
 
@@ -810,9 +859,12 @@ public class BehospitalInfoFacade extends BehospitalInfoServiceImpl {
         BeanUtil.copyProperties(getDetailVO, analyzeVO);
         List<MsgDTO> msgDTOList = getMsg(analyzeVO);
         List<MsgApiDTO> msgApiDTOList = BeanUtil.listCopyTo(msgDTOList, MsgApiDTO.class);
-        Map<String, List<MsgApiDTO>> msgMap = EntityUtil.makeEntityListMap(msgApiDTOList, "modelName");
-
-        res.put("details", msgMap);
+        if (getDetailVO.getNeedGroup() == 0) {
+            res.put("details", msgApiDTOList);
+        } else {
+            Map<String, List<MsgApiDTO>> msgMap = EntityUtil.makeEntityListMap(msgApiDTOList, "modelName");
+            res.put("details", msgMap);
+        }
         return res;
     }
 

+ 157 - 0
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.aggregate.ResultStatisticsAggregate;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryNumDTO;
+import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
@@ -17,6 +18,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
+import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
@@ -618,4 +620,159 @@ public class ConsoleFacade {
         IPage<QcResultShortDTO> page = behospitalInfoFacade.qcResultShortPage(qcResultShortPageVO);
         return page;
     }
+
+    /**
+     * 关键条目缺陷占比统计
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO) {
+        filterFacade.entryStatisticsVOSet(entryStatisticsVO);
+        if (entryStatisticsVO.getDeptName().equals("全院")) {
+            entryStatisticsVO.setDeptName("");
+        }
+        List<EntryStatisticsDTO> records = behospitalInfoFacade.entryStatistics(entryStatisticsVO);
+        //增加全院数据
+        if (entryStatisticsVO.getDeptName().equals("")) {
+            EntryStatisticsDTO record = getEntryGlobleRecord(records);
+            if (record != null) {
+                records.add(0, record);
+            }
+        }
+        return records;
+    }
+
+    /**
+     * 关键条目缺陷占比统计增加全院记录
+     *
+     * @param records
+     * @return
+     */
+    private EntryStatisticsDTO getEntryGlobleRecord(List<EntryStatisticsDTO> records) {
+        DecimalFormat df = new DecimalFormat("#0.00");
+        if (ListUtil.isEmpty(records)) {
+            return null;
+        }
+
+        EntryStatisticsDTO record = new EntryStatisticsDTO();
+        record.setDeptName("全院");
+        //未在24小时内完成会诊
+        Integer consultationNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getConsultationNum)
+                .reduce(0, Integer::sum);
+        record.setConsultationNum(consultationNum);
+        record.setConsultationEntryId(records.get(0).getConsultationEntryId());
+        Integer consultationMRNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getConsultationMRNum)
+                .reduce(0, Integer::sum);
+        record.setConsultationMRNum(consultationMRNum);
+        if (consultationMRNum != null && !consultationMRNum.equals(0)) {
+            Double consultationPercent = BigDecimal.valueOf(consultationNum)
+                    .divide(BigDecimal.valueOf(consultationMRNum), 4, RoundingMode.HALF_UP)
+                    .doubleValue();
+            String consultationPercentStr
+                    = df.format(BigDecimal.valueOf(consultationPercent).multiply(BigDecimal.valueOf(100))) + "%";
+            record.setConsultationPercent(consultationPercent);
+            record.setConsultationPercentStr(consultationPercentStr);
+        }
+        //手术记录名称不匹配
+        Integer operationNameNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getOperationNameNum)
+                .reduce(0, Integer::sum);
+        record.setOperationNameNum(operationNameNum);
+        record.setOperationNameEntryId(records.get(0).getOperationNameEntryId());
+        Integer operationMRNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getOperationMRNum)
+                .reduce(0, Integer::sum);
+        record.setOperationMRNum(operationMRNum);
+        if (operationMRNum != null && !operationMRNum.equals(0)) {
+            Double operationNamePercent = BigDecimal.valueOf(operationNameNum)
+                    .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
+                    .doubleValue();
+            String operationNamePercentStr
+                    = df.format(BigDecimal.valueOf(operationNamePercent).multiply(BigDecimal.valueOf(100))) + "%";
+            record.setOperationNamePercent(operationNamePercent);
+            record.setOperationNamePercentStr(operationNamePercentStr);
+        }
+        //术后首程未在15分钟内完成
+        Integer operation15MinuteNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getOperation15MinuteNum)
+                .reduce(0, Integer::sum);
+        record.setOperation15MinuteNum(operation15MinuteNum);
+        record.setOperation15MinuteEntryId(records.get(0).getOperation15MinuteEntryId());
+        if (operationMRNum != null && !operationMRNum.equals(0)) {
+            Double operation15MinutePercent = BigDecimal.valueOf(operation15MinuteNum)
+                    .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
+                    .doubleValue();
+            String operation15MinutePercentStr
+                    = df.format(BigDecimal.valueOf(operation15MinutePercent).multiply(BigDecimal.valueOf(100))) + "%";
+            record.setOperation15MinutePercent(operation15MinutePercent);
+            record.setOperation15MinutePercentStr(operation15MinutePercentStr);
+        }
+        //病案首页手术时间不匹配
+        Integer operationTimeNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getOperationTimeNum)
+                .reduce(0, Integer::sum);
+        record.setOperationTimeNum(operationTimeNum);
+        record.setOperationTimeEntryId(records.get(0).getOperationTimeEntryId());
+        if (operationMRNum != null && !operationMRNum.equals(0)) {
+            Double operationTimePercent = BigDecimal.valueOf(operationTimeNum)
+                    .divide(BigDecimal.valueOf(operationMRNum), 4, RoundingMode.HALF_UP)
+                    .doubleValue();
+            String operationTimePercentStr
+                    = df.format(BigDecimal.valueOf(operationTimePercent).multiply(BigDecimal.valueOf(100))) + "%";
+            record.setOperationTimePercent(operationTimePercent);
+            record.setOperationTimePercentStr(operationTimePercentStr);
+        }
+        //未在6小时内书写危机值记录
+        Integer crisisNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getCrisisNum)
+                .reduce(0, Integer::sum);
+        record.setCrisisNum(crisisNum);
+        record.setCrisisEntryId(records.get(0).getCrisisEntryId());
+        Integer crisisMRNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getCrisisMRNum)
+                .reduce(0, Integer::sum);
+        record.setCrisisMRNum(crisisMRNum);
+        if (crisisMRNum != null && !crisisMRNum.equals(0)) {
+            Double crisisPercent = BigDecimal.valueOf(crisisNum)
+                    .divide(BigDecimal.valueOf(crisisMRNum), 4, RoundingMode.HALF_UP)
+                    .doubleValue();
+            String crisisPercentStr
+                    = df.format(BigDecimal.valueOf(crisisPercent).multiply(BigDecimal.valueOf(100))) + "%";
+            record.setCrisisPercent(crisisPercent);
+            record.setCrisisPercentStr(crisisPercentStr);
+        }
+        //病人住院超过30天,阶段小节书写
+        Integer stageSummaryNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getStageSummaryNum)
+                .reduce(0, Integer::sum);
+        record.setStageSummaryNum(stageSummaryNum);
+        record.setStageSummaryEntryId(records.get(0).getStageSummaryEntryId());
+        Integer stageSummaryMRNum = records
+                .stream()
+                .map(EntryStatisticsDTO::getStageSummaryMRNum)
+                .reduce(0, Integer::sum);
+        record.setStageSummaryMRNum(stageSummaryMRNum);
+        if (stageSummaryMRNum != null && !stageSummaryMRNum.equals(0)) {
+            Double stageSummaryPercent = BigDecimal.valueOf(stageSummaryNum)
+                    .divide(BigDecimal.valueOf(stageSummaryMRNum), 4, RoundingMode.HALF_UP)
+                    .doubleValue();
+            String stageSummaryPercentStr
+                    = df.format(BigDecimal.valueOf(stageSummaryPercent).multiply(BigDecimal.valueOf(100))) + "%";
+            record.setStageSummaryPercent(stageSummaryPercent);
+            record.setStageSummaryPercentStr(stageSummaryPercentStr);
+        }
+        return record;
+    }
 }

+ 15 - 0
src/main/java/com/diagbot/facade/FilterFacade.java

@@ -4,6 +4,7 @@ import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
@@ -255,4 +256,18 @@ public class FilterFacade {
         long interval = qcResultShortPageVO.getEndDate().getTime() + 1000;
         qcResultShortPageVO.setEndDate(new Date(Long.valueOf(interval)));
     }
+
+    /**
+     * 关键条目缺陷占比入参拼接
+     *
+     * @param entryStatisticsVO
+     */
+    public void entryStatisticsVOSet(EntryStatisticsVO entryStatisticsVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        entryStatisticsVO.setHospitalId(hospitalId);
+        entryStatisticsVO.setUserId(Long.valueOf(userId));
+        long interval = entryStatisticsVO.getEndDate().getTime() + 1000;
+        entryStatisticsVO.setEndDate(new Date(Long.valueOf(interval)));
+    }
 }

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

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

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

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

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

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

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.DeptNumDTO;
+import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.ExportExcelDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
@@ -15,6 +16,7 @@ import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
+import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.ExportQcresultVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
@@ -240,7 +242,16 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
 
     /**
      * 根据两个主键-批量修改
+     *
      * @param list
      */
     public void updateBatchByKey(List<BehospitalInfo> list);
+
+    /**
+     * 关键条目缺陷占比统计
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO);
 }

+ 10 - 0
src/main/java/com/diagbot/service/BehospitalInfoService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.DeptNumDTO;
+import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.ExportExcelDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
@@ -15,6 +16,7 @@ import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
+import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.ExportQcresultVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
@@ -237,4 +239,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public IPage<QcResultShortDTO> qcResultShortByDeptPage(@Param("qcResultShortPageVO") QcResultShortPageVO qcResultShortPageVO);
+
+    /**
+     * 关键条目缺陷占比统计
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO);
 }

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

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.BehospitalInfoDTO;
 import com.diagbot.dto.DeptNumDTO;
+import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.ExportExcelDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
@@ -17,6 +18,7 @@ import com.diagbot.service.BehospitalInfoService;
 import com.diagbot.vo.AnalyzeCodeVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
+import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.ExportQcresultVO;
 import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
@@ -317,9 +319,21 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
 
     /**
      * 根据编码、医院编码批量更新
+     *
      * @param list
      */
-    public void updateBatchByKey(List<BehospitalInfo> list){
+    public void updateBatchByKey(List<BehospitalInfo> list) {
         this.baseMapper.updateBatchByKey(list);
     }
+
+    /**
+     * 关键条目缺陷占比统计
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    @Override
+    public List<EntryStatisticsDTO> entryStatistics(EntryStatisticsVO entryStatisticsVO) {
+        return baseMapper.entryStatistics(entryStatisticsVO);
+    }
 }

+ 1 - 0
src/main/java/com/diagbot/vo/AnalyzeApiVO.java

@@ -12,6 +12,7 @@ import lombok.Data;
 public class AnalyzeApiVO {
 
     private String behospitalCode; // 病历id
+    private int needGroup = 1; // 默认值:1:分组,0:不分组
     private Long hospitalId; //医院ID
     @ApiModelProperty(hidden = true)
     private Boolean isTask = true; // 使用hospitalId传入的值

+ 1 - 1
src/main/java/com/diagbot/vo/BehospitalPageVO.java

@@ -69,7 +69,7 @@ public class BehospitalPageVO extends Page implements Serializable {
     /**
      * 住院科室名称
      */
-    private Long deptId;
+    private String deptId;
 
     /**
      * 医生姓名

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

@@ -0,0 +1,51 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/6/18 20:25
+ */
+@Getter
+@Setter
+public class EntryStatisticsVO {
+    /**
+     * 起始时间
+     */
+    @NotNull(message = "请输入起始时间")
+    private Date startDate;
+    /**
+     * 结束时间
+     */
+    @NotNull(message = "请输入截止时间")
+    private Date endDate;
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private String hospitalId;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+    /**
+     * 排序(升序)
+     */
+    private String asc;
+
+    /**
+     * 排序(降序)
+     */
+    private String desc;
+    /**
+     * 科室名称
+     */
+    private String deptName;
+}

+ 1 - 0
src/main/java/com/diagbot/vo/GetDetailVO.java

@@ -15,6 +15,7 @@ import java.util.List;
 public class GetDetailVO {
 
     private String behospitalCode; // 病历id
+    private int needGroup = 1; // 默认值:1:分组,0:不分组
     @ApiModelProperty(hidden = true)
     private Long hospitalId; //医院ID
     private List<String> paramStr = new ArrayList<>(); // 获取具体的参数

+ 21 - 1
src/main/java/com/diagbot/web/ConsoleController.java

@@ -5,6 +5,7 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryNumDTO;
+import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
@@ -12,6 +13,7 @@ import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultShortDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.ConsoleFacade;
+import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
@@ -453,7 +455,7 @@ public class ConsoleController {
      * @return
      */
     @ApiOperation(value = "条目缺陷质控评分页(内页)[by:zhaops]",
-            notes = "behospitalCode: 病历号)<br>" +
+            notes = "behospitalCode: 病历号<br>" +
                     "patName: 病人姓名 <br>" +
                     "casesEntryName: 条目名称 <br>" +
                     "casesEntryId: 条目id <br>" +
@@ -468,4 +470,22 @@ public class ConsoleController {
     public RespDTO<IPage<QcResultShortDTO>> qcResultShortPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleFacade.qcResultShortPage(qcResultShortPageVO));
     }
+
+    /**
+     * 关键条目缺陷占比统计
+     *
+     * @param entryStatisticsVO
+     * @return
+     */
+    @ApiOperation(value = "关键条目缺陷占比统计[by:zhaops]",
+            notes = "deptName:科室名称 <br>" +
+                    "asc: 排序(升序) <br>" +
+                    "desc:排序(降序) <br>" +
+                    "startDate: 起始时间 <br>" +
+                    "endDate: 截止时间 <br>")
+    @PostMapping("/entryStatistics")
+    @SysLogger("entryStatistics")
+    public RespDTO<List<EntryStatisticsDTO>> entryStatistics(@RequestBody @Valid EntryStatisticsVO entryStatisticsVO) {
+        return RespDTO.onSuc(consoleFacade.entryStatistics(entryStatisticsVO));
+    }
 }

+ 375 - 6
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -2725,10 +2725,10 @@
 
     <!-- 条目缺陷质控评分页(内页)-->
     <select id="qcResultShortPage" resultType="com.diagbot.dto.QcResultShortDTO">
-        SELECT
+        SELECT DISTINCT
         t1.hospital_id AS hospitalId,
         t1.behospital_code AS behospitalCode,
-        t1.LEVEL AS level,
+        t1.LEVEL AS LEVEL,
         t1.score_res AS scoreRes,
         t1.NAME AS patName,
         t1.sex AS sex,
@@ -2738,6 +2738,10 @@
         t2.age
         FROM
         (
+        SELECT
+        DISTINCT tt1.*
+        FROM
+        (
         SELECT DISTINCT
         a.hospital_id,
         a.behospital_code,
@@ -2790,7 +2794,7 @@
         <if test="qcResultShortPageVO.casesEntryName != null and qcResultShortPageVO.casesEntryName != ''">
             AND d.NAME LIKE CONCAT( '%', #{qcResultShortPageVO.casesEntryName}, '%' )
         </if>
-        <if test="qcResultShortPageVO.casesEntryId != null and qcResultShortPageVO.casesEntryId != ''">
+        <if test="qcResultShortPageVO.casesEntryId != null ">
             AND d.id = #{qcResultShortPageVO.casesEntryId}
         </if>
         <if test="qcResultShortPageVO.isReject != null">
@@ -2799,10 +2803,43 @@
         <if test="qcResultShortPageVO.ruleType != null">
             AND d.rule_type = #{qcResultShortPageVO.ruleType}
         </if>
+        <if test="qcResultShortPageVO.casesEntryId != null and qcResultShortPageVO.casesEntryId==2495">
+            AND TIMESTAMPDIFF(
+            DAY,
+            DATE( a.behospital_date ),
+            DATE( a.leave_hospital_date ))> 30
+        </if>
+        ) tt1
+        <if test="qcResultShortPageVO.casesEntryId != null and qcResultShortPageVO.casesEntryId==2511">
+            ,med_medical_record tt2
+            WHERE
+            tt2.is_deleted = 'N'
+            AND tt1.hospital_id = tt2.hospital_id
+            AND tt1.behospital_code = tt2.behospital_code
+            AND tt2.mode_id = 30
+        </if>
+        <if test="qcResultShortPageVO.casesEntryId != null and qcResultShortPageVO.casesEntryId==2419">
+            ,med_crisis_info tt2
+            WHERE
+            tt2.is_deleted = 'N'
+            AND tt1.hospital_id = tt2.hospital_id
+            AND tt1.behospital_code = tt2.behospital_code
+        </if>
         ) t1
-        LEFT JOIN med_home_page t2 ON t1.hospital_id = t2.hospital_id
-        AND t1.behospital_code = t2.behospital_code
-        AND t2.is_deleted = 'N'
+        <if test="qcResultShortPageVO.casesEntryId == null or (qcResultShortPageVO.casesEntryId!=2594  and qcResultShortPageVO.casesEntryId!=2973 and qcResultShortPageVO.casesEntryId!=2166)">
+            LEFT JOIN med_home_page t2 ON t1.hospital_id = t2.hospital_id
+            AND t1.behospital_code = t2.behospital_code
+            AND t2.is_deleted = 'N'
+        </if>
+        <if test="qcResultShortPageVO.casesEntryId != null and( qcResultShortPageVO.casesEntryId==2594  or qcResultShortPageVO.casesEntryId==2973 or qcResultShortPageVO.casesEntryId==2166)">
+            , med_home_page t2
+            , med_home_operation_info t3
+            WHERE t1.hospital_id = t2.hospital_id
+            AND t1.behospital_code = t2.behospital_code
+            AND t2.home_page_id = t3.home_page_id
+            AND t2.is_deleted = 'N'
+            AND t3.is_deleted = 'N'
+        </if>
     </select>
 
     <!-- 条目缺陷质控评分页-科室(内页)-->
@@ -2938,4 +2975,336 @@
             where behospital_code = #{item.behospitalCode} and hospital_id = #{item.hospitalId}
         </foreach>
     </update>
+
+    <!-- 关键条目缺陷统计报表-->
+    <select id="entryStatistics" parameterType="com.diagbot.vo.EntryStatisticsVO" resultType="com.diagbot.dto.EntryStatisticsDTO">
+        SELECT
+        deptId,
+        deptName,
+        consultationMRNum,
+        consultationNum,
+        2511 AS consultationEntryId,
+        '普通会诊未在24小时内完成' AS consultationEntryName,
+        ROUND( IFNULL( consultationNum / consultationMRNum, 0 ), 4 ) AS consultationPercent,
+        CONCAT( ROUND( IFNULL( consultationNum / consultationMRNum, 0 ) * 100, 2 ), '%' ) AS consultationPercentStr,
+        operationMRNum,
+        2594 AS operationNameEntryId,
+        '首页手术名称与手术记录不一致' AS operationNameEntryName,
+        operationNameNum,
+        ROUND( IFNULL( operationNameNum / operationMRNum, 0 ), 4 ) AS operationNamePercent,
+        CONCAT( ROUND( IFNULL( operationNameNum / operationMRNum, 0 ) * 100, 2 ), '%' ) AS operationNamePercentStr,
+        2973 AS operationTimeEntryId,
+        '手术日期与手术记录中手术日期不一致' AS operationTimeEntryName,
+        operationTimeNum,
+        ROUND( IFNULL( operationTimeNum / operationMRNum, 0 ), 4 ) AS operationTimePercent,
+        CONCAT( ROUND( IFNULL( operationTimeNum / operationMRNum, 0 ) * 100, 2 ), '%' ) AS operationTimePercentStr,
+        2930 AS operation15MinuteEntryId,
+        '术后首次病程未即刻完成' AS operation15MinuteEntryName,
+        operation15MinuteNum,
+        ROUND( IFNULL( operation15MinuteNum / operationMRNum, 0 ), 4 ) AS operation15MinutePercent,
+        CONCAT( ROUND( IFNULL( operation15MinuteNum / operationMRNum, 0 ) * 100, 2 ), '%' ) AS operation15MinutePercentStr,
+        2419 AS crisisEntryId,
+        '危急值记录未在接到危急值报告后6小时内完成' AS crisisEntryName,
+        crisisMRNum,
+        crisisNum,
+        ROUND( IFNULL( crisisNum / crisisMRNum, 0 ), 4 ) AS crisisPercent,
+        CONCAT( ROUND( IFNULL( crisisNum / crisisMRNum, 0 ) * 100, 2 ), '%' ) AS crisisPercentStr,
+        2495 AS stageSummaryEntryId,
+        '无阶段小结' AS stageSummaryEntryName,
+        stageSummaryMRNum,
+        stageSummaryNum,
+        ROUND( IFNULL( stageSummaryNum / stageSummaryMRNum, 0 ), 4 ) AS stageSummaryPercent,
+        CONCAT( ROUND( IFNULL( stageSummaryNum / stageSummaryMRNum, 0 ) * 100, 2 ), '%' ) AS stageSummaryPercentStr
+        FROM
+        (
+        SELECT
+        tt.deptId,
+        tt.deptName,
+        sum( tt.consultationNum ) AS consultationNum,
+        sum( tt.consultationMRNum ) AS consultationMRNum,
+        sum( tt.operationNameNum ) AS operationNameNum,
+        sum( tt.operationTimeNum ) AS operationTimeNum,
+        sum( tt.operation15MinuteNum ) AS operation15MinuteNum,
+        sum( tt.operationMRNum ) AS operationMRNum,
+        sum( tt.crisisNum ) AS crisisNum,
+        sum( tt.crisisMRNum ) AS crisisMRNum,
+        sum( tt.stageSummaryNum ) AS stageSummaryNum,
+        sum( tt.stageSummaryMRNum ) AS stageSummaryMRNum
+        FROM
+        (
+        (
+        SELECT
+        c.beh_dept_id AS deptId,
+        c.beh_dept_name AS deptName,
+        sum( d.cases_entry_id = 2511 ) AS consultationNum,
+        count( DISTINCT c.behospital_code ) AS consultationMRNum,
+        0 AS operationNameNum,
+        0 AS operationTimeNum,
+        0 AS operation15MinuteNum,
+        0 AS operationMRNum,
+        0 AS crisisNum,
+        0 AS crisisMRNum,
+        0 AS stageSummaryNum,
+        0 AS stageSummaryMRNum
+        FROM
+        (
+        SELECT DISTINCT
+        a.hospital_id,
+        a.behospital_code,
+        a.beh_dept_name,
+        a.beh_dept_id
+        FROM
+        med_behospital_info a,
+        med_medical_record b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND b.mode_id = 30
+        AND a.is_placefile = '1'
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name = #{deptName}
+        </if>
+        ) c
+        LEFT JOIN med_qcresult_detail d ON d.is_deleted = 'N'
+        AND c.hospital_id = d.hospital_id
+        AND c.behospital_code = d.behospital_code
+        GROUP BY
+        c.beh_dept_id,
+        c.beh_dept_name
+        ) UNION
+        (
+        SELECT
+        d.beh_dept_id AS deptId,
+        d.beh_dept_name AS deptName,
+        0 AS consultationNum,
+        0 AS consultationMRNum,
+        sum( e.cases_entry_id = 2594 ) AS operationNameNum,
+        sum( e.cases_entry_id = 2973 ) AS operationTimeNum,
+        sum( e.cases_entry_id = 2930 ) AS operation15MinuteNum,
+        count( DISTINCT d.behospital_code ) AS operationMRNum,
+        0 AS crisisNum,
+        0 AS crisisMRNum,
+        0 AS stageSummaryNum,
+        0 AS stageSummaryMRNum
+        FROM
+        (
+        SELECT DISTINCT
+        a.hospital_id,
+        a.behospital_code,
+        a.beh_dept_name,
+        a.beh_dept_id
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_home_operation_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND b.home_page_id = c.home_page_id
+        AND a.is_placefile = '1'
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name = #{deptName}
+        </if>
+        ) d
+        LEFT JOIN med_qcresult_detail e ON e.is_deleted = 'N'
+        AND d.hospital_id = e.hospital_id
+        AND d.behospital_code = e.behospital_code
+        GROUP BY
+        d.beh_dept_id,
+        d.beh_dept_name
+        ) UNION
+        (
+        SELECT
+        c.beh_dept_id AS deptId,
+        c.beh_dept_name AS deptName,
+        0 AS consultationNum,
+        0 AS consultationMRNum,
+        0 AS operationNameNum,
+        0 AS operationTimeNum,
+        0 AS operation15MinuteNum,
+        0 AS operationMRNum,
+        sum( d.cases_entry_id = 2419 ) AS crisisNum,
+        count( DISTINCT c.behospital_code ) AS crisisMRNum,
+        0 AS stageSummaryNum,
+        0 AS stageSummaryMRNum
+        FROM
+        (
+        SELECT DISTINCT
+        a.hospital_id,
+        a.behospital_code,
+        a.beh_dept_name,
+        a.beh_dept_id
+        FROM
+        med_behospital_info a,
+        med_crisis_info b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.is_placefile = '1'
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name = #{deptName}
+        </if>
+        ) c
+        LEFT JOIN med_qcresult_detail d ON d.is_deleted = 'N'
+        AND c.hospital_id = d.hospital_id
+        AND c.behospital_code = d.behospital_code
+        GROUP BY
+        c.beh_dept_id,
+        c.beh_dept_name
+        ) UNION
+        (
+        SELECT
+        b.beh_dept_id AS deptId,
+        b.beh_dept_name AS deptName,
+        0 AS consultationNum,
+        0 AS consultationMRNum,
+        0 AS operationNameNum,
+        0 AS operationTimeNum,
+        0 AS operation15MinuteNum,
+        0 AS operationMRNum,
+        0 AS crisisNum,
+        0 AS crisisMRNum,
+        sum( c.cases_entry_id = 2495 ) AS stageSummaryNum,
+        count( DISTINCT b.behospital_code ) AS stageSummaryMRNum
+        FROM
+        (
+        SELECT DISTINCT
+        a.hospital_id,
+        a.behospital_code,
+        a.beh_dept_name,
+        a.beh_dept_id
+        FROM
+        med_behospital_info a
+        WHERE
+        a.is_deleted = 'N'
+        AND TIMESTAMPDIFF(
+        DAY,
+        DATE( behospital_date ),
+        DATE( leave_hospital_date ))> 30
+        AND a.is_placefile = '1'
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name = #{deptName}
+        </if>
+        ) b
+        LEFT JOIN med_qcresult_detail c ON c.is_deleted = 'N'
+        AND b.hospital_id = c.hospital_id
+        AND b.behospital_code = c.behospital_code
+        GROUP BY
+        b.beh_dept_id,
+        b.beh_dept_name
+        )
+        ) tt
+        GROUP BY
+        tt.deptId,
+        tt.deptName
+        ) t
+        <if test="asc != null and asc !=''">
+            order by
+            <choose>
+                <when test='asc=="deptId"'>deptId asc</when>
+                <when test='asc=="deptName"'>deptName asc</when>
+                <when test='asc=="consultationNum"'>consultationNum asc</when>
+                <when test='asc=="consultationPercent"'>consultationPercent asc</when>
+                <when test='asc=="consultationPercentStr"'>consultationPercent asc</when>
+                <when test='asc=="consultationMRNum"'>consultationMRNum asc</when>
+                <when test='asc=="operationNameNum"'>operationNameNum asc</when>
+                <when test='asc=="operationNamePercent"'>operationNamePercent asc</when>
+                <when test='asc=="operationNamePercentStr"'>operationNamePercent asc</when>
+                <when test='asc=="operationTimeNum"'>operationTimeNum asc</when>
+                <when test='asc=="operationTimePercent"'>operationTimePercent asc</when>
+                <when test='asc=="operationTimePercentStr"'>operationTimePercent asc</when>
+                <when test='asc=="operation15MinuteNum"'>operation15MinuteNum asc</when>
+                <when test='asc=="operation15MinutePercent"'>operation15MinutePercent asc</when>
+                <when test='asc=="operation15MinutePercentStr"'>operation15MinutePercent asc</when>
+                <when test='asc=="operationMRNum"'>operationMRNum asc</when>
+                <when test='asc=="crisisNum"'>crisisNum asc</when>
+                <when test='asc=="crisisPercent"'>crisisPercent asc</when>
+                <when test='asc=="crisisPercentStr"'>crisisPercent asc</when>
+                <when test='asc=="crisisMRNum"'>crisisMRNum asc</when>
+                <when test='asc=="stageSummaryNum"'>stageSummaryNum asc</when>
+                <when test='asc=="stageSummaryPercent"'>stageSummaryPercent asc</when>
+                <when test='asc=="stageSummaryPercentStr"'>stageSummaryPercent asc</when>
+                <when test='asc=="stageSummaryMRNum"'>stageSummaryMRNum asc</when>
+                <otherwise>deptName asc</otherwise>
+            </choose>
+        </if>
+        <if test="desc != null and desc!=''">
+            order by
+            <choose>
+                <when test='desc=="deptId"'>deptId desc</when>
+                <when test='desc=="deptName"'>deptName desc</when>
+                <when test='desc=="consultationNum"'>consultationNum desc</when>
+                <when test='desc=="consultationPercent"'>consultationPercent desc</when>
+                <when test='desc=="consultationPercentStr"'>consultationPercent desc</when>
+                <when test='desc=="consultationMRNum"'>consultationMRNum desc</when>
+                <when test='desc=="operationNameNum"'>operationNameNum desc</when>
+                <when test='desc=="operationNamePercent"'>operationNamePercent desc</when>
+                <when test='desc=="operationNamePercentStr"'>operationNamePercent desc</when>
+                <when test='desc=="operationTimeNum"'>operationTimeNum desc</when>
+                <when test='desc=="operationTimePercent"'>operationTimePercent desc</when>
+                <when test='desc=="operationTimePercentStr"'>operationTimePercent desc</when>
+                <when test='desc=="operation15MinuteNum"'>operation15MinuteNum desc</when>
+                <when test='desc=="operation15MinutePercent"'>operation15MinutePercent desc</when>
+                <when test='desc=="operation15MinutePercentStr"'>operation15MinutePercent desc</when>
+                <when test='desc=="operationMRNum"'>operationMRNum desc</when>
+                <when test='desc=="crisisNum"'>crisisNum desc</when>
+                <when test='desc=="crisisPercent"'>crisisPercent desc</when>
+                <when test='desc=="crisisPercentStr"'>crisisPercent desc</when>
+                <when test='desc=="crisisMRNum"'>crisisMRNum desc</when>
+                <when test='desc=="stageSummaryNum"'>stageSummaryNum desc</when>
+                <when test='desc=="stageSummaryPercent"'>stageSummaryPercent desc</when>
+                <when test='desc=="stageSummaryPercentStr"'>stageSummaryPercent desc</when>
+                <when test='desc=="stageSummaryMRNum"'>stageSummaryMRNum desc</when>
+                <otherwise>deptName desc</otherwise>
+            </choose>
+        </if>
+    </select>
 </mapper>

+ 3 - 3
src/test/java/com/diagbot/CodeGeneration.java

@@ -33,7 +33,7 @@ public class CodeGeneration {
         gc.setEnableCache(false);// XML 二级缓存
         gc.setBaseResultMap(true);// XML ResultMap
         gc.setBaseColumnList(false);// XML columList
-        gc.setAuthor("gaodm");// 作者
+        gc.setAuthor("zhoutg");// 作者
 
         // 自定义文件命名,注意 %s 会自动填充表实体属性!
         gc.setControllerName("%sController");
@@ -49,14 +49,14 @@ public class CodeGeneration {
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
         dsc.setPassword("lantone");
-        dsc.setUrl("jdbc:mysql://192.168.3.5:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
         mpg.setDataSource(dsc);
 
         // 策略配置
         StrategyConfig strategy = new StrategyConfig();
 //        strategy.setTablePrefix(new String[] { "med_" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "med_pacs_result","med_lis_result"}); // 需要生成的表
+        strategy.setInclude(new String[] { "med_lis_result", "med_pacs_result"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);