|
@@ -3,6 +3,7 @@ package com.ufo.project.data.service.impl;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.time.YearMonth;
|
|
import java.time.YearMonth;
|
|
|
import java.time.ZoneId;
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
@@ -16,7 +17,6 @@ import java.util.stream.Collectors;
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.annotation.PostConstruct;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
-import com.ufo.base.common.constant.CacheConstants;
|
|
|
|
|
import com.ufo.base.common.utils.StringUtils;
|
|
import com.ufo.base.common.utils.StringUtils;
|
|
|
import com.ufo.module.system.domain.SysDictData;
|
|
import com.ufo.module.system.domain.SysDictData;
|
|
|
import com.ufo.module.system.service.ISysDictTypeService;
|
|
import com.ufo.module.system.service.ISysDictTypeService;
|
|
@@ -37,19 +37,13 @@ import com.ufo.project.model.service.IDataElectricityLocalService;
|
|
|
@Service
|
|
@Service
|
|
|
public class ShortTermPowerForecastReportServiceImpl implements IShortTermPowerForecastReportService
|
|
public class ShortTermPowerForecastReportServiceImpl implements IShortTermPowerForecastReportService
|
|
|
{
|
|
{
|
|
|
- private static final int SCALE = 4;
|
|
|
|
|
-
|
|
|
|
|
/** Dict类型:短期预测误差阈值 */
|
|
/** Dict类型:短期预测误差阈值 */
|
|
|
private static final String DICT_TYPE_SHORT_TERM_ERROR_THRESHOLD = "short_term_error_threshold";
|
|
private static final String DICT_TYPE_SHORT_TERM_ERROR_THRESHOLD = "short_term_error_threshold";
|
|
|
|
|
|
|
|
private static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
private static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
private static final DateTimeFormatter MONTH_FMT = DateTimeFormatter.ofPattern("yyyy-MM");
|
|
private static final DateTimeFormatter MONTH_FMT = DateTimeFormatter.ofPattern("yyyy-MM");
|
|
|
- private static final DateTimeFormatter YEAR_FMT = DateTimeFormatter.ofPattern("yyyy");
|
|
|
|
|
-
|
|
|
|
|
private static final ZoneId ZONE_SHANGHAI = ZoneId.of("Asia/Shanghai");
|
|
private static final ZoneId ZONE_SHANGHAI = ZoneId.of("Asia/Shanghai");
|
|
|
|
|
|
|
|
- private String errorThreshold;
|
|
|
|
|
-
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private IDataElectricityLocalService electricityLocalService;
|
|
private IDataElectricityLocalService electricityLocalService;
|
|
|
|
|
|
|
@@ -528,7 +522,8 @@ public class ShortTermPowerForecastReportServiceImpl implements IShortTermPowerF
|
|
|
return records.stream()
|
|
return records.stream()
|
|
|
.filter(r -> r.getTm() != null)
|
|
.filter(r -> r.getTm() != null)
|
|
|
.collect(Collectors.groupingBy(
|
|
.collect(Collectors.groupingBy(
|
|
|
- r -> LocalDate.ofInstant(r.getTm().toInstant(), ZONE_SHANGHAI)
|
|
|
|
|
|
|
+ r -> LocalDateTime.ofInstant(r.getTm().toInstant(), ZONE_SHANGHAI)
|
|
|
|
|
+ .toLocalDate()
|
|
|
.format(DATE_FMT),
|
|
.format(DATE_FMT),
|
|
|
LinkedHashMap::new,
|
|
LinkedHashMap::new,
|
|
|
Collectors.toList()));
|
|
Collectors.toList()));
|
|
@@ -544,7 +539,8 @@ public class ShortTermPowerForecastReportServiceImpl implements IShortTermPowerF
|
|
|
.collect(Collectors.groupingBy(
|
|
.collect(Collectors.groupingBy(
|
|
|
r ->
|
|
r ->
|
|
|
{
|
|
{
|
|
|
- LocalDate ld = LocalDate.ofInstant(r.getTm().toInstant(), ZONE_SHANGHAI);
|
|
|
|
|
|
|
+ LocalDate ld = LocalDateTime.ofInstant(r.getTm().toInstant(), ZONE_SHANGHAI)
|
|
|
|
|
+ .toLocalDate();
|
|
|
return YearMonth.of(ld.getYear(), ld.getMonth()).format(MONTH_FMT);
|
|
return YearMonth.of(ld.getYear(), ld.getMonth()).format(MONTH_FMT);
|
|
|
},
|
|
},
|
|
|
LinkedHashMap::new,
|
|
LinkedHashMap::new,
|
|
@@ -559,7 +555,9 @@ public class ShortTermPowerForecastReportServiceImpl implements IShortTermPowerF
|
|
|
return records.stream()
|
|
return records.stream()
|
|
|
.filter(r -> r.getTm() != null)
|
|
.filter(r -> r.getTm() != null)
|
|
|
.collect(Collectors.groupingBy(
|
|
.collect(Collectors.groupingBy(
|
|
|
- r -> String.valueOf(LocalDate.ofInstant(r.getTm().toInstant(), ZONE_SHANGHAI).getYear()),
|
|
|
|
|
|
|
+ r -> String.valueOf(LocalDateTime.ofInstant(r.getTm().toInstant(), ZONE_SHANGHAI)
|
|
|
|
|
+ .toLocalDate()
|
|
|
|
|
+ .getYear()),
|
|
|
LinkedHashMap::new,
|
|
LinkedHashMap::new,
|
|
|
Collectors.toList()));
|
|
Collectors.toList()));
|
|
|
}
|
|
}
|
|
@@ -650,12 +648,11 @@ public class ShortTermPowerForecastReportServiceImpl implements IShortTermPowerF
|
|
|
List<SysDictData> dictList = dictTypeService.selectDictDataByType(DICT_TYPE_SHORT_TERM_ERROR_THRESHOLD);
|
|
List<SysDictData> dictList = dictTypeService.selectDictDataByType(DICT_TYPE_SHORT_TERM_ERROR_THRESHOLD);
|
|
|
if (dictList != null && !dictList.isEmpty())
|
|
if (dictList != null && !dictList.isEmpty())
|
|
|
{
|
|
{
|
|
|
- errorThreshold = dictList.get(0).getDictValue();
|
|
|
|
|
|
|
+ dictList.get(0).getDictValue();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
|
{
|
|
{
|
|
|
- errorThreshold = "0.2"; // 默认阈值 20%
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|