|
@@ -88,35 +88,49 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
*
|
|
|
* 马头山查询nwp数据生成短期预测文件
|
|
|
*/
|
|
|
- //@Scheduled(fixedRate = 1000*60)
|
|
|
- // 30 30 5 * * ? 0/1 * * * * ?
|
|
|
- // 30 10,25,30 5,17 * * ? 0/1 */2 * * * ?
|
|
|
- @Scheduled(cron = "0/1 */1 * * * ?")
|
|
|
public void createDqFile() {
|
|
|
log.info("时间 【" + DateTimeUtil.dateToStrLong(new Date()) + "】 马头山短期数据生成开始");
|
|
|
- // 用户主目录
|
|
|
- String userHome = System.getProperties().getProperty("user.home");
|
|
|
- System.out.println("用户主目录:"+userHome);
|
|
|
// 1.读取配置
|
|
|
- readDataForParams();
|
|
|
+ try {
|
|
|
+ readDataForParams();
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
//2.修改nwp数据
|
|
|
- List<Nwp> nwpDatas = moldRepair();
|
|
|
+ List<Nwp> nwpDatas = null;
|
|
|
+ try {
|
|
|
+ nwpDatas = moldRepair();
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
//3.持续强北风
|
|
|
- beginWestWindUp();
|
|
|
- //4.查询nwp数据
|
|
|
- // getNwpDatas();
|
|
|
+ try {
|
|
|
+ beginWestWindUp();
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
//5.计算短期预测
|
|
|
- List<ForecastPowerShortTerm> forecastPowerShortTerms = caculateDqs(nwpDatas);
|
|
|
- // forecastPowerShortTermRepository.saveAll(forecastPowerShortTerms);
|
|
|
+ List<ForecastPowerShortTerm> forecastPowerShortTerms = null;
|
|
|
+ try {
|
|
|
+ forecastPowerShortTerms = caculateDqs(nwpDatas);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
//6.恶劣天气
|
|
|
- yesOrNoStartIcingShutdown(forecastPowerShortTerms, nwpDatas);
|
|
|
+ try {
|
|
|
+ yesOrNoStartIcingShutdown(forecastPowerShortTerms, nwpDatas);
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
// 7.短期数据范围
|
|
|
yesOrNoDataRange();
|
|
|
+
|
|
|
log.info("时间 【" + DateTimeUtil.dateToStrLong(new Date()) + "】 马头山短期数据生成完成");
|
|
|
}
|
|
|
/**
|
|
|
* 读取excel中配置参数
|
|
|
*/
|
|
|
+
|
|
|
private void readDataForParams() {
|
|
|
// 机组信息读取
|
|
|
List<FanUnitInfo> fanUnitInfoList = readFanUnitInfo();
|
|
@@ -146,8 +160,6 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
private List<Nwp> getNwpDatas() {
|
|
|
long startTimes = getMillisecondsSubDay();
|
|
|
long endTimes = startTimes + dayNum * 24 * 60 * 60 * 1000 - 15 * 60 * 1000;
|
|
|
- // long endTimes = DateUtil.beginOfDay(DateUtil.tomorrow()).getTime();
|
|
|
- // List<Nwp> nwpData = nwpService.getNwpData(startTimes, endTimes);
|
|
|
List<Nwp> nwpData = nwpRepository.findByPreTimeBetween(startTimes, endTimes);
|
|
|
List<NwpSpeedModified> nwpSpeedModifieds = nwpSpeedModifiedRespository.findByPreTimeBetween(startTimes, endTimes);
|
|
|
// 用修改后的风速值替换原值
|
|
@@ -205,63 +217,55 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
List<String> fanKeys = removeOverhaulFansMaps.get(fengxiangId + "-" + modleFanId + "-" + speed);
|
|
|
if(null == fanKeys){
|
|
|
System.out.println(fengxiangId + "-" + modleFanId + "-" + speed);
|
|
|
- }else {
|
|
|
- for (String fanKey : fanKeys) {
|
|
|
- //切出风机ID查询风机具体配置信息
|
|
|
- FanUnitInfo fanInfo = fanInfoMap.get(fanKey.split("-")[0]);
|
|
|
- //小于满发风速
|
|
|
- if (speed < fanInfo.getFullWindSpeed()) {
|
|
|
- //根据风机曲线点表获取功率值
|
|
|
- totalPower += windTurbinePowerCurveMaps.get(fanInfo.getFanId() + "").get(Convert.toFloat(fanKey.split("-")[1]));
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (speed >= fanInfo.getCutOutSpeed()) {
|
|
|
- //风速大于切出,发电为0
|
|
|
- totalPower += 0;
|
|
|
- continue;
|
|
|
- }
|
|
|
- //大于满发风速
|
|
|
- if (speed >= fanInfo.getFullWindSpeed()) {
|
|
|
- //满发和切出之间的功率值
|
|
|
- Float totalPowerTemp = 0f;
|
|
|
- //在满发和切出之间,看具体机组信息和风速
|
|
|
- for (CutOutSpeedSpecifyInfo cutOutSpeedSpecifyInfo : fanInfo.getCutOutSpeedSpecifyInfos()
|
|
|
- ) {
|
|
|
- //
|
|
|
- if (speed >= cutOutSpeedSpecifyInfo.getLowerWindSpeedLimit()
|
|
|
- && speed < cutOutSpeedSpecifyInfo.getHighWindSpeedLimit()) {
|
|
|
- //当前风速的发电功率
|
|
|
- totalPowerTemp += cutOutSpeedSpecifyInfo.getPowerGeneration();
|
|
|
- }
|
|
|
- }
|
|
|
- //满发风速和切出 之间无发电则是在满发状态
|
|
|
- if(totalPowerTemp == 0){
|
|
|
- totalPower += fanInfo.getFanUnitCapacity();
|
|
|
- }else{
|
|
|
- totalPower += totalPowerTemp;
|
|
|
+ }
|
|
|
+ for (String fanKey : fanKeys) {
|
|
|
+ // 切出风机ID查询风机具体配置信息
|
|
|
+ FanUnitInfo fanInfo = fanInfoMap.get(fanKey.split("-")[0]);
|
|
|
+ // 小于满发风速
|
|
|
+ if (speed < fanInfo.getFullWindSpeed()) {
|
|
|
+ // 根据风机曲线点表获取功率值
|
|
|
+ totalPower += windTurbinePowerCurveMaps.get(fanInfo.getFanId() + "").get(Convert.toFloat(fanKey.split("-")[1]));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (speed >= fanInfo.getCutOutSpeed()) {
|
|
|
+ // 风速大于切出,发电为0
|
|
|
+ totalPower += 0;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 大于满发风速
|
|
|
+ if (speed >= fanInfo.getFullWindSpeed()) {
|
|
|
+ // 满发和切出之间的功率值
|
|
|
+ Float totalPowerTemp = 0f;
|
|
|
+ // 在满发和切出之间,看具体机组信息和风速
|
|
|
+ for (CutOutSpeedSpecifyInfo cutOutSpeedSpecifyInfo : fanInfo.getCutOutSpeedSpecifyInfos()
|
|
|
+ ) {
|
|
|
+ //
|
|
|
+ if (speed >= cutOutSpeedSpecifyInfo.getLowerWindSpeedLimit()
|
|
|
+ && speed < cutOutSpeedSpecifyInfo.getHighWindSpeedLimit()) {
|
|
|
+ // 当前风速的发电功率
|
|
|
+ totalPowerTemp += cutOutSpeedSpecifyInfo.getPowerGeneration();
|
|
|
}
|
|
|
}
|
|
|
+ // 满发风速和切出 之间无发电则是在满发状态
|
|
|
+ if (totalPowerTemp == 0) {
|
|
|
+ totalPower += fanInfo.getFanUnitCapacity();
|
|
|
+ } else {
|
|
|
+ totalPower += totalPowerTemp;
|
|
|
+ }
|
|
|
}
|
|
|
- ForecastPowerShortTerm forecastPowerShortTerm = new ForecastPowerShortTerm();
|
|
|
- forecastPowerShortTerm.setForecastTime(nwp.getPreTime());
|
|
|
- forecastPowerShortTerm.setFpValue(NumberUtil.round(totalPower/1000,2).setScale(2,RoundingMode.HALF_UP));
|
|
|
- forecastPowerShortTerm.setGenDate(new Date());
|
|
|
- forecastPowerShortTerm.setPredictionModelEnum(PredictionModelEnum.E1);
|
|
|
-
|
|
|
- // 计算超装机容量
|
|
|
- if(forecastPowerShortTerm.getFpValue().compareTo(new BigDecimal(60))> 0 ){
|
|
|
- forecastPowerShortTerm.setFpValue(BigDecimal.valueOf(random(50, 60)).setScale(2,RoundingMode.HALF_UP));
|
|
|
- }
|
|
|
- // // 计算低于15
|
|
|
- // if(forecastPowerShortTerm.getFpValue().compareTo(new BigDecimal(15)) < 0 ){
|
|
|
- // forecastPowerShortTerm.setFpValue(BigDecimal.valueOf(random(15, 25)).setScale(2,RoundingMode.HALF_UP));
|
|
|
- // }
|
|
|
-
|
|
|
- // dataRange(forecastPowerShortTerm);
|
|
|
-
|
|
|
- forecastPowerShortTermList.add(forecastPowerShortTerm);
|
|
|
-
|
|
|
}
|
|
|
+ ForecastPowerShortTerm forecastPowerShortTerm = new ForecastPowerShortTerm();
|
|
|
+ forecastPowerShortTerm.setForecastTime(nwp.getPreTime());
|
|
|
+ forecastPowerShortTerm.setFpValue(NumberUtil.round(totalPower / 1000, 2).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ forecastPowerShortTerm.setGenDate(new Date());
|
|
|
+ forecastPowerShortTerm.setPredictionModelEnum(PredictionModelEnum.E1);
|
|
|
+
|
|
|
+ // 计算超装机容量
|
|
|
+ if (forecastPowerShortTerm.getFpValue().compareTo(new BigDecimal(60)) > 0) {
|
|
|
+ forecastPowerShortTerm.setFpValue(BigDecimal.valueOf(random(58, 62)).setScale(2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ forecastPowerShortTermList.add(forecastPowerShortTerm);
|
|
|
|
|
|
}
|
|
|
List<ForecastPowerShortTerm> forecastPowerShortTerms = modifyShorterData(forecastPowerShortTermList);
|
|
@@ -462,13 +466,8 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}
|
|
|
// 计算超装机容量 60
|
|
|
if(f.getFpValue().compareTo(new BigDecimal(60)) > 0){
|
|
|
- f.setFpValue(new BigDecimal(random(50, 60)).setScale(2,RoundingMode.HALF_UP));
|
|
|
+ f.setFpValue(new BigDecimal(random(58, 62)).setScale(2,RoundingMode.HALF_UP));
|
|
|
}
|
|
|
- // // 计算小于15
|
|
|
- // if(f.getFpValue().compareTo(new BigDecimal(15)) < 0){
|
|
|
- // f.setFpValue(new BigDecimal(random(15, 25)).setScale(2,RoundingMode.HALF_UP));
|
|
|
- // }
|
|
|
- // dataRange(f);
|
|
|
}
|
|
|
}
|
|
|
log.info("执行修改短期系数方法结束,系统时间:"+ DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
|
@@ -510,7 +509,7 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
// 九点的时候 小于2 设置为2
|
|
|
- if (f.getForecastTime() > nDate.getTime() && f.getForecastTime() < nHDate.getTime() && f.getFpValue().compareTo(new BigDecimal(2)) > 0) {
|
|
|
+ if (f.getForecastTime() > nDate.getTime() && f.getForecastTime() < nHDate.getTime() && f.getFpValue().compareTo(new BigDecimal(2)) < 0) {
|
|
|
f.setFpValue(new BigDecimal(2).setScale(2,RoundingMode.HALF_UP));
|
|
|
}
|
|
|
if(dateFormat.format(f.getForecastTime()).equals(ntDate) && f.getFpValue().compareTo(new BigDecimal(3)) < 0) {
|
|
@@ -552,9 +551,6 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
|
|
|
// 是否开启了结冰停机
|
|
|
if(yesorno_open_severe_weather.equals("1")){
|
|
|
- // 15天
|
|
|
- long startTimes = getMillisecondsSubDay();
|
|
|
- long endTimes = startTimes + dayNum * 24 * 60 * 60 * 1000 - 15 * 60 * 1000;
|
|
|
// 停机数据
|
|
|
List<IcingShutdown> icingShutdowns = parkedWindTurbine(nwpDatas);
|
|
|
|
|
@@ -572,11 +568,12 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ forecastPowerShortTermRepository.saveAll(byForecastTimeBetween);
|
|
|
+ // 读取停机数量
|
|
|
+ int shut_down_number = Integer.parseInt(super.getSysParameter("SHUT_DOWN_NUMBER", "0"));
|
|
|
|
|
|
// 解冰开机
|
|
|
- long startTime = icingShutdowns.get(0).getStartTime();
|
|
|
- List<IcingShutdown> icingShutdowns1 = thawBoot(startTime, endTimes);
|
|
|
-
|
|
|
+ List<IcingShutdown> icingShutdowns1 = thawBoot(nwpDatas);
|
|
|
for(IcingShutdown icingShutdown: icingShutdowns1){
|
|
|
for(ForecastPowerShortTerm forecastPowerShortTerm: byForecastTimeBetween){
|
|
|
// 短期数据在停机数据时间内
|
|
@@ -585,18 +582,15 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}
|
|
|
// 计算超装机容量 60
|
|
|
if(forecastPowerShortTerm.getFpValue().compareTo(new BigDecimal(60))> 0 ){
|
|
|
- forecastPowerShortTerm.setFpValue(BigDecimal.valueOf(random(50,60)).setScale(2,RoundingMode.HALF_UP));
|
|
|
+ forecastPowerShortTerm.setFpValue(BigDecimal.valueOf(random(58,62)).setScale(2,RoundingMode.HALF_UP));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 读取停机数量
|
|
|
- int shut_down_number = Integer.parseInt(super.getSysParameter("SHUT_DOWN_NUMBER", "0"));
|
|
|
-
|
|
|
- long endTime = icingShutdowns.get(icingShutdowns.size() - 1).getEndTime();
|
|
|
- long startTime1 = icingShutdowns1.get(0).getStartTime();
|
|
|
+ long startTime = icingShutdowns1.get(0).getStartTime();
|
|
|
+ long endTime = icingShutdowns1.get(icingShutdowns1.size() - 1).getEndTime();
|
|
|
for(ForecastPowerShortTerm forecastPowerShortTerm: byForecastTimeBetween){
|
|
|
- if(forecastPowerShortTerm.getForecastTime() >= endTime && forecastPowerShortTerm.getForecastTime() < startTime1){
|
|
|
+ if(forecastPowerShortTerm.getForecastTime() >= startTime && forecastPowerShortTerm.getForecastTime() < endTime){
|
|
|
forecastPowerShortTerm.setFpValue(forecastPowerShortTerm.getFpValue().subtract( new BigDecimal(2 * shut_down_number)));
|
|
|
}
|
|
|
// 如果小于0 则等于0
|
|
@@ -607,7 +601,6 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
|
|
|
// 保存修改后短期数据
|
|
|
forecastPowerShortTermRepository.saveAll(byForecastTimeBetween);
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -665,7 +658,7 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(endTime != 0 && startTime != 0){
|
|
|
+ if(endTime != 0 && startTime != 0 && nwpDatas.size() - i > 4){
|
|
|
IcingShutdown icingShutdown = new IcingShutdown();
|
|
|
icingShutdown.setStartTime(startTime);
|
|
|
icingShutdown.setEndTime(endTime);
|
|
@@ -710,6 +703,7 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}else if(shut_down_number_time_interval_m > 105 && shut_down_number_time_interval_m <= 120){
|
|
|
dm = 8;
|
|
|
}
|
|
|
+
|
|
|
duration_of_snow_j *= dj;
|
|
|
duration_of_snow_m *= dm;
|
|
|
int shutDownJ = 0;
|
|
@@ -717,22 +711,19 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
for(IcingShutdown icingShutdown:icingShutdowns1){
|
|
|
long l = (icingShutdown.getEndTime() - icingShutdown.getStartTime()) / 1000 / 60 / 15 + 1;
|
|
|
|
|
|
-
|
|
|
- if(l / 4 > 2){
|
|
|
- long kkk = l / dj;
|
|
|
- long l11 = l % 4;
|
|
|
- if(l11 > 0 ){
|
|
|
- kkk += 1;
|
|
|
- }
|
|
|
- kkk -= duration_of_snow_j / dj;
|
|
|
- if(l11 == 0 && kkk < 0){
|
|
|
- kkk = 1;
|
|
|
+ // 将军山
|
|
|
+ if(l > duration_of_snow_j){
|
|
|
+ long kk = l / dj;
|
|
|
+ long l1 = l % 4;
|
|
|
+ if(l1 > 0 ){
|
|
|
+ kk += 1;
|
|
|
}
|
|
|
+ kk -= duration_of_snow_j / dj;
|
|
|
// 推移时间
|
|
|
- long l22 = icingShutdowns1.get(0).getStartTime() + 1000l * 60 * 15 * duration_of_snow_j;
|
|
|
+ long l2 = icingShutdowns1.get(0).getStartTime() + 1000l * 60 * 15 * duration_of_snow_j;
|
|
|
// 开始停机时间
|
|
|
- icingShutdown.setStartTime(l22);
|
|
|
- for(int i = 0; i < kkk; i++){
|
|
|
+ icingShutdown.setStartTime(l2);
|
|
|
+ for(int i = 0; i < kk; i++){
|
|
|
shutDownJ += 1;
|
|
|
IcingShutdown icingShutdown1 = new IcingShutdown();
|
|
|
icingShutdown1.setStartTime(DateUtil.offsetMinute(new Date(icingShutdown.getStartTime()),i * shut_down_number_time_interval_j).getTime());
|
|
@@ -742,34 +733,8 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
icingShutdown1.setShutDownNumber(shutDownJ);
|
|
|
icingShutdowns.add(icingShutdown1);
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
- // 将军山
|
|
|
- // if(l > duration_of_snow_j){
|
|
|
- // long kkk = l / dj;
|
|
|
- // long l11 = l % 4;
|
|
|
- // if(l11 > 0 ){
|
|
|
- // kkk += 1;
|
|
|
- // }
|
|
|
- // kkk -= duration_of_snow_j / dj;
|
|
|
- // // 推移时间
|
|
|
- // long l22 = icingShutdowns1.get(0).getStartTime() + 1000l * 60 * 15 * duration_of_snow_j;
|
|
|
- // // 开始停机时间
|
|
|
- // icingShutdown.setStartTime(l22);
|
|
|
- // for(int i = 0; i < kkk; i++){
|
|
|
- // shutDownJ += 1;
|
|
|
- // IcingShutdown icingShutdown1 = new IcingShutdown();
|
|
|
- // icingShutdown1.setStartTime(DateUtil.offsetMinute(new Date(icingShutdown.getStartTime()),i * shut_down_number_time_interval_j).getTime());
|
|
|
- // long endTimes = DateUtil.offsetMinute(new Date(icingShutdown.getStartTime()),(i + 1) * shut_down_number_time_interval_j ).getTime();
|
|
|
- // if(endTimes > icingShutdown.getEndTime())endTimes = icingShutdown.getEndTime() + 1000l;
|
|
|
- // icingShutdown1.setEndTime(endTimes);
|
|
|
- // icingShutdown1.setShutDownNumber(shutDownJ);
|
|
|
- // icingShutdowns.add(icingShutdown1);
|
|
|
- // }
|
|
|
-
|
|
|
-
|
|
|
- // }
|
|
|
+ }
|
|
|
|
|
|
// 马头山
|
|
|
if(l > duration_of_snow_m){
|
|
@@ -817,7 +782,7 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
- public List<IcingShutdown> thawBoot(Long startTime, Long endTime){
|
|
|
+ public List<IcingShutdown> thawBoot(List<Nwp> nwpDatas){
|
|
|
// 解冻间隔时间 马头山
|
|
|
Integer thawing_interval_m = Integer.parseInt(super.getSysParameter("THAWING_INTERVAL_M", "60"));
|
|
|
// 解冻间隔时间 将军山
|
|
@@ -827,7 +792,7 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
// 停机数量
|
|
|
int shut_down_number = Integer.parseInt(super.getSysParameter("SHUT_DOWN_NUMBER", "-1"));
|
|
|
// 获取nwp数据
|
|
|
- List<Nwp> nwpData = nwpService.getNwpData(startTime, endTime);
|
|
|
+ // List<Nwp> nwpData = nwpRepository.findByPreTimeBetween(startTime, endTime);
|
|
|
// 返回集合
|
|
|
List<IcingShutdown> icingShutdowns = new ArrayList<>();
|
|
|
// 马头山集合
|
|
@@ -871,7 +836,7 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
int nextM = 0;
|
|
|
// 停机台数大于0
|
|
|
if(shut_down_number > 0) {
|
|
|
- for (int i = 0; i < nwpData.size(); i++) {
|
|
|
+ for (int i = 0; i < nwpDatas.size(); i++) {
|
|
|
// 临时对象
|
|
|
IcingShutdown icingShutdown = new IcingShutdown();
|
|
|
IcingShutdown icingShutdownM = new IcingShutdown();
|
|
@@ -882,9 +847,9 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
if (shut_down_number > 0) {
|
|
|
|
|
|
// 当前温度高于解冻温度
|
|
|
- if(nwpData.get(i).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
+ if(nwpDatas.get(i).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
// 高于解冻温度的nwp数据时间点
|
|
|
- icingShutdown.setStartTime(nwpData.get(i).getPreTime());
|
|
|
+ icingShutdown.setStartTime(nwpDatas.get(i).getPreTime());
|
|
|
|
|
|
// 解冰集合有值
|
|
|
if(icingShutdownsJ.size() > 0){
|
|
@@ -892,12 +857,12 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
if(nextJ == i){
|
|
|
// 将军山
|
|
|
for (int j = i; j <= i + forJ; j++) {
|
|
|
- if (nwpData.get(j).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
+ if (nwpDatas.get(j).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
|
|
|
// 当是最后一次循环 记录时间点 则代表当前数据点之后的几个点位温度都满足解冰条件
|
|
|
if (j == i + forJ) {
|
|
|
ifOfCount = ifOfCount + 1;
|
|
|
- icingShutdown.setEndTime(nwpData.get(j).getPreTime());
|
|
|
+ icingShutdown.setEndTime(nwpDatas.get(j).getPreTime());
|
|
|
icingShutdown.setShutDownNumber(ifOfCount);
|
|
|
icingShutdownsJ.add(icingShutdown);
|
|
|
// 下一个解冻时间点
|
|
@@ -912,12 +877,12 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
|
|
|
// 将军山
|
|
|
for (int j = i; j <= i + forJ; j++) {
|
|
|
- if (nwpData.get(j).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
+ if (nwpDatas.get(j).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
|
|
|
// 当是最后一次循环 记录时间点 则代表当前数据点之后的几个点位温度都满足解冰条件
|
|
|
if (j == i + forJ) {
|
|
|
ifOfCount = ifOfCount + 1;
|
|
|
- icingShutdown.setEndTime(nwpData.get(j).getPreTime());
|
|
|
+ icingShutdown.setEndTime(nwpDatas.get(j).getPreTime());
|
|
|
icingShutdown.setShutDownNumber(ifOfCount);
|
|
|
icingShutdownsJ.add(icingShutdown);
|
|
|
// 下一个解冻时间点
|
|
@@ -929,14 +894,29 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}
|
|
|
|
|
|
// 马头山
|
|
|
- icingShutdownM.setStartTime(nwpData.get(i).getPreTime());
|
|
|
- if(icingShutdownsM.size()> 0){
|
|
|
- if(nextM == i){
|
|
|
+ if(shut_down_number != 1){
|
|
|
+ icingShutdownM.setStartTime(nwpDatas.get(i).getPreTime());
|
|
|
+ if(icingShutdownsM.size()> 0){
|
|
|
+ if(nextM == i){
|
|
|
+ for (int k = i; k <= i + forM; k++) {
|
|
|
+ if (nwpDatas.get(k).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
+ if(k == i + forM){
|
|
|
+ ifOfCountM = ifOfCountM + 1;
|
|
|
+ icingShutdownM.setEndTime(nwpDatas.get(k).getPreTime());
|
|
|
+ icingShutdownM.setShutDownNumber(ifOfCount);
|
|
|
+ icingShutdownsM.add(icingShutdownM);
|
|
|
+ nextM = i + forM + 1;
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
for (int k = i; k <= i + forM; k++) {
|
|
|
- if (nwpData.get(k).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
+ if (nwpDatas.get(k).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
if(k == i + forM){
|
|
|
ifOfCountM = ifOfCountM + 1;
|
|
|
- icingShutdownM.setEndTime(nwpData.get(k).getPreTime());
|
|
|
+ icingShutdownM.setEndTime(nwpDatas.get(k).getPreTime());
|
|
|
icingShutdownM.setShutDownNumber(ifOfCount);
|
|
|
icingShutdownsM.add(icingShutdownM);
|
|
|
nextM = i + forM + 1;
|
|
@@ -945,19 +925,6 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }else{
|
|
|
- for (int k = i; k <= i + forM; k++) {
|
|
|
- if (nwpData.get(k).getT().compareTo(new BigDecimal(thawing_interval_temperature)) > 0) {
|
|
|
- if(k == i + forM){
|
|
|
- ifOfCountM = ifOfCountM + 1;
|
|
|
- icingShutdownM.setEndTime(nwpData.get(k).getPreTime());
|
|
|
- icingShutdownM.setShutDownNumber(ifOfCount);
|
|
|
- icingShutdownsM.add(icingShutdownM);
|
|
|
- nextM = i + forM + 1;
|
|
|
- count++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -1093,6 +1060,7 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ log.info("修改了" +nwpList.size() +"条nwp");
|
|
|
nwpService.saveAll(nwpList);
|
|
|
if(nwpList.size() <= 0){
|
|
|
nwpList = listTemperature;
|
|
@@ -1418,11 +1386,11 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
|
|
|
// 计算超装机容量 60
|
|
|
if(forecastPowerShortTerm.getFpValue().compareTo(new BigDecimal(60)) > 0){
|
|
|
- forecastPowerShortTerm.setFpValue(new BigDecimal(random(50, 60)).setScale(2,RoundingMode.HALF_UP));
|
|
|
+ forecastPowerShortTerm.setFpValue(new BigDecimal(random(58, 62)).setScale(2,RoundingMode.HALF_UP));
|
|
|
}
|
|
|
// 计算小于15
|
|
|
if(forecastPowerShortTerm.getFpValue().compareTo(new BigDecimal(15)) < 0){
|
|
|
- forecastPowerShortTerm.setFpValue(new BigDecimal(random(50, 60)).setScale(2,RoundingMode.HALF_UP));
|
|
|
+ forecastPowerShortTerm.setFpValue(new BigDecimal(random(14, 16)).setScale(2,RoundingMode.HALF_UP));
|
|
|
}
|
|
|
return forecastPowerShortTerm;
|
|
|
}
|
|
@@ -1435,7 +1403,6 @@ public class ForecastPowerShortTermGeneratorService extends BaseService {
|
|
|
private void yesOrNoDataRange(){
|
|
|
String power_range = super.getSysParameter("POWER_RANGE", "1");
|
|
|
if(power_range.equals("1")){
|
|
|
- // List<ForecastPowerShortTerm> byForecastTimeBetween = forecastPowerShortTermRepository.findByForecastTimeBetween(DateUtil.beginOfDay(DateUtil.tomorrow()).getTime(), DateUtil.endOfDay(DateUtil.tomorrow()).getTime());
|
|
|
List<ForecastPowerShortTerm> forecastPowerShortTermRepositoryAll = forecastPowerShortTermRepository.findAll();
|
|
|
for(ForecastPowerShortTerm forecastPowerShortTerm:forecastPowerShortTermRepositoryAll){
|
|
|
dataRange(forecastPowerShortTerm);
|