浏览代码

单机月度分析

xushili 3 天之前
父节点
当前提交
d3fd73d4b2

+ 5 - 1
runeconomy-xk/pom.xml

@@ -84,7 +84,11 @@
         <!--            <groupId>org.springframework.data</groupId>-->
         <!--            <artifactId>spring-data-redis</artifactId>-->
         <!--        </dependency>-->
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional> <!-- 可选 -->
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>

+ 66 - 36
runeconomy-xk/src/main/java/com/gyee/runeconomy/controller/SingleAnalysisController.java

@@ -1,6 +1,7 @@
 package com.gyee.runeconomy.controller;
 
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -76,32 +77,36 @@ public class SingleAnalysisController {
         map = singleAnalysisService.SingleAnalysisList(pageNum, pageSize, cmId, type, wpId, recordDate);
 
         List<SingleAnalysisVo> subList = (List<SingleAnalysisVo>) map.get("values");
+        List<SingleAnalysisVo> subList2 = subList.stream().filter(s -> null != s.getWindturbineid()).collect(Collectors.toList());
         QueryWrapper<TurbineInfoDay> qw = new QueryWrapper<>();
-        qw.lambda().eq(TurbineInfoDay::getStationId, wpId).eq(TurbineInfoDay::getRecordDate, recordDate).orderByAsc(TurbineInfoDay::getTurbineId);
+        qw.lambda().eq(TurbineInfoDay::getStationId, wpId)
+                .between(TurbineInfoDay::getRecordDate, DateUtil.beginOfMonth(recordDate), recordDate)
+                .in(TurbineInfoDay::getTurbineId,subList2.stream().map(SingleAnalysisVo::getWindturbineid).collect(Collectors.toList()))
+                .orderByAsc(TurbineInfoDay::getTurbineId);
         IPage<TurbineInfoDay> page = new Page<>(pageNum, pageSize);
-        IPage<TurbineInfoDay> page1 = turbineInfoDayService.page(page, qw);
-        Map<String, TurbineInfoDay> dayMap = page1.getRecords().stream().collect(Collectors.toMap(TurbineInfoDay::getTurbineId, Function.identity()));
-        List<SingleAnalysisVo> subList2 = subList.stream().filter(s -> null != s.getWindturbineid()).collect(Collectors.toList());
+        List<TurbineInfoDay> page1 = turbineInfoDayService.list(qw);
+        //Map<String, TurbineInfoDay> dayMap = page1.getRecords().stream().collect(Collectors.toMap(TurbineInfoDay::getTurbineId, Function.identity()));
+        Map<String, List<TurbineInfoDay>> dayMap = page1.stream().collect(Collectors.groupingBy(TurbineInfoDay::getTurbineId));
         List<SingleAnalysisVo> subList3 = subList.stream().filter(s -> null == s.getWindturbineid()).collect(Collectors.toList());
         if (subList3.size() == 1) {
             List<TurbineInfoDay> list = turbineInfoDayService.list(qw);
             SingleAnalysisVo sav = subList3.get(0);
             double fdl = list.stream().mapToDouble(TurbineInfoDay::getRfdl).sum();
-            sav.setFdl(NumberUtil.round(fdl,2).doubleValue());
+            sav.setFdl(NumberUtil.round(fdl, 2).doubleValue());
             double fs = list.stream().mapToDouble(TurbineInfoDay::getPjfs).average().orElse(0.0);
-            sav.setFs(NumberUtil.round(fs,2).doubleValue());
+            sav.setFs(NumberUtil.round(fs, 2).doubleValue());
             double gzss = list.stream().mapToDouble(TurbineInfoDay::getGzss).sum();
-            sav.setGzss(NumberUtil.round(gzss,2).doubleValue());
+            sav.setGzss(NumberUtil.round(gzss, 2).doubleValue());
             double jxss = list.stream().mapToDouble(TurbineInfoDay::getJhjxss).sum();
-            sav.setJxss(NumberUtil.round(jxss,2).doubleValue());
+            sav.setJxss(NumberUtil.round(jxss, 2).doubleValue());
             double xdss = list.stream().mapToDouble(TurbineInfoDay::getXdss).sum();
-            sav.setXdss(NumberUtil.round(xdss,2).doubleValue());
+            sav.setXdss(NumberUtil.round(xdss, 2).doubleValue());
             double xnss = list.stream().mapToDouble(TurbineInfoDay::getXnss).sum();
-            sav.setXnss(NumberUtil.round(xnss,2).doubleValue());
+            sav.setXnss(NumberUtil.round(xnss, 2).doubleValue());
             double slss = list.stream().mapToDouble(TurbineInfoDay::getSlss).sum();
-            sav.setSlss(NumberUtil.round(slss,2).doubleValue());
+            sav.setSlss(NumberUtil.round(slss, 2).doubleValue());
             double llfdl = list.stream().mapToDouble(TurbineInfoDay::getLlfdl).sum();
-            sav.setLlfdl(NumberUtil.round(llfdl,2).doubleValue());
+            sav.setLlfdl(NumberUtil.round(llfdl, 2).doubleValue());
             double gzmin = list.stream().mapToDouble(TurbineInfoDay::getGzMin).sum();
             sav.setGzxs(NumberUtil.round(gzmin / 60, 2).doubleValue());
             double jxmin = list.stream().mapToDouble(TurbineInfoDay::getJxMin).sum();
@@ -113,36 +118,61 @@ public class SingleAnalysisController {
             double djmin = list.stream().mapToDouble(TurbineInfoDay::getDjMin).sum();
             sav.setDjxs(NumberUtil.round(djmin / 60, 2).doubleValue());
             double lyxs = list.stream().mapToDouble(TurbineInfoDay::getLyxs).sum();
-            sav.setLyxs(NumberUtil.round(lyxs,2).doubleValue());
+            sav.setLyxs(NumberUtil.round(lyxs, 2).doubleValue());
             double sbklyl = list.stream().mapToDouble(TurbineInfoDay::getKlyl).average().orElse(0.0);
-            sav.setSbklyl(NumberUtil.round(sbklyl,2).doubleValue());
+            sav.setSbklyl(NumberUtil.round(sbklyl, 2).doubleValue());
             double xfqrfs = list.stream().mapToDouble(TurbineInfoDay::getXfqrfs).average().orElse(0.0);
-            sav.setXfqr(NumberUtil.round(xfqrfs,2).doubleValue());
+            sav.setXfqr(NumberUtil.round(xfqrfs, 2).doubleValue());
             double yxfss = list.stream().mapToDouble(TurbineInfoDay::getYxfss).sum();
-            sav.setYxfss(NumberUtil.round(yxfss,2).doubleValue());
+            sav.setYxfss(NumberUtil.round(yxfss, 2).doubleValue());
             double jfpl = list.stream().mapToDouble(TurbineInfoDay::getJfpl).sum();
-            sav.setJfpl(NumberUtil.round(jfpl,2).doubleValue());
+            sav.setJfpl(NumberUtil.round(jfpl, 2).doubleValue());
         }
         subList2.forEach(sav -> {
-            TurbineInfoDay day = dayMap.get(sav.getWindturbineid());
-            sav.setFdl(NumberUtil.round(day.getRfdl(),2).doubleValue());
-            sav.setFs(NumberUtil.round(day.getPjfs(),2).doubleValue());
-            sav.setGzss(NumberUtil.round(day.getGzss(),2).doubleValue());
-            sav.setJxss(NumberUtil.round(day.getJhjxss(),2).doubleValue());
-            sav.setXdss(NumberUtil.round(day.getXdss(),2).doubleValue());
-            sav.setXnss(NumberUtil.round(day.getXnss(),2).doubleValue());
-            sav.setSlss(NumberUtil.round(day.getSlss(),2).doubleValue());
-            sav.setLlfdl(NumberUtil.round(day.getLlfdl(),2).doubleValue());
-            sav.setGzxs(NumberUtil.round(day.getGzMin() / 60, 2).doubleValue());
-            sav.setJxxs(NumberUtil.round(day.getJxMin() / 60, 2).doubleValue());
-            sav.setTjxs(NumberUtil.round(day.getTjMin() / 60, 2).doubleValue());
-            sav.setYxxs(NumberUtil.round(day.getYxMin() / 60, 2).doubleValue());
-            sav.setDjxs(NumberUtil.round(day.getDjMin() / 60, 2).doubleValue());
-            sav.setLyxs(NumberUtil.round(day.getLyxs(),2).doubleValue());
-            sav.setSbklyl(NumberUtil.round(day.getKlyl(),2).doubleValue());
-            sav.setXfqr(NumberUtil.round(day.getXfqrfs(),2).doubleValue());
-            sav.setYxfss(NumberUtil.round(day.getYxfss(),2).doubleValue());
-            sav.setJfpl(NumberUtil.round(day.getJfpl(),2).doubleValue());
+            List<TurbineInfoDay> days = dayMap.get(sav.getWindturbineid());
+            Optional<TurbineInfoDay> tbo=  days.stream().reduce((sum, day) -> {
+                sum.setRfdl(sum.getRfdl() + day.getRfdl());
+                sum.setPjfs(sum.getPjfs() + day.getPjfs());
+                sum.setGzss(sum.getGzss() + day.getGzss());
+                sum.setJhjxss(sum.getJhjxss() + day.getJhjxss());
+                sum.setXdss(sum.getXdss() + day.getXdss());
+                sum.setXnss(sum.getXnss() + day.getXnss());
+                sum.setSlss(sum.getSlss() + day.getSlss());
+                sum.setLlfdl(sum.getLlfdl() + day.getLlfdl());
+                sum.setGzMin(sum.getGzMin() + day.getGzMin() / 60);
+                sum.setJxMin(sum.getJxMin() + day.getJxMin() / 60);
+                sum.setXdss(sum.getTjMin() + day.getTjMin() / 60);
+                sum.setYxMin(sum.getYxMin() + day.getYxMin() / 60);
+                sum.setDjMin(sum.getDjMin() + day.getDjMin() / 60);
+                sum.setLyxs(sum.getLyxs() + day.getLyxs());
+                sum.setKlyl(sum.getKlyl() + day.getKlyl());
+                sum.setXfqrfs(sum.getXfqrfs() + day.getXfqrfs());
+                sum.setYxfss(sum.getYxfss() + day.getYxfss());
+                sum.setJfpl(sum.getJfpl() + day.getJfpl());
+                return sum;
+            });
+            TurbineInfoDay tb;
+            if(tbo.isPresent()) {
+                tb = tbo.get();
+                sav.setFdl(NumberUtil.round(tb.getRfdl(), 2).doubleValue());
+                sav.setFs(NumberUtil.round(tb.getPjfs(), 2).doubleValue());
+                sav.setGzss(NumberUtil.round(tb.getGzss(), 2).doubleValue());
+                sav.setJxss(NumberUtil.round(tb.getJhjxss(), 2).doubleValue());
+                sav.setXdss(NumberUtil.round(tb.getXdss(), 2).doubleValue());
+                sav.setXnss(NumberUtil.round(tb.getXnss(), 2).doubleValue());
+                sav.setSlss(NumberUtil.round(tb.getSlss(), 2).doubleValue());
+                sav.setLlfdl(NumberUtil.round(tb.getLlfdl(), 2).doubleValue());
+                sav.setGzxs(NumberUtil.round(tb.getGzMin() / 60, 2).doubleValue());
+                sav.setJxxs(NumberUtil.round(tb.getJxMin() / 60, 2).doubleValue());
+                sav.setTjxs(NumberUtil.round(tb.getTjMin() / 60, 2).doubleValue());
+                sav.setYxxs(NumberUtil.round(tb.getYxMin() / 60, 2).doubleValue());
+                sav.setDjxs(NumberUtil.round(tb.getDjMin() / 60, 2).doubleValue());
+                sav.setLyxs(NumberUtil.round(tb.getLyxs(), 2).doubleValue());
+                sav.setSbklyl(NumberUtil.round(tb.getKlyl(), 2).doubleValue());
+                sav.setXfqr(NumberUtil.round(tb.getXfqrfs(), 2).doubleValue());
+                sav.setYxfss(NumberUtil.round(tb.getYxfss(), 2).doubleValue());
+                sav.setJfpl(NumberUtil.round(tb.getJfpl(), 2).doubleValue());
+            }
         });
 
         return R.data(ResultMsg.ok(map));