瀏覽代碼

状态时间计算取数修改

王波 1 天之前
父節點
當前提交
b2d0b3160f

+ 144 - 26
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/EarlyWarning/ReportService.java

@@ -4,8 +4,10 @@ import com.gyee.common.util.DoubleUtils;
 import com.gyee.runeconomy.init.CacheContext;
 import com.gyee.runeconomy.model.auto.ProBasicEquipment;
 import com.gyee.runeconomy.model.auto.ProEconEquipmentmodel;
+import com.gyee.runeconomy.model.auto.ProEconWindturbineStatus;
 import com.gyee.runeconomy.model.auto.TurbineInfoDay;
 import com.gyee.runeconomy.model.vo.IndicatorData;
+import com.gyee.runeconomy.service.auto.IProEconWindturbineStatusService;
 import com.gyee.runeconomy.service.auto.ITurbineInfoDayService;
 import com.gyee.runeconomy.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +25,8 @@ public class ReportService {
 
     @Autowired
     private ITurbineInfoDayService turbineInfoDayService;
+    @Autowired
+    private IProEconWindturbineStatusService proEconWindturbineStatusService;
 
     public Map Electricity(String wtid, String time) throws Exception {
 
@@ -37,9 +41,6 @@ public class ReportService {
         int daysInMonth = DateUtils.getDaysInMonth(timeRange);
         int qnInMonth = DateUtils.getDaysInMonth(qntime);
 
-        System.out.println("开始时间: " + timeRange[0]);
-        System.out.println("结束时间: " + timeRange[1]);
-
         Map<String, Object> map = new HashMap<>();
 
         List<ProBasicEquipment> collect = CacheContext.wtls.stream()
@@ -54,6 +55,8 @@ public class ReportService {
         }
         List<TurbineInfoDay> turbineList = turbineInfoDayService.getTurbineList(wtid, timeRange[0], timeRange[1]);
         List<TurbineInfoDay> cturbineList = turbineInfoDayService.getTurbineList(wtid, timeRange[0], timeRange[1]);
+        List<ProEconWindturbineStatus> statuses = proEconWindturbineStatusService.getTurbineList(wtid, timeRange[0], timeRange[1]);
+        List<ProEconWindturbineStatus> tqstatuses = proEconWindturbineStatusService.getTurbineList(wtid, qntime[0], qntime[1]);
         formatTurbineList(turbineList);
         twoTurbineList(cturbineList);
         List<TurbineInfoDay> tqturbineList = turbineInfoDayService.getTurbineList(wtid, qntime[0], qntime[1]);
@@ -81,19 +84,59 @@ public class ReportService {
         double currentUtilization = DoubleUtils.getRoundingNum(powerInKWh / sbrl, 0);
         double lastYearUtilization = DoubleUtils.getRoundingNum(lastpowerInKWh / sbrl, 0);
 
-        int jhyxsj = daysInMonth * 24 * 60;
-        int tqjhyxsj = qnInMonth * 24 * 60;
-
-        double yxsj = sumRounded(turbineList, t -> t.getYxMin());
-        double tqyxsj = sumRounded(tqturbineList, t -> t.getYxMin());
+        int jhyxsj = daysInMonth * 24;
+        int tqjhyxsj = qnInMonth * 24;
+
+        double yxsj =statuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(2))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();
+        double tqyxsj = tqstatuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(2))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();
 
         double currentEquipmentUtilization = ((yxsj / jhyxsj) * 100);
         currentEquipmentUtilization = new BigDecimal(currentEquipmentUtilization).setScale(2, RoundingMode.HALF_UP).doubleValue();
         double lastYearEquipmentUtilization = (tqyxsj / tqjhyxsj * 1);
         lastYearEquipmentUtilization = new BigDecimal(lastYearEquipmentUtilization).setScale(2, RoundingMode.HALF_UP).doubleValue();
 
-        double jxsj = sumRounded(turbineList, t -> t.getJxMin());
-        double tqjxsj = sumRounded(tqturbineList, t -> t.getJxMin());
+        double jxsj = statuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(6))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();
+        double tqjxsj = tqstatuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(6))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();
 
         double currentEfficiencyCoefficient = ((yxsj + jxsj) / jhyxsj) * 100;
         currentEfficiencyCoefficient = new BigDecimal(currentEfficiencyCoefficient).setScale(2, RoundingMode.HALF_UP).doubleValue();
@@ -129,22 +172,97 @@ public class ReportService {
         double lastYearPerformanceLossPower = sumRounded(tqturbineList, t -> t.getXnss());
         lastYearPerformanceLossPower = new BigDecimal(lastYearPerformanceLossPower).divide(BigDecimal.valueOf(1000),2, RoundingMode.HALF_UP).doubleValue();
 
-        double currentFaultDowntime = sumRounded(turbineList, t -> t.getGzMin());
-        currentFaultDowntime = DoubleUtils.getRoundingNum((currentFaultDowntime / 60),2);
-        double lastYearFaultDowntime = sumRounded(tqturbineList, t -> t.getGzMin());
-        lastYearFaultDowntime = DoubleUtils.getRoundingNum(lastYearFaultDowntime / 60,2);
-        double currentMaintenanceDowntime = DoubleUtils.getRoundingNum((jxsj / 60),2);
-        double lastYearMaintenanceDowntime = DoubleUtils.getRoundingNum((tqjxsj / 60),2);
-        double currentGridConnectionTime = DoubleUtils.getRoundingNum((yxsj / 60),2);
-        double lastYearGridConnectionTime = DoubleUtils.getRoundingNum((tqyxsj / 60),2);
-        double currentStandbyTime = sumRounded(turbineList, t -> t.getDjMin());
-        currentStandbyTime = DoubleUtils.getRoundingNum((currentStandbyTime / 60),2);
-        double lastYearStandbyTime = sumRounded(tqturbineList, t -> t.getDjMin());
-        lastYearStandbyTime = DoubleUtils.getRoundingNum((lastYearStandbyTime / 60),2);
-        double currentCommFailureTime = sumRounded(turbineList, t -> t.getTjMin());
-        currentCommFailureTime = DoubleUtils.getRoundingNum((currentCommFailureTime / 60),2);
-        double lastYearCommFailureTime = sumRounded(tqturbineList, t -> t.getTjMin());
-        lastYearCommFailureTime = DoubleUtils.getRoundingNum((lastYearCommFailureTime / 60),2);
+//        double currentFaultDowntime = sumRounded(turbineList, t -> t.getGzMin());
+//        currentFaultDowntime = DoubleUtils.getRoundingNum((currentFaultDowntime / 60),2);
+
+        double currentFaultDowntime = statuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(4))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();//故障时间
+
+//        double lastYearFaultDowntime = sumRounded(tqturbineList, t -> t.getGzMin());
+//        lastYearFaultDowntime = DoubleUtils.getRoundingNum(lastYearFaultDowntime / 60,2);
+
+        double lastYearFaultDowntime = tqstatuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(4))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();//同期故障时间
+        double currentMaintenanceDowntime = DoubleUtils.getRoundingNum((jxsj),2);
+        double lastYearMaintenanceDowntime = DoubleUtils.getRoundingNum((tqjxsj),2);
+        double currentGridConnectionTime = DoubleUtils.getRoundingNum((yxsj),2);
+        double lastYearGridConnectionTime = DoubleUtils.getRoundingNum((tqyxsj),2);
+//        double currentStandbyTime = sumRounded(turbineList, t -> t.getDjMin());
+//        currentStandbyTime = DoubleUtils.getRoundingNum((currentStandbyTime / 60),2);
+
+        double currentStandbyTime = statuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(0))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();//待机时间
+//        double lastYearStandbyTime = sumRounded(tqturbineList, t -> t.getDjMin());
+//        lastYearStandbyTime = DoubleUtils.getRoundingNum((lastYearStandbyTime / 60),2);
+
+        double lastYearStandbyTime = tqstatuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(0))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();//同期待机时间
+
+//        double currentCommFailureTime = sumRounded(turbineList, t -> t.getTjMin());
+//        currentCommFailureTime = DoubleUtils.getRoundingNum((currentCommFailureTime / 60),2);
+
+        double currentCommFailureTime = statuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(12))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();//通讯中断时间
+
+//        double lastYearCommFailureTime = sumRounded(tqturbineList, t -> t.getTjMin());
+//        lastYearCommFailureTime = DoubleUtils.getRoundingNum((lastYearCommFailureTime / 60),2);
+
+        double lastYearCommFailureTime = tqstatuses.stream()
+                .filter(y -> y.getSatusCode() != null && y.getSatusCode().equals(12))
+                .map(y -> {
+                    Double stopHours = y.getStopHours();
+                    return stopHours != null ?
+                            new BigDecimal(stopHours.toString()) :
+                            BigDecimal.ZERO;
+                })
+                .reduce(BigDecimal.ZERO, BigDecimal::add)
+                .setScale(2, RoundingMode.HALF_UP)
+                .doubleValue();//同期通讯中断时间
         double currentCalmWindFrequency = sumRounded(turbineList, t -> t.getJfpl());
         double lastYearCalmWindFrequency = sumRounded(tqturbineList, t -> t.getJfpl());
 

+ 4 - 1
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/IProEconWindturbineStatusService.java

@@ -3,6 +3,9 @@ package com.gyee.runeconomy.service.auto;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.gyee.runeconomy.model.auto.ProEconWindturbineStatus;
 
+import java.text.ParseException;
+import java.util.List;
+
 /**
  * <p>
  * 与停机事件关联(限电停机时),数据库中无关联,程序控制 服务类
@@ -12,5 +15,5 @@ import com.gyee.runeconomy.model.auto.ProEconWindturbineStatus;
  * @since 2022-10-21
  */
 public interface IProEconWindturbineStatusService extends IService<ProEconWindturbineStatus> {
-
+    List<ProEconWindturbineStatus> getTurbineList(String wtid, String kssj, String jssj) throws ParseException;
 }

+ 17 - 1
runeconomy-xk/src/main/java/com/gyee/runeconomy/service/auto/impl/ProEconWindturbineStatusServiceImpl.java

@@ -1,11 +1,18 @@
 package com.gyee.runeconomy.service.auto.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gyee.runeconomy.mapper.auto.ProEconWindturbineStatusMapper;
+
 import com.gyee.runeconomy.model.auto.ProEconWindturbineStatus;
 import com.gyee.runeconomy.service.auto.IProEconWindturbineStatusService;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  * 与停机事件关联(限电停机时),数据库中无关联,程序控制 服务实现类
@@ -16,5 +23,14 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class ProEconWindturbineStatusServiceImpl extends ServiceImpl<ProEconWindturbineStatusMapper, ProEconWindturbineStatus> implements IProEconWindturbineStatusService {
-
+    @Override
+    public List<ProEconWindturbineStatus> getTurbineList(String wtid, String kssj, String jssj) throws ParseException {
+        QueryWrapper<ProEconWindturbineStatus> qw = new QueryWrapper<>();
+        Date kssjDate = new SimpleDateFormat("yyyy-MM-dd").parse(kssj);
+        Date jssjDate = new SimpleDateFormat("yyyy-MM-dd").parse(jssj);
+        qw.lambda().eq(ProEconWindturbineStatus::getWindturbineId,wtid);
+        qw.lambda().between(ProEconWindturbineStatus::getStopTime,kssjDate,jssjDate);
+        List<ProEconWindturbineStatus> list = baseMapper.selectList(qw);
+        return list;
+    }
 }