Pārlūkot izejas kodu

1、平均住院天数分页统计
2、平均费用分页统计

zhaops 5 gadi atpakaļ
vecāks
revīzija
5ac4985bf9

+ 35 - 10
src/main/java/com/diagbot/facade/ConsoleFacade.java

@@ -10,11 +10,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.ListUtil;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.FilterOrderVO;
+import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import com.google.common.collect.Lists;
@@ -30,7 +30,6 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.logging.Filter;
 import java.util.stream.Collectors;
 
 /**
@@ -353,6 +352,32 @@ public class ConsoleFacade {
         filterPageVO.setHospitalId(hospitalId);
     }
 
+    /**
+     * 平均住院天数、平均花费入参设置
+     *
+     * @param filterPageByAverageVO
+     */
+    private void filterPageByAverageVOSet(FilterPageByAverageVO filterPageByAverageVO) {
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        String userId = SysUserUtils.getCurrentPrincipleID();
+        Date date = new Date();
+        String year = DateUtil.getYear(date);
+        String startDate = filterFacade.getStartDateStr(filterPageByAverageVO.getType(), null);
+        String endDate = filterFacade.getEndDateStr(filterPageByAverageVO.getType(), null);
+        String lastStartDate = filterFacade.getLastStartDateStr(filterPageByAverageVO.getType());
+        String lastEndDate = filterFacade.getLastEndDateStr(filterPageByAverageVO.getType());
+        String lastYearStartDate = filterFacade.getStartDateStr(filterPageByAverageVO.getType(), Integer.valueOf(year) - 1);
+        String lastYearEndDate = filterFacade.getEndDateStr(filterPageByAverageVO.getType(), Integer.valueOf(year) - 1);
+        filterPageByAverageVO.setHospitalId(hospitalId);
+        filterPageByAverageVO.setUserId(Long.valueOf(userId));
+        filterPageByAverageVO.setStartDate(startDate);
+        filterPageByAverageVO.setEndDate(endDate);
+        filterPageByAverageVO.setLastStartDate(lastStartDate);
+        filterPageByAverageVO.setLastEndDate(lastEndDate);
+        filterPageByAverageVO.setLastYearStartDate(lastYearStartDate);
+        filterPageByAverageVO.setLastYearEndDate(lastYearEndDate);
+    }
+
     /**
      * 各模块缺陷占比(分页)
      *
@@ -394,24 +419,24 @@ public class ConsoleFacade {
     /**
      * 按科室统计平均住院天数(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
-    public IPage<AverageStatisticsDTO> getAverageDayNumPage(FilterPageVO filterPageVO) {
-        filterPageVOSet(filterPageVO);
-        IPage<AverageStatisticsDTO> page = homePageFacade.getAverageDayNumPage(filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(FilterPageByAverageVO filterPageByAverageVO) {
+        filterPageByAverageVOSet(filterPageByAverageVO);
+        IPage<AverageStatisticsDTO> page = homePageFacade.getAverageDayNumPage(filterPageByAverageVO);
         return page;
     }
 
     /**
      * 按科室统计平均住院费用(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
-    public IPage<AverageStatisticsDTO> getAverageFeePage(FilterPageVO filterPageVO) {
-        filterPageVOSet(filterPageVO);
-        IPage<AverageStatisticsDTO> page = homePageFacade.getAverageFeePage(filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageFeePage(FilterPageByAverageVO filterPageByAverageVO) {
+        filterPageByAverageVOSet(filterPageByAverageVO);
+        IPage<AverageStatisticsDTO> page = homePageFacade.getAverageFeePage(filterPageByAverageVO);
         return page;
     }
 

+ 5 - 4
src/main/java/com/diagbot/mapper/HomePageMapper.java

@@ -4,6 +4,7 @@ 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.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import org.apache.ibatis.annotations.Param;
@@ -39,16 +40,16 @@ public interface HomePageMapper extends BaseMapper<HomePage> {
     /**
      * 按科室统计平均住院天数(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
-    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageByAverageVO") FilterPageByAverageVO filterPageByAverageVO);
 
     /**
      * 按科室统计平均费用(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
-    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageVO") FilterPageVO filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageByAverageVO") FilterPageByAverageVO filterPageByAverageVO);
 }

+ 5 - 4
src/main/java/com/diagbot/service/HomePageService.java

@@ -4,6 +4,7 @@ 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.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import org.apache.ibatis.annotations.Param;
@@ -38,16 +39,16 @@ public interface HomePageService extends IService<HomePage> {
     /**
      * 按科室统计平均住院天数(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
-    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageVO") FilterPageVO filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageByAverageVO") FilterPageByAverageVO filterPageByAverageVO);
 
     /**
      * 按科室统计平均费用(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
-    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageVO") FilterPageVO filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageByAverageVO") FilterPageByAverageVO filterPageByAverageVO);
 }

+ 7 - 6
src/main/java/com/diagbot/service/impl/HomePageServiceImpl.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.AverageStatisticsDTO;
 import com.diagbot.entity.HomePage;
 import com.diagbot.mapper.HomePageMapper;
 import com.diagbot.service.HomePageService;
+import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import org.apache.ibatis.annotations.Param;
@@ -49,21 +50,21 @@ public class HomePageServiceImpl extends ServiceImpl<HomePageMapper, HomePage> i
     /**
      * 按科室统计平均住院天数(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
     @Override
-    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageVO") FilterPageVO filterPageVO) {
-        return baseMapper.getAverageDayNumPage(filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageDayNumPage(@Param("filterPageByAverageVO") FilterPageByAverageVO filterPageByAverageVO) {
+        return baseMapper.getAverageDayNumPage(filterPageByAverageVO);
     }
 
     /**
      * 按科室统计平均费用(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
-    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageVO") FilterPageVO filterPageVO) {
-        return baseMapper.getAverageFeePage(filterPageVO);
+    public IPage<AverageStatisticsDTO> getAverageFeePage(@Param("filterPageByAverageVO") FilterPageByAverageVO filterPageByAverageVO) {
+        return baseMapper.getAverageFeePage(filterPageByAverageVO);
     }
 }

+ 35 - 0
src/main/java/com/diagbot/vo/FilterPageByAverageVO.java

@@ -0,0 +1,35 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/5/21 19:35
+ */
+@Getter
+@Setter
+public class FilterPageByAverageVO extends FilterPageVO {
+    /**
+     * 上一统计区间起始时间
+     */
+    @ApiModelProperty(hidden = true)
+    private String lastStartDate;
+    /**
+     * 上一统计区间结束时间
+     */
+    @ApiModelProperty(hidden = true)
+    private String lastEndDate;
+    /**
+     * 去年同一区间起始时间
+     */
+    @ApiModelProperty(hidden = true)
+    private String lastYearStartDate;
+    /**
+     * 去年同一区间结束时间
+     */
+    @ApiModelProperty(hidden = true)
+    private String lastYearEndDate;
+}

+ 7 - 6
src/main/java/com/diagbot/web/ConsoleController.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.NumDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.ConsoleFacade;
 import com.diagbot.vo.FilterOrderVO;
+import com.diagbot.vo.FilterPageByAverageVO;
 import com.diagbot.vo.FilterPageVO;
 import com.diagbot.vo.FilterVO;
 import io.swagger.annotations.Api;
@@ -232,7 +233,7 @@ public class ConsoleController {
     /**
      * 按科室统计平均住院天数(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
     @ApiOperation(value = "按科室统计平均住院天数(分页)[by:zhaops]",
@@ -240,14 +241,14 @@ public class ConsoleController {
                     "dateType: 时间类型 1-本月/本年,2-上月/去年,3-去年本月/去年<br>")
     @PostMapping("/getAverageDayNumPage")
     @SysLogger("getAverageDayNumPage")
-    public RespDTO<IPage<AverageStatisticsDTO>> getAverageDayNumPage(@RequestBody FilterPageVO filterPageVO) {
-        return RespDTO.onSuc(consoleFacade.getAverageDayNumPage(filterPageVO));
+    public RespDTO<IPage<AverageStatisticsDTO>> getAverageDayNumPage(@RequestBody FilterPageByAverageVO filterPageByAverageVO) {
+        return RespDTO.onSuc(consoleFacade.getAverageDayNumPage(filterPageByAverageVO));
     }
 
     /**
      * 按科室统计平均住院费用(分页)
      *
-     * @param filterPageVO
+     * @param filterPageByAverageVO
      * @return
      */
     @ApiOperation(value = "按科室统计平均住院费用(分页)[by:zhaops]",
@@ -255,8 +256,8 @@ public class ConsoleController {
                     "dateType: 时间类型 1-本月/本年,2-上月/去年,3-去年本月/去年<br>")
     @PostMapping("/getAverageFeePage")
     @SysLogger("getAverageFeePage")
-    public RespDTO<IPage<AverageStatisticsDTO>> getAverageFeePage(@RequestBody FilterPageVO filterPageVO) {
-        return RespDTO.onSuc(consoleFacade.getAverageFeePage(filterPageVO));
+    public RespDTO<IPage<AverageStatisticsDTO>> getAverageFeePage(@RequestBody FilterPageByAverageVO filterPageByAverageVO) {
+        return RespDTO.onSuc(consoleFacade.getAverageFeePage(filterPageByAverageVO));
     }
 
     /**

+ 214 - 24
src/main/resources/mapper/HomePageMapper.xml

@@ -202,9 +202,33 @@
 
     <!-- 按科室统计平均住院天数 (分页)-->
     <select id="getAverageDayNumPage" resultType="com.diagbot.dto.AverageStatisticsDTO">
-        SELECT t.*
+        SELECT
+        id,
+        NAME,
+        averageValue,
+        lastAverageValue,
+        lastYearAverageValue
         FROM
         (SELECT
+        dept.id,
+        dept.NAME,
+        t1.averageValue,
+        t2.lastAverageValue,
+        t3.lastYearAverageValue
+        FROM
+        (
+        SELECT
+        a.dept_id AS id,
+        a.dept_name AS NAME
+        FROM
+        bas_dept_info a
+        WHERE
+        a.is_deleted = 'N'
+        AND a.station = '住院'
+        AND a.hospital_id = 1
+        ) dept
+        LEFT JOIN (
+        SELECT
         a.beh_dept_id AS id,
         a.beh_dept_name AS NAME,
         count(*) AS num,
@@ -219,35 +243,196 @@
         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 test="filterPageByAverageVO.hospitalId != null and filterPageByAverageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByAverageVO.hospitalId}
+        </if>
+        <if test="filterPageByAverageVO.startDate != null and filterPageByAverageVO.startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByAverageVO.startDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.endDate != null and filterPageByAverageVO.endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByAverageVO.endDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.name != null and filterPageByAverageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageByAverageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) t1 ON dept.id = t1.id
+        AND dept.NAME = t1.
+        NAME LEFT JOIN (
+        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 lastAverageValue,
+        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="filterPageByAverageVO.hospitalId != null and filterPageByAverageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByAverageVO.hospitalId}
         </if>
-        <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
-            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
+        <if test="filterPageByAverageVO.lastStartDate != null and filterPageByAverageVO.lastStartDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByAverageVO.lastStartDate})]]>
         </if>
-        <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
-            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
+        <if test="filterPageByAverageVO.lastEndDate != null and filterPageByAverageVO.lastEndDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByAverageVO.lastEndDate})]]>
         </if>
-        <if test="filterPageVO.name != null and filterPageVO.name != ''">
-            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        <if test="filterPageByAverageVO.name != null and filterPageByAverageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageByAverageVO.name},'%')
         </if>
         GROUP BY
         a.beh_dept_id,
         a.beh_dept_name
+        ) t2 ON dept.id = t2.id
+        AND dept.NAME = t2.
+        NAME LEFT JOIN (
+        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 lastYearAverageValue,
+        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="filterPageByAverageVO.hospitalId != null and filterPageByAverageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByAverageVO.hospitalId}
+        </if>
+        <if test="filterPageByAverageVO.lastYearStartDate != null and filterPageByAverageVO.lastYearStartDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByAverageVO.lastYearStartDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.lastYearEndDate != null and filterPageByAverageVO.lastYearEndDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByAverageVO.lastYearEndDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.name != null and filterPageByAverageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageByAverageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) t3 ON dept.id = t3.id
+        AND dept.NAME = t3.NAME
         ORDER BY
-        round(sum(CAST( b.behospital_day_num AS DECIMAL ))/ count(*),2 ) DESC)t
+        t1.averageValue DESC,
+        t2.lastAverageValue DESC,
+        t3.lastYearAverageValue DESC
+        )t
     </select>
 
     <!-- 按科室统计平均费用(分页) -->
     <select id="getAverageFeePage"   resultType="com.diagbot.dto.AverageStatisticsDTO">
-        SELECT t.*
+        SELECT
+        id,
+        NAME,
+        averageValue,
+        lastAverageValue,
+        lastYearAverageValue
         FROM
         (SELECT
-        a.beh_dept_id as id,
-        a.beh_dept_name as name,
+        dept.id,
+        dept.NAME,
+        t1.averageValue,
+        t2.lastAverageValue,
+        t3.lastYearAverageValue
+        FROM
+        (
+        SELECT
+        a.dept_id AS id,
+        a.dept_name AS NAME
+        FROM
+        bas_dept_info a
+        WHERE
+        a.is_deleted = 'N'
+        AND a.station = '住院'
+        AND a.hospital_id = 1
+        ) dept
+        LEFT JOIN (
+        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
+        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="filterPageByAverageVO.hospitalId != null and filterPageByAverageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByAverageVO.hospitalId}
+        </if>
+        <if test="filterPageByAverageVO.startDate != null and filterPageByAverageVO.startDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByAverageVO.startDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.endDate != null and filterPageByAverageVO.endDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByAverageVO.endDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.name != null and filterPageByAverageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageByAverageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) t1 ON dept.id = t1.id
+        AND dept.NAME = t1.
+        NAME LEFT JOIN (
+        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 lastAverageValue,
+        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="filterPageByAverageVO.hospitalId != null and filterPageByAverageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByAverageVO.hospitalId}
+        </if>
+        <if test="filterPageByAverageVO.lastStartDate != null and filterPageByAverageVO.lastStartDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByAverageVO.lastStartDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.lastEndDate != null and filterPageByAverageVO.lastEndDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByAverageVO.lastEndDate})]]>
+        </if>
+        <if test="filterPageByAverageVO.name != null and filterPageByAverageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageByAverageVO.name},'%')
+        </if>
+        GROUP BY
+        a.beh_dept_id,
+        a.beh_dept_name
+        ) t2 ON dept.id = t2.id
+        AND dept.NAME = t2.
+        NAME LEFT JOIN (
+        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 lastYearAverageValue,
+        round( sum( CAST( b.total_fee AS DECIMAL )), 2 ) AS totleValue
         FROM
         med_behospital_info a,
         med_home_page b
@@ -257,22 +442,27 @@
         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 test="filterPageByAverageVO.hospitalId != null and filterPageByAverageVO.hospitalId != ''">
+            AND a.hospital_id = #{filterPageByAverageVO.hospitalId}
         </if>
-        <if test="filterPageVO.startDate != null and filterPageVO.startDate != ''">
-            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageVO.startDate})]]>
+        <if test="filterPageByAverageVO.lastYearStartDate != null and filterPageByAverageVO.lastYearStartDate != ''">
+            <![CDATA[ and a.leave_hospital_date >= DATE(#{filterPageByAverageVO.lastYearStartDate})]]>
         </if>
-        <if test="filterPageVO.endDate != null and filterPageVO.endDate != ''">
-            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageVO.endDate})]]>
+        <if test="filterPageByAverageVO.lastYearEndDate != null and filterPageByAverageVO.lastYearEndDate != ''">
+            <![CDATA[AND a.leave_hospital_date < DATE(#{filterPageByAverageVO.lastYearEndDate})]]>
         </if>
-        <if test="filterPageVO.name != null and filterPageVO.name != ''">
-            AND a.beh_dept_name like CONCAT('%', #{filterPageVO.name},'%')
+        <if test="filterPageByAverageVO.name != null and filterPageByAverageVO.name != ''">
+            AND a.beh_dept_name like CONCAT('%', #{filterPageByAverageVO.name},'%')
         </if>
         GROUP BY
         a.beh_dept_id,
         a.beh_dept_name
+        ) t3 ON dept.id = t3.id
+        AND dept.NAME = t3.NAME
         ORDER BY
-        round(sum(CAST( b.total_fee AS DECIMAL ))/ count(*),2 ) DESC)t
+        t1.averageValue DESC,
+        t2.lastAverageValue DESC,
+        t3.lastYearAverageValue DESC
+        )t
     </select>
 </mapper>