Browse Source

Merge branch 'dev/20200702_1.3.7' into debug

wangfeng 5 years ago
parent
commit
57ae14ffbc

+ 2 - 0
doc/012.20200706v1.3.6.4/qc_initv1.3.6.4.sql

@@ -1,5 +1,7 @@
 use `qc`;
 use `qc`;
 
 
+ ALTER TABLE `qc`.`qc_cases_entry` CHANGE `remark` `remark` VARCHAR(1000) CHARSET utf8 COLLATE utf8_general_ci NULL COMMENT '备注';
+
 DROP TABLE IF EXISTS `sys_hospital_set`;
 DROP TABLE IF EXISTS `sys_hospital_set`;
 CREATE TABLE `sys_hospital_set` (
 CREATE TABLE `sys_hospital_set` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',

+ 1 - 1
doc/013.20200706v1.3.7/qc_initv1.3.7.sql

@@ -35,7 +35,7 @@ MODIFIER,
  page_type,
  page_type,
  CASE WHEN ISNULL(NAME) THEN "核查状态" ELSE "核查状态" END NAME,
  CASE WHEN ISNULL(NAME) THEN "核查状态" ELSE "核查状态" END NAME,
  CASE WHEN ISNULL(userId) THEN "checkStatus" ELSE "checkStatus" END val,
  CASE WHEN ISNULL(userId) THEN "checkStatus" ELSE "checkStatus" END val,
- STATUS,
+ CASE WHEN ISNULL(STATUS) THEN 0 ELSE 0 END STATUS,
  CASE WHEN ISNULL(order_no) THEN 4 ELSE 4 END order_no,
  CASE WHEN ISNULL(order_no) THEN 4 ELSE 4 END order_no,
  remark
  remark
  FROM (SELECT * FROM  sys_user_pageset  WHERE user_id <> -1) b LEFT JOIN  (SELECT c.user_id AS userId FROM  sys_user_pageset c  WHERE user_id <> -1 AND val = "checkStatus") p ON b.user_id = p.userId
  FROM (SELECT * FROM  sys_user_pageset  WHERE user_id <> -1) b LEFT JOIN  (SELECT c.user_id AS userId FROM  sys_user_pageset c  WHERE user_id <> -1 AND val = "checkStatus") p ON b.user_id = p.userId

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

@@ -104,6 +104,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/console/resultStatistics").permitAll()
                 .antMatchers("/console/resultStatistics").permitAll()
                 .antMatchers("/console/resultStatisticsByDeptPage").permitAll()
                 .antMatchers("/console/resultStatisticsByDeptPage").permitAll()
                 .antMatchers("/console/homePageMRCount").permitAll()
                 .antMatchers("/console/homePageMRCount").permitAll()
+                .antMatchers("/console/qcCheckStatistics").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDept").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDept").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDeptPage").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByCaseAndDeptPage").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByEntryAndDept").permitAll()
                 .antMatchers("/consoleByDept/entryCountGroupByEntryAndDept").permitAll()

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

@@ -148,6 +148,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/console/resultStatistics", request)
                 || matchers("/console/resultStatistics", request)
                 || matchers("/console/resultStatisticsByDeptPage", request)
                 || matchers("/console/resultStatisticsByDeptPage", request)
                 || matchers("/console/homePageMRCount", request)
                 || matchers("/console/homePageMRCount", request)
+                || matchers("/console/qcCheckStatistics", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDept", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDept", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDeptPage", request)
                 || matchers("/consoleByDept/entryCountGroupByCaseAndDeptPage", request)
                 || matchers("/consoleByDept/entryCountGroupByEntryAndDept", request)
                 || matchers("/consoleByDept/entryCountGroupByEntryAndDept", request)

+ 14 - 11
src/main/java/com/diagbot/dto/HomePageImproveDTO.java

@@ -13,15 +13,18 @@ import lombok.Setter;
 public class HomePageImproveDTO {
 public class HomePageImproveDTO {
     private String deptId;
     private String deptId;
     private String deptName;
     private String deptName;
-    private Integer mrNum;
-    private Integer checkedNum;
-    private Integer improveNum;
-    private Double improvePercent;
-    private String improvePercentStr;
-    private Integer improveToPassNum;
-    private Double improveToPassPercent;
-    private String improveToPassPercentStr;
-    private Integer improveToFullNum;
-    private Double improveToFullPercent;
-    private String improveToFullPercentStr;
+    private Integer mrNum = 0;
+    private Integer checkedNum = 0;
+    private Double checkedPercent = 0d;
+    private String checkedPercentStr = "0.00%";
+    private Integer homePageMRNum = 0;
+    private Integer improveNum = 0;
+    private Double improvePercent = 0d;
+    private String improvePercentStr = "0.00%";
+    private Integer improveToPassNum = 0;
+    private Double improveToPassPercent = 0d;
+    private String improveToPassPercentStr = "0.00%";
+    private Integer improveToFullNum = 0;
+    private Double improveToFullPercent = 0d;
+    private String improveToFullPercentStr = "0.00%";
 }
 }

+ 112 - 1
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -25,6 +25,7 @@ import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
@@ -824,7 +825,7 @@ public class ConsoleFacade {
         NumDTO improve = new NumDTO();
         NumDTO improve = new NumDTO();
         improve.setName("改善率");
         improve.setName("改善率");
         improve.setNum(improveDTO.getImproveNum());
         improve.setNum(improveDTO.getImproveNum());
-        improve.setTotleNum(improveDTO.getMrNum());
+        improve.setTotleNum(improveDTO.getHomePageMRNum());
         improve.setPercent(improveDTO.getImprovePercent());
         improve.setPercent(improveDTO.getImprovePercent());
         improve.setPercentStr(improveDTO.getImprovePercentStr());
         improve.setPercentStr(improveDTO.getImprovePercentStr());
 
 
@@ -846,4 +847,114 @@ public class ConsoleFacade {
         IPage<QcResultShortDTO> page = behospitalInfoFacade.leaveHosMRPage(qcResultShortPageVO);
         IPage<QcResultShortDTO> page = behospitalInfoFacade.leaveHosMRPage(qcResultShortPageVO);
         return page;
         return page;
     }
     }
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO) {
+        filterFacade.filterQcCheckVOSet(filterQcCheckVO);
+        List<HomePageImproveDTO> records = behospitalInfoFacade.qcCheckStatistics(filterQcCheckVO);
+        //增加全院数据
+        if (StringUtil.isBlank(filterQcCheckVO.getDeptName()) || filterQcCheckVO.getDeptName().equals("全院")) {
+            HomePageImproveDTO item = getGlobleRecord_improve(records);
+            if (item != null) {
+                records.add(0, item);
+            }
+        }
+        return records;
+    }
+
+    /**
+     * 增加全院记录
+     *
+     * @param records
+     * @return
+     */
+    public HomePageImproveDTO getGlobleRecord_improve(List<HomePageImproveDTO> records) {
+        DecimalFormat df = new DecimalFormat("#0.00");
+        HomePageImproveDTO item = new HomePageImproveDTO();
+
+        if (ListUtil.isEmpty(records)) {
+            return null;
+        }
+
+
+        //总病历数
+        Integer mrNum = records
+                .stream()
+                .map(HomePageImproveDTO::getMrNum)
+                .reduce(0, Integer::sum);
+        if (mrNum == null || mrNum == 0) {
+            return null;
+        }
+        //核查病历数
+        Integer checkedNum = records
+                .stream()
+                .map(HomePageImproveDTO::getCheckedNum)
+                .reduce(0, Integer::sum);
+        //核查病历占比
+        Double checkedPercent = BigDecimal.valueOf(checkedNum)
+                .divide(BigDecimal.valueOf(mrNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String checkedPercentStr
+                = df.format(BigDecimal.valueOf(checkedPercent).multiply(BigDecimal.valueOf(100))) + "%";
+        //带病案首页的病历数
+        Integer homePageMRNum = records
+                .stream()
+                .map(HomePageImproveDTO::getHomePageMRNum)
+                .reduce(0, Integer::sum);
+        //改善病历数
+        Integer improveNum = records
+                .stream()
+                .map(HomePageImproveDTO::getImproveNum)
+                .reduce(0, Integer::sum);
+        //改善率
+        Double improvePercent = BigDecimal.valueOf(improveNum)
+                .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String improvePercentStr
+                = df.format(BigDecimal.valueOf(improvePercent).multiply(BigDecimal.valueOf(100))) + "%";
+        //改善至合格病历数
+        Integer improveToPassNum = records
+                .stream()
+                .map(HomePageImproveDTO::getImproveToPassNum)
+                .reduce(0, Integer::sum);
+        //改善至合格占比
+        Double improveToPassPercent = BigDecimal.valueOf(improveToPassNum)
+                .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String improveToPassPercentStr
+                = df.format(BigDecimal.valueOf(improvePercent).multiply(BigDecimal.valueOf(100))) + "%";
+        //改善至满分病历数
+        Integer improveToFullNum = records
+                .stream()
+                .map(HomePageImproveDTO::getImproveToFullNum)
+                .reduce(0, Integer::sum);
+        //改善至满分占比
+        Double improveToFullPercent = BigDecimal.valueOf(improveToFullNum)
+                .divide(BigDecimal.valueOf(homePageMRNum), 4, RoundingMode.HALF_UP)
+                .doubleValue();
+        String improveToFullPercentStr
+                = df.format(BigDecimal.valueOf(improveToFullPercent).multiply(BigDecimal.valueOf(100))) + "%";
+
+        item.setDeptName("全院");
+        item.setMrNum(mrNum);
+        item.setCheckedNum(checkedNum);
+        item.setCheckedPercent(checkedPercent);
+        item.setCheckedPercentStr(checkedPercentStr);
+        item.setHomePageMRNum(homePageMRNum);
+        item.setImproveNum(improveNum);
+        item.setImprovePercent(improvePercent);
+        item.setImprovePercentStr(improvePercentStr);
+        item.setImproveToPassNum(improveToPassNum);
+        item.setImproveToPassPercent(improveToPassPercent);
+        item.setImproveToPassPercentStr(improveToPassPercentStr);
+        item.setImproveToFullNum(improveToFullNum);
+        item.setImproveToFullPercent(improveToFullPercent);
+        item.setImproveToFullPercentStr(improveToFullPercentStr);
+        return item;
+    }
 }
 }

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

@@ -10,6 +10,7 @@ import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
@@ -270,4 +271,20 @@ public class FilterFacade {
         long interval = entryStatisticsVO.getEndDate().getTime() + 1000;
         long interval = entryStatisticsVO.getEndDate().getTime() + 1000;
         entryStatisticsVO.setEndDate(new Date(Long.valueOf(interval)));
         entryStatisticsVO.setEndDate(new Date(Long.valueOf(interval)));
     }
     }
+
+    /**
+     * 质控核查统计入参
+     *
+     * @param filterQcCheckVO
+     */
+    public void filterQcCheckVOSet(FilterQcCheckVO filterQcCheckVO) {
+        FilterVO filterVO = new FilterVO();
+        BeanUtil.copyProperties(filterQcCheckVO, filterVO);
+        filterVOSet(filterVO);
+        filterQcCheckVO.setHospitalId(filterVO.getHospitalId());
+        filterQcCheckVO.setUserId(filterVO.getUserId());
+        filterQcCheckVO.setStartDate(filterVO.getStartDate());
+        filterQcCheckVO.setEndDate(filterVO.getEndDate());
+        filterQcCheckVO.setLimitCount(filterVO.getLimitCount());
+    }
 }
 }

+ 8 - 22
src/main/java/com/diagbot/facade/MedCheckInfoFacade.java

@@ -6,12 +6,10 @@ import com.diagbot.entity.MedCheckInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.CommonException;
-import com.diagbot.service.MedCheckInfoService;
 import com.diagbot.service.impl.MedCheckInfoServiceImpl;
 import com.diagbot.service.impl.MedCheckInfoServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.MedCheckInfoAddVO;
 import com.diagbot.vo.MedCheckInfoAddVO;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.util.Date;
 import java.util.Date;
@@ -26,9 +24,6 @@ import java.util.Map;
 @Component
 @Component
 public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
 public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
 
 
-    @Autowired
-    MedCheckInfoService medCheckInfoService;
-
     /**
     /**
      * @param medCheckInfoAddVO
      * @param medCheckInfoAddVO
      * @return
      * @return
@@ -46,22 +41,13 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         mapAll.put("hospital_id", hospitalId);
         mapAll.put("hospital_id", hospitalId);
         QueryWrapper<MedCheckInfo> medCheckInfoQuerys = new QueryWrapper<>();
         QueryWrapper<MedCheckInfo> medCheckInfoQuerys = new QueryWrapper<>();
         medCheckInfoQuerys.allEq(mapAll);
         medCheckInfoQuerys.allEq(mapAll);
-        MedCheckInfo data = medCheckInfoService.getOne(medCheckInfoQuerys);
+        MedCheckInfo data = this.getOne(medCheckInfoQuerys, false);
         if (data != null) {
         if (data != null) {
-            if (data.getStatus() == 1) {
-                //检验核查人是否是本人
-                boolean b = data.getCheckId() == principleId;
-                if (b) {
-                    //是本人且该数据已核查,不能改为未核查
-                    if (medCheckInfoAddVO.getCheckStatus() == 0) {
-                        throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据已核查,不能改成未核查!");
-                    }
-                    res = saveNew(mapAll, now, hospitalId, principleId, principleName, medCheckInfoAddVO);
-                } else {
-                    throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据已被人核查,您暂无权限!");
-                }
-            } else {
+            //检验核查人是否是本人
+            if (data.getCheckId().equals(principleId)) {
                 res = saveNew(mapAll, now, hospitalId, principleId, principleName, medCheckInfoAddVO);
                 res = saveNew(mapAll, now, hospitalId, principleId, principleName, medCheckInfoAddVO);
+            } else {
+                throw new CommonException(CommonErrorCode.NOT_EXISTS, "该数据已被人核查,您暂无权限!");
             }
             }
         } else {
         } else {
             //该病历没有核查的时候, 就添加核查记录
             //该病历没有核查的时候, 就添加核查记录
@@ -74,7 +60,7 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
             medCheckInfo.setCheckTime(now);
             medCheckInfo.setCheckTime(now);
             medCheckInfo.setStatus(medCheckInfoAddVO.getCheckStatus());
             medCheckInfo.setStatus(medCheckInfoAddVO.getCheckStatus());
             medCheckInfo.setBehospitalCode(medCheckInfoAddVO.getBehospitalCode());
             medCheckInfo.setBehospitalCode(medCheckInfoAddVO.getBehospitalCode());
-            res = medCheckInfoService.save(medCheckInfo);
+            res = this.save(medCheckInfo);
         }
         }
 
 
         return res;
         return res;
@@ -93,7 +79,7 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
         boolean res = false;
         boolean res = false;
         UpdateWrapper<MedCheckInfo> medCheckInfoUpdate = new UpdateWrapper<>();
         UpdateWrapper<MedCheckInfo> medCheckInfoUpdate = new UpdateWrapper<>();
         medCheckInfoUpdate.allEq(mapAll).set("is_deleted", IsDeleteEnum.Y.getKey()).set("gmt_modified", now);
         medCheckInfoUpdate.allEq(mapAll).set("is_deleted", IsDeleteEnum.Y.getKey()).set("gmt_modified", now);
-        res = medCheckInfoService.update(medCheckInfoUpdate);
+        res = this.update(medCheckInfoUpdate);
         //删除原来的成功后, 再新建一条核查数据
         //删除原来的成功后, 再新建一条核查数据
         if (res) {
         if (res) {
             MedCheckInfo medCheckInfo = new MedCheckInfo();
             MedCheckInfo medCheckInfo = new MedCheckInfo();
@@ -105,7 +91,7 @@ public class MedCheckInfoFacade extends MedCheckInfoServiceImpl {
             medCheckInfo.setCheckTime(now);
             medCheckInfo.setCheckTime(now);
             medCheckInfo.setStatus(medCheckInfoAddVO.getCheckStatus());
             medCheckInfo.setStatus(medCheckInfoAddVO.getCheckStatus());
             medCheckInfo.setBehospitalCode(medCheckInfoAddVO.getBehospitalCode());
             medCheckInfo.setBehospitalCode(medCheckInfoAddVO.getBehospitalCode());
-            res = medCheckInfoService.save(medCheckInfo);
+            res = this.save(medCheckInfo);
         }
         }
         return res;
         return res;
     }
     }

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

@@ -23,6 +23,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
 import com.diagbot.vo.TaskVO;
@@ -303,4 +304,12 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      * @return
      */
      */
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO);
 }
 }

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

@@ -23,6 +23,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
 import com.diagbot.vo.TaskVO;
@@ -296,4 +297,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      * @return
      */
      */
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO);
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO);
 }
 }

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

@@ -25,6 +25,7 @@ import com.diagbot.vo.FilterOrderByDeptVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.TaskVO;
 import com.diagbot.vo.TaskVO;
@@ -403,4 +404,15 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO) {
     public HomePageImproveDTO homePageImproveCount(FilterVO filterVO) {
         return baseMapper.homePageImproveCount(filterVO);
         return baseMapper.homePageImproveCount(filterVO);
     }
     }
+
+    /**
+     * 质控核查统计(内页)
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    @Override
+    public List<HomePageImproveDTO> qcCheckStatistics(FilterQcCheckVO filterQcCheckVO) {
+        return baseMapper.qcCheckStatistics(filterQcCheckVO);
+    }
 }
 }

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

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/7 11:40
+ */
+@Getter
+@Setter
+public class FilterQcCheckVO extends FilterVO {
+    private String deptName;
+}

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

@@ -8,6 +8,7 @@ import com.diagbot.dto.DeptNumDTO;
 import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.EntryNumDTO;
 import com.diagbot.dto.EntryNumGroupDTO;
 import com.diagbot.dto.EntryNumGroupDTO;
 import com.diagbot.dto.EntryStatisticsDTO;
 import com.diagbot.dto.EntryStatisticsDTO;
+import com.diagbot.dto.HomePageImproveDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.HomePageNumDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
 import com.diagbot.dto.LevelStatisticsTZDTO;
@@ -19,6 +20,7 @@ import com.diagbot.vo.EntryStatisticsVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterOrderVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterPageVO;
+import com.diagbot.vo.FilterQcCheckVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import com.diagbot.vo.QcResultShortPageVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
@@ -529,4 +531,20 @@ public class ConsoleController {
     public RespDTO<IPage<QcResultShortDTO>> leaveHosMRPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
     public RespDTO<IPage<QcResultShortDTO>> leaveHosMRPage(@RequestBody @Valid QcResultShortPageVO qcResultShortPageVO) {
         return RespDTO.onSuc(consoleFacade.leaveHosMRPage(qcResultShortPageVO));
         return RespDTO.onSuc(consoleFacade.leaveHosMRPage(qcResultShortPageVO));
     }
     }
+
+    /**
+     * 质控核查统计
+     *
+     * @param filterQcCheckVO
+     * @return
+     */
+    @ApiOperation(value = "质控核查统计[by:zhaops]",
+            notes = "deptName: 科室名称 <br>" +
+                    "startDate: 起始时间 <br>" +
+                    "endDate: 截止时间 <br>")
+    @PostMapping("/qcCheckStatistics")
+    @SysLogger("qcCheckStatistics")
+    public RespDTO<List<HomePageImproveDTO>> qcCheckStatistics(@RequestBody @Valid FilterQcCheckVO filterQcCheckVO) {
+        return RespDTO.onSuc(consoleFacade.qcCheckStatistics(filterQcCheckVO));
+    }
 }
 }

+ 221 - 11
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -2735,7 +2735,7 @@
         t1.diagnose,
         t1.diagnose,
         t1.ward_name AS wardName,
         t1.ward_name AS wardName,
         t2.age,
         t2.age,
-        t2.file_code AS fileCode
+        t1.file_code AS fileCode
         FROM
         FROM
         (
         (
         SELECT DISTINCT
         SELECT DISTINCT
@@ -2746,6 +2746,7 @@
         a.hospital_id,
         a.hospital_id,
         a.behospital_code,
         a.behospital_code,
         a.bed_code,
         a.bed_code,
+        a.file_code,
         b.LEVEL,
         b.LEVEL,
         b.grade_type,
         b.grade_type,
         b.score_res,
         b.score_res,
@@ -2893,13 +2894,14 @@
         t1.diagnose,
         t1.diagnose,
         t1.ward_name AS wardName,
         t1.ward_name AS wardName,
         t2.age,
         t2.age,
-        t2.file_code AS fileCode
+        t1.file_code AS fileCode
         FROM
         FROM
         (
         (
         SELECT DISTINCT
         SELECT DISTINCT
         a.hospital_id,
         a.hospital_id,
         a.behospital_code,
         a.behospital_code,
         a.bed_code,
         a.bed_code,
+        a.file_code,
         b.LEVEL,
         b.LEVEL,
         b.grade_type,
         b.grade_type,
         b.score_res,
         b.score_res,
@@ -4372,16 +4374,16 @@
     <!-- 病案首页改善率统计(首页)-->
     <!-- 病案首页改善率统计(首页)-->
     <select id="homePageImproveCount" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.HomePageImproveDTO">
     <select id="homePageImproveCount" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.HomePageImproveDTO">
         SELECT
         SELECT
-        t2.mrNum,
+        t2.homePageMRNum,
         t1.improveNum,
         t1.improveNum,
-        round( t1.improveNum / t2.mrNum, 4 ) AS improvePercent,
-        Concat( round( t1.improveNum / t2.mrNum * 100, 2 ), '%' ) AS improvePercentStr,
+        round( t1.improveNum / t2.homePageMRNum, 4 ) AS improvePercent,
+        Concat( round( t1.improveNum / t2.homePageMRNum * 100, 2 ), '%' ) AS improvePercentStr,
         t1.improveToPassNum,
         t1.improveToPassNum,
-        round( t1.improveToPassNum / t2.mrNum, 4 ) AS improveToPassPercent,
-        Concat( round( t1.improveToPassNum / t2.mrNum * 100, 2 ), '%' ) AS improveToPassPercentStr,
+        round( t1.improveToPassNum / t2.homePageMRNum, 4 ) AS improveToPassPercent,
+        Concat( round( t1.improveToPassNum / t2.homePageMRNum * 100, 2 ), '%' ) AS improveToPassPercentStr,
         t1.improveToFullNum,
         t1.improveToFullNum,
-        round( t1.improveToFullNum / t2.mrNum, 4 ) AS improveToFullPercent,
-        Concat( round( t1.improveToFullNum / t2.mrNum * 100, 2 ), '%' ) AS improveToFullPercentStr
+        round( t1.improveToFullNum / t2.homePageMRNum, 4 ) AS improveToFullPercent,
+        Concat( round( t1.improveToFullNum / t2.homePageMRNum * 100, 2 ), '%' ) AS improveToFullPercentStr
         FROM
         FROM
         (
         (
         SELECT
         SELECT
@@ -4460,7 +4462,7 @@
         ) t1,
         ) t1,
         (
         (
         SELECT
         SELECT
-        count(*) AS mrNum
+        count( DISTINCT a.behospital_code ) AS homePageMRNum
         FROM
         FROM
         med_behospital_info a,
         med_behospital_info a,
         med_home_page b,
         med_home_page b,
@@ -4468,13 +4470,131 @@
         WHERE
         WHERE
         a.is_deleted = 'N'
         a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND b.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.behospital_code = c.behospital_code
+        AND a.qc_type_id != 0
+        AND a.is_placefile = '1'
+        <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>
+        ) t2
+    </select>
+
+    <!-- 质控核查统计(内页)-->
+    <select id="qcCheckStatistics" parameterType="com.diagbot.vo.FilterQcCheckVO" resultType="com.diagbot.dto.HomePageImproveDTO">
+        SELECT
+        mr.beh_dept_id AS deptId,
+        mr.beh_dept_name AS deptName,
+        IFNULL( mr.mrNum, 0 ) AS mrNum,
+        ck.checkedNum AS checkedNum,
+        ROUND( ck.checkedNum / mr.mrNum, 4 ) AS checkedPercent,
+        CONCAT( ROUND( ck.checkedNum / mr.mrNum * 100, 2 ), '%' ) AS checkedPercentStr,
+        hmmr_t.homePageMRNum,
+        improve_t.improveNum,
+        round( improve_t.improveNum / hmmr_t.homePageMRNum, 4 ) AS improvePercent,
+        Concat( round( improve_t.improveNum / hmmr_t.homePageMRNum * 100, 2 ), '%' ) AS improvePercentStr,
+        improve_t.improveToPassNum,
+        round( improve_t.improveToPassNum / hmmr_t.homePageMRNum, 4 ) AS improveToPassPercent,
+        Concat( round( improve_t.improveToPassNum / hmmr_t.homePageMRNum * 100, 2 ), '%' ) AS improveToPassPercentStr,
+        improve_t.improveToFullNum,
+        round( improve_t.improveToFullNum / hmmr_t.homePageMRNum, 4 ) AS improveToFullPercent,
+        Concat( round( improve_t.improveToFullNum / hmmr_t.homePageMRNum * 100, 2 ), '%' ) AS improveToFullPercentStr
+        FROM
+        (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        count(*) AS mrNum
+        FROM
+        med_behospital_info a,
+        med_qcresult_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.qc_type_id != 0
+        AND a.is_placefile = '1'
+        <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 like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) mr
+        LEFT JOIN (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        count(*) AS checkedNum
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b,
+        med_check_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND a.hospital_id = b.hospital_id
         AND a.hospital_id = b.hospital_id
         AND a.hospital_id = c.hospital_id
         AND a.hospital_id = c.hospital_id
         AND a.behospital_code = b.behospital_code
         AND a.behospital_code = b.behospital_code
         AND a.behospital_code = c.behospital_code
         AND a.behospital_code = c.behospital_code
+        AND a.qc_type_id != 0
         AND a.is_placefile = '1'
         AND a.is_placefile = '1'
+        AND c.`status` = 1
+        <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 like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) ck ON mr.beh_dept_id = ck.beh_dept_id
+        AND mr.beh_dept_name = ck.beh_dept_name
+        LEFT JOIN (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        count( DISTINCT a.behospital_code ) AS homePageMRNum
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.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.behospital_code = c.behospital_code
         AND a.qc_type_id != 0
         AND a.qc_type_id != 0
+        AND a.is_placefile = '1'
+        AND c.have_home_page = '1'
         <if test="hospitalId != null and hospitalId != ''">
         <if test="hospitalId != null and hospitalId != ''">
             AND a.hospital_id = #{hospitalId}
             AND a.hospital_id = #{hospitalId}
         </if>
         </if>
@@ -4484,6 +4604,96 @@
         <if test="endDate != null">
         <if test="endDate != null">
             <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
             <![CDATA[AND a.leave_hospital_date < DATE(#{endDate})]]>
         </if>
         </if>
-        ) t2
+        <if test="deptName != null and deptName != ''">
+            AND a.beh_dept_name like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) hmmr_t ON mr.beh_dept_id = hmmr_t.beh_dept_id
+        AND mr.beh_dept_name = hmmr_t.beh_dept_name
+        LEFT JOIN (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        <![CDATA[sum( e.`level` = '不合格' AND d.`level` = '合格' AND d.score_res < 20 ) AS improveToPassNum,]]>
+        sum( d.score_res = 20 ) AS improveToFullNum,
+        count(*) AS improveNum
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c,
+        med_qcresult_cases d,
+        (
+        SELECT
+        m4.*
+        FROM
+        med_behospital_info m1,
+        med_home_page m2,
+        med_qcresult_info m3,
+        med_qcresult_cases m4
+        WHERE
+        m1.is_deleted = 'N'
+        AND m2.is_deleted = 'N'
+        AND m3.is_deleted = 'Y'
+        AND m4.is_deleted = 'Y'
+        AND m1.hospital_id = m2.hospital_id
+        AND m1.hospital_id = m3.hospital_id
+        AND m1.hospital_id = m4.hospital_id
+        AND m1.behospital_code = m2.behospital_code
+        AND m1.behospital_code = m3.behospital_code
+        AND m1.behospital_code = m4.behospital_code
+        AND m3.have_home_page = 1
+        AND m4.cases_id = 243
+        <if test="hospitalId != null and hospitalId != ''">
+            AND m1.hospital_id = #{hospitalId}
+        </if>
+        <if test="startDate != null">
+            <![CDATA[ AND m1.leave_hospital_date >= DATE(#{startDate})]]>
+        </if>
+        <if test="endDate != null">
+            <![CDATA[AND m1.leave_hospital_date < DATE(#{endDate})]]>
+        </if>
+        <if test="deptName != null and deptName != ''">
+            AND m1.beh_dept_name like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        m1.behospital_code
+        ORDER BY
+        m1.behospital_code,
+        m4.gmt_create
+        ) e
+        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.hospital_id = e.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.behospital_code = e.behospital_code
+        AND d.cases_id = 243
+        AND d.score_res > e.score_res
+        <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 like CONCAT('%',  #{deptName}, '%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) improve_t ON mr.beh_dept_id = improve_t.beh_dept_id
+        AND mr.beh_dept_name = improve_t.beh_dept_name
     </select>
     </select>
 </mapper>
 </mapper>