Browse Source

云端发电量计算:
修改无准确率数据时,采用默认模型数据进行计算

fanxiaoyu 3 weeks ago
parent
commit
41069649bc

+ 8 - 8
cpp-admin/src/main/java/com/cpp/web/service/powerGeneation/impl/DayPowerGenerationServiceImpl.java

@@ -80,6 +80,13 @@ public class DayPowerGenerationServiceImpl extends ServiceImpl<DayPowerGeneratio
         Date accuracyEndTime = DateTimeUtil.getDayStartTime(System.currentTimeMillis() - oneDay);
 
         String forecastModel = "";
+        // 查询默认模型数据
+        String defaultModel = null;
+        for (SysDictData sysDictData : DictUtils.getDictCache("forecast_model")) {
+            if (null != sysDictData.getRemark() && sysDictData.getRemark().equals("default")) {
+                defaultModel = sysDictData.getDictValue();
+            }
+        }
 
         // 查询近一个月内平均准确率高的预测模型
         List<AccuracyPassRate> accuracyPassRateList = accuracyPassRateService.findByTimeBetweenAndStationCode(accuracyStartTime, accuracyEndTime, stationCode);
@@ -98,13 +105,6 @@ public class DayPowerGenerationServiceImpl extends ServiceImpl<DayPowerGeneratio
             // 找出平均值最大的那一组
             Optional<Map.Entry<String, Double>> maxAverageEntry = averageByCategory.entrySet().stream().max(Map.Entry.comparingByValue());
 
-            // 查询默认模型数据
-            String defaultModel = null;
-            for (SysDictData sysDictData : DictUtils.getDictCache("forecast_model")) {
-                if (null != sysDictData.getRemark() && sysDictData.getRemark().equals("default")) {
-                    defaultModel = sysDictData.getDictValue();
-                }
-            }
             // 获取模型
             forecastModel = maxAverageEntry.isPresent() ? maxAverageEntry.get().getKey() : defaultModel;
             log.info("【"+stationCode + "】预测准确率最优模型为:" + forecastModel);
@@ -127,7 +127,7 @@ public class DayPowerGenerationServiceImpl extends ServiceImpl<DayPowerGeneratio
             return result;
         }
         // 云端预测
-        List<ForecastPowerShortTermCloud> forecastPowerShortTermCloudList = forecastPowerShortTermCloudService.findByForecastTimeBetweenAndStationCode(startTime, endTime, stationCode, forecastModel);
+        List<ForecastPowerShortTermCloud> forecastPowerShortTermCloudList = forecastPowerShortTermCloudService.findByForecastTimeBetweenAndStationCode(startTime, endTime, stationCode, "".equals(forecastModel) ? defaultModel : forecastModel);
         if (forecastPowerShortTermCloudList.size() > 0) {
             List<DayPowerGeneration> ydList = calculator(forecastPowerShortTermCloudList, "yd", startTime, stationCode);
             this.saveBatch(ydList);