Browse Source

排名名称显示

linzhiwei 4 years ago
parent
commit
1257c64f3f
1 changed files with 31 additions and 10 deletions
  1. 31 10
      src/main/java/com/tofly/nb/sew/service/impl/SsBbMonthServiceImpl.java

+ 31 - 10
src/main/java/com/tofly/nb/sew/service/impl/SsBbMonthServiceImpl.java

@@ -50,8 +50,8 @@ public class SsBbMonthServiceImpl extends ServiceImpl<SsBbMonthMapper, SsBbMonth
 
     @Override
     public List<MonthRankingVo> monthRanking(List<SsBbMonth> list) {
-        // 按数据月份分组统计每月的处理量
-        Map<String, BigDecimal> map = this.monthSewGroup(list);
+        // 按污水处理厂编号分组统计每月的处理量
+        Map<String, BigDecimal> map = this.stpSewGroup(list);
         // 统计前10的污水厂的月生产排名(所有月)
         Map<String, BigDecimal> rankingMap = new LinkedHashMap<>();
         // 降序
@@ -59,6 +59,7 @@ public class SsBbMonthServiceImpl extends ServiceImpl<SsBbMonthMapper, SsBbMonth
                 .sorted(Map.Entry.<String, BigDecimal>comparingByValue()
                         .reversed()).limit(10).forEachOrdered(e -> rankingMap.put(e.getKey(), e.getValue()));
 
+
         // 转换为vo对象
         List<MonthRankingVo> result = new LinkedList<>();
         rankingMap.keySet().forEach(k -> {
@@ -70,6 +71,33 @@ public class SsBbMonthServiceImpl extends ServiceImpl<SsBbMonthMapper, SsBbMonth
         return result;
     }
 
+    /**
+     * 污水处理厂名称分组污水处理量
+     */
+    private Map<String, BigDecimal> stpSewGroup(List<SsBbMonth> list) {
+        Map<String, BigDecimal> map = new HashMap<>(12);
+        // 按污水处理厂名称分组
+        list.forEach(dto -> {
+            String ssclcbh = dto.getSsclcmc();
+            sewGroup(map, dto, ssclcbh);
+        });
+        return map;
+    }
+
+    /**
+     * 分组方法
+     */
+    private void sewGroup(Map<String, BigDecimal> map, SsBbMonth dto, String ssclcbh) {
+        BigDecimal yclsl = dto.getYclsl() == null ? BigDecimal.ZERO : BigDecimal.valueOf(dto.getYclsl());
+        if (map.containsKey(ssclcbh)) {
+            BigDecimal decimal = map.get(ssclcbh);
+            decimal = decimal.add(yclsl);
+            map.put(ssclcbh, decimal);
+        } else {
+            map.put(ssclcbh, yclsl);
+        }
+    }
+
     /**
      * 数据月份分组污水处理量
      */
@@ -79,14 +107,7 @@ public class SsBbMonthServiceImpl extends ServiceImpl<SsBbMonthMapper, SsBbMonth
         // 按数据月份分组
         list.forEach(dto -> {
             String umonth = dto.getUmonth();
-            BigDecimal yclsl = dto.getYclsl() == null ? BigDecimal.ZERO : BigDecimal.valueOf(dto.getYclsl());
-            if (map.containsKey(umonth)) {
-                BigDecimal decimal = map.get(umonth);
-                decimal = decimal.add(yclsl);
-                map.put(umonth, decimal);
-            } else {
-                map.put(umonth, yclsl);
-            }
+            sewGroup(map, dto, umonth);
         });
         return map;
     }