소스 검색

控制台-主任医生(科室)

zhaops 5 년 전
부모
커밋
3b58072d48

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

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/5/8 19:11
+ */
+@Getter
+@Setter
+public class DeptBaseDTO {
+    private String deptId;
+    private String deptName;
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/5/8 20:02
+ */
+@Getter
+@Setter
+public class DeptNumDTO extends NumDTO {
+    private String deptId;
+    private String deptName;
+}

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

@@ -11,7 +11,7 @@ import lombok.Setter;
 @Getter
 @Setter
 public class NumDTO {
-    private Long id;
+    private String id;
     private String name;
     private Integer totleNum;
     private Integer num;

+ 35 - 0
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java

@@ -0,0 +1,35 @@
+package com.diagbot.facade;
+
+import com.diagbot.dto.DeptBaseDTO;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.FilterByDeptVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:主任医生相关首页
+ * @Author:zhaops
+ * @time: 2020/5/8 17:05
+ */
+@Component
+public class ConsoleByDeptFacade {
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
+    @Autowired
+    private QcresultInfoFacade qcresultInfoFacade;
+    @Autowired
+    private BasDeptInfoFacade basDeptInfoFacade;
+
+    public Map<String, Object> getDeptByUser(FilterByDeptVO filterByDeptVO) {
+        List<DeptBaseDTO> deptList = basDeptInfoFacade.getDeptByUser(filterByDeptVO);
+        if (ListUtil.isNotEmpty(deptList)) {
+            return EntityUtil.makeMapWithKeyValue(deptList, "deptName", "deptId");
+        } else {
+            return null;
+        }
+    }
+}

+ 10 - 0
src/main/java/com/diagbot/mapper/BasDeptInfoMapper.java

@@ -2,8 +2,10 @@ package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.dto.BasDeptInfoDTO;
+import com.diagbot.dto.DeptBaseDTO;
 import com.diagbot.entity.BasDeptInfo;
 import com.diagbot.vo.BasDeptInfoVO;
+import com.diagbot.vo.FilterByDeptVO;
 
 import java.util.List;
 
@@ -19,4 +21,12 @@ public interface BasDeptInfoMapper extends BaseMapper<BasDeptInfo> {
     List<BasDeptInfoDTO> getList(BasDeptInfoVO basDeptInfoVO);
 
     List<BasDeptInfoDTO> getListUser(BasDeptInfoVO basDeptInfoVO);
+
+    /**
+     * 查询用户关联科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    List<DeptBaseDTO> getDeptByUser(FilterByDeptVO filterByDeptVO);
 }

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

@@ -8,7 +8,9 @@ import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
+import com.diagbot.vo.FilterByDeptVO;
 import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.HPFilterByDeptVO;
 import com.diagbot.vo.HomePageFilterVO;
 
 import java.util.List;
@@ -89,4 +91,20 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public int homePageCountForOperation(FilterVO filterVO);
+
+    /**
+     * 按科室统计病案首页病历数
+     *
+     * @param hpFilterByDeptVO
+     * @return
+     */
+    public List<NumDTO> homePageCountByDept(HPFilterByDeptVO hpFilterByDeptVO);
+
+    /**
+     * 按科室统计病案首页手术病历数
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    public List<NumDTO> homePageCountForOperationByDept(FilterByDeptVO filterByDeptVO);
 }

+ 27 - 0
src/main/java/com/diagbot/mapper/QcresultInfoMapper.java

@@ -2,10 +2,13 @@ package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.dto.AverageStatisticsDTO;
+import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.entity.QcresultInfo;
+import com.diagbot.vo.FilterByDeptVO;
 import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.QcresultFilterByDeptVO;
 import com.diagbot.vo.QcresultFilterVO;
 
 import java.util.List;
@@ -68,4 +71,28 @@ public interface QcresultInfoMapper extends BaseMapper<QcresultInfo> {
      * @return
      */
     public List<AverageStatisticsDTO> getAverageScoreByDept(FilterVO filterVO);
+
+    /**
+     * 按科室统计质控病历数
+     *
+     * @param qcresultFilterByDeptVO
+     * @return
+     */
+    public List<NumDTO> resultCountByDept(QcresultFilterByDeptVO qcresultFilterByDeptVO);
+
+    /**
+     * 各模块缺陷占比-按科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    public List<DeptNumDTO> entryCountGroupByCaseAndDept(FilterByDeptVO filterByDeptVO);
+
+    /**
+     * 条目缺陷占比-按科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    public List<DeptNumDTO> entryCountGroupByEntryAndDept(FilterByDeptVO filterByDeptVO);
 }

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

@@ -1,9 +1,11 @@
 package com.diagbot.service;
 
 import com.diagbot.dto.BasDeptInfoDTO;
+import com.diagbot.dto.DeptBaseDTO;
 import com.diagbot.entity.BasDeptInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.vo.BasDeptInfoVO;
+import com.diagbot.vo.FilterByDeptVO;
 
 import java.util.List;
 
@@ -19,4 +21,12 @@ public interface BasDeptInfoService extends IService<BasDeptInfo> {
     List<BasDeptInfoDTO> getList(BasDeptInfoVO basDeptInfoVO);
 
     List<BasDeptInfoDTO> getListUser(BasDeptInfoVO basDeptInfoVO);
+
+    /**
+     * 查询用户关联科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    List<DeptBaseDTO> getDeptByUser(FilterByDeptVO filterByDeptVO);
 }

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

@@ -8,7 +8,9 @@ import com.diagbot.dto.NumDTO;
 import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
+import com.diagbot.vo.FilterByDeptVO;
 import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.HPFilterByDeptVO;
 import com.diagbot.vo.HomePageFilterVO;
 
 import java.util.List;
@@ -89,4 +91,20 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public int homePageCountForOperation(FilterVO filterVO);
+
+    /**
+     * 按科室统计病案首页病历数
+     *
+     * @param hpFilterByDeptVO
+     * @return
+     */
+    public List<NumDTO> homePageCountByDept(HPFilterByDeptVO hpFilterByDeptVO);
+
+    /**
+     * 按科室统计病案首页手术病历数
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    public List<NumDTO> homePageCountForOperationByDept(FilterByDeptVO filterByDeptVO);
 }

+ 27 - 0
src/main/java/com/diagbot/service/QcresultInfoService.java

@@ -2,10 +2,13 @@ package com.diagbot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.AverageStatisticsDTO;
+import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.entity.QcresultInfo;
+import com.diagbot.vo.FilterByDeptVO;
 import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.QcresultFilterByDeptVO;
 import com.diagbot.vo.QcresultFilterVO;
 
 import java.util.List;
@@ -69,4 +72,28 @@ public interface QcresultInfoService extends IService<QcresultInfo> {
      * @return
      */
     public List<AverageStatisticsDTO> getAverageScoreByDept(FilterVO filterVO);
+
+    /**
+     * 按科室统计质控病历数
+     *
+     * @param qcresultFilterByDeptVO
+     * @return
+     */
+    public List<NumDTO> resultCountByDept(QcresultFilterByDeptVO qcresultFilterByDeptVO);
+
+    /**
+     * 各模块缺陷占比-按科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    public List<DeptNumDTO> entryCountGroupByCaseAndDept(FilterByDeptVO filterByDeptVO);
+
+    /**
+     * 条目缺陷占比-按科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    public List<DeptNumDTO> entryCountGroupByEntryAndDept(FilterByDeptVO filterByDeptVO);
 }

+ 16 - 3
src/main/java/com/diagbot/service/impl/BasDeptInfoServiceImpl.java

@@ -1,11 +1,13 @@
 package com.diagbot.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.BasDeptInfoDTO;
+import com.diagbot.dto.DeptBaseDTO;
 import com.diagbot.entity.BasDeptInfo;
 import com.diagbot.mapper.BasDeptInfoMapper;
 import com.diagbot.service.BasDeptInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.vo.BasDeptInfoVO;
+import com.diagbot.vo.FilterByDeptVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -22,12 +24,23 @@ import java.util.List;
 public class BasDeptInfoServiceImpl extends ServiceImpl<BasDeptInfoMapper, BasDeptInfo> implements BasDeptInfoService {
 
     @Override
-    public List<BasDeptInfoDTO> getList(BasDeptInfoVO basDeptInfoVO){
+    public List<BasDeptInfoDTO> getList(BasDeptInfoVO basDeptInfoVO) {
         return baseMapper.getList(basDeptInfoVO);
     }
 
     @Override
-    public List<BasDeptInfoDTO> getListUser(BasDeptInfoVO basDeptInfoVO){
+    public List<BasDeptInfoDTO> getListUser(BasDeptInfoVO basDeptInfoVO) {
         return baseMapper.getListUser(basDeptInfoVO);
     }
+
+    /**
+     * 查询用户关联科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    @Override
+    public List<DeptBaseDTO> getDeptByUser(FilterByDeptVO filterByDeptVO) {
+        return baseMapper.getDeptByUser(filterByDeptVO);
+    }
 }

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

@@ -10,7 +10,9 @@ import com.diagbot.mapper.BehospitalInfoMapper;
 import com.diagbot.service.BehospitalInfoService;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
+import com.diagbot.vo.FilterByDeptVO;
 import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.HPFilterByDeptVO;
 import com.diagbot.vo.HomePageFilterVO;
 import org.springframework.stereotype.Service;
 
@@ -128,4 +130,26 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public int homePageCountForOperation(FilterVO filterVO) {
         return baseMapper.homePageCountForOperation(filterVO);
     }
+
+    /**
+     * 按科室统计病案首页病历数
+     *
+     * @param hpFilterByDeptVO
+     * @return
+     */
+    @Override
+    public List<NumDTO> homePageCountByDept(HPFilterByDeptVO hpFilterByDeptVO) {
+        return baseMapper.homePageCountByDept(hpFilterByDeptVO);
+    }
+
+    /**
+     * 按科室统计病案首页手术病历数
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    @Override
+    public List<NumDTO> homePageCountForOperationByDept(FilterByDeptVO filterByDeptVO) {
+        return baseMapper.homePageCountForOperationByDept(filterByDeptVO);
+    }
 }

+ 36 - 0
src/main/java/com/diagbot/service/impl/QcresultInfoServiceImpl.java

@@ -2,12 +2,15 @@ package com.diagbot.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.AverageStatisticsDTO;
+import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.entity.QcresultInfo;
 import com.diagbot.mapper.QcresultInfoMapper;
 import com.diagbot.service.QcresultInfoService;
+import com.diagbot.vo.FilterByDeptVO;
 import com.diagbot.vo.FilterVO;
+import com.diagbot.vo.QcresultFilterByDeptVO;
 import com.diagbot.vo.QcresultFilterVO;
 import org.springframework.stereotype.Service;
 
@@ -91,4 +94,37 @@ public class QcresultInfoServiceImpl extends ServiceImpl<QcresultInfoMapper, Qcr
     public List<AverageStatisticsDTO> getAverageScoreByDept(FilterVO filterVO) {
         return baseMapper.getAverageScoreByDept(filterVO);
     }
+
+    /**
+     * 按科室统计质控病历数
+     *
+     * @param qcresultFilterByDeptVO
+     * @return
+     */
+    @Override
+    public List<NumDTO> resultCountByDept(QcresultFilterByDeptVO qcresultFilterByDeptVO) {
+        return baseMapper.resultCountByDept(qcresultFilterByDeptVO);
+    }
+
+    /**
+     * 各模块缺陷占比-按科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    @Override
+    public List<DeptNumDTO> entryCountGroupByCaseAndDept(FilterByDeptVO filterByDeptVO) {
+        return baseMapper.entryCountGroupByCaseAndDept(filterByDeptVO);
+    }
+
+    /**
+     * 条目缺陷占比-按科室
+     *
+     * @param filterByDeptVO
+     * @return
+     */
+    @Override
+    public List<DeptNumDTO> entryCountGroupByEntryAndDept(FilterByDeptVO filterByDeptVO) {
+        return baseMapper.entryCountGroupByEntryAndDept(filterByDeptVO);
+    }
 }

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

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:主任医生过滤
+ * @Author:zhaops
+ * @time: 2020/5/8 17:02
+ */
+@Getter
+@Setter
+public class FilterByDeptVO extends FilterVO {
+    private Long userId;
+}

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

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/5/8 19:27
+ */
+@Getter
+@Setter
+public class HPFilterByDeptVO extends FilterByDeptVO {
+    /**
+     * 死亡
+     */
+    private Integer death;
+}

+ 23 - 0
src/main/java/com/diagbot/vo/QcresultFilterByDeptVO.java

@@ -0,0 +1,23 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/5/8 19:50
+ */
+@Getter
+@Setter
+public class QcresultFilterByDeptVO {
+    /**
+     * 等级
+     */
+    private String level;
+
+    /**
+     * 评分类型
+     */
+    private Integer gradeType;
+}

+ 21 - 0
src/main/resources/mapper/BasDeptInfoMapper.xml

@@ -55,4 +55,25 @@
         </if>
         ORDER BY t.dept_name ASC
     </select>
+
+    <!-- 查询用户关联科室 -->
+    <select id="getDeptByUser" parameterType="com.diagbot.vo.FilterByDeptVO" resultType="com.diagbot.dto.DeptBaseDTO">
+        SELECT
+        b.dept_id as deptId,
+        b.dept_name as deptName
+        FROM
+        sys_user_dept a,
+        bas_dept_info b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.dept_id = b.dept_id
+        <if test="userId!=null">
+            AND a.user_id = #{userId}
+        </if>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+    </select>
 </mapper>

+ 77 - 0
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -538,4 +538,81 @@
             <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
         </if>
     </select>
+
+    <!-- 按科室统计病案首页病历数 -->
+    <select id="homePageCountByDept" parameterType="com.diagbot.vo.HPFilterByDeptVO" resultType="com.diagbot.dto.NumDTO">
+        SELECT
+        a.beh_dept_id AS id,
+        a.beh_dept_name AS NAME,
+        COUNT(*) AS num
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        sys_user_dept 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 a.beh_dept_id = c.dept_id
+        <if test="death!=null and death==1">
+            AND b.leave_hospital_type = '死亡'
+        </if>
+        <if test="userId!=null">
+            AND c.user_id = #{userId}
+        </if>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+    </select>
+
+    <!-- 按科室病案首页手术病历数 -->
+    <select id="homePageCountForOperationByDept" parameterType="com.diagbot.vo.FilterByDeptVO" resultType="com.diagbot.dto.NumDTO">
+        SELECT
+        a.beh_dept_id AS id,
+        a.beh_dept_name AS NAME,
+        COUNT(*) AS num
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        sys_user_dept c,
+        med_home_operation_info d
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND b.home_page_id = d.home_page_id
+        AND a.beh_dept_id = c.dept_id
+        <if test="userId!=null">
+            AND c.user_id = #{userId}
+        </if>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+    </select>
 </mapper>

+ 146 - 0
src/main/resources/mapper/QcresultInfoMapper.xml

@@ -230,4 +230,150 @@
         a.beh_dept_id,
         a.beh_dept_name
     </select>
+
+    <!-- 按科室统计质控病历数 -->
+    <select id="resultCountByDept" parameterType="com.diagbot.vo.QcresultFilterByDeptVO" resultType="com.diagbot.dto.NumDTO">
+        SELECT
+        a.beh_dept_id AS id,
+        a.beh_dept_name AS NAME,
+        COUNT(*) AS num
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c,
+        sys_user_dept d
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND a.beh_dept_id = d.dept_id
+        <if test="userId!=null">
+            AND d.user_id = #{userId}
+        </if>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="gradeType != null and gradeType != ''">
+            AND c.grade_type = #{gradeType}
+        </if>
+        <if test="level != null and level != ''">
+            AND c.level = #{level}
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+    </select>
+
+    <!-- 按模块统计质控缺陷数 -->
+    <select id="entryCountGroupByCaseAndDept" parameterType="com.diagbot.vo.FilterByDeptVO" resultType="com.diagbot.dto.DeptNumDTO">
+        SELECT
+        d.cases_id AS id,
+        e.NAME AS NAME,
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        count(*) AS num
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c,
+        med_qcresult_detail d,
+        qc_cases e,
+        qc_cases_entry f,
+        sys_user_dept g
+        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 g.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.hospital_id = g.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.id
+        AND d.cases_entry_id = f.id
+        AND e.id = f.cases_id
+        AND a.beh_dept_id = g.dept_id
+        <if test="userId!=null">
+            AND g.user_id = #{userId}
+        </if>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        GROUP BY
+        d.cases_id,
+        e.`name`,
+        a.beh_dept_id,
+        a.beh_dept_name
+    </select>
+
+    <!-- 条目缺陷分组统计 -->
+    <select id="entryCountGroupByEntryAndDept" parameterType="com.diagbot.vo.FilterByDeptVO" resultType="com.diagbot.dto.DeptNumDTO">
+        SELECT
+        d.id,
+        d.NAME,
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        count(*) AS num
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_detail c,
+        qc_cases_entry d,
+        sys_user_dept 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 = e.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        AND c.cases_id = d.cases_id
+        AND c.cases_entry_id = d.id
+        AND a.beh_dept_id = e.dept_id
+        <if test="userId!=null">
+            AND e.user_id = #{userId}
+        </if>
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null and startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null and endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        GROUP BY
+        d.id,
+        d.NAME,
+        a.beh_dept_id,
+        a.beh_dept_name
+    </select>
 </mapper>