|
@@ -84,14 +84,13 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
log.info("时间 【" + DateTimeUtil.dateToStrLong(new Date()) + "】 马头山短期文件生成开始");
|
|
|
//1.读取配置
|
|
|
readExcelForParams();
|
|
|
- //2.查询nwp数据
|
|
|
+ //2.修改nwp数据
|
|
|
+ moldRepair();
|
|
|
+ //3.查询nwp数据
|
|
|
List<Nwp> listTemperature = getNwpDatas();
|
|
|
- //3.计算短期预测
|
|
|
+ //4.计算短期预测
|
|
|
caculateDqs(listTemperature);
|
|
|
-
|
|
|
-
|
|
|
log.info("时间 【" + DateTimeUtil.dateToStrLong(new Date()) + "】 马头山短期文件生成完成");
|
|
|
-
|
|
|
}
|
|
|
/**
|
|
|
* 读取excel中配置参数
|
|
@@ -421,6 +420,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
public List<ForecastPowerShortTerm> modifyShorterData(List<ForecastPowerShortTerm> forecastPowerShortTermList){
|
|
|
List<ModifyShorterData> modifyShorterDataList = modifyShorterDataRepository.findByStartTimeAfter(new Date());
|
|
|
DecimalFormat decimalFormat=new DecimalFormat(".00");
|
|
|
+ log.info("执行修改短期系数方法开始,系统时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
for(ModifyShorterData m: modifyShorterDataList){
|
|
|
Date startTime = m.getStartTime();
|
|
|
Date endTime = m.getEndTime();
|
|
@@ -435,6 +435,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ log.info("执行修改短期系数方法结束,系统时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
return modifyMinPower(forecastPowerShortTermList);
|
|
|
}
|
|
|
|
|
@@ -446,6 +447,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
*/
|
|
|
public List<ForecastPowerShortTerm> modifyMinPower(List<ForecastPowerShortTerm> forecastPowerShortTermList) {
|
|
|
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ log.info("执行根据时间段修改最小值开始,系统时间:"+ dateFormat.format(new Date()));
|
|
|
for (ForecastPowerShortTerm f : forecastPowerShortTermList) {
|
|
|
// 获取当前预测时间
|
|
|
String pDate = dateFormat.format(f.getForecastTime());
|
|
@@ -485,6 +487,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
f.setFpValue(new BigDecimal(2));
|
|
|
}
|
|
|
}
|
|
|
+ log.info("执行根据时间段修改最小值结束" + dateFormat.format(new Date()));
|
|
|
return forecastPowerShortTermList;
|
|
|
}
|
|
|
|
|
@@ -531,6 +534,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
IcingShutdown icingShutdown = new IcingShutdown();
|
|
|
IcingShutdown icingShutdownM = new IcingShutdown();
|
|
|
|
|
|
+ log.info("执行结冰停机方法开始,系统时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
for(Nwp nwp: nwpData){
|
|
|
// 判断是否结冰
|
|
|
if(nwp.getT().compareTo(down_the_temperature) < 1 && nwp.getTpr().compareTo(tpr_threshold) > 0){
|
|
@@ -580,7 +584,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
} catch (BusinessException e) {
|
|
|
log.info("获取参数错误:" + e);
|
|
|
}
|
|
|
-
|
|
|
+ log.info("执行结冰停机方法结束,系统时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
return icingShutdowns;
|
|
|
}
|
|
|
|
|
@@ -614,7 +618,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
|
|
|
Integer ifOfCount = 0;
|
|
|
Integer ifOfCountM = 0;
|
|
|
-
|
|
|
+ log.info("执行解冻开机方法开始,系统时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
// 停机台数大于0
|
|
|
if(Integer.parseInt(shut_down_number) > 0) {
|
|
|
for (int i = 0; i < nwpData.size(); i++) {
|
|
@@ -656,10 +660,7 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if(Integer.parseInt(shut_down_number) > 0){
|
|
|
-
|
|
|
- }
|
|
|
+ log.info("执行解冻开机方法结束,系统时间:"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
|
|
|
return icingShutdowns;
|
|
|
}
|
|
@@ -721,7 +722,6 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 判断风向
|
|
|
*
|
|
@@ -749,6 +749,173 @@ public class UploadFileMatoushanJob extends BaseService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 修改nwp风速
|
|
|
+ */
|
|
|
+ public void moldRepair(){
|
|
|
+ log.info("执行修改nwp风速:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
+ List<Nwp> listTemperature = getNwpDatas();
|
|
|
+ List<Nwp> nwpList = new ArrayList<>();
|
|
|
+ for (Nwp nwp : listTemperature) {
|
|
|
+ //层高
|
|
|
+ String windHeight = super.getSysParameter("WIND_HEIGHT", "30");
|
|
|
+ //风速
|
|
|
+ BigDecimal heightWs = getHeightWs(nwp, windHeight);
|
|
|
+ //查询增加的系数 默认1.2
|
|
|
+ String wd_change_coefficient = super.getSysParameter("WD_CHANGE_COEFFICIENT", "1.2");
|
|
|
+ BigDecimal coefficient = new BigDecimal(wd_change_coefficient);
|
|
|
+ //最低风速阈值
|
|
|
+ String minimum_ws = super.getSysParameter("MINIMUM_WS", "1");
|
|
|
+ BigDecimal minimumWs = new BigDecimal(minimum_ws);
|
|
|
+ //判断当前点比前15分钟的风向是否有改变
|
|
|
+ Boolean eq = wdChange(nwp,windHeight);
|
|
|
+ if (eq == false) {
|
|
|
+ //判断风速的值是否在最小区间
|
|
|
+ if (heightWs.compareTo(BigDecimal.ZERO) == 0 || heightWs.compareTo(minimumWs) == -1) {
|
|
|
+ //设置修改之后的nwp风速数据
|
|
|
+ setHeightWs(nwp, windHeight, coefficient);
|
|
|
+ nwpList.add(nwp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ nwpService.saveAll(nwpList);
|
|
|
+ log.info("执行修改nwp风速结束 系统时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断风向是否发生改变
|
|
|
+ */
|
|
|
+ public Boolean wdChange(Nwp nwp,String fieldName) {
|
|
|
+ //获取当前nwp数据的时间
|
|
|
+ Long preEndTime = nwp.getPreTime() ;
|
|
|
+ //获取上15分钟的nwp数据的时间
|
|
|
+ Long preStartTime = preEndTime - 60000 * 15;
|
|
|
+
|
|
|
+ List<Nwp> nwpData = nwpRepository.findByPreTimeBetween(preStartTime, preEndTime);
|
|
|
+ List<BigDecimal> heightWd = getHeightWd(nwpData, fieldName);
|
|
|
+
|
|
|
+ //获取上15分钟风向数据
|
|
|
+ BigDecimal wdFirst = heightWd.get(0);
|
|
|
+ String firstWd = decideWind(wdFirst);
|
|
|
+ //获取当前nwp数据的风向
|
|
|
+ BigDecimal wdLast = heightWd.get(nwpData.size() - 1);
|
|
|
+ String lastWd = decideWind(wdLast);
|
|
|
+
|
|
|
+ return firstWd.equals(lastWd);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据层高获取风速
|
|
|
+ * @param nwp
|
|
|
+ * @param fieldName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public BigDecimal getHeightWs(Nwp nwp, String fieldName) {
|
|
|
+ BigDecimal ws = BigDecimal.ZERO;
|
|
|
+ switch (fieldName) {
|
|
|
+ case "10":
|
|
|
+ ws = nwp.getWs10();
|
|
|
+ break;
|
|
|
+ case "30":
|
|
|
+ ws = nwp.getWs30();
|
|
|
+ break;
|
|
|
+ case "50":
|
|
|
+ ws = nwp.getWs50();
|
|
|
+ break;
|
|
|
+ case "70":
|
|
|
+ ws = nwp.getWs70();
|
|
|
+ break;
|
|
|
+ case "80":
|
|
|
+ ws = nwp.getWs80();
|
|
|
+ break;
|
|
|
+ case "90":
|
|
|
+ ws = nwp.getWs90();
|
|
|
+ break;
|
|
|
+ case "100":
|
|
|
+ ws = nwp.getWs100();
|
|
|
+ break;
|
|
|
+ case "170":
|
|
|
+ ws = nwp.getWs170();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return ws;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据层高获取风向集合
|
|
|
+ * @param nwp
|
|
|
+ * @param fieldName
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<BigDecimal> getHeightWd(List<Nwp> nwp, String fieldName) {
|
|
|
+ List<BigDecimal> nwpList = new ArrayList<>();
|
|
|
+ switch (fieldName) {
|
|
|
+ case "10":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd10).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ case "30":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd30).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ case "50":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd50).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ case "70":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd70).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ case "80":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd80).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ case "90":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd90).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ case "100":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd100).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ case "170":
|
|
|
+ nwpList = nwp.stream().map(Nwp::getWd170).collect(Collectors.toList());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return nwpList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据层高设置风速
|
|
|
+ *
|
|
|
+ * @param nwp
|
|
|
+ * @param fieldName
|
|
|
+ * @param speed
|
|
|
+ */
|
|
|
+ public void setHeightWs(Nwp nwp, String fieldName, BigDecimal speed) {
|
|
|
+ switch (fieldName) {
|
|
|
+ case "10":
|
|
|
+ nwp.setWs10(speed);
|
|
|
+ break;
|
|
|
+ case "30":
|
|
|
+ nwp.setWs30(speed);
|
|
|
+ break;
|
|
|
+ case "50":
|
|
|
+ nwp.setWs50(speed);
|
|
|
+ break;
|
|
|
+ case "70":
|
|
|
+ nwp.setWs70(speed);
|
|
|
+ break;
|
|
|
+ case "80":
|
|
|
+ nwp.setWs80(speed);
|
|
|
+ break;
|
|
|
+ case "90":
|
|
|
+ nwp.setWs90(speed);
|
|
|
+ break;
|
|
|
+ case "100":
|
|
|
+ nwp.setWs100(speed);
|
|
|
+ break;
|
|
|
+ case "170":
|
|
|
+ nwp.setWs170(speed);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
* 今日凌晨 毫秒
|
|
|
*
|
|
|
* @return
|