Explorar o código

历史预测查询增加列表短期中心曲线、上报调度曲线

xusl hai 7 meses
pai
achega
b50c0d07a3

+ 64 - 0
cpp-admin/src/main/java/com/cpp/web/domain/station/ForecastPowerShortTermSend.java

@@ -0,0 +1,64 @@
+package com.cpp.web.domain.station;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.cpp.web.domain.BaseCppEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.Digits;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 调控下发站端预测短期
+ *
+ * @author tl
+ * @date 2024-09-23 15:28:33
+ */
+@Data
+@TableName("cpp_forecast_power_short_term_send")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "cpp_forecast_power_short_term_send")
+public class ForecastPowerShortTermSend extends BaseCppEntity {
+
+
+    /**
+     * 预测时间
+     */
+    @ApiModelProperty(value = "预测值时间")
+    private Date time;
+
+
+    /**
+     * 预测功率
+     */
+    @ApiModelProperty(value = "预测功率")
+    @Digits(integer = 10, fraction = 2)
+    private BigDecimal fpValue = new BigDecimal(-99);
+
+    /**
+     * 开机容量
+     */
+    @ApiModelProperty(value = "开机容量")
+    @Digits(integer = 10, fraction = 2)
+    private BigDecimal openCapacity = new BigDecimal(-99);
+
+
+    /**
+     * 装机容量
+     */
+    @ApiModelProperty(value = "装机容量")
+    @Digits(integer = 10, fraction = 2)
+    private BigDecimal capacity = new BigDecimal(-99);
+
+
+    /**
+     * 提前多久预测
+     */
+    @ApiModelProperty(value = "提前多久预测")
+    private Integer forecastHowLongAgo;
+
+
+}

+ 15 - 0
cpp-admin/src/main/java/com/cpp/web/mapper/station/ForecastPowerShortTermSendMapper.java

@@ -0,0 +1,15 @@
+package com.cpp.web.mapper.station;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cpp.web.domain.station.ForecastPowerShortTermSend;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * cpp_forecast_power_short_term_his
+ *
+ * @author tl
+ * @date 2024-09-23 15:28:33
+ */
+@Mapper
+public interface ForecastPowerShortTermSendMapper extends BaseMapper<ForecastPowerShortTermSend> {
+
+}

+ 38 - 0
cpp-admin/src/main/java/com/cpp/web/service/station/ForecastPowerShortTermSendService.java

@@ -0,0 +1,38 @@
+package com.cpp.web.service.station;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cpp.web.domain.station.ForecastPowerShortTermRegulation;
+import com.cpp.web.domain.station.ForecastPowerShortTermSend;
+
+import java.util.List;
+
+/**
+ * cpp_forecast_power_short_term_his
+ *
+ * @author tl
+ * @date 2024-09-23 15:28:33
+ */
+public interface ForecastPowerShortTermSendService extends IService<ForecastPowerShortTermSend> {
+
+    /**
+     * 根据时间 提前多久预测 场站编号查询数据
+     *
+     * @param time        时间
+     * @param howLongAgo  提前多久预测
+     * @param stationCode 场站数据
+     * @return
+     */
+    ForecastPowerShortTermSend findByForecastTimeAndForecastHowLongAgoAndStationCode(Long time, int howLongAgo, String stationCode);
+
+    /**
+     * 根据时间 提前多久预测 场站编号查询数据
+     *
+     * @param startTime   开始时间
+     * @param endTime     结束时间
+     * @param howLongAgo  提前多久预测
+     * @param stationCode 场站编号
+     * @return
+     */
+    List<ForecastPowerShortTermSend> findByForecastTimeBetweenAndForecastHowLongAgoAndStationCode(Long startTime, Long endTime, Integer howLongAgo, String stationCode);
+
+}

+ 52 - 0
cpp-admin/src/main/java/com/cpp/web/service/station/impl/ForecastPowerShortTermSendServiceImpl.java

@@ -0,0 +1,52 @@
+package com.cpp.web.service.station.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cpp.web.domain.station.ForecastPowerShortTermRegulation;
+import com.cpp.web.domain.station.ForecastPowerShortTermSend;
+import com.cpp.web.mapper.station.ForecastPowerShortTermRegulationMapper;
+import com.cpp.web.mapper.station.ForecastPowerShortTermSendMapper;
+import com.cpp.web.service.station.ForecastPowerShortTermRegulationService;
+import com.cpp.web.service.station.ForecastPowerShortTermSendService;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * cpp_forecast_power_short_term_his
+ *
+ * @author tl
+ * @date 2024-09-23 15:28:33
+ */
+@Service
+public class ForecastPowerShortTermSendServiceImpl extends ServiceImpl<ForecastPowerShortTermSendMapper, ForecastPowerShortTermSend> implements ForecastPowerShortTermSendService {
+
+    @Override
+    public List<ForecastPowerShortTermSend> findByForecastTimeBetweenAndForecastHowLongAgoAndStationCode(Long startTime, Long endTime, Integer howLongAgo, String stationCode) {
+        QueryWrapper<ForecastPowerShortTermSend> wrapper = new QueryWrapper<>();
+        if (stationCode != null && !stationCode.equals("")) {
+            wrapper.eq("station_code", stationCode);
+        }
+        if (startTime != null && endTime != null) {
+            wrapper.between("forecast_time", new Date(startTime), new Date(endTime));
+        }
+        wrapper.eq("forecast_how_long_ago", howLongAgo);
+        return baseMapper.selectList(wrapper);
+    }
+
+    @Override
+    public ForecastPowerShortTermSend findByForecastTimeAndForecastHowLongAgoAndStationCode(Long time, int howLongAgo, String stationCode) {
+        QueryWrapper<ForecastPowerShortTermSend> wrapper = new QueryWrapper<>();
+
+        if (stationCode != null && !stationCode.equals("")) {
+            wrapper.eq("station_code", stationCode);
+        }
+        if (time != null) {
+            wrapper.eq("forecast_time", new Date(time));
+        }
+        wrapper.eq("forecast_how_long_ago", howLongAgo);
+        return baseMapper.selectOne(wrapper);
+    }
+
+}

+ 64 - 7
cpp-admin/src/main/java/com/cpp/web/service/station/impl/PowerStationStatusDataServiceImpl.java

@@ -4,9 +4,8 @@ import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cpp.system.service.ISysConfigService;
-import com.cpp.web.domain.station.ElectricField;
-import com.cpp.web.domain.station.ForecastPowerShortTermStation;
-import com.cpp.web.domain.station.PowerStationStatusData;
+import com.cpp.web.domain.cloud.ForecastPowerShortTermCloud;
+import com.cpp.web.domain.station.*;
 import com.cpp.web.mapper.station.PowerStationStatusDataMapper;
 import com.cpp.web.service.cloud.ForecastPowerShortTermCloudService;
 import com.cpp.web.service.cloud.ForecastPowerUltraShortTermCloudService;
@@ -36,6 +35,8 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
     private final ElectricFieldService electricFieldService;
 //    private final ForecastManufactorService forecastManufactorService;
     private final ForecastPowerShortTermStationService forecastPowerShortTermStationService;
+    private final ForecastPowerShortTermRegulationService forecastPowerShortTermRegulationService;
+    private final ForecastPowerShortTermSendService forecastPowerShortTermSendService;
 
     private final WindTowerStatusDataService windTowerStatusDataService;
 
@@ -120,6 +121,14 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         dqysHeadMap.put("field", "dqys");
         dqysHeadMap.put("label", "短期原始曲线");
         headList.add(dqysHeadMap);
+        Map<String,String> dqzxHeadMap = new HashMap<>();
+        dqzxHeadMap.put("field", "dqzx");
+        dqzxHeadMap.put("label", "短期中心曲线");
+        headList.add(dqzxHeadMap);
+        Map<String,String> dqsbHeadMap = new HashMap<>();
+        dqsbHeadMap.put("field", "dqsb");
+        dqsbHeadMap.put("label", "短期上报曲线");
+        headList.add(dqsbHeadMap);
 
         Map<String,List> tempCdqMap = new HashMap<>();
         Map<String,List> tableCdqMap = new HashMap<>();
@@ -131,6 +140,8 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         List<String> kyList = new ArrayList();
         List<String> llList = new ArrayList();
         List<String> dqysList = new ArrayList();
+        List<String> dqzxList = new ArrayList();
+        List<String> dqsbList = new ArrayList();
 
         // 获取实际功率
         Map<Long, PowerStationStatusData> sjMap = new HashMap<>();
@@ -149,7 +160,26 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
         for (ForecastPowerShortTermStation forecastPowerShortTermStation : forecastPowerShortTermStationList) {
             dqysMap.put(forecastPowerShortTermStation.getTime().getTime(), forecastPowerShortTermStation);
         }
-
+        // 获取短期上报曲线
+        Map<Long, ForecastPowerShortTermRegulation> dqsbMap = new HashMap<>();
+        QueryWrapper dqsbWrapper = new QueryWrapper<>();
+        dqsbWrapper.eq("forecast_how_long_ago",Integer.parseInt(dqHowLongAgo));
+        dqsbWrapper.eq("station_code",stationCode);
+        dqsbWrapper.between("time", new Date(startTime), new Date(endTime));
+        List<ForecastPowerShortTermRegulation> forecastPowerShortTermRegulationList =forecastPowerShortTermRegulationService.list(dqysWrapper);
+        for (ForecastPowerShortTermRegulation forecastPowerShortTermRegulation : forecastPowerShortTermRegulationList) {
+            dqsbMap.put(forecastPowerShortTermRegulation.getTime().getTime(), forecastPowerShortTermRegulation);
+        }
+        // 获取短期调控下发的中心曲线
+        Map<Long, ForecastPowerShortTermSend> dqzxMap = new HashMap<>();
+        QueryWrapper dqzxWrapper = new QueryWrapper<>();
+        dqzxWrapper.eq("forecast_how_long_ago",Integer.parseInt(dqHowLongAgo));
+        dqzxWrapper.eq("station_code",stationCode);
+        dqzxWrapper.between("time", new Date(startTime), new Date(endTime));
+        List<ForecastPowerShortTermSend> forecastPowerShortTermSendList =forecastPowerShortTermSendService.list(dqysWrapper);
+        for (ForecastPowerShortTermSend forecastPowerShortTermSend : forecastPowerShortTermSendList) {
+            dqzxMap.put(forecastPowerShortTermSend.getTime().getTime(), forecastPowerShortTermSend);
+        }
 
 
         List<Map<String,Object>> tableList = new ArrayList();
@@ -196,7 +226,6 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
             }
             // 封装短期原始曲线list
             if (dqysMap.get(tempDateTime) !=null){
-                // 实际功率
                 ForecastPowerShortTermStation forecastPowerShortTermStation = dqysMap.get(tempDateTime);
                 if (forecastPowerShortTermStation.getFpValue().compareTo(new BigDecimal("-99"))==0) {
                     dqysList.add(null);
@@ -210,8 +239,36 @@ public class PowerStationStatusDataServiceImpl extends ServiceImpl<PowerStationS
             else {
                 dqysList.add(null);
             }
-
-
+            // 封装短期上报曲线list
+            if (dqsbMap.get(tempDateTime) !=null){
+                ForecastPowerShortTermRegulation forecastPowerShortTermRegulation = dqsbMap.get(tempDateTime);
+                if (forecastPowerShortTermRegulation.getFpValue().compareTo(new BigDecimal("-99"))==0) {
+                    dqsbList.add(null);
+                    map1.put("dqsb",null);
+                }
+                else{
+                    dqsbList.add(forecastPowerShortTermRegulation.getFpValue().toString());
+                    map1.put("dqsb",forecastPowerShortTermRegulation.getFpValue().toString());
+                }
+            }
+            else {
+                dqsbList.add(null);
+            }
+            // 封装短期中心曲线list
+            if (dqzxMap.get(tempDateTime) !=null){
+                ForecastPowerShortTermSend forecastPowerShortTermSend = dqzxMap.get(tempDateTime);
+                if (forecastPowerShortTermSend.getFpValue().compareTo(new BigDecimal("-99"))==0) {
+                    dqzxList.add(null);
+                    map1.put("dqzx",null);
+                }
+                else{
+                    dqzxList.add(forecastPowerShortTermSend.getFpValue().toString());
+                    map1.put("dqzx",forecastPowerShortTermSend.getFpValue().toString());
+                }
+            }
+            else {
+                dqzxList.add(null);
+            }
 
 
             // 封装时间轴list