浏览代码

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

gaodm 5 年之前
父节点
当前提交
b802d06c46
共有 2 个文件被更改,包括 74 次插入58 次删除
  1. 0 56
      src/main/java/com/diagbot/facade/ConsoleFacade.java
  2. 74 2
      src/main/resources/mapper/QcresultInfoMapper.xml

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

@@ -9,15 +9,11 @@ import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.QcResultPercentDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
-import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
-import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
-import com.diagbot.vo.QcresultFilterVO;
-import com.google.common.collect.Lists;
 import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -25,8 +21,6 @@ import org.springframework.stereotype.Component;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -345,58 +339,8 @@ public class ConsoleFacade {
      * @return
      */
     public IPage<NumDTO> entryCountGroupByCasePage(FilterPageVO filterPageVO) {
-        DecimalFormat df = new DecimalFormat("#0.00");
         filterPageVOSet(filterPageVO);
-        long current = filterPageVO.getCurrent();
-        long size = filterPageVO.getSize();
-        filterPageVO.setCurrent(0);
-        filterPageVO.setSize(filterPageVO.getTotal());
         IPage<NumDTO> page = qcresultInfoFacade.entryCountGroupByCasePage(filterPageVO);
-        List<NumDTO> caseList = page.getRecords();
-        QcresultFilterVO qcresultFilterVO = new QcresultFilterVO();
-        BeanUtil.copyProperties(filterPageVO, qcresultFilterVO);
-        int mrNum = qcresultInfoFacade.resultCount(qcresultFilterVO);
-        List<NumDTO> standardCaseList = qcCasesFacade.entryGroupByCase();
-        if (ListUtil.isEmpty(standardCaseList)) {
-            return null;
-        }
-        Map<String, NumDTO> standardCaseMap
-                = EntityUtil.makeEntityMap(standardCaseList, "name");
-        if (ListUtil.isNotEmpty(caseList)) {
-            caseList.forEach(item -> {
-                if (!standardCaseMap.containsKey(item.getName())) {
-                    item.setTotleNum(0);
-                    item.setPercent(0d);
-                    item.setPercentStr("0%");
-                } else {
-                    Integer totleNum = standardCaseMap.get(item.getName()).getNum() * mrNum;
-                    item.setTotleNum(totleNum);
-                    Double percent = BigDecimal.valueOf(item.getNum())
-                            .divide(BigDecimal.valueOf(totleNum), 4, RoundingMode.HALF_UP)
-                            .doubleValue();
-                    String percentStr
-                            = df.format(BigDecimal.valueOf(percent).multiply(BigDecimal.valueOf(100))) + "%";
-                    item.setPercent(percent);
-                    item.setPercentStr(percentStr);
-                }
-            });
-            //降序排序
-            Collections.sort(caseList, new Comparator<NumDTO>() {
-                @Override
-                public int compare(NumDTO o1, NumDTO o2) {
-                    return o2.getPercent().compareTo(o1.getPercent());
-                }
-            });
-        }
-        List<NumDTO> retList = Lists.newLinkedList();
-        if (current * size + size > caseList.size()) {
-            retList = caseList.subList(Long.valueOf(current * size).intValue(), caseList.size());
-        } else {
-            retList = caseList.subList(Long.valueOf(current * size).intValue(), Long.valueOf(current * size + size).intValue());
-        }
-        page.setCurrent(current);
-        page.setSize(size);
-        page.setRecords(retList);
         return page;
     }
 

+ 74 - 2
src/main/resources/mapper/QcresultInfoMapper.xml

@@ -389,8 +389,28 @@
     <!-- 按模块统计质控缺陷数(分页) -->
     <select id="entryCountGroupByCasePage"  resultType="com.diagbot.dto.NumDTO">
         SELECT
-        d.cases_id AS id,
-        e.NAME AS name,
+        t.id,
+        t.`NAME`,
+        t.num,
+        t.totleNum,
+        t.percent,
+        t.percentStr
+        FROM
+        (
+        SELECT
+        t1.caseId AS id,
+        t1.caseName AS NAME,
+        t1.num AS num,
+        t2.mrNum,
+        t3.originalNum,
+        t2.mrNum * t3.originalNum AS totleNum,
+        ROUND( t1.num /( t2.mrNum * t3.originalNum ), 4 ) AS percent,
+        CONCAT( ROUND( t1.num /( t2.mrNum * t3.originalNum )* 100, 2 ), '%' ) AS percentStr
+        FROM
+        (
+        SELECT
+        d.cases_id AS caseId,
+        e.NAME AS caseName,
         count(*) AS num
         FROM
         med_behospital_info a,
@@ -431,6 +451,58 @@
         GROUP BY
         d.cases_id,
         e.`name`
+        ) t1,
+        (
+        SELECT
+        COUNT(*) AS mrNum
+        FROM
+        med_behospital_info a,
+        med_home_page b,
+        med_qcresult_info c
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.hospital_id = b.hospital_id
+        AND a.hospital_id = c.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.behospital_code = c.behospital_code
+        <![CDATA[AND a.qc_type_id <>0 ]]>
+        <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageVO.hospitalId}
+        </if>
+        <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
+        </if>
+        <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
+        </if>
+        ) t2,
+        (
+        SELECT
+        a.id AS caseId,
+        a.NAME AS caseName,
+        count(*) AS originalNum
+        FROM
+        qc_cases a,
+        qc_cases_entry b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.id = b.cases_id
+        <if test="filterPageVO.name != null and filterPageVO.name != ''">
+            AND a.name like CONCAT('%', #{filterPageVO.name},'%')
+        </if>
+        GROUP BY
+        a.id,
+        a.`name`
+        ) t3
+        WHERE
+        t1.caseId = t3.caseId
+        AND t1.caseName = t3.caseName
+        ORDER BY
+        ROUND( t1.num /( t2.mrNum * t3.originalNum ), 4 ) DESC
+        ) t
     </select>
 
     <!-- 条目缺陷分组统计(分页) -->