Forráskód Böngészése

[0924]优化功率短期、中期、超短期报表大量数据查询时处理过慢问题

taosj 1 hónapja
szülő
commit
e752b10978
15 módosított fájl, 108 hozzáadás és 10 törlés
  1. 1 3
      forecast-backend-server/src/main/java/com/ufo/project/data/service/impl/MediumTermPowerForecastReportServiceImpl.java
  2. 1 3
      forecast-backend-server/src/main/java/com/ufo/project/data/service/impl/ShortTermPowerForecastReportServiceImpl.java
  3. 1 4
      forecast-backend-server/src/main/java/com/ufo/project/data/service/impl/UltraShortTermPowerForecastReportServiceImpl.java
  4. 11 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/mediumterm/power/mapper/DataMediumTermPowerForecastReportMapper.java
  5. 9 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/mediumterm/power/service/IDataMediumTermPowerForecastReportService.java
  6. 6 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/mediumterm/power/service/impl/DataMediumTermPowerForecastReportServiceImpl.java
  7. 10 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/mapper/DataShortTermPowerForecastReportMapper.java
  8. 10 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/service/IDataShortTermPowerForecastReportService.java
  9. 6 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/service/impl/DataShortTermPowerForecastReportServiceImpl.java
  10. 9 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/supershort/mapper/DataSuperShortTermForecastReportMapper.java
  11. 9 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/supershort/service/IDataSuperShortTermForecastReportService.java
  12. 6 0
      forecast-backend-server/src/main/java/com/ufo/project/forecast/supershort/service/impl/DataSuperShortTermForecastReportServiceImpl.java
  13. 9 0
      forecast-backend-server/src/main/resources/mybatis/mediumpower/DataMediumTermPowerForecastReportMapper.xml
  14. 10 0
      forecast-backend-server/src/main/resources/mybatis/power/DataShortTermPowerForecastReportMapper.xml
  15. 10 0
      forecast-backend-server/src/main/resources/mybatis/supershort/DataSuperShortTermForecastReportMapper.xml

+ 1 - 3
forecast-backend-server/src/main/java/com/ufo/project/data/service/impl/MediumTermPowerForecastReportServiceImpl.java

@@ -72,9 +72,7 @@ public class MediumTermPowerForecastReportServiceImpl implements IMediumTermPowe
         // 2. 获取预测功率数据
         long utcStartTime = parseLong(startTime);
         long utcEndTime = parseLong(endTime);
-        DataMediumTermPowerForecastReport dataMediumTermPowerForecastReportParam = new DataMediumTermPowerForecastReport();
-        dataMediumTermPowerForecastReportParam.setForecastStartTime(utcStartTime).setForecastEndTime(utcEndTime).setEntityId(entityId);
-        List<DataMediumTermPowerForecastReport> forecastList = powerForecastReportService.selectDataMediumTermPowerForecastReportList(dataMediumTermPowerForecastReportParam);
+        List<DataMediumTermPowerForecastReport> forecastList = powerForecastReportService.selectLatestForecastList(entityId, utcStartTime, utcEndTime);
         List<ForecastPowerAverage> pureForecastList = this.pureForecastList(forecastList);
 
         // 3. 按基准类型分组

+ 1 - 3
forecast-backend-server/src/main/java/com/ufo/project/data/service/impl/ShortTermPowerForecastReportServiceImpl.java

@@ -90,9 +90,7 @@ public class ShortTermPowerForecastReportServiceImpl implements IShortTermPowerF
         // 2. 获取预测功率数据
         long utcStartTime = parseLong(startTime);
         long utcEndTime = parseLong(endTime);
-        DataShortTermPowerForecastReport dataShortTermPowerForecastReportParam = new DataShortTermPowerForecastReport();
-        dataShortTermPowerForecastReportParam.setEntityId(entityId).setForecastStartTime(utcStartTime).setForecastEndTime(utcEndTime);
-        List<DataShortTermPowerForecastReport> forecastList = powerForecastReportService.selectDataShortTermPowerForecastReportList(dataShortTermPowerForecastReportParam);
+        List<DataShortTermPowerForecastReport> forecastList = powerForecastReportService.selectLatestForecastList(entityId, utcStartTime, utcEndTime);
         List<ForecastPowerAverage> pureForecastList = this.pureForecastList(forecastList);
 
         // 3. 按基准类型分组

+ 1 - 4
forecast-backend-server/src/main/java/com/ufo/project/data/service/impl/UltraShortTermPowerForecastReportServiceImpl.java

@@ -77,10 +77,7 @@ public class UltraShortTermPowerForecastReportServiceImpl implements IUltraShort
         // 2. 获取超短期预测功率数据
         long utcStartTime = parseLong(startStr);
         long utcEndTime = parseLong(endStr);
-
-        DataSuperShortTermForecastReport dataSuperShortTermForecastReportParam = new DataSuperShortTermForecastReport();
-        dataSuperShortTermForecastReportParam.setForecastStartTime(utcStartTime).setForecastEndTime(utcEndTime).setEntityId(entityId);
-        List<DataSuperShortTermForecastReport> forecastList = superShortService.selectDataSuperShortTermForecastReportList(dataSuperShortTermForecastReportParam);
+        List<DataSuperShortTermForecastReport> forecastList = superShortService.selectLatestForecastList(entityId, utcStartTime, utcEndTime);
         List<ForecastPowerAverage> pureForecastList = this.pureForecastList(forecastList);
 
         // 4. 按基准类型分组

+ 11 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/mediumterm/power/mapper/DataMediumTermPowerForecastReportMapper.java

@@ -2,6 +2,8 @@ package com.ufo.project.forecast.mediumterm.power.mapper;
 
 import java.util.List;
 
+import org.apache.ibatis.annotations.Param;
+
 import com.ufo.project.forecast.mediumterm.power.domain.DataMediumTermPowerForecastReport;
 
 /**
@@ -59,4 +61,13 @@ public interface DataMediumTermPowerForecastReportMapper
      * @return 结果
      */
     public int deleteDataMediumTermPowerForecastReportByIds(Long[] Ids);
+    /**
+     * 查询场站指定时间范围内的最新功率预测数据
+     *
+     * @param entityId 实体ID
+     * @param startTime 起始时间(unix秒)
+     * @param endTime 结束时间(unix秒)
+     * @return 最新功率预测数据列表(按 forecast_time 升序)
+     */
+    public List<DataMediumTermPowerForecastReport> selectLatestForecastList(@Param("entityId") String entityId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
 }

+ 9 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/mediumterm/power/service/IDataMediumTermPowerForecastReportService.java

@@ -58,4 +58,13 @@ public interface IDataMediumTermPowerForecastReportService
      * @return 结果
      */
     public int deleteDataMediumTermPowerForecastReportById(Long Id);
+    /**
+     * 查询场站指定时间范围内的最新功率预测数据
+     *
+     * @param entityId 实体ID
+     * @param startTime 起始时间(unix秒)
+     * @param endTime 结束时间(unix秒)
+     * @return 最新功率预测数据列表(按 forecast_time 升序)
+     */
+    public List<DataMediumTermPowerForecastReport> selectLatestForecastList(String entityId, Long startTime, Long endTime);
 }

+ 6 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/mediumterm/power/service/impl/DataMediumTermPowerForecastReportServiceImpl.java

@@ -92,4 +92,10 @@ public class DataMediumTermPowerForecastReportServiceImpl implements IDataMedium
     {
         return dataMediumTermPowerForecastReportMapper.deleteDataMediumTermPowerForecastReportById(Id);
     }
+
+	@Override
+	public List<DataMediumTermPowerForecastReport> selectLatestForecastList(String entityId, Long startTime,
+			Long endTime) {
+		return dataMediumTermPowerForecastReportMapper.selectLatestForecastList(entityId, startTime, endTime);
+	}
 }

+ 10 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/mapper/DataShortTermPowerForecastReportMapper.java

@@ -73,4 +73,14 @@ public interface DataShortTermPowerForecastReportMapper
      */
     public List<ForecastPowerAverage> selectAveragePowerByTimeRange(@Param("entityId") String entityId,
             @Param("startTime") Long startTime, @Param("endTime") Long endTime);
+
+    /**
+     * 查询场站指定时间范围内的最新功率预测数据
+     *
+     * @param entityId 实体ID
+     * @param startTime 起始时间(unix秒)
+     * @param endTime 结束时间(unix秒)
+     * @return 最新功率预测数据列表(按 forecast_time 升序)
+     */
+    public List<DataShortTermPowerForecastReport> selectLatestForecastList(@Param("entityId") String entityId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
 }

+ 10 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/service/IDataShortTermPowerForecastReportService.java

@@ -68,4 +68,14 @@ public interface IDataShortTermPowerForecastReportService
      * @return 按 forecast_time 分组的平均功率列表(按 forecast_time 升序)
      */
     public List<ForecastPowerAverage> selectAveragePowerByTimeRange(String entityId, Long startTime, Long endTime);
+
+    /**
+     * 查询场站指定时间范围内的最新功率预测数据
+     *
+     * @param entityId 实体ID
+     * @param startTime 起始时间(unix秒)
+     * @param endTime 结束时间(unix秒)
+     * @return 最新功率预测数据列表(按 forecast_time 升序)
+     */
+    public List<DataShortTermPowerForecastReport> selectLatestForecastList(String entityId, Long startTime, Long endTime);
 }

+ 6 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/shortterm/power/service/impl/DataShortTermPowerForecastReportServiceImpl.java

@@ -106,4 +106,10 @@ public class DataShortTermPowerForecastReportServiceImpl implements IDataShortTe
     {
         return dataShortTermPowerForecastReportMapper.selectAveragePowerByTimeRange(entityId, startTime, endTime);
     }
+
+    @Override
+    public List<DataShortTermPowerForecastReport> selectLatestForecastList(String entityId, Long startTime, Long endTime)
+    {
+        return dataShortTermPowerForecastReportMapper.selectLatestForecastList(entityId, startTime, endTime);
+    }
 }

+ 9 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/supershort/mapper/DataSuperShortTermForecastReportMapper.java

@@ -72,4 +72,13 @@ public interface DataSuperShortTermForecastReportMapper
      */
     public List<ForecastPowerAverage> selectAveragePowerByTimeRange(@Param("entityId") String entityId,
             @Param("startTime") Long startTime, @Param("endTime") Long endTime);
+    /**
+     * 查询场站指定时间范围内的最新功率预测数据
+     *
+     * @param entityId 实体ID
+     * @param startTime 起始时间(unix秒)
+     * @param endTime 结束时间(unix秒)
+     * @return 最新功率预测数据列表(按 forecast_time 升序)
+     */
+    public List<DataSuperShortTermForecastReport> selectLatestForecastList(@Param("entityId") String entityId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
 }

+ 9 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/supershort/service/IDataSuperShortTermForecastReportService.java

@@ -69,4 +69,13 @@ public interface IDataSuperShortTermForecastReportService
      * @return 按 forecast_time 分组的平均功率列表(按 forecast_time 升序)
      */
     public List<ForecastPowerAverage> selectAveragePowerByTimeRange(String entityId, Long startTime, Long endTime);
+    /**
+     * 查询场站指定时间范围内的最新功率预测数据
+     *
+     * @param entityId 实体ID
+     * @param startTime 起始时间(unix秒)
+     * @param endTime 结束时间(unix秒)
+     * @return 最新功率预测数据列表(按 forecast_time 升序)
+     */
+    public List<DataSuperShortTermForecastReport> selectLatestForecastList(String entityId, Long startTime, Long endTime);
 }

+ 6 - 0
forecast-backend-server/src/main/java/com/ufo/project/forecast/supershort/service/impl/DataSuperShortTermForecastReportServiceImpl.java

@@ -106,4 +106,10 @@ public class DataSuperShortTermForecastReportServiceImpl implements IDataSuperSh
     {
         return dataSuperShortTermForecastReportMapper.selectAveragePowerByTimeRange(entityId, startTime, endTime);
     }
+
+	@Override
+	public List<DataSuperShortTermForecastReport> selectLatestForecastList(String entityId, Long startTime,
+			Long endTime) {
+		return dataSuperShortTermForecastReportMapper.selectLatestForecastList(entityId, startTime, endTime);
+	}
 }

+ 9 - 0
forecast-backend-server/src/main/resources/mybatis/mediumpower/DataMediumTermPowerForecastReportMapper.xml

@@ -107,4 +107,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </foreach>
     </delete>
 
+    <select id="selectLatestForecastList" resultMap="DataMediumTermPowerForecastReportResult">
+        SELECT DISTINCT ON (forecast_time)
+               _id, entity_id, entity_type, entity_name, start_time, forecast_time, power
+        from data_medium_term_power_forecast_report
+        where entity_id = #{entityId}
+          and forecast_time &gt;= #{startTime}
+          and forecast_time &lt;= #{endTime}
+        ORDER BY forecast_time asc, start_time desc, _id DESC
+    </select>
 </mapper>

+ 10 - 0
forecast-backend-server/src/main/resources/mybatis/power/DataShortTermPowerForecastReportMapper.xml

@@ -123,4 +123,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         group by forecast_time
         order by forecast_time asc
     </select>
+
+    <select id="selectLatestForecastList" resultMap="DataShortTermPowerForecastReportResult">
+        SELECT DISTINCT ON (forecast_time)
+               _id, entity_id, entity_type, entity_name, start_time, forecast_time, power
+        from data_short_term_power_forecast_report
+        where entity_id = #{entityId}
+          and forecast_time &gt;= #{startTime}
+          and forecast_time &lt;= #{endTime}
+        ORDER BY forecast_time asc, start_time desc, _id DESC
+    </select>
 </mapper>

+ 10 - 0
forecast-backend-server/src/main/resources/mybatis/supershort/DataSuperShortTermForecastReportMapper.xml

@@ -114,4 +114,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         group by forecast_time
         order by forecast_time asc
     </select>
+
+    <select id="selectLatestForecastList" resultMap="DataSuperShortTermForecastReportResult">
+        SELECT DISTINCT ON (forecast_time)
+               _id, entity_id, entity_type, entity_name, start_time, forecast_time, power
+        from data_super_short_term_forecast_report
+        where entity_id = #{entityId}
+          and forecast_time &gt;= #{startTime}
+          and forecast_time &lt;= #{endTime}
+        ORDER BY forecast_time asc, start_time desc, _id DESC
+    </select>
 </mapper>