|
@@ -13,6 +13,7 @@ import com.cpp.common.utils.SecurityUtils;
|
|
import com.cpp.system.service.ISysConfigService;
|
|
import com.cpp.system.service.ISysConfigService;
|
|
import com.cpp.system.service.ISysUserService;
|
|
import com.cpp.system.service.ISysUserService;
|
|
import com.cpp.web.domain.accuracy.AccuracyPassRate;
|
|
import com.cpp.web.domain.accuracy.AccuracyPassRate;
|
|
|
|
+import com.cpp.web.domain.cloud.ForecastPowerShortTermCloud;
|
|
import com.cpp.web.domain.enums.DataSourcesEnum;
|
|
import com.cpp.web.domain.enums.DataSourcesEnum;
|
|
import com.cpp.web.domain.enums.ForecastTypeEnum;
|
|
import com.cpp.web.domain.enums.ForecastTypeEnum;
|
|
import com.cpp.web.domain.enums.RegulationStatusEnum;
|
|
import com.cpp.web.domain.enums.RegulationStatusEnum;
|
|
@@ -27,6 +28,7 @@ import com.cpp.web.domain.station.ForecastPowerShortTermStation;
|
|
import com.cpp.web.domain.station.InverterStatusData;
|
|
import com.cpp.web.domain.station.InverterStatusData;
|
|
import com.cpp.web.dto.TempShortRegulationDto;
|
|
import com.cpp.web.dto.TempShortRegulationDto;
|
|
import com.cpp.web.service.accuracy.AccuracyPassRateService;
|
|
import com.cpp.web.service.accuracy.AccuracyPassRateService;
|
|
|
|
+import com.cpp.web.service.cloud.ForecastPowerShortTermCloudService;
|
|
import com.cpp.web.service.regulation.TempShortRegulationDetailService;
|
|
import com.cpp.web.service.regulation.TempShortRegulationDetailService;
|
|
import com.cpp.web.service.regulation.TempShortRegulationService;
|
|
import com.cpp.web.service.regulation.TempShortRegulationService;
|
|
import com.cpp.web.service.regulation.TempShortUsualDetailService;
|
|
import com.cpp.web.service.regulation.TempShortUsualDetailService;
|
|
@@ -74,6 +76,8 @@ public class DqRegulationController {
|
|
ISysUserService iSysUserService;
|
|
ISysUserService iSysUserService;
|
|
@Autowired
|
|
@Autowired
|
|
ForecastPowerShortTermRegulationService forecastPowerShortTermRegulationService;
|
|
ForecastPowerShortTermRegulationService forecastPowerShortTermRegulationService;
|
|
|
|
+ @Autowired
|
|
|
|
+ ForecastPowerShortTermCloudService forecastPowerShortTermCloudService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -277,45 +281,76 @@ public class DqRegulationController {
|
|
*/
|
|
*/
|
|
|
|
|
|
@GetMapping("/trialData")
|
|
@GetMapping("/trialData")
|
|
- public R trialData(String stationCode, Long time,String usualName) {
|
|
|
|
- // 先获取常规策略
|
|
|
|
- QueryWrapper<TempShortUsual> tempShortUsualQueryWrapper = new QueryWrapper<>();
|
|
|
|
- tempShortUsualQueryWrapper.eq("usual_name", usualName);
|
|
|
|
- TempShortUsual tempShortUsual = tempShortUsualService.getOne(tempShortUsualQueryWrapper);
|
|
|
|
- QueryWrapper<TempShortUsualDetail> tempShortUsualDetailQueryWrapper = new QueryWrapper<>();
|
|
|
|
- tempShortUsualDetailQueryWrapper.eq("usual_id", tempShortUsual.getId());
|
|
|
|
- List<TempShortUsualDetail> tempShortUsualDetailList = tempShortUsualDetailService.list(tempShortUsualDetailQueryWrapper);
|
|
|
|
- Map<String,TempShortUsualDetail> usualDetailMap = new HashMap<>();
|
|
|
|
- for (TempShortUsualDetail tempShortUsualDetail:tempShortUsualDetailList){
|
|
|
|
- usualDetailMap.put(tempShortUsualDetail.getTimePoint(),tempShortUsualDetail);
|
|
|
|
- }
|
|
|
|
|
|
+ public R trialData(String stationCode, Long time,String usualName,String selectRadio) {
|
|
int howLongAgo = DateTimeUtil.getDaysBetweenTwoDate(System.currentTimeMillis(),time);
|
|
int howLongAgo = DateTimeUtil.getDaysBetweenTwoDate(System.currentTimeMillis(),time);
|
|
// 获取要调整的短期那天的最后时间
|
|
// 获取要调整的短期那天的最后时间
|
|
long endTime = DateTimeUtil.getDayLastTime(time).getTime();
|
|
long endTime = DateTimeUtil.getDayLastTime(time).getTime();
|
|
|
|
+ List<TempShortRegulationDto> trialList = new ArrayList<>();
|
|
|
|
+ Map<Long, BigDecimal> ysShortMap = new HashMap<>();
|
|
|
|
+
|
|
// 获取短期上报数据(原始数据)
|
|
// 获取短期上报数据(原始数据)
|
|
List<ForecastPowerShortTermStation> forecastPowerShortTermStationList = forecastPowerShortTermStationService.findByForecastTimeBetweenAndForecastHowLongAgoAndStationCode(new Date(time), new Date(endTime), howLongAgo, stationCode);
|
|
List<ForecastPowerShortTermStation> forecastPowerShortTermStationList = forecastPowerShortTermStationService.findByForecastTimeBetweenAndForecastHowLongAgoAndStationCode(new Date(time), new Date(endTime), howLongAgo, stationCode);
|
|
- Map<Long, BigDecimal> ysShortMap = new HashMap<>();
|
|
|
|
for (ForecastPowerShortTermStation forecastPowerShortTermStation:forecastPowerShortTermStationList) {
|
|
for (ForecastPowerShortTermStation forecastPowerShortTermStation:forecastPowerShortTermStationList) {
|
|
ysShortMap.putIfAbsent(forecastPowerShortTermStation.getTime().getTime(), forecastPowerShortTermStation.getFpValue());
|
|
ysShortMap.putIfAbsent(forecastPowerShortTermStation.getTime().getTime(), forecastPowerShortTermStation.getFpValue());
|
|
}
|
|
}
|
|
- Long momentTime = 15 * 60 * 1000L;
|
|
|
|
- List<TempShortRegulationDto> trialList = new ArrayList<>();
|
|
|
|
- for (Long tempTime = time; tempTime <= endTime; tempTime = tempTime + momentTime) {
|
|
|
|
- String timeHHmm = DateUtils.parseDateToStr("HH:mm",new Date(tempTime));
|
|
|
|
- TempShortRegulationDto tempShortRegulationDto = new TempShortRegulationDto();
|
|
|
|
- tempShortRegulationDto.setTime(timeHHmm);
|
|
|
|
- tempShortRegulationDto.setForecastDate(new Date(time));
|
|
|
|
- tempShortRegulationDto.setTkDate(new Date());
|
|
|
|
- tempShortRegulationDto.setYsValue(ysShortMap.get(tempTime));
|
|
|
|
- TempShortUsualDetail tempShortUsualDetail = usualDetailMap.get(timeHHmm);
|
|
|
|
- tempShortRegulationDto.setSz(tempShortUsualDetail.getSz());
|
|
|
|
- tempShortRegulationDto.setXs(tempShortUsualDetail.getXs());
|
|
|
|
- // 计算调控值,调控值=原始值*系数+数值
|
|
|
|
- BigDecimal tkValue = ysShortMap.get(tempTime).multiply(tempShortUsualDetail.getXs()).add(tempShortUsualDetail.getSz()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- tempShortRegulationDto.setTkValue(tkValue);
|
|
|
|
- tempShortRegulationDto.setStationCode(stationCode);
|
|
|
|
- trialList.add(tempShortRegulationDto);
|
|
|
|
|
|
+
|
|
|
|
+ // 判断前端选择的策略是常用还是中心模型
|
|
|
|
+ if ("3".equals(selectRadio)){
|
|
|
|
+ Map<Long, BigDecimal> forecastPowerShortCloudMap = new HashMap();
|
|
|
|
+ // 获取中心模型数据
|
|
|
|
+ List<ForecastPowerShortTermCloud> forecastPowerShortTermCloudList = forecastPowerShortTermCloudService.findByForecastTimeBetweenAndHowLongAgoAndStationCode(new Date(time), new Date(endTime), howLongAgo, stationCode);
|
|
|
|
+ if (forecastPowerShortTermCloudList.size()>0){
|
|
|
|
+ for (ForecastPowerShortTermCloud forecastPowerShortTermCloud:forecastPowerShortTermCloudList) {
|
|
|
|
+ forecastPowerShortCloudMap.putIfAbsent(forecastPowerShortTermCloud.getTime().getTime(), forecastPowerShortTermCloud.getFpValue());
|
|
|
|
+ }
|
|
|
|
+ Long momentTime = 15 * 60 * 1000L;
|
|
|
|
+ for (Long tempTime = time; tempTime <= endTime; tempTime = tempTime + momentTime) {
|
|
|
|
+ String timeHHmm = DateUtils.parseDateToStr("HH:mm",new Date(tempTime));
|
|
|
|
+ TempShortRegulationDto tempShortRegulationDto = new TempShortRegulationDto();
|
|
|
|
+ tempShortRegulationDto.setTime(timeHHmm);
|
|
|
|
+ tempShortRegulationDto.setForecastDate(new Date(time));
|
|
|
|
+ tempShortRegulationDto.setTkDate(new Date());
|
|
|
|
+ tempShortRegulationDto.setYsValue(ysShortMap.get(tempTime));
|
|
|
|
+ tempShortRegulationDto.setSz(new BigDecimal("0"));
|
|
|
|
+ tempShortRegulationDto.setXs(new BigDecimal("1"));
|
|
|
|
+ tempShortRegulationDto.setTkValue(forecastPowerShortCloudMap.get(tempTime));
|
|
|
|
+ tempShortRegulationDto.setStationCode(stationCode);
|
|
|
|
+ trialList.add(tempShortRegulationDto);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ else{
|
|
|
|
+ // 先获取常规策略
|
|
|
|
+ QueryWrapper<TempShortUsual> tempShortUsualQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ tempShortUsualQueryWrapper.eq("usual_name", usualName);
|
|
|
|
+ TempShortUsual tempShortUsual = tempShortUsualService.getOne(tempShortUsualQueryWrapper);
|
|
|
|
+ QueryWrapper<TempShortUsualDetail> tempShortUsualDetailQueryWrapper = new QueryWrapper<>();
|
|
|
|
+ tempShortUsualDetailQueryWrapper.eq("usual_id", tempShortUsual.getId());
|
|
|
|
+ List<TempShortUsualDetail> tempShortUsualDetailList = tempShortUsualDetailService.list(tempShortUsualDetailQueryWrapper);
|
|
|
|
+ Map<String,TempShortUsualDetail> usualDetailMap = new HashMap<>();
|
|
|
|
+ for (TempShortUsualDetail tempShortUsualDetail:tempShortUsualDetailList){
|
|
|
|
+ usualDetailMap.put(tempShortUsualDetail.getTimePoint(),tempShortUsualDetail);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Long momentTime = 15 * 60 * 1000L;
|
|
|
|
+ for (Long tempTime = time; tempTime <= endTime; tempTime = tempTime + momentTime) {
|
|
|
|
+ String timeHHmm = DateUtils.parseDateToStr("HH:mm",new Date(tempTime));
|
|
|
|
+ TempShortRegulationDto tempShortRegulationDto = new TempShortRegulationDto();
|
|
|
|
+ tempShortRegulationDto.setTime(timeHHmm);
|
|
|
|
+ tempShortRegulationDto.setForecastDate(new Date(time));
|
|
|
|
+ tempShortRegulationDto.setTkDate(new Date());
|
|
|
|
+ tempShortRegulationDto.setYsValue(ysShortMap.get(tempTime));
|
|
|
|
+ TempShortUsualDetail tempShortUsualDetail = usualDetailMap.get(timeHHmm);
|
|
|
|
+ tempShortRegulationDto.setSz(tempShortUsualDetail.getSz());
|
|
|
|
+ tempShortRegulationDto.setXs(tempShortUsualDetail.getXs());
|
|
|
|
+ // 计算调控值,调控值=原始值*系数+数值
|
|
|
|
+ BigDecimal tkValue = ysShortMap.get(tempTime).multiply(tempShortUsualDetail.getXs()).add(tempShortUsualDetail.getSz()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ tempShortRegulationDto.setTkValue(tkValue);
|
|
|
|
+ tempShortRegulationDto.setStationCode(stationCode);
|
|
|
|
+ trialList.add(tempShortRegulationDto);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
return R.ok(trialList);
|
|
return R.ok(trialList);
|
|
}
|
|
}
|
|
/**
|
|
/**
|