Просмотр исходного кода

月度性能等级评估优化

wangb 1 неделя назад
Родитель
Сommit
18de4b1899

+ 6 - 0
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/ITurbineInfoDayService.java

@@ -4,6 +4,7 @@ import com.gyee.runeconomy.model.auto.TurbineInfoDay;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.text.ParseException;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -18,4 +19,9 @@ public interface ITurbineInfoDayService extends IService<TurbineInfoDay> {
 
     List<TurbineInfoDay> getTurbineInfoDayList(String wpid, String kssj) throws ParseException;
     List<TurbineInfoDay> getTurbineList(String wtid,String kssj,String jssj) throws ParseException;
+
+    /**
+     * 获取风机一段时间电量和
+     */
+    List<TurbineInfoDay> getTurbineMonthList(String windpowerstationId, Date startDate, Date endDate);
 }

+ 52 - 35
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/ProEconEquipmentInfoDayTopServiceImpl.java

@@ -1,5 +1,6 @@
 package com.gyee.runeconomy.service.auto.impl;
 
+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;
@@ -19,8 +20,11 @@ import com.gyee.runeconomy.service.auto.ITurbineInfoDayService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.text.ParseException;
 import java.time.LocalDate;
 import java.time.Year;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -47,40 +51,52 @@ public class ProEconEquipmentInfoDayTopServiceImpl extends ServiceImpl<ProEconEq
     @Override
     public IPage<ProEconEquipmentInfoDayTop> getEquipmentInfoDayTopList(String companyId, String windpowerstationId, Integer types, String staType, String date, Integer pageNum, Integer pageSize) {
 
-        IPage<TurbineInfoDay> andList = getTopAndList(windpowerstationId, date, pageNum, pageSize);
+        List<TurbineInfoDay> andList = getTopAndList(windpowerstationId, date, pageNum, pageSize);
         IPage<ProEconEquipmentInfoDayTop> resultPage = getEquipmentInfoDayTopList_bf(companyId, windpowerstationId, types, staType, date, pageNum, pageSize);
-        resultPage.setRecords(turbs2equipmentidt(resultPage.getRecords(),andList.getRecords()));
+        resultPage.setRecords(turbs2equipmentidt(resultPage.getRecords(), andList));
         return resultPage;
     }
 
     private List<ProEconEquipmentInfoDayTop> turbs2equipmentidt(List<ProEconEquipmentInfoDayTop> peeidtRecords, List<TurbineInfoDay> tidRecords) {
-        if (peeidtRecords == null || peeidtRecords.isEmpty() || tidRecords == null || tidRecords.isEmpty()) return Collections.emptyList();
+        if (peeidtRecords == null || peeidtRecords.isEmpty() || tidRecords == null || tidRecords.isEmpty())
+            return Collections.emptyList();
         Map<String, TurbineInfoDay> dayMap = tidRecords.stream().collect(Collectors.toMap(TurbineInfoDay::getTurbineId, Function.identity()));
-        peeidtRecords.forEach(peeidt->{
+        peeidtRecords.forEach(peeidt -> {
             TurbineInfoDay day = dayMap.get(peeidt.getWindturbineId());
-            peeidt.setDayfdl(NumberUtil.round(day.getRfdl(),2).doubleValue());
-            peeidt.setDayllfdl(NumberUtil.round(day.getLlfdl(),2).doubleValue());
-            peeidt.setDayfs(NumberUtil.round(day.getPjfs(),2).doubleValue());
-            peeidt.setDaygzssdl(NumberUtil.round(day.getGzss(),2).doubleValue());
-            peeidt.setDayxdssdl(NumberUtil.round(day.getXdss(),2).doubleValue());
-            peeidt.setDaywhssdl(NumberUtil.round(day.getFjhjxss(),2).doubleValue());
-            peeidt.setDayxnssdl(NumberUtil.round(day.getXnss(),2).doubleValue());
-            peeidt.setDaylyxs(NumberUtil.round(day.getLyxs(),2).doubleValue());
-            peeidt.setDaysbklyl(NumberUtil.round(day.getKlyl(),2).doubleValue());
-            peeidt.setDayyxfss(NumberUtil.round(day.getYxfss(),2).doubleValue());
-            peeidt.setDayjfpl(NumberUtil.round(day.getJfpl(),2).doubleValue());
+            peeidt.setDayfdl(NumberUtil.round(day.getRfdl() / 1000, 2).doubleValue());
+            peeidt.setDayllfdl(NumberUtil.round(day.getLlfdl() / 1000, 2).doubleValue());
+            peeidt.setDayfs(NumberUtil.round(day.getPjfs(), 2).doubleValue());
+            peeidt.setDaygzssdl(NumberUtil.round(day.getGzss() / 1000, 2).doubleValue());
+            peeidt.setDayxdssdl(NumberUtil.round(day.getXdss() / 1000, 2).doubleValue());
+            peeidt.setDaywhssdl(NumberUtil.round(day.getFjhjxss() / 1000, 2).doubleValue());
+            peeidt.setDayxnssdl(NumberUtil.round(day.getXnss() / 1000, 2).doubleValue());
+            peeidt.setDaylyxs(NumberUtil.round(day.getLyxs(), 2).doubleValue());
+            peeidt.setDaysbklyl(NumberUtil.round(day.getKlyl(), 2).doubleValue());
+            peeidt.setDayyxfss(NumberUtil.round(day.getYxfss(), 2).doubleValue());
+            peeidt.setDayjfpl(NumberUtil.round(day.getJfpl(), 2).doubleValue());
         });
         return peeidtRecords;
     }
 
-    public IPage<TurbineInfoDay> getTopAndList(String windpowerstationId, String date, Integer pageNum, Integer pageSize) {
-        QueryWrapper<TurbineInfoDay> qw = new QueryWrapper<>();
-        qw.lambda().eq(TurbineInfoDay::getStationId, windpowerstationId)
-                .eq(TurbineInfoDay::getRecordDate, DateUtils.parseDate(date)).orderByAsc(TurbineInfoDay::getTurbineId);
-        IPage<TurbineInfoDay> page = new Page<>(pageNum, pageSize);
-        turbineInfoDayService.page(page, qw);
-        return page;
+    public List<TurbineInfoDay> getTopAndList(String windpowerstationId, String date, Integer pageNum, Integer pageSize) {
+        LocalDate d = LocalDate.parse(date, DateTimeFormatter.ISO_LOCAL_DATE);
+        LocalDate firstDayOfMonth = d.withDayOfMonth(1);
+        Date startDate = Date.from(firstDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        Date endDate = DateUtil.parse(date);
+
+        List<TurbineInfoDay> turbineMonthList = turbineInfoDayService.getTurbineMonthList(windpowerstationId, startDate, endDate);
+
+        if (pageNum == null || pageSize == null || pageNum < 1 || pageSize < 1) {
+            return turbineMonthList;
+        }
+
+        return turbineMonthList.stream()
+                .skip((long) (pageNum - 1) * pageSize)
+                .limit(pageSize)
+                .collect(Collectors.toList());
     }
+
+
     public IPage<ProEconEquipmentInfoDayTop> getEquipmentInfoDayTopList_bf(String companyId, String windpowerstationId, Integer types, String staType, String date, Integer pageNum, Integer pageSize) {
 
         QueryWrapper<ProEconEquipmentInfoDayTop> qw = new QueryWrapper<>();
@@ -189,21 +205,22 @@ public class ProEconEquipmentInfoDayTopServiceImpl extends ServiceImpl<ProEconEq
     }
 
     private List<ProEconEquipmentInfoDayTop> turbs2equipmentidt2(List<ProEconEquipmentInfoDayTop> peeidtRecords, List<TurbineInfoDay> tidRecords) {
-        if (peeidtRecords == null || peeidtRecords.isEmpty() || tidRecords == null || tidRecords.isEmpty()) return Collections.emptyList();
+        if (peeidtRecords == null || peeidtRecords.isEmpty() || tidRecords == null || tidRecords.isEmpty())
+            return Collections.emptyList();
         Map<Date, TurbineInfoDay> dayMap = tidRecords.stream().collect(Collectors.toMap(TurbineInfoDay::getRecordDate, Function.identity()));
-        peeidtRecords.forEach(peeidt->{
+        peeidtRecords.forEach(peeidt -> {
             TurbineInfoDay day = dayMap.get(peeidt.getRecordDate());
-            peeidt.setDayfdl(NumberUtil.round(day.getRfdl(),2).doubleValue());
-            peeidt.setDayllfdl(NumberUtil.round(day.getLlfdl(),2).doubleValue());
-            peeidt.setDayfs(NumberUtil.round(day.getPjfs(),2).doubleValue());
-            peeidt.setDaygzssdl(NumberUtil.round(day.getGzss(),2).doubleValue());
-            peeidt.setDayxdssdl(NumberUtil.round(day.getXdss(),2).doubleValue());
-            peeidt.setDaywhssdl(NumberUtil.round(day.getFjhjxss(),2).doubleValue());
-            peeidt.setDayxnssdl(NumberUtil.round(day.getXnss(),2).doubleValue());
-            peeidt.setDaylyxs(NumberUtil.round(day.getLyxs(),2).doubleValue());
-            peeidt.setDaysbklyl(NumberUtil.round(day.getKlyl(),2).doubleValue());
-            peeidt.setDayyxfss(NumberUtil.round(day.getYxfss(),2).doubleValue());
-            peeidt.setDayjfpl(NumberUtil.round(day.getJfpl(),2).doubleValue());
+            peeidt.setDayfdl(NumberUtil.round(day.getRfdl() / 1000, 2).doubleValue());
+            peeidt.setDayllfdl(NumberUtil.round(day.getLlfdl() / 1000, 2).doubleValue());
+            peeidt.setDayfs(NumberUtil.round(day.getPjfs(), 2).doubleValue());
+            peeidt.setDaygzssdl(NumberUtil.round(day.getGzss() / 1000, 2).doubleValue());
+            peeidt.setDayxdssdl(NumberUtil.round(day.getXdss() / 1000, 2).doubleValue());
+            peeidt.setDaywhssdl(NumberUtil.round(day.getFjhjxss() / 1000, 2).doubleValue());
+            peeidt.setDayxnssdl(NumberUtil.round(day.getXnss() / 1000, 2).doubleValue());
+            peeidt.setDaylyxs(NumberUtil.round(day.getLyxs(), 2).doubleValue());
+            peeidt.setDaysbklyl(NumberUtil.round(day.getKlyl(), 2).doubleValue());
+            peeidt.setDayyxfss(NumberUtil.round(day.getYxfss(), 2).doubleValue());
+            peeidt.setDayjfpl(NumberUtil.round(day.getJfpl(), 2).doubleValue());
         });
         return peeidtRecords;
     }

+ 50 - 0
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/TurbineInfoDayServiceImpl.java

@@ -22,6 +22,56 @@ import java.util.List;
  */
 @Service
 public class TurbineInfoDayServiceImpl extends ServiceImpl<TurbineInfoDayMapper, TurbineInfoDay> implements ITurbineInfoDayService {
+
+    @Override
+    public List<TurbineInfoDay> getTurbineMonthList(String windpowerstationId, Date startDate, Date endDate) {
+        QueryWrapper<TurbineInfoDay> qw = new QueryWrapper<>();
+        qw.eq("station_id", windpowerstationId)
+                .between("record_date", startDate, endDate)
+                .groupBy("turbine_id",
+                        "to_char(record_date, 'yyyy-MM')" )
+                .orderByAsc("turbine_id")
+                .select(
+                        "turbine_id",
+                        "SUM(rfdl) as rfdl",
+                        "SUM(jhjxss) as jhjxss",
+                        "SUM(fjhjxss) as fjhjxss",
+                        "SUM(xdss) as xdss",
+                        "SUM(slss) as slss",
+                        "SUM(xnss) as xnss",
+                        "SUM(llfdl) as llfdl",
+                        "AVG(pjfs) as pjfs",
+                        "AVG(edfs) as edfs",
+                        "AVG(xfqrfs) as xfqrfs",
+                        "AVG(hjwd) as hjwd",
+                        "SUM(djss) as djss",
+                        "SUM(gzss) as gzss",
+                        "SUM(dj_min) as dj_min",
+                        "SUM(tj_min) as tj_min",
+                        "SUM(yx_min) as yx_min",
+                        "SUM(gz_min) as gz_min",
+                        "SUM(jx_min) as jx_min",
+                        "SUM(xd_min) as xd_min",
+                        "SUM(lx_min) as lx_min",
+                        "SUM(djcs) as djcs",
+                        "SUM(tjcs) as tjcs",
+                        "SUM(yxcs) as yxcs",
+                        "SUM(gzcs) as gzcs",
+                        "SUM(jxcs) as jxcs",
+                        "SUM(xdcs) as xdcs",
+                        "SUM(lxcs) as lxcs",
+                        "AVG(jfpl) as jfpl",
+                        "AVG(glyzxxs) as glyzxxs",
+                        "AVG(fx) as fx",
+                        "SUM(yxfss) as yxfss",
+                        "SUM(lyxs) as lyxs",
+                        "AVG(klyl) as klyl",
+                        "AVG(fnlyl) as fnlyl",
+                        "AVG(bll) as bll"
+                        );
+        return baseMapper.selectList(qw);
+    }
+
     @Override
     public List<TurbineInfoDay> getTurbineInfoDayList(String wpid, String kssj) throws ParseException {
         QueryWrapper<TurbineInfoDay> qw = new QueryWrapper<>();