Browse Source

控制台

zhaops 5 years ago
parent
commit
779b0e9d50

+ 60 - 24
src/main/java/com/diagbot/aggregate/AverageStatisticsAggregate.java

@@ -22,6 +22,7 @@ import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description:平均值相关统计
@@ -67,9 +68,12 @@ public class AverageStatisticsAggregate {
      */
     @DataProvider("getAverageDayNum")
     public List<AverageStatisticsDTO> getAverageDayNum(@InvokeParameter("filterVO") FilterVO filterVO) {
+        Integer limitCount = filterVO.getLimitCount();
         List<AverageStatisticsDTO> retAverageDayNumList = Lists.newLinkedList();
+        //本月、本年
         List<AverageStatisticsDTO> averageDayNumList = homePageFacade.getAverageDayNum(filterVO);
-        Integer limitCount = filterVO.getLimitCount();
+        Map<String, Double> averageMap
+                = EntityUtil.makeMapWithKeyValue(averageDayNumList, "name", "averageValue");
 
         //上月、去年
         String startDate = filterFacade.getLastStartDateStr(filterVO.getType());
@@ -91,22 +95,36 @@ public class AverageStatisticsAggregate {
         }
         //按年统计,同比环比相同
         List<AverageStatisticsDTO> lastYearAverageDayNumList = homePageFacade.getAverageDayNum(filterVO);
-
         Map<String, Double> lastYearMap
                 = EntityUtil.makeMapWithKeyValue(lastYearAverageDayNumList, "name", "averageValue");
 
-        averageDayNumList.forEach(item -> {
-            if (lastMap.containsKey(item.getName())) {
-                item.setLastAverageValue(lastMap.get(item.getName()));
+        //获取所有出现的科室
+        List<String> nameList = Lists.newLinkedList();
+        nameList.addAll(averageMap.keySet());
+        nameList.addAll(lastMap.keySet());
+        nameList.addAll(lastYearMap.keySet());
+        nameList = nameList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        for (String name : nameList) {
+            AverageStatisticsDTO item = new AverageStatisticsDTO();
+            item.setName(name);
+            if (averageMap.containsKey(name)) {
+                item.setAverageValue(averageMap.get(name));
             }
-            if (lastYearMap.containsKey(item.getName())) {
-                item.setLastYearAverageValue(lastYearMap.get(item.getName()));
+            if (lastMap.containsKey(name)) {
+                item.setLastAverageValue(lastMap.get(name));
             }
-        });
-        if (averageDayNumList.size() <= limitCount) {
-            retAverageDayNumList = averageDayNumList;
-        } else {
-            retAverageDayNumList = averageDayNumList.subList(0, limitCount);
+            if (lastYearMap.containsKey(name)) {
+                item.setLastYearAverageValue(lastYearMap.get(name));
+            }
+            retAverageDayNumList.add(item);
+        }
+
+        if (retAverageDayNumList.size() > limitCount) {
+            retAverageDayNumList = retAverageDayNumList.subList(0, limitCount);
         }
         return retAverageDayNumList;
     }
@@ -119,9 +137,13 @@ public class AverageStatisticsAggregate {
      */
     @DataProvider("getAverageFee")
     public List<AverageStatisticsDTO> getAverageFee(@InvokeParameter("filterVO") FilterVO filterVO) {
+        Integer limitCount = filterVO.getLimitCount();
         List<AverageStatisticsDTO> retAverageFeeList = Lists.newLinkedList();
+        //本月、本年
         List<AverageStatisticsDTO> averageFeeList = homePageFacade.getAverageFee(filterVO);
-        Integer limitCount = filterVO.getLimitCount();
+        Map<String, Double> averageMap
+                = EntityUtil.makeMapWithKeyValue(averageFeeList, "name", "averageValue");
+
         //上月、去年
         String startDate = filterFacade.getLastStartDateStr(filterVO.getType());
         String endDate = filterFacade.getLastEndDateStr(filterVO.getType());
@@ -142,22 +164,36 @@ public class AverageStatisticsAggregate {
         }
         //按年统计,同比环比相同
         List<AverageStatisticsDTO> lastYearAverageFeeList = homePageFacade.getAverageDayNum(filterVO);
-
         Map<String, Double> lastYearMap
                 = EntityUtil.makeMapWithKeyValue(lastYearAverageFeeList, "name", "averageValue");
 
-        averageFeeList.forEach(item -> {
-            if (lastMap.containsKey(item.getName())) {
-                item.setLastAverageValue(lastMap.get(item.getName()));
+        //获取所有出现的科室
+        List<String> nameList = Lists.newLinkedList();
+        nameList.addAll(averageMap.keySet());
+        nameList.addAll(lastMap.keySet());
+        nameList.addAll(lastYearMap.keySet());
+        nameList = nameList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        for (String name : nameList) {
+            AverageStatisticsDTO item = new AverageStatisticsDTO();
+            item.setName(name);
+            if (averageMap.containsKey(name)) {
+                item.setAverageValue(averageMap.get(name));
             }
-            if (lastYearMap.containsKey(item.getName())) {
-                item.setLastYearAverageValue(lastYearMap.get(item.getName()));
+            if (lastMap.containsKey(name)) {
+                item.setLastAverageValue(lastMap.get(name));
             }
-        });
-        if (averageFeeList.size() <= limitCount) {
-            retAverageFeeList = averageFeeList;
-        } else {
-            retAverageFeeList = averageFeeList.subList(0, limitCount);
+            if (lastYearMap.containsKey(name)) {
+                item.setLastYearAverageValue(lastYearMap.get(name));
+            }
+            retAverageFeeList.add(item);
+        }
+
+        if (retAverageFeeList.size() > limitCount) {
+            retAverageFeeList = retAverageFeeList.subList(0, limitCount);
         }
         return retAverageFeeList;
     }

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

@@ -166,8 +166,6 @@
         GROUP BY
         a.beh_dept_id,
         a.beh_dept_name
-        ORDER BY
-        sum( b.behospital_day_num )/ count(*) DESC
     </select>
 
     <!-- 按科室统计平均费用 -->
@@ -198,8 +196,6 @@
         GROUP BY
         a.beh_dept_id,
         a.beh_dept_name
-        ORDER BY
-        sum( b.total_fee )/ count(*) DESC
     </select>
 
 </mapper>