package cn.iocoder.yudao.module.bi.service.decision; import cn.iocoder.yudao.module.bi.dal.dataobject.decision.BiForecastDataDO; import cn.iocoder.yudao.module.bi.dal.mysql.decision.BiForecastDataMapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; /** * 负荷预测 Service 实现 * * 本期使用简单移动平均占位,预留 ML 模型接口 * * @author 超级管理员 */ @Slf4j @Service public class BiForecastServiceImpl implements BiForecastService { @Resource private BiForecastDataMapper forecastDataMapper; @Override public List getForecastList(String forecastCode, LocalDateTime beginTime, LocalDateTime endTime) { return forecastDataMapper.selectListByCodeAndTimeRange(forecastCode, beginTime, endTime); } @Override public void generateForecast(String forecastCode, LocalDateTime pointTime) { // 本期占位:简单移动平均预测 // 实际项目应集成 ML 模型(ARIMA/Prophet/LSTM) log.info("[generateForecast][生成预测] forecastCode={}, pointTime={}, 当前为占位实现", forecastCode, pointTime); BiForecastDataDO forecast = BiForecastDataDO.builder() .forecastCode(forecastCode) .forecastName("负荷预测(占位)") .pointTime(pointTime) .forecastValue(BigDecimal.ZERO) .lowerBound(BigDecimal.ZERO) .upperBound(BigDecimal.ZERO) .confidenceLevel(new BigDecimal("95.00")) .modelVersion("v1.0-placeholder") .build(); forecastDataMapper.insert(forecast); } }