Browse Source

1、单项否决缺陷占比
2、条目缺陷占比(内页)增加筛选条件模块名称和单项否决标志

zhaops 5 years ago
parent
commit
199c7b453c

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

@@ -64,6 +64,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/behospitalInfo/exportExcel").permitAll()
                 .antMatchers("/qc/behospitalInfo/exportQcresult").permitAll()
                 .antMatchers("/qc/behospitalInfo/exportQcresultByDept").permitAll()
+                .antMatchers("/console/entryRejectPercent").permitAll()
                 .antMatchers("/**").authenticated();
 //                .antMatchers("/**").permitAll();
     }

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

@@ -107,6 +107,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/behospitalInfo/exportExcel", request)
                 || matchers("/qc/behospitalInfo/exportQcresult", request)
                 || matchers("/qc/behospitalInfo/exportQcresultByDept", request)
+                || matchers("/console/entryRejectPercent", request)
                 || matchers("/", request)) {
             return true;
         }

+ 30 - 0
src/main/java/com/diagbot/dto/EntryNumDTO.java

@@ -0,0 +1,30 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/6/5 13:20
+ */
+@Getter
+@Setter
+public class EntryNumDTO {
+    private Long id;
+    /**
+     * 条目名称
+     */
+    private String name;
+    private Long casesId;
+    /**
+     * 模块名称
+     */
+    private String casesName;
+    private Integer totleNum;
+    private Integer num;
+    private Double percent;
+    private String percentStr;
+    private Double score;
+    private Integer isReject;
+}

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

@@ -6,6 +6,7 @@ import com.diagbot.aggregate.MrStatisticsAggregate;
 import com.diagbot.aggregate.ResultStatisticsAggregate;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.CaseNumDTO;
+import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
@@ -20,6 +21,7 @@ import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -294,6 +296,27 @@ public class ConsoleFacade {
         return retMap;
     }
 
+    /**
+     * 单项否决缺陷占比
+     *
+     * @param filterVO
+     * @return
+     */
+    public List<EntryNumDTO> entryRejectPercent(FilterVO filterVO) {
+        List<EntryNumDTO> retList = Lists.newLinkedList();
+        filterVOSet(filterVO);
+        Integer limitCount = filterVO.getLimitCount();
+        List<EntryNumDTO> numDTOList = qcresultInfoFacade.entryRejectPercent(filterVO);
+        if (ListUtil.isNotEmpty(numDTOList)) {
+            if (numDTOList.size() <= limitCount) {
+                retList = numDTOList;
+            } else {
+                retList = numDTOList.subList(0, limitCount);
+            }
+        }
+        return retList;
+    }
+
     /**
      * 各科室缺陷占比
      *
@@ -312,11 +335,13 @@ public class ConsoleFacade {
 
     private void filterVOSet(FilterVO filterVO) {
         String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
         String startDate = filterFacade.getStartDateStr(filterVO.getType(), null);
         String endDate = filterFacade.getEndDateStr(filterVO.getType(), null);
         filterVO.setStartDate(startDate);
         filterVO.setEndDate(endDate);
         filterVO.setHospitalId(hospitalId);
+        filterVO.setUserId(Long.valueOf(userId));
         if (filterVO.getLimitCount() == null || filterVO.getLimitCount().equals(0)) {
             filterVO.setLimitCount(10);
         }

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

@@ -6,6 +6,7 @@ import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.CaseAndDeptNumDTO;
 import com.diagbot.dto.CaseNumDTO;
 import com.diagbot.dto.DeptNumDTO;
+import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.entity.QcresultInfo;
@@ -170,4 +171,12 @@ public interface QcresultInfoMapper extends BaseMapper<QcresultInfo> {
      * @return
      */
     public List<AverageStatisticsDTO> getAverageScoreByDeptClass(FilterVO filterVO);
+
+    /**
+     * 单项否决缺陷占比
+     *
+     * @param filterVO
+     * @return
+     */
+    public List<EntryNumDTO> entryRejectPercent(FilterVO filterVO);
 }

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

@@ -6,6 +6,7 @@ import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.CaseAndDeptNumDTO;
 import com.diagbot.dto.CaseNumDTO;
 import com.diagbot.dto.DeptNumDTO;
+import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.entity.QcresultInfo;
@@ -171,4 +172,12 @@ public interface QcresultInfoService extends IService<QcresultInfo> {
      * @return
      */
     public List<AverageStatisticsDTO> getAverageScoreByDeptClass(FilterVO filterVO);
+
+    /**
+     * 单项否决缺陷占比
+     *
+     * @param filterVO
+     * @return
+     */
+    public List<EntryNumDTO> entryRejectPercent(FilterVO filterVO);
 }

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

@@ -6,6 +6,7 @@ import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.CaseAndDeptNumDTO;
 import com.diagbot.dto.CaseNumDTO;
 import com.diagbot.dto.DeptNumDTO;
+import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.entity.QcresultInfo;
@@ -229,4 +230,15 @@ public class QcresultInfoServiceImpl extends ServiceImpl<QcresultInfoMapper, Qcr
     public List<AverageStatisticsDTO> getAverageScoreByDeptClass(FilterVO filterVO) {
         return baseMapper.getAverageScoreByDeptClass(filterVO);
     }
+
+    /**
+     * 单项否决缺陷占比
+     *
+     * @param filterVO
+     * @return
+     */
+    @Override
+    public List<EntryNumDTO> entryRejectPercent(FilterVO filterVO) {
+        return baseMapper.entryRejectPercent(filterVO);
+    }
 }

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

@@ -60,4 +60,9 @@ public class FilterPageVO extends Page {
      * 模块名称
      */
     private String casesName;
+
+    /**
+     * 单项否决
+     */
+    private Integer isReject;
 }

+ 15 - 0
src/main/java/com/diagbot/web/ConsoleController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.CaseNumDTO;
+import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.RespDTO;
@@ -200,6 +201,20 @@ public class ConsoleController {
         return RespDTO.onSuc(consoleFacade.entryCountGroupByEntry(filterVO));
     }
 
+    /**
+     * 单项否决缺陷占比
+     *
+     * @param filterVO
+     * @return
+     */
+    @ApiOperation(value = "单项否决缺陷占比(首页)[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
+    @PostMapping("/entryRejectPercent")
+    @SysLogger("entryRejectPercent")
+    public RespDTO<List<EntryNumDTO>> entryRejectPercent(@RequestBody @Valid FilterVO filterVO) {
+        return RespDTO.onSuc(consoleFacade.entryRejectPercent(filterVO));
+    }
+
     /**
      * 各科室缺陷占比
      *

+ 113 - 4
src/main/resources/mapper/QcresultInfoMapper.xml

@@ -229,13 +229,18 @@
     </select>
 
     <!-- 条目缺陷占比(内页) -->
-    <select id="entryGroupByEntryInnerPage" resultType="com.diagbot.dto.NumDTO">
+    <select id="entryGroupByEntryInnerPage" resultType="com.diagbot.dto.EntryNumDTO">
         SELECT t.*
         FROM
         (SELECT
+        t1.id AS id,
         t1.NAME AS NAME,
+        t1.casesId AS casesId,
+        t1.casesName AS casesName,
         t1.num AS num,
         t2.mrNum AS totleNum,
+        t1.score AS score,
+        t1.isReject AS isReject,
         Round( t1.num / t2.mrNum, 4 ) AS percent,
         CONCAT( Round( t1.num / t2.mrNum * 100, 2 ), '%' ) AS percentStr
         FROM
@@ -243,23 +248,31 @@
         SELECT
         e.id,
         e.NAME,
-        count(*) AS num
+        e.cases_id AS casesId,
+        e.cases_name AS casesName,
+        count(*) AS num,
+        f.score,
+        f.is_reject AS isReject
         FROM
         med_behospital_info a,
         med_qcresult_info c,
         med_qcresult_detail d,
-        qc_cases_entry e
+        qc_cases_entry e,
+        qc_cases_entry_hospital f
         WHERE
         a.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 = c.hospital_id
         AND a.hospital_id = d.hospital_id
+        AND a.hospital_id = f.hospital_id
         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
+        AND e.id = f.cases_entry_id
         AND a.is_placefile = '1'
         <![CDATA[AND a.qc_type_id <>0 ]]>
         <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
@@ -274,9 +287,17 @@
         <if test="filterPageVO.name != null and filterPageVO.name != ''">
             AND e.name like CONCAT('%', #{filterPageVO.name},'%')
         </if>
+        <if test="filterPageVO.casesName != null and filterPageVO.casesName != ''">
+            AND e.cases_name = #{filterPageVO.casesName}
+        </if>
+        <if test="filterPageVO.isReject != null">
+            AND f.is_reject = #{filterPageVO.isReject}
+        </if>
         GROUP BY
         e.id,
-        e.NAME
+        e.NAME,
+        e.cases_id,
+        e.cases_name
         ) t1,
         (
         SELECT
@@ -304,6 +325,94 @@
         )t
     </select>
 
+    <!-- 单项否决缺陷占比(首页) -->
+    <select id="entryRejectPercent" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.EntryNumDTO">
+        SELECT
+        t1.id AS id,
+        t1.NAME AS NAME,
+        t1.casesId AS casesId,
+        t1.casesName AS casesName,
+        t1.num AS num,
+        t2.mrNum AS totleNum,
+        t1.score AS score,
+        t1.isReject AS isReject,
+        Round( t1.num / t2.mrNum, 4 ) AS percent,
+        CONCAT( Round( t1.num / t2.mrNum * 100, 2 ), '%' ) AS percentStr
+        FROM
+        (
+        SELECT
+        e.id,
+        e.NAME,
+        e.cases_id AS casesId,
+        e.cases_name AS casesName,
+        count(*) AS num,
+        f.score,
+        f.is_reject AS isReject
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c,
+        med_qcresult_detail d,
+        qc_cases_entry e,
+        qc_cases_entry_hospital f
+        WHERE
+        a.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 = c.hospital_id
+        AND a.hospital_id = d.hospital_id
+        AND a.hospital_id = f.hospital_id
+        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
+        AND e.id = f.cases_entry_id
+        AND a.is_placefile = '1'
+        AND f.is_reject = 1
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <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
+        e.id,
+        e.NAME,
+        e.cases_id,
+        e.cases_name
+        ) t1,
+        (
+        SELECT
+        count(*) AS mrNum
+        FROM
+        med_behospital_info a,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = c.behospital_code
+        AND a.is_placefile = '1'
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <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>
+        ) t2
+        ORDER BY
+        percent DESC
+    </select>
+
     <!-- 各科室质控平均分(首页) -->
     <select id="getAverageScore" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.AverageStatisticsDTO">
         SELECT