Переглянути джерело

Merge branch 'dev/20200826_1.4.4' into test

chengyao 4 роки тому
батько
коміт
e16abe57c4

+ 1 - 4
src/main/java/com/diagbot/dto/EntryNumDTO.java

@@ -39,10 +39,7 @@ public class EntryNumDTO {
      */
     @Excel(name = "数量", orderNum = "5")
     private Integer num = 0;
-    /**
-     * 条目缺陷占比
-     */
-    private Double percent = 0.00d;
+
     /**
      * 条目缺陷占比(百分比)
      */

+ 19 - 2
src/main/java/com/diagbot/mapper/QcresultInfoMapper.java

@@ -16,7 +16,10 @@ import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcresultFilterVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * <p>
@@ -150,12 +153,26 @@ public interface QcresultInfoMapper extends BaseMapper<QcresultInfo> {
     public IPage<DeptEntryNumDTO> entryCountGroupByEntryAndDeptPage(@Param("filterPageByDeptVO") FilterPageByDeptVO filterPageByDeptVO);
 
     /**
-     * 条目缺陷占比(内页)
+     * 条目缺陷占比基础数据(内页)
      *
      * @return
      */
     public IPage<EntryNumDTO> entryGroupByEntryInnerPage(@Param("filterPageVO") FilterPageVO filterPageVO);
 
+    /**
+     * 条目缺陷总数(内页)
+     *
+     * @return
+     */
+    public Integer entryGroupByEntrySum(@Param("hospitalId") String hospitalId,@Param("isPlacefile") String isPlacefile,@Param("startDate") String startDate,@Param("endDate") String endDate);
+
+    /**
+     * 条目缺陷分值统计(内页)
+     *
+     * @return
+     */
+    public List<EntryNumDTO> entryGroupByEntryScore(@Param("hospitalId") String hospitalId,@Param("isPlacefile") String isPlacefile, @Param("ids")Set<Long> ids);
+
     /**
      * 条目缺陷占比-科室(内页)
      *
@@ -187,4 +204,4 @@ public interface QcresultInfoMapper extends BaseMapper<QcresultInfo> {
      * @return
      */
     public List<DeptNumDTO> qcResultLevelPercent(FilterVO filterVO);
-}
+}

+ 40 - 4
src/main/java/com/diagbot/service/impl/QcresultInfoServiceImpl.java

@@ -16,10 +16,13 @@ import com.diagbot.vo.FilterPageByDeptVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.QcresultFilterVO;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import java.text.DecimalFormat;
+import java.util.*;
 
 /**
  * <p>
@@ -206,7 +209,41 @@ public class QcresultInfoServiceImpl extends ServiceImpl<QcresultInfoMapper, Qcr
      */
     @Override
     public IPage<EntryNumDTO> entryGroupByEntryInnerPage(@Param("filterPageVO") FilterPageVO filterPageVO) {
-        return baseMapper.entryGroupByEntryInnerPage(filterPageVO);
+       //基础数据
+        IPage<EntryNumDTO> entryNumDTOIPage  = baseMapper.entryGroupByEntryInnerPage(filterPageVO);
+        String hospitalId = filterPageVO.getHospitalId();
+        //缺陷总数
+          Integer sumInteget = baseMapper.entryGroupByEntrySum(filterPageVO.getHospitalId(),filterPageVO.getIsPlacefile(),
+                                                                filterPageVO.getStartDate(),filterPageVO.getEndDate());
+        float nsum = 0;
+          Set<Long> ids = new HashSet<Long>();
+        List<EntryNumDTO> records = entryNumDTOIPage.getRecords();
+        if(CollectionUtils.isEmpty(records)){
+            return null;
+        }
+        for (EntryNumDTO record : records) {
+            ids.add(record.getId());
+            int num = record.getNum().intValue();
+            if(sumInteget!=null && sumInteget!=0 ){
+                int sum = sumInteget.intValue();
+                 nsum =(float) num/sum;
+            }
+            DecimalFormat df = new DecimalFormat("0.00");
+            String percent = df.format(nsum*100);
+            record.setPercentStr(percent+"%");
+            record.setTotleNum(sumInteget);
+        }
+        //缺陷分值
+        String isPlacefile = filterPageVO.getIsPlacefile();
+        List<EntryNumDTO> entryScore = baseMapper.entryGroupByEntryScore(hospitalId,isPlacefile, ids);
+        for (EntryNumDTO record : records) {
+            for (EntryNumDTO entryNumDTO : entryScore) {
+                if(record.getId().equals(entryNumDTO.getId())){
+                 record.setScore(entryNumDTO.getScore());
+                    }
+                }
+            }
+        return entryNumDTOIPage;
     }
 
     /**
@@ -244,7 +281,6 @@ public class QcresultInfoServiceImpl extends ServiceImpl<QcresultInfoMapper, Qcr
 
     /**
      * 各科室甲/乙/丙级病历占比
-     *
      * @param filterVO
      * @return
      */
@@ -252,4 +288,4 @@ public class QcresultInfoServiceImpl extends ServiceImpl<QcresultInfoMapper, Qcr
     public List<DeptNumDTO> qcResultLevelPercent(FilterVO filterVO) {
         return baseMapper.qcResultLevelPercent(filterVO);
     }
-}
+}

+ 9 - 5
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -734,13 +734,17 @@
         COUNT(*)
         FROM
         med_behospital_info a,
-        med_home_page b
+        med_medical_record b,
+        med_medical_record_content c
         WHERE
-        a.is_deleted = 'N'
-        AND b.is_deleted = 'N'
-        AND a.hospital_id = b.hospital_id
+            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 b.return_to_type = '死亡'
+        AND b.rec_id = c.rec_id
+        and b.mode_id = '24'
         <if test="isPlacefile != null and isPlacefile != ''">
             and a.is_placefile = #{isPlacefile}
         </if>

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

@@ -430,6 +430,134 @@
 
     <!-- 条目缺陷占比(内页) -->
     <select id="entryGroupByEntryInnerPage" resultType="com.diagbot.dto.EntryNumDTO">
+    SELECT
+    tt2.id as id,
+    tt2.name as name,
+    tt2.cases_id as casesId,
+    tt2.cases_name as casesName,
+    tt1.num as num,
+    tt1.is_reject as isReject
+    FROM
+    (
+    SELECT
+    a.hospital_id,
+    d.cases_entry_id,
+    d.cases_id,
+    count(*) as num,
+    d.is_reject
+    FROM
+        med_behospital_info a,
+        med_qcresult_detail d
+        WHERE
+        a.is_deleted = 'N'
+        AND d.is_deleted = 'N'
+        AND a.hospital_id = d.hospital_id
+        AND a.behospital_code = d.behospital_code
+    <if test="filterPageVO.isPlacefile != null and filterPageVO.isPlacefile != ''">
+        AND a.is_placefile = #{filterPageVO.isPlacefile}
+    </if>
+    AND a.qc_type_id != 0
+        <if test="filterPageVO.hospitalId != null and filterPageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageVO.hospitalId}
+        </if>
+    <if test="filterPageVO.isPlacefile != null and filterPageVO.isPlacefile == 0">
+        <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
+            <![CDATA[ AND a.behospital_date >= #{filterPageVO.startDate}]]>
+        </if>
+        <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
+            <![CDATA[ AND a.behospital_date <= #{filterPageVO.endDate}]]>
+        </if>
+    </if>
+    <if test="filterPageVO.isPlacefile != null and filterPageVO.isPlacefile == 1">
+        <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
+            <![CDATA[ AND a.leave_hospital_date >= #{filterPageVO.startDate}]]>
+        </if>
+        <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
+            <![CDATA[ AND a.leave_hospital_date <= #{filterPageVO.endDate}]]>
+        </if>
+    </if>
+    <if test="filterPageVO.isReject != null">
+        AND d.is_reject = #{filterPageVO.isReject}
+    </if>
+    GROUP BY
+    d.cases_entry_id,
+    d.is_reject,
+    d.cases_id
+    ) tt1,
+    qc_cases_entry tt2
+    WHERE
+    tt2.is_deleted = 'N'
+    AND tt1.cases_id = tt2.cases_id
+    AND tt1.cases_entry_id = tt2.id
+    <if test="filterPageVO.name != null and filterPageVO.name != ''">
+        AND tt2.name like CONCAT('%', #{filterPageVO.name},'%')
+    </if>
+    <if test="filterPageVO.casesName != null and filterPageVO.casesName != ''">
+        AND tt2.cases_name = #{filterPageVO.casesName}
+    </if>
+
+        </select>
+    <!-- 条目缺陷占比缺陷总量(内页) -->
+    <select id="entryGroupByEntrySum" resultType="java.lang.Integer">
+        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
+        <if test="isPlacefile != null and isPlacefile != ''">
+            and a.is_placefile = #{isPlacefile}
+        </if>
+        AND a.qc_type_id != 0
+        <if test="hospitalId != null and hospitalId != ''">
+            AND a.hospital_id = #{hospitalId}
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 0">
+            <if test="startDate != null and startDate != ''">
+                <![CDATA[ AND a.behospital_date >= #{startDate}]]>
+            </if>
+            <if test="endDate != null and endDate != ''">
+                <![CDATA[ AND a.behospital_date <= #{endDate}]]>
+            </if>
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 1">
+            <if test="startDate != null and startDate != ''">
+                <![CDATA[ AND a.leave_hospital_date >= #{startDate}]]>
+            </if>
+            <if test="endDate != null and endDate != ''">
+                <![CDATA[ AND a.leave_hospital_date <= #{endDate}]]>
+            </if>
+        </if>
+    </select>
+
+    <!-- 条目缺陷占比分值统计 -->
+    <select id="entryGroupByEntryScore"  resultType="com.diagbot.dto.EntryNumDTO">
+    SELECT
+        a.hospital_id as hospitalId,
+
+        <if test="isPlacefile != null and isPlacefile == 0">
+            a.score_run as score,
+        </if>
+        <if test="isPlacefile != null and isPlacefile == 1">
+            a.score,
+        </if>
+        a.cases_entry_id as id
+    FROM
+        qc_cases_entry_hospital a
+    WHERE
+        a.is_deleted = 'N'
+        AND a.hospital_id = #{hospitalId}
+        AND a.cases_entry_id IN
+        <foreach collection="ids" open="(" separator="," close=")" item="item">
+            ${item}
+        </foreach>
+    </select>
+    <!-- 条目缺陷占比原始数据统计(内页) -->
+  <!--  <select id="entryGroupByEntryInnerPage" resultType="com.diagbot.dto.EntryNumDTO">
         SELECT
         t.*
         FROM
@@ -563,8 +691,7 @@
         </if>
         ) t2
         ) t
-    </select>
-
+    </select>-->
     <!-- 单项否决缺陷占比(首页) -->
     <select id="entryRejectPercent" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.EntryNumDTO">
         SELECT
@@ -689,7 +816,6 @@
         ORDER BY
         percent DESC
     </select>
-
     <!-- 各科室质控平均分(首页) -->
     <select id="getAverageScore" parameterType="com.diagbot.vo.FilterVO" resultType="com.diagbot.dto.AverageStatisticsDTO">
         SELECT