瀏覽代碼

Merge remote-tracking branch 'origin/dev/20200513end_1.2.0' into test

zhaops 5 年之前
父節點
當前提交
a31555557c

+ 30 - 30
doc/003.20200515第3期/qc_init.sql

@@ -74,36 +74,36 @@ CREATE TABLE `sys_menu` (
 -- ----------------------------
 -- Records of sys_menu
 -- ----------------------------
-INSERT INTO `sys_menu` VALUES ('1', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '控制台', '-1', 'YH-KZT', '1', '1', '-10', '用户-控制台');
-INSERT INTO `sys_menu` VALUES ('2', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '基础数据维护', '-1', 'YH-JCSJWH', '1', '1', '2', '用户-基础数据维护');
-INSERT INTO `sys_menu` VALUES ('3', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病案质控', '-1', 'YH-BLZK', '1', '1', '3', '用户-病历质控');
-INSERT INTO `sys_menu` VALUES ('4', 'Y', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '统计分析', '-1', 'YH-TJFX', '1', '1', '4', '用户-统计分析');
-INSERT INTO `sys_menu` VALUES ('5', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '模块数据维护', '2', 'YH-JCSJWH-MKSJWH', '1', '1', '1', '用户-基础数据维护-模块数据维护');
-INSERT INTO `sys_menu` VALUES ('6', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '条目数据维护', '2', 'YH-JCSJWH-TMSJWH', '1', '1', '2', '用户-基础数据维护-条目数据维护');
-INSERT INTO `sys_menu` VALUES ('7', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分', '3', 'YH-BLZK-ZKPF', '1', '1', '1', '用户-病历质控-质控评分');
-INSERT INTO `sys_menu` VALUES ('8', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '基础功能', '-1', 'YH-QBYH-JCGN', '0', '1', '0', '用户-基础功能');
-INSERT INTO `sys_menu` VALUES ('9', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分(科室)', '3', 'YH-BLZK-ZKPFKS', '1', '1', '2', '用户-病历质控-质控评分(科室)');
-INSERT INTO `sys_menu` VALUES ('10', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分(个人)', '3', 'YH-BLZK-ZKPFGR', '1', '1', '3', '用户-病历质控-质控评分(个人)');
-INSERT INTO `sys_menu` VALUES ('12', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '权限管理', '-1', 'YH-QXGL', '1', '0', '5', '用户-权限管理');
-INSERT INTO `sys_menu` VALUES ('13', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '用户管理', '12', 'YH-QXGL-YHGL', '1', '0', '1', '用户-权限管理-用户管理');
-INSERT INTO `sys_menu` VALUES ('14', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '角色管理', '12', 'YH-QXGL-JSGL', '1', '0', '2', '用户-权限管理-角色管理');
-INSERT INTO `sys_menu` VALUES ('15', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '控制台-科室', '-1', 'YH-KZTKS', '1', '1', '-9', '用户-控制台(科室)');
-INSERT INTO `sys_menu` VALUES ('16', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '异常数据监控', '-1', 'YH-YCSJJK', '1', '0', '10', '用户-异常数据监控');
-INSERT INTO `sys_menu` VALUES ('17', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控科', '-1', 'YH-ZKK', '1', '1', '-8', '用户-质控科');
-INSERT INTO `sys_menu` VALUES ('18', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '科室主任', '-1', 'YH-KSZR', '1', '1', '-7', '用户-科室主任');
-INSERT INTO `sys_menu` VALUES ('19', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各模块缺陷占比', '17', 'YH-ZKK-GMKQXZB_XQ', '1', '1', '2', '用户-质控科-各模块缺陷占比_详情');
-INSERT INTO `sys_menu` VALUES ('20', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '条目缺陷占比', '17', 'YH-ZKK-TMQXZB_XQ', '1', '1', '3', '用户-质控科-条目缺陷占比_详情');
-INSERT INTO `sys_menu` VALUES ('21', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '科室平均住院天数', '17', 'YH-ZKK-KSPJZYTS_XQ', '1', '1', '4', '用户-质控科-科室平均住院天数_详情');
-INSERT INTO `sys_menu` VALUES ('22', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '科室平均住院花费', '17', 'YH-ZKK-KSPJZYHF_XQ', '1', '1', '5', '用户-质控科-科室平均住院花费_详情');
-INSERT INTO `sys_menu` VALUES ('23', 'Y', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各科室质控平均分', '17', 'YH-ZKK-GKSZKPJF_XQ', '1', '1', '6', '用户-质控科-各科室质控平均分_详情');
-INSERT INTO `sys_menu` VALUES ('24', 'Y', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '缺陷详情', '17', 'YH-ZKK-GKSQXZB', '1', '1', '7', '用户-质控科-各科室缺陷占比_详情');
-INSERT INTO `sys_menu` VALUES ('25', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各科室甲级病历占比', '17', 'YH-ZKK-GKSJJBLZB_XQ', '1', '1', '8', '用户-质控科-各科室甲级病历占比_详情');
-INSERT INTO `sys_menu` VALUES ('26', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各模块缺陷占比', '18', 'YH-KSZR-GMKQXZB_XQ', '1', '1', '2', '用户-科室主任-各模块缺陷占比_详情');
-INSERT INTO `sys_menu` VALUES ('27', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '条目缺陷占比', '18', 'YH-KSZR-TMQXZB_XQ', '1', '1', '3', '用户-科室主任-条目缺陷占比_详情');
-INSERT INTO `sys_menu` VALUES ('28', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病案首页合格率占比', '17', 'YH-ZKK-BASYHGLZB_XQ', '1', '1', '1', '用户-质控科-病案首页合格率占比_详情');
-INSERT INTO `sys_menu` VALUES ('29', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病案首页合格率占比', '18', 'YH-KSZR-BASYHGLZB_XQ', '1', '1', '1', '用户-科室主任-病案首页合格率占比_详情');
-INSERT INTO `sys_menu` VALUES ('30', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '科室缺陷占比', '18', 'YH-KSZR-KSQXZB_XQ', '1', '1', '4', '用户-科室主任-科室缺陷占比_详情');
-INSERT INTO `sys_menu` VALUES ('31', 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各科室缺陷占比', '17', 'YH-ZKK-GKSQXZB_XQ', '1', '1', '9', '用户-质控科-各科室缺陷占比_详情');
+INSERT INTO `sys_menu` VALUES (1, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '控制台', -1, 'YH-KZT', 1, 1, -10, '用户-控制台');
+INSERT INTO `sys_menu` VALUES (2, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '基础数据维护', -1, 'YH-JCSJWH', 1, 1, 2, '用户-基础数据维护');
+INSERT INTO `sys_menu` VALUES (3, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病案质控', -1, 'YH-BLZK', 1, 1, 3, '用户-病历质控');
+INSERT INTO `sys_menu` VALUES (4, 'Y', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '统计分析', -1, 'YH-TJFX', 1, 1, 4, '用户-统计分析');
+INSERT INTO `sys_menu` VALUES (5, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '模块数据维护', 2, 'YH-JCSJWH-MKSJWH', 1, 1, 1, '用户-基础数据维护-模块数据维护');
+INSERT INTO `sys_menu` VALUES (6, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '条目数据维护', 2, 'YH-JCSJWH-TMSJWH', 1, 1, 2, '用户-基础数据维护-条目数据维护');
+INSERT INTO `sys_menu` VALUES (7, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分', 3, 'YH-BLZK-ZKPF', 1, 1, 1, '用户-病历质控-质控评分');
+INSERT INTO `sys_menu` VALUES (8, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '基础功能', -1, 'YH-QBYH-JCGN', 0, 1, 0, '用户-基础功能');
+INSERT INTO `sys_menu` VALUES (9, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分(科室)', 3, 'YH-BLZK-ZKPFKS', 1, 1, 2, '用户-病历质控-质控评分(科室)');
+INSERT INTO `sys_menu` VALUES (10, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '质控评分(个人)', 3, 'YH-BLZK-ZKPFGR', 1, 1, 3, '用户-病历质控-质控评分(个人)');
+INSERT INTO `sys_menu` VALUES (12, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '权限管理', -1, 'YH-QXGL', 1, 0, 5, '用户-权限管理');
+INSERT INTO `sys_menu` VALUES (13, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '用户管理', 12, 'YH-QXGL-YHGL', 1, 0, 1, '用户-权限管理-用户管理');
+INSERT INTO `sys_menu` VALUES (14, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '角色管理', 12, 'YH-QXGL-JSGL', 1, 0, 2, '用户-权限管理-角色管理');
+INSERT INTO `sys_menu` VALUES (15, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '控制台(科室)', -1, 'YH-KZTKS', 1, 1, -9, '用户-控制台(科室)');
+INSERT INTO `sys_menu` VALUES (16, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '异常数据监控', -1, 'YH-YCSJJK', 1, 0, 10, '用户-异常数据监控');
+INSERT INTO `sys_menu` VALUES (17, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '数据报表明细', -1, 'YH-ZKK', 1, 1, -8, '用户-质控科');
+INSERT INTO `sys_menu` VALUES (18, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '数据报表明细(科室)', -1, 'YH-KSZR', 1, 1, -7, '用户-科室主任');
+INSERT INTO `sys_menu` VALUES (19, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各模块缺陷占比', 17, 'YH-ZKK-GMKQXZB_XQ', 1, 1, 2, '用户-质控科-各模块缺陷占比_详情');
+INSERT INTO `sys_menu` VALUES (20, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '条目缺陷占比', 17, 'YH-ZKK-TMQXZB_XQ', 1, 1, 3, '用户-质控科-条目缺陷占比_详情');
+INSERT INTO `sys_menu` VALUES (21, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '科室平均住院天数', 17, 'YH-ZKK-KSPJZYTS_XQ', 1, 1, 4, '用户-质控科-科室平均住院天数_详情');
+INSERT INTO `sys_menu` VALUES (22, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '科室平均住院花费', 17, 'YH-ZKK-KSPJZYHF_XQ', 1, 1, 5, '用户-质控科-科室平均住院花费_详情');
+INSERT INTO `sys_menu` VALUES (23, 'Y', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各科室质控平均分', 17, 'YH-ZKK-GKSZKPJF_XQ', 1, 1, 6, '用户-质控科-各科室质控平均分_详情');
+INSERT INTO `sys_menu` VALUES (24, 'Y', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '缺陷详情', 17, 'YH-ZKK-GKSQXZB', 1, 1, 7, '用户-质控科-各科室缺陷占比_详情');
+INSERT INTO `sys_menu` VALUES (25, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各科室甲级病历占比', 17, 'YH-ZKK-GKSJJBLZB_XQ', 1, 1, 8, '用户-质控科-各科室甲级病历占比_详情');
+INSERT INTO `sys_menu` VALUES (26, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各模块缺陷占比', 18, 'YH-KSZR-GMKQXZB_XQ', 1, 1, 2, '用户-科室主任-各模块缺陷占比_详情');
+INSERT INTO `sys_menu` VALUES (27, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '条目缺陷占比', 18, 'YH-KSZR-TMQXZB_XQ', 1, 1, 3, '用户-科室主任-条目缺陷占比_详情');
+INSERT INTO `sys_menu` VALUES (28, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病案首页合格率占比', 17, 'YH-ZKK-BASYHGLZB_XQ', 1, 1, 1, '用户-质控科-病案首页合格率占比_详情');
+INSERT INTO `sys_menu` VALUES (29, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '病案首页合格率占比', 18, 'YH-KSZR-BASYHGLZB_XQ', 1, 1, 1, '用户-科室主任-病案首页合格率占比_详情');
+INSERT INTO `sys_menu` VALUES (30, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '科室缺陷占比', 18, 'YH-KSZR-KSQXZB_XQ', 1, 1, 4, '用户-科室主任-科室缺陷占比_详情');
+INSERT INTO `sys_menu` VALUES (31, 'N', '1970-01-01 12:00:00', '1970-01-01 12:00:00', '0', '0', '各科室缺陷占比', 17, 'YH-ZKK-GKSQXZB_XQ', 1, 1, 9, '用户-质控科-各科室缺陷占比_详情');
 
 -- ----------------------------
 -- Table structure for sys_menu_permission

+ 4 - 0
src/main/java/com/diagbot/vo/FilterOrderVO.java

@@ -25,5 +25,9 @@ public class FilterOrderVO extends FilterVO {
      * 排序(降序)
      */
     private String desc;
+
+    /**
+     * 科室名称/主管医生名称
+     */
     private String name;
 }

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

@@ -47,4 +47,9 @@ public class FilterPageVO extends Page {
      * 科室名称
      */
     private String deptName;
+
+    /**
+     * 模块id:243=病案首页
+     */
+    private Long casesId;
 }

+ 2 - 1
src/main/java/com/diagbot/web/ConsoleByDeptController.java

@@ -115,7 +115,8 @@ public class ConsoleByDeptController {
     @ApiOperation(value = "条目缺陷占比-科室(分页)-内页[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>" +
                     "name: 缺陷名称<br>" +
-                    "deptName: 科室名称(必填)<br>")
+                    "deptName: 科室名称(必填)<br>"+
+                    "casesId: 模块id:243=病案首页 <br>")
     @PostMapping("/entryCountGroupByEntryAndDeptPage")
     @SysLogger("entryCountGroupByEntryAndDeptPage")
     public RespDTO<IPage<DeptNumDTO>> entryCountGroupByEntryAndDeptPage(@RequestBody FilterPageByDeptVO filterPageByDeptVO) {

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

@@ -214,14 +214,15 @@ public class ConsoleController {
     }
 
     /**
-     * 各模块缺陷占比(分页)
+     * 条目缺陷占比(分页)
      *
      * @param filterPageVO
      * @return
      */
     @ApiOperation(value = "条目缺陷占比(分页)[by:zhaops]",
             notes = "type: 统计维度 1-本月,2-本年(必填)<br>"+
-                    "deptName: 科室名称 <br>")
+                    "deptName: 科室名称 <br>"+
+                    "casesId: 模块id:243=病案首页 <br>")
     @PostMapping("/entryCountGroupByEntryPage")
     @SysLogger("entryCountGroupByEntryPage")
     public RespDTO<IPage<NumDTO>> entryCountGroupByEntryPage(@RequestBody FilterPageVO filterPageVO) {

+ 81 - 51
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -881,8 +881,7 @@
         )t
     </select>
 
-
-    <!-- 各科室缺陷占比(组合) -->
+    <!-- 各科室缺陷占比(组合)-全院 -->
     <select id="levelStatistics" parameterType="com.diagbot.vo.FilterOrderVO" resultType="com.diagbot.dto.LevelStatisticsDTO">
         SELECT
         t1.deptId,
@@ -901,7 +900,8 @@
         t1.secondLevelPercentStr,
         t1.thirdLevelPercentStr
         FROM
-        (SELECT
+        (
+        SELECT
         a.beh_dept_id AS deptId,
         a.beh_dept_name AS deptName,
         count( DISTINCT c.id ) AS mrNum,
@@ -912,7 +912,7 @@
         COUNT( DISTINCT CASE WHEN c.`level` = '丙' THEN c.id END ) AS thirdLevelNum,
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS firstLevelPercent,
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '乙' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS secondLevelPercent,
-        1-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id ), 4 ) - ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '乙' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS thirdLevelPercent,
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '丙' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS thirdLevelPercent,
         concat(
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
@@ -922,8 +922,7 @@
         '%'
         ) AS secondLevelPercentStr,
         concat(
-        (
-        100-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ) - ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '乙' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 )),
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '丙' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
         ) AS thirdLevelPercentStr
         FROM
@@ -956,27 +955,33 @@
         </if>
         GROUP BY
         a.beh_dept_id,
-        a.beh_dept_name)t1,
-        (SELECT
+        a.beh_dept_name
+        ) t1,
+        (
+        SELECT
         a.beh_dept_id AS deptId,
         a.beh_dept_name AS deptName,
-        count( DISTINCT d.id ) AS entryNum
+        count( * ) AS entryNum
         FROM
         med_behospital_info a,
         med_home_page b,
         med_qcresult_info c,
-        med_qcresult_detail d
+        med_qcresult_detail d,
+        qc_cases_entry e
         WHERE
         a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND d.is_deleted = 'N'
+        AND e.is_deleted = 'N'
         AND a.hospital_id = b.hospital_id
         AND a.hospital_id = c.hospital_id
         AND a.hospital_id = d.hospital_id
         AND a.behospital_code = b.behospital_code
         AND a.behospital_code = c.behospital_code
         AND a.behospital_code = d.behospital_code
+        AND d.cases_id = e.cases_id
+        AND d.cases_entry_id = e.id
         <![CDATA[AND a.qc_type_id <>0 ]]>
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
@@ -995,9 +1000,11 @@
         </if>
         GROUP BY
         a.beh_dept_id,
-        a.beh_dept_name)t2
-        where t1.deptId=t2.deptId
-        and t1.deptName=t2.deptName
+        a.beh_dept_name
+        ) t2
+        WHERE
+        t1.deptId = t2.deptId
+        AND t1.deptName = t2.deptName
         <if test="asc != null and asc !=''">
             order by
             <choose>
@@ -1042,7 +1049,7 @@
         </if>
     </select>
 
-    <!-- 病案首页合格率占比 -->
+    <!-- 病案首页合格率占比 -全院-->
     <select id="homePageLevelStatistics" parameterType="com.diagbot.vo.FilterOrderVO" resultType="com.diagbot.dto.LevelStatisticsDTO">
         SELECT
         t1.deptId,
@@ -1058,7 +1065,8 @@
         t1.firstLevelPercentStr,
         t1.secondLevelPercentStr
         FROM
-        (SELECT
+        (
+        SELECT
         a.beh_dept_id AS deptId,
         a.beh_dept_name AS deptName,
         count( DISTINCT c.id ) AS mrNum,
@@ -1067,13 +1075,13 @@
         COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END ) AS firstLevelNum,
         COUNT( DISTINCT CASE WHEN c.`level` = '不合格' THEN c.id END ) AS secondLevelNum,
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS firstLevelPercent,
-        1-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS secondLevelPercent,
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS secondLevelPercent,
         concat(
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
         ) AS firstLevelPercentStr,
         concat(
-        100-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
         ) AS secondLevelPercentStr
         FROM
@@ -1107,29 +1115,34 @@
         </if>
         GROUP BY
         a.beh_dept_id,
-        a.beh_dept_name)t1,
-        (SELECT
+        a.beh_dept_name
+        ) t1,
+        (
+        SELECT
         a.beh_dept_id AS deptId,
         a.beh_dept_name AS deptName,
-        count( DISTINCT d.id ) AS entryNum
+        count( * ) AS entryNum
         FROM
         med_behospital_info a,
         med_home_page b,
         med_qcresult_cases c,
-        med_qcresult_detail d
+        med_qcresult_detail d,
+        qc_cases_entry e
         WHERE
         a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND d.is_deleted = 'N'
+        AND e.is_deleted = 'N'
         AND a.hospital_id = b.hospital_id
         AND a.hospital_id = c.hospital_id
         AND a.hospital_id = d.hospital_id
         AND a.behospital_code = b.behospital_code
         AND a.behospital_code = c.behospital_code
         AND a.behospital_code = d.behospital_code
-        AND c.cases_id = d.cases_id
-        AND c.cases_id = 243
+        AND d.cases_id = e.cases_id
+        AND d.cases_entry_id = e.id
+        AND d.cases_id = 243
         <![CDATA[AND a.qc_type_id <>0 ]]>
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
@@ -1148,9 +1161,11 @@
         </if>
         GROUP BY
         a.beh_dept_id,
-        a.beh_dept_name) t2
-        where t1.deptId=t2.deptId
-        and t1.deptName=t2.deptName
+        a.beh_dept_name
+        ) t2
+        WHERE
+        t1.deptId = t2.deptId
+        AND t1.deptName = t2.deptName
         <if test="asc != null and asc !=''">
             order by
             <choose>
@@ -1189,7 +1204,7 @@
         </if>
     </select>
 
-    <!-- 各科室缺陷占比(主任医生) -->
+    <!-- 各科室缺陷占比-科室 -->
     <select id="levelStatisticsByDept" parameterType="com.diagbot.vo.FilterOrderByDeptVO" resultType="com.diagbot.dto.LevelStatisticsDTO">
         SELECT
         t1.doctorId,
@@ -1208,7 +1223,8 @@
         t1.secondLevelPercentStr,
         t1.thirdLevelPercentStr
         FROM
-        (SELECT
+        (
+        SELECT
         a.doctor_id AS doctorId,
         a.doctor_name AS doctorName,
         count( DISTINCT c.id ) AS mrNum,
@@ -1219,7 +1235,7 @@
         COUNT( DISTINCT CASE WHEN c.`level` = '丙' THEN c.id END ) AS thirdLevelNum,
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS firstLevelPercent,
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '乙' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS secondLevelPercent,
-        1-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id ), 4 ) - ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '乙' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS thirdLevelPercent,
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '丙' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS thirdLevelPercent,
         concat(
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
@@ -1229,8 +1245,7 @@
         '%'
         ) AS secondLevelPercentStr,
         concat(
-        (
-        100-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '甲' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ) - ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '乙' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 )),
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '丙' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
         ) AS thirdLevelPercentStr
         FROM
@@ -1272,30 +1287,36 @@
         </if>
         GROUP BY
         a.doctor_id,
-        a.doctor_name)t1,
-        (SELECT
+        a.doctor_name
+        ) t1,
+        (
+        SELECT
         a.doctor_id AS doctorId,
         a.doctor_name AS doctorName,
-        count( DISTINCT d.id ) AS entryNum
+        count( * ) AS entryNum
         FROM
         med_behospital_info a,
         med_home_page b,
         med_qcresult_info c,
         med_qcresult_detail d,
-        sys_user_dept e
+        qc_cases_entry e,
+        sys_user_dept f
         WHERE
         a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND d.is_deleted = 'N'
         AND e.is_deleted = 'N'
+        AND f.is_deleted = 'N'
         AND a.hospital_id = b.hospital_id
         AND a.hospital_id = c.hospital_id
         AND a.hospital_id = d.hospital_id
         AND a.behospital_code = b.behospital_code
         AND a.behospital_code = c.behospital_code
         AND a.behospital_code = d.behospital_code
-        AND a.beh_dept_id = e.dept_id
+        AND d.cases_id = e.cases_id
+        AND d.cases_entry_id = e.id
+        AND a.beh_dept_id = f.dept_id
         <![CDATA[AND a.qc_type_id <>0 ]]>
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
@@ -1313,14 +1334,15 @@
             and a.doctor_name like CONCAT('%',#{name},'%')
         </if>
         <if test="userId!=null and userId !=''">
-            AND e.user_id = #{userId}
+            AND f.user_id = #{userId}
         </if>
         <if test="deptName!=null and deptName !=''">
             AND a.beh_dept_name = #{deptName}
         </if>
         GROUP BY
         a.doctor_id,
-        a.doctor_name)t2
+        a.doctor_name
+        ) t2
         WHERE
         t1.doctorId = t2.doctorId
         AND t1.doctorName = t2.doctorName
@@ -1368,7 +1390,7 @@
         </if>
     </select>
 
-    <!-- 病案首页合格率占比(主任医生) -->
+    <!-- 病案首页合格率占比-科室 -->
     <select id="homePageLevelStatisticsByDept" parameterType="com.diagbot.vo.FilterOrderByDeptVO" resultType="com.diagbot.dto.LevelStatisticsDTO">
         SELECT
         t1.doctorId,
@@ -1384,7 +1406,8 @@
         t1.firstLevelPercentStr,
         t1.secondLevelPercentStr
         FROM
-        (SELECT
+        (
+        SELECT
         a.doctor_id AS doctorId,
         a.doctor_name AS doctorName,
         count( DISTINCT c.id ) AS mrNum,
@@ -1393,13 +1416,13 @@
         COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END ) AS firstLevelNum,
         COUNT( DISTINCT CASE WHEN c.`level` = '不合格' THEN c.id END ) AS secondLevelNum,
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS firstLevelPercent,
-        1-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS secondLevelPercent,
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id ), 4 ) AS secondLevelPercent,
         concat(
         ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
         ) AS firstLevelPercentStr,
         concat(
-        100-ROUND ( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
+        ROUND( COUNT( DISTINCT CASE WHEN c.`level` = '合格' THEN c.id END )/ count( DISTINCT c.id )* 100, 2 ),
         '%'
         ) AS secondLevelPercentStr
         FROM
@@ -1435,38 +1458,44 @@
             and a.doctor_name like CONCAT('%',#{name},'%')
         </if>
         <if test="userId!=null and userId !=''">
-            AND e.user_id = #{userId}
+            AND f.user_id = #{userId}
         </if>
         <if test="deptName!=null and deptName !=''">
-        AND a.beh_dept_name = #{deptName}
+            AND a.beh_dept_name = #{deptName}
         </if>
         GROUP BY
         a.doctor_id,
-        a.doctor_name)t1,
-        (SELECT
+        a.doctor_name
+        ) t1,
+        (
+        SELECT
         a.doctor_id AS doctorId,
         a.doctor_name AS doctorName,
-        count( DISTINCT d.id ) AS entryNum
+        count( * ) AS entryNum
         FROM
         med_behospital_info a,
         med_home_page b,
         med_qcresult_cases c,
         med_qcresult_detail d,
-        sys_user_dept e
+        qc_cases_entry e,
+        sys_user_dept f
         WHERE
         a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND d.is_deleted = 'N'
         AND e.is_deleted = 'N'
+        AND f.is_deleted = 'N'
         AND a.hospital_id = b.hospital_id
         AND a.hospital_id = c.hospital_id
         AND a.hospital_id = d.hospital_id
         AND a.behospital_code = b.behospital_code
         AND a.behospital_code = c.behospital_code
         AND a.behospital_code = d.behospital_code
-        AND a.beh_dept_id = e.dept_id
+        AND a.beh_dept_id = f.dept_id
         AND c.cases_id = d.cases_id
+        AND d.cases_id = e.cases_id
+        AND d.cases_entry_id = e.id
         AND c.cases_id = 243
         <![CDATA[AND a.qc_type_id <>0 ]]>
         <if test="hospitalId != null and hospitalId != ''">
@@ -1485,14 +1514,15 @@
             and a.doctor_name like CONCAT('%',#{name},'%')
         </if>
         <if test="userId!=null and userId !=''">
-            AND e.user_id = #{userId}
+            AND f.user_id = #{userId}
         </if>
         <if test="deptName!=null and deptName !=''">
             AND a.beh_dept_name = #{deptName}
         </if>
         GROUP BY
         a.doctor_id,
-        a.doctor_name)t2
+        a.doctor_name
+        ) t2
         WHERE
         t1.doctorId = t2.doctorId
         AND t1.doctorName = t2.doctorName

+ 21 - 3
src/main/resources/mapper/QcresultInfoMapper.xml

@@ -515,7 +515,7 @@
         ) t
     </select>
 
-    <!-- 条目缺陷分组统计(分页) -->
+    <!-- 条目缺陷占比(分页) -->
     <select id="entryCountGroupByEntryPage"  resultType="com.diagbot.dto.NumDTO">
         SELECT t.*
         FROM
@@ -546,6 +546,9 @@
         AND c.cases_id = d.cases_id
         AND c.cases_entry_id = d.id
         <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="filterPageVO.casesId != null and filterPageVO.casesId != ''">
+            AND c.cases_id = #{filterPageVO.casesId}
+        </if>
         <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
             AND a.hospital_id = #{filterPageVO.hospitalId}
         </if>
@@ -581,6 +584,9 @@
         AND c.cases_id = d.cases_id
         AND c.cases_entry_id = d.id
         <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="filterPageVO.casesId != null and filterPageVO.casesId != ''">
+            AND c.cases_id = #{filterPageVO.casesId}
+        </if>
         <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
             AND a.hospital_id = #{filterPageVO.hospitalId}
         </if>
@@ -839,7 +845,7 @@
         ) t
     </select>
 
-    <!-- 条目缺陷分组统计-科室(分页) -->
+    <!-- 条目缺陷占比-科室(分页) -->
     <select id="entryCountGroupByEntryAndDeptPage"  resultType="com.diagbot.dto.DeptNumDTO">
         SELECT
         t.*
@@ -878,6 +884,9 @@
         AND c.cases_entry_id = d.id
         AND a.beh_dept_id = e.dept_id
         <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId != ''">
+            AND c.cases_id = #{filterPageByDeptVO.casesId}
+        </if>
         <if test="filterPageByDeptVO.userId!=null">
             AND e.user_id = #{filterPageByDeptVO.userId}
         </if>
@@ -896,6 +905,9 @@
         <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
             AND a.beh_dept_name like CONCAT('%', #{filterPageByDeptVO.deptName},'%')
         </if>
+        <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
+            AND a.doctor_name like CONCAT('%', #{filterPageByDeptVO.doctorName},'%')
+        </if>
         ) t1,(
         SELECT
         count(*) AS totleNum
@@ -920,6 +932,9 @@
         AND c.cases_entry_id = d.id
         AND a.beh_dept_id = e.dept_id
         <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="filterPageByDeptVO.casesId != null and filterPageByDeptVO.casesId != ''">
+            AND c.cases_id = #{filterPageByDeptVO.casesId}
+        </if>
         <if test="filterPageByDeptVO.userId!=null">
             AND e.user_id = #{filterPageByDeptVO.userId}
         </if>
@@ -936,7 +951,10 @@
             AND d.name like CONCAT('%', #{filterPageByDeptVO.name},'%')
         </if>
         <if test="filterPageByDeptVO.deptName != null and filterPageByDeptVO.deptName != ''">
-            AND a.beh_dept_name = #{filterPageByDeptVO.deptName}
+            AND a.beh_dept_name like CONCAT('%', #{filterPageByDeptVO.deptName},'%')
+        </if>
+        <if test="filterPageByDeptVO.doctorName != null and filterPageByDeptVO.doctorName != ''">
+            AND a.doctor_name like CONCAT('%', #{filterPageByDeptVO.doctorName},'%')
         </if>
         ) t2
         GROUP BY