Explorar o código

控制台-统计详情

zhaops %!s(int64=5) %!d(string=hai) anos
pai
achega
5cc7b082a8

+ 88 - 2
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -10,6 +10,7 @@ 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;
@@ -26,6 +27,7 @@ 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;
 import java.util.List;
@@ -53,6 +55,10 @@ public class ConsoleFacade {
     private QcresultInfoFacade qcresultInfoFacade;
     @Autowired
     private QcCasesFacade qcCasesFacade;
+    @Autowired
+    private HomePageFacade homePageFacade;
+    @Autowired
+    private BehospitalInfoFacade behospitalInfoFacade;
 
     //-----------------------聚合接口开始-------------------------------
 
@@ -303,10 +309,30 @@ public class ConsoleFacade {
 
     //_______________________分页接口开始-------------------------------
 
+    /**
+     * 过滤条件设置
+     *
+     * @param filterPageVO
+     */
     private void filterPageVOSet(FilterPageVO filterPageVO) {
         String hospitalId = SysUserUtils.getCurrentHospitalID();
-        String startDate = filterFacade.getStartDateStr(filterPageVO.getType(), null);
-        String endDate = filterFacade.getEndDateStr(filterPageVO.getType(), null);
+        String startDate = "";
+        String endDate = "";
+        Date date = new Date();
+
+        //1-本月,2-本年,3-上月,4-去年本月,5-去年
+        if (filterPageVO.getType().equals(1) || filterPageVO.getType().equals(2)) {
+            startDate = filterFacade.getStartDateStr(filterPageVO.getType(), null);
+            endDate = filterFacade.getEndDateStr(filterPageVO.getType(), null);
+        } else if (filterPageVO.getType().equals(3) || filterPageVO.getType().equals(5)) {
+            startDate = filterFacade.getLastStartDateStr(filterPageVO.getType());
+            endDate = filterFacade.getLastEndDateStr(filterPageVO.getType());
+        } else if (filterPageVO.getType().equals(4)) {
+            String year = DateUtil.getYear(date);
+            startDate = filterFacade.getStartDateStr(filterPageVO.getType(), Integer.valueOf(year) - 1);
+            endDate = filterFacade.getEndDateStr(filterPageVO.getType(), Integer.valueOf(year) - 1);
+        }
+
         filterPageVO.setStartDate(startDate);
         filterPageVO.setEndDate(endDate);
         filterPageVO.setHospitalId(hospitalId);
@@ -399,5 +425,65 @@ public class ConsoleFacade {
         page.setRecords(records);
         return page;
     }
+
+    /**
+     * 按科室统计平均住院天数(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(FilterPageVO filterPageVO) {
+        filterPageVOSet(filterPageVO);
+        IPage<AverageStatisticsDTO> page = homePageFacade.getAverageDayNumPage(filterPageVO);
+        return page;
+    }
+
+    /**
+     * 按科室统计平均住院费用(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageFeePage(FilterPageVO filterPageVO) {
+        filterPageVOSet(filterPageVO);
+        IPage<AverageStatisticsDTO> page = homePageFacade.getAverageFeePage(filterPageVO);
+        return page;
+    }
+
+    /**
+     * 各科室质控平均分(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageScoreByDeptPage(FilterPageVO filterPageVO) {
+        filterPageVOSet(filterPageVO);
+        IPage<AverageStatisticsDTO> page = qcresultInfoFacade.getAverageScoreByDeptPage(filterPageVO);
+        return page;
+    }
+
+    /**
+     * 各科室缺陷占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<NumDTO> resultStatisticsByDeptPage(FilterPageVO filterPageVO) {
+        filterPageVOSet(filterPageVO);
+        IPage<NumDTO> page = behospitalInfoFacade.resultStatisticsByDeptPage(filterPageVO);
+        return page;
+    }
+
+    /**
+     * 各科室甲级病历占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<QcResultPercentDTO> levelPercentGroupByDeptPage(FilterPageVO filterPageVO) {
+        filterPageVOSet(filterPageVO);
+        IPage<QcResultPercentDTO> page = qcresultInfoFacade.levelPercentGroupByDeptPage(filterPageVO);
+        return page;
+    }
     //-----------------------分页接口结束-------------------------------
 }

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

@@ -9,9 +9,11 @@ import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterByDeptVO;
+import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HPFilterByDeptVO;
 import com.diagbot.vo.HomePageFilterVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -107,4 +109,12 @@ public interface BehospitalInfoMapper extends BaseMapper<BehospitalInfo> {
      * @return
      */
     public List<NumDTO> homePageCountForOperationByDept(FilterByDeptVO filterByDeptVO);
+
+    /**
+     * 各科室缺陷占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<NumDTO> resultStatisticsByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO);
 }

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

@@ -1,9 +1,12 @@
 package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.entity.HomePage;
+import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -33,4 +36,19 @@ public interface HomePageMapper extends BaseMapper<HomePage> {
      */
     public List<AverageStatisticsDTO> getAverageFee(FilterVO filterVO);
 
+    /**
+     * 按科室统计平均住院天数(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+
+    /**
+     * 按科室统计平均费用(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageVO") FilterPageVO filterPageVO);
 }

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

@@ -114,4 +114,20 @@ public interface QcresultInfoMapper extends BaseMapper<QcresultInfo> {
      * @return
      */
     public IPage<NumDTO> entryCountGroupByEntryPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+
+    /**
+     * 各科室质控平均分(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageScoreByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+
+    /**
+     * 各科室甲级病历占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<QcResultPercentDTO> levelPercentGroupByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO);
 }

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

@@ -9,9 +9,11 @@ import com.diagbot.entity.BehospitalInfo;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterByDeptVO;
+import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HPFilterByDeptVO;
 import com.diagbot.vo.HomePageFilterVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -107,4 +109,12 @@ public interface BehospitalInfoService extends IService<BehospitalInfo> {
      * @return
      */
     public List<NumDTO> homePageCountForOperationByDept(FilterByDeptVO filterByDeptVO);
+
+    /**
+     * 各科室缺陷占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<NumDTO> resultStatisticsByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO);
 }

+ 19 - 0
src/main/java/com/diagbot/service/HomePageService.java

@@ -1,9 +1,12 @@
 package com.diagbot.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.entity.HomePage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -31,4 +34,20 @@ public interface HomePageService extends IService<HomePage> {
      * @return
      */
     public List<AverageStatisticsDTO> getAverageFee(FilterVO filterVO);
+
+    /**
+     * 按科室统计平均住院天数(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+
+    /**
+     * 按科室统计平均费用(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageVO") FilterPageVO filterPageVO);
 }

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

@@ -115,4 +115,20 @@ public interface QcresultInfoService extends IService<QcresultInfo> {
      * @return
      */
     public IPage<NumDTO> entryCountGroupByEntryPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+
+    /**
+     * 各科室质控平均分(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageScoreByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+
+    /**
+     * 各科室甲级病历占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<QcResultPercentDTO> levelPercentGroupByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO);
 }

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

@@ -11,9 +11,11 @@ import com.diagbot.service.BehospitalInfoService;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.BehospitalPageVO;
 import com.diagbot.vo.FilterByDeptVO;
+import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.diagbot.vo.HPFilterByDeptVO;
 import com.diagbot.vo.HomePageFilterVO;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -152,4 +154,15 @@ public class BehospitalInfoServiceImpl extends ServiceImpl<BehospitalInfoMapper,
     public List<NumDTO> homePageCountForOperationByDept(FilterByDeptVO filterByDeptVO) {
         return baseMapper.homePageCountForOperationByDept(filterByDeptVO);
     }
+
+    /**
+     * 各科室缺陷占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @Override
+    public IPage<NumDTO> resultStatisticsByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO) {
+        return baseMapper.resultStatisticsByDeptPage(filterPageVO);
+    }
 }

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

@@ -1,11 +1,14 @@
 package com.diagbot.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.entity.HomePage;
 import com.diagbot.mapper.HomePageMapper;
 import com.diagbot.service.HomePageService;
+import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -42,4 +45,25 @@ public class HomePageServiceImpl extends ServiceImpl<HomePageMapper, HomePage> i
     public List<AverageStatisticsDTO> getAverageFee(FilterVO filterVO) {
         return baseMapper.getAverageFee(filterVO);
     }
+
+    /**
+     * 按科室统计平均住院天数(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @Override
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageVO") FilterPageVO filterPageVO) {
+        return baseMapper.getAverageDayNumPage(filterPageVO);
+    }
+
+    /**
+     * 按科室统计平均费用(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageVO") FilterPageVO filterPageVO) {
+        return baseMapper.getAverageFeePage(filterPageVO);
+    }
 }

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

@@ -148,7 +148,30 @@ public class QcresultInfoServiceImpl extends ServiceImpl<QcresultInfoMapper, Qcr
      * @param filterPageVO
      * @return
      */
+    @Override
     public IPage<NumDTO> entryCountGroupByEntryPage(@Param("filterPageVO") FilterPageVO filterPageVO) {
         return baseMapper.entryCountGroupByEntryPage(filterPageVO);
     }
+
+    /**
+     * 各科室质控平均分(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @Override
+    public IPage<AverageStatisticsDTO> getAverageScoreByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO) {
+        return baseMapper.getAverageScoreByDeptPage(filterPageVO);
+    }
+
+    /**
+     * 各科室甲级病历占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @Override
+    public IPage<QcResultPercentDTO> levelPercentGroupByDeptPage(@Param("filterPageVO") FilterPageVO filterPageVO) {
+        return baseMapper.levelPercentGroupByDeptPage(filterPageVO);
+    }
 }

+ 1 - 1
src/main/java/com/diagbot/vo/FilterPageVO.java

@@ -14,7 +14,7 @@ import lombok.Setter;
 @Setter
 public class FilterPageVO extends Page {
     /**
-     * 统计维度 1-本月,2-本年
+     * 统计维度 1-本月,2-本年,3-上月,4-去年本月,5-去年
      */
     private Integer type;
     /**

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

@@ -2,6 +2,7 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.ConsoleFacade;
@@ -222,5 +223,76 @@ public class ConsoleController {
     public RespDTO<IPage<NumDTO>> entryCountGroupByEntryPage(@RequestBody FilterPageVO filterPageVO) {
         return RespDTO.onSuc(consoleFacade.entryCountGroupByEntryPage(filterPageVO));
     }
+
+    /**
+     * 按科室统计平均住院天数(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @ApiOperation(value = "按科室统计平均住院天数(分页)[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年,3-上月,4-去年本月,5-去年(必填)<br>")
+    @PostMapping("/getAverageDayNumPage")
+    @SysLogger("getAverageDayNumPage")
+    public RespDTO<IPage<AverageStatisticsDTO>> getAverageDayNumPage(@RequestBody FilterPageVO filterPageVO) {
+        return RespDTO.onSuc(consoleFacade.getAverageDayNumPage(filterPageVO));
+    }
+
+    /**
+     * 按科室统计平均住院费用(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @ApiOperation(value = "按科室统计平均住院费用(分页)[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年,3-上月,4-去年本月,5-去年(必填)<br>")
+    @PostMapping("/getAverageFeePage")
+    @SysLogger("getAverageFeePage")
+    public RespDTO<IPage<AverageStatisticsDTO>> getAverageFeePage(@RequestBody FilterPageVO filterPageVO) {
+        return RespDTO.onSuc(consoleFacade.getAverageFeePage(filterPageVO));
+    }
+
+    /**
+     * 各科室质控平均分(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @ApiOperation(value = "各科室质控平均分(分页)[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
+    @PostMapping("/getAverageScoreByDeptPage")
+    @SysLogger("getAverageScoreByDeptPage")
+    public RespDTO<IPage<AverageStatisticsDTO>> getAverageScoreByDeptPage(@RequestBody FilterPageVO filterPageVO) {
+        return RespDTO.onSuc(consoleFacade.getAverageScoreByDeptPage(filterPageVO));
+    }
+
+    /**
+     * 各科室缺陷占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @ApiOperation(value = "各科室缺陷占比排行(分页)[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
+    @PostMapping("/resultStatisticsByDeptPage")
+    @SysLogger("resultStatisticsByDeptPage")
+    public RespDTO<IPage<NumDTO>> resultStatisticsByDeptPage(@RequestBody FilterPageVO filterPageVO) {
+        return RespDTO.onSuc(consoleFacade.resultStatisticsByDeptPage(filterPageVO));
+    }
+
+    /**
+     * 各科室甲级病历占比排行(分页)
+     *
+     * @param filterPageVO
+     * @return
+     */
+    @ApiOperation(value = "各科室甲级病历占比排行(分页)[by:zhaops]",
+            notes = "type: 统计维度 1-本月,2-本年(必填)<br>")
+    @PostMapping("/levelPercentGroupByDeptPage")
+    @SysLogger("levelPercentGroupByDeptPage")
+    public RespDTO<IPage<NumDTO>> levelPercentGroupByDeptPage(@RequestBody FilterPageVO filterPageVO) {
+        return RespDTO.onSuc(consoleFacade.levelPercentGroupByDeptPage(filterPageVO));
+    }
+
     //-----------------------分页接口结束-------------------------------
 }

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

@@ -631,4 +631,82 @@
         a.beh_dept_id,
         a.beh_dept_name
     </select>
+
+    <!-- 各科室缺陷占比排行(分页) -->
+    <select id="resultStatisticsByDeptPage" resultType="com.diagbot.dto.NumDTO">
+        SELECT
+        t1.beh_dept_name AS NAME,
+        t1.num AS num,
+        t2.totle AS totleNum,
+        round( t1.num / t2.totle, 4 ) AS percent,
+        concat( round( t1.num / t2.totle * 100, 2 ), '%' ) AS percentStr
+        FROM
+        (
+        (
+        SELECT
+        a.beh_dept_id,
+        a.beh_dept_name,
+        count(*) AS num
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b,
+        med_qcresult_detail c
+        WHERE
+        a.behospital_code = b.behospital_code
+        AND a.hospital_id = b.hospital_id
+        AND b.behospital_code = c.behospital_code
+        AND b.hospital_id = c.hospital_id
+        AND a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        <![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>
+        <if test="filterPageVO.name != null and filterPageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ORDER BY
+        count(*) DESC
+        ) t1,
+        (
+        SELECT
+        count(*) AS totle
+        FROM
+        med_behospital_info a,
+        med_qcresult_info b,
+        med_qcresult_detail c
+        WHERE
+        a.behospital_code = b.behospital_code
+        AND a.hospital_id = b.hospital_id
+        AND b.behospital_code = c.behospital_code
+        AND b.hospital_id = c.hospital_id
+        AND a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        <![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>
+        <if test="filterPageVO.name != null and filterPageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        </if>
+        ) t2
+        )
+    </select>
 </mapper>

+ 75 - 0
src/main/resources/mapper/HomePageMapper.xml

@@ -200,4 +200,79 @@
         a.beh_dept_name
     </select>
 
+    <!-- 按科室统计平均住院天数 (分页)-->
+    <select id="getAverageDayNumPage" resultType="com.diagbot.dto.AverageStatisticsDTO">
+        SELECT t.*
+        FROM
+        (SELECT
+        a.beh_dept_id AS id,
+        a.beh_dept_name AS NAME,
+        count(*) AS num,
+        round( sum( CAST( b.behospital_day_num AS DECIMAL ))/ count(*), 2 ) AS averageValue,
+        round( sum( CAST( b.behospital_day_num AS DECIMAL )), 2 ) AS totleValue
+        FROM
+        med_behospital_info a,
+        med_home_page b
+        WHERE
+        a.hospital_id = b.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        <![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>
+        <if test="filterPageVO.name != null and filterPageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ORDER BY
+        round(sum(CAST( b.behospital_day_num AS DECIMAL ))/ count(*),2 ) DESC)t
+    </select>
+
+    <!-- 按科室统计平均费用(分页) -->
+    <select id="getAverageFeePage"  resultType="com.diagbot.dto.AverageStatisticsDTO">
+        SELECT t.*
+        FROM
+        (SELECT
+        a.beh_dept_id as id,
+        a.beh_dept_name as name,
+        count(*) AS num,
+        round( sum( CAST(b.total_fee AS DECIMAL ))/ count(*), 2 ) AS averageValue,
+        round( sum( CAST(b.total_fee AS DECIMAL )), 2 ) AS totleValue
+        FROM
+        med_behospital_info a,
+        med_home_page b
+        WHERE
+        a.hospital_id = b.hospital_id
+        AND a.behospital_code = b.behospital_code
+        AND a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        <![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>
+        <if test="filterPageVO.name != null and filterPageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ORDER BY
+        round(sum(CAST( b.total_fee AS DECIMAL ))/ count(*),2 ) DESC)t
+    </select>
 </mapper>

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

@@ -515,4 +515,92 @@
         ORDER BY
         count(*) DESC)t
     </select>
+
+    <!-- 质控平均分按科室统计(分页) -->
+    <select id="getAverageScoreByDeptPage"  resultType="com.diagbot.dto.AverageStatisticsDTO">
+        SELECT t.*
+        FROM
+        (SELECT
+        a.beh_dept_id AS id,
+        a.beh_dept_name AS name,
+        ROUND( sum( CAST( c.score_res AS DECIMAL )), 2 ) AS totleValue,
+        ROUND( sum( CAST( c.score_res AS DECIMAL ))/ count(*), 2 ) AS averageValue,
+        count(*) AS num
+        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>
+        <if test="filterPageVO.name != null and filterPageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ORDER BY ROUND( sum( CAST( c.score_res AS DECIMAL ))/ count(*), 2 ) DESC )
+    </select>
+
+    <!-- 按科室统计质控病历数(分页) -->
+    <select id="levelPercentGroupByDeptPage" resultType="com.diagbot.dto.QcResultPercentDTO">
+        SELECT t.*
+        FROM
+        (SELECT
+        a.beh_dept_id AS deptId,
+        a.beh_dept_name AS deptName,
+        count(*) AS totleNum,
+        sum( c.`level` = '甲' ) AS firstLevelNum,
+        sum( c.`level` = '乙' ) AS secondLevelNum,
+        sum( c.`level` = '丙' ) AS thirdLevelNum,
+        concat( ROUND( sum( c.`level` = '甲' )/ count(*)* 100, 2 ), '%' ) AS firstPercent,
+        concat( ROUND( sum( c.`level` = '乙' )/ count(*)* 100, 2 ), '%' ) AS sencondPercent,
+        concat( ROUND( sum( c.`level` = '丙' )/ count(*)* 100, 2 ), '%' ) AS thirdPercent
+        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>
+        <if test="filterPageVO.name != null and filterPageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        order by ROUND( sum( c.`level` = '甲' )/ count(*)* 100, 2 ) DESC,
+        ROUND( sum( c.`level` = '乙' )/ count(*)* 100, 2 ) DESC,
+        ROUND( sum( c.`level` = '丙' )/ count(*)* 100, 2 ) DESC) t
+    </select>
 </mapper>