|
@@ -18,10 +18,7 @@ import java.sql.Time;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Comparator;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@@ -54,7 +51,7 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- @WR("R")
|
|
|
+// @WR("R")
|
|
|
public int put(List<JiaYueWindPowerCdqResultCoverFD0001> jiaYueWindPowerCdqResultCoverFD0001List) {
|
|
|
if (jiaYueWindPowerCdqResultCoverFD0001List != null && jiaYueWindPowerCdqResultCoverFD0001List.size() > 0) {
|
|
|
this.saveBatch(jiaYueWindPowerCdqResultCoverFD0001List, jiaYueWindPowerCdqResultCoverFD0001List.size());
|
|
@@ -62,16 +59,9 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
return jiaYueWindPowerCdqResultCoverFD0001List.size();
|
|
|
}
|
|
|
|
|
|
-// @Override
|
|
|
-// public List<JiaYueWindPowerCdqResultCover> getAll() {
|
|
|
-// List<JiaYueWindPowerCdqResultCover> jiaYueWindPowerCdqResultCovers = jiaYueWindPowerCdqResultCoverMapper.selectList(null);
|
|
|
-// return jiaYueWindPowerCdqResultCovers;
|
|
|
-// }
|
|
|
-
|
|
|
@Override
|
|
|
- @WR("R")
|
|
|
+// @WR("R")
|
|
|
public int deleteAll() {
|
|
|
-
|
|
|
return jiaYueWindPowerCdqResultCoverMapperFD0001.deleteAll();
|
|
|
}
|
|
|
|
|
@@ -80,33 +70,10 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
* 执行超短期预测
|
|
|
*/
|
|
|
public void executeForecast() {
|
|
|
-
|
|
|
List<ElectricField> electricFieldList = new ArrayList<>();
|
|
|
-// ElectricField electricField1 = new ElectricField();
|
|
|
-// electricField1.setBelongForecastManufactor("SYJY");
|
|
|
-// electricField1.setCapacity(new BigDecimal(30.0000));
|
|
|
-// electricField1.setElectricFieldTypeEnum("2");
|
|
|
-// electricField1.setForecastManufactor("SYJY");
|
|
|
-// electricField1.setId("138c6aebdf6ddc792495bc35fa3e4adb");
|
|
|
-// electricField1.setName("天津中能融合测试站A");
|
|
|
-// electricField1.setStationCode("J00770");
|
|
|
-// electricField1.setSign("FD0001");
|
|
|
-// electricField1.setNetSubstationName("J00770");
|
|
|
-
|
|
|
-// ElectricField electricField2 = new ElectricField();
|
|
|
-// electricField2.setBelongForecastManufactor("SYJY");
|
|
|
-// electricField2.setCapacity(new BigDecimal(12.0000));
|
|
|
-// electricField2.setElectricFieldTypeEnum("2");
|
|
|
-// electricField2.setForecastManufactor("SYJY");
|
|
|
-// electricField2.setId("30a9f02678beb7101e628d7c7e22c5d6");
|
|
|
-// electricField2.setName("天津中能融合测试站C");
|
|
|
-// electricField2.setStationCode("J00772");
|
|
|
-// electricField2.setSign("FD0003");
|
|
|
-// electricField2.setNetSubstationName("J00772");
|
|
|
-
|
|
|
ElectricField electricField3 = new ElectricField();
|
|
|
electricField3.setBelongForecastManufactor("SYJY");
|
|
|
- electricField3.setCapacity(new BigDecimal(20.0000));
|
|
|
+ electricField3.setCapacity(new BigDecimal(30.0000));
|
|
|
electricField3.setElectricFieldTypeEnum("2");
|
|
|
electricField3.setForecastManufactor("SYJY");
|
|
|
electricField3.setId("d712c1ef348714a5afafcf130c256cc9");
|
|
@@ -114,9 +81,6 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
electricField3.setStationCode("J00770");
|
|
|
electricField3.setSign("FD0001");
|
|
|
electricField3.setNetSubstationName("J00770");
|
|
|
-
|
|
|
-// electricFieldList.add(electricField1);
|
|
|
-// electricFieldList.add(electricField2);
|
|
|
electricFieldList.add(electricField3);
|
|
|
|
|
|
electricFieldList.forEach(e -> {
|
|
@@ -185,7 +149,7 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
@WR("W")
|
|
|
public void executeForecastForWind(final List<JiaYueWindPowerDqResultCoverFD0001> jiaYueWindPowerDqResultCoverList, final BigDecimal capacity, String stationCode) {
|
|
|
|
|
|
- List<JiaYueWindPowerCdqResultCoverFD0001> jiaYueWindPowerCdqResultCoverFD0002List = new ArrayList<>();
|
|
|
+ List<JiaYueWindPowerCdqResultCoverFD0001> jiaYueWindPowerCdqResultCoverFD0001List = new ArrayList<>();
|
|
|
JiaYueWindPowerCdqResultCoverFD0001 jiaYueWindPowerCdqResultCoverFD0001;
|
|
|
//获取系统参数cdqjsfs,超短期计算方式,0为默认乘系数的方式,1为根据可用功率计算的方式
|
|
|
String cdqjsfs = sysParameterService.getSysParameterAndStationCode("cdqjsfs", "1", stationCode);
|
|
@@ -225,7 +189,7 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
BigDecimal deviationValue = averageAbleValue.subtract(new BigDecimal(currentForecastPowerValue));
|
|
|
for (int i = 0; i < jiaYueWindPowerDqResultCoverList.size(); i++) {
|
|
|
jiaYueWindPowerCdqResultCoverFD0001 = new JiaYueWindPowerCdqResultCoverFD0001();
|
|
|
- jiaYueWindPowerCdqResultCoverFD0001.setDataDate(DateMomentUtil.convertLocalDateTimeToDate(jiaYueWindPowerDqResultCoverList.get(i).getPreDateTime()));
|
|
|
+
|
|
|
Long date = null;
|
|
|
try {
|
|
|
date = DateMomentUtil.getMomentTime(System.currentTimeMillis(), 2, 15 * 60 * 1000L);
|
|
@@ -233,6 +197,14 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
throw new RuntimeException(e);
|
|
|
}
|
|
|
|
|
|
+ Boolean is = this.isMidnight(date);
|
|
|
+
|
|
|
+ if (is == true) {
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001.setDataDate(this.nextDay(new Date()));
|
|
|
+ } else {
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001.setDataDate(new Date());
|
|
|
+ }
|
|
|
+
|
|
|
Date nowDate = DateTimeUtil.getMomentTimeFor15Minute(date);
|
|
|
Time nowTime = this.convertUtilDateToMySQLTime(nowDate);
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setDataTime(nowTime);
|
|
@@ -240,6 +212,7 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setPreDateTime(jiaYueWindPowerDqResultCoverList.get(i).getPreDateTime());
|
|
|
// jiaYueWindPowerCdqResultCoverFD0001.setDataFlg(jiaYueWindPowerDqResultCoverList.get(i).getDataFlg());
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setObjId(jiaYueWindPowerDqResultCoverList.get(i).getObjId());
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001.setOpenCap(jiaYueWindPowerDqResultCoverList.get(i).getOpenCap());
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setCreateTime(LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault())); //短期
|
|
|
stPower = new BigDecimal(jiaYueWindPowerDqResultCoverList.get(i).getActivePower());
|
|
|
//短期*系数
|
|
@@ -268,7 +241,7 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- jiaYueWindPowerCdqResultCoverFD0002List.add(jiaYueWindPowerCdqResultCoverFD0001);
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001List.add(jiaYueWindPowerCdqResultCoverFD0001);
|
|
|
}
|
|
|
} else {
|
|
|
log.info("库中没有可用,本次可用计算数据采用短期*系数的方式生成数据");
|
|
@@ -277,13 +250,21 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
stPower = new BigDecimal(jiaYueWindPowerDqResultCoverList.get(i).getActivePower());
|
|
|
ustPower = stPower.multiply(new BigDecimal(coe)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
jiaYueWindPowerCdqResultCoverFD0001 = new JiaYueWindPowerCdqResultCoverFD0001();
|
|
|
- jiaYueWindPowerCdqResultCoverFD0001.setDataDate(new Date());
|
|
|
Long date = null;
|
|
|
try {
|
|
|
date = DateMomentUtil.getMomentTime(System.currentTimeMillis(), 2, 15 * 60 * 1000L);
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException(e);
|
|
|
}
|
|
|
+
|
|
|
+ Boolean is = this.isMidnight(date);
|
|
|
+
|
|
|
+ if (is == true) {
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001.setDataDate(this.nextDay(new Date()));
|
|
|
+ } else {
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001.setDataDate(new Date());
|
|
|
+ }
|
|
|
+
|
|
|
Date nowDate = DateTimeUtil.getMomentTimeFor15Minute(date);
|
|
|
Time nowTime = this.convertUtilDateToMySQLTime(nowDate);
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setDataTime(nowTime);
|
|
@@ -292,13 +273,14 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
// jiaYueWindPowerCdqResultCoverFD0001.setDataFlg(jiaYueWindPowerDqResultCoverList.get(i).getDataFlg());
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setActivePower(ustPower.floatValue());
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setObjId(jiaYueWindPowerDqResultCoverList.get(i).getObjId());
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001.setOpenCap(jiaYueWindPowerDqResultCoverList.get(i).getOpenCap());
|
|
|
jiaYueWindPowerCdqResultCoverFD0001.setCreateTime(LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault()));
|
|
|
- jiaYueWindPowerCdqResultCoverFD0002List.add(jiaYueWindPowerCdqResultCoverFD0001);
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001List.add(jiaYueWindPowerCdqResultCoverFD0001);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (jiaYueWindPowerCdqResultCoverFD0002List.size() > 0) {
|
|
|
- this.saveCdq(jiaYueWindPowerCdqResultCoverFD0002List, stationCode);
|
|
|
+ if (jiaYueWindPowerCdqResultCoverFD0001List.size() > 0) {
|
|
|
+ this.saveCdq(jiaYueWindPowerCdqResultCoverFD0001List, stationCode);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -314,6 +296,38 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
public void deleteByDateTime(LocalDateTime startTime, LocalDateTime endTime, String stationCode) {
|
|
|
jiaYueWindPowerCdqResultCoverMapperFD0001.deleteByDateTime(startTime, endTime, stationCode);
|
|
|
}
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// @WR("W")
|
|
|
+// public List<JiaYueWindPowerCdqResultCoverFD0001> findByObjIdAndStartTimeAndEndTime(String stationCode, Date startTime, Date endTime) {
|
|
|
+// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+// String startTimeStr = simpleDateFormat.format(startTime);
|
|
|
+// String endTimeStr = simpleDateFormat.format(endTime);
|
|
|
+//
|
|
|
+//
|
|
|
+// List<JiaYueWindPowerCdqResultCoverFD0001> jiaYueWindPowerDqResultCoverList = jiaYueWindPowerCdqResultCoverMapperFD0001.selectByTimeAndObjId(startTimeStr, endTimeStr, stationCode);
|
|
|
+// return jiaYueWindPowerDqResultCoverList;
|
|
|
+//
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<JiaYueWindPowerCdqResultCoverFD0001> findByDataDate(Date startTime) {
|
|
|
+
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ List<JiaYueWindPowerCdqResultCoverFD0001> jiaYueWindPowerCdqResultCoverFD0001List = new ArrayList<>();
|
|
|
+
|
|
|
+ for ( long time = startTime.getTime(); time < startTime.getTime() + 24 * 60 * 60 * 1000L - 1000; time = time + 15 * 60 * 1000L) {
|
|
|
+ Date date = new Date(time);
|
|
|
+ String dateSubString = simpleDateFormat.format(date);
|
|
|
+ JiaYueWindPowerCdqResultCoverFD0001 jiaYueWindPowerCdqResultCoverFD0001 = jiaYueWindPowerCdqResultCoverMapperFD0001.selectByDataDate(dateSubString);
|
|
|
+ if (null != jiaYueWindPowerCdqResultCoverFD0001){
|
|
|
+ jiaYueWindPowerCdqResultCoverFD0001List.add(jiaYueWindPowerCdqResultCoverFD0001);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return jiaYueWindPowerCdqResultCoverFD0001List;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 将Date格式转换为Time格式
|
|
@@ -329,4 +343,28 @@ public class JiaYueWindPowerCdqResultCoverFD0001ServiceImpl extends ServiceImpl<
|
|
|
return Time.valueOf(timeString);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 判断时间戳是否是0点0分
|
|
|
+ *
|
|
|
+ * @param timestamp
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public boolean isMidnight(long timestamp) {
|
|
|
+ Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Asia/Shanghai"));
|
|
|
+ calendar.setTimeInMillis(timestamp);
|
|
|
+
|
|
|
+ boolean isMidnight = // 小时为0
|
|
|
+ calendar.get(Calendar.HOUR_OF_DAY) == 0 &&
|
|
|
+ calendar.get(Calendar.MINUTE) == 0 // 分钟为0
|
|
|
+ && calendar.get(Calendar.SECOND) == 0; // 秒为0
|
|
|
+ return isMidnight;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Date nextDay(Date date) {
|
|
|
+ Calendar calendar = new GregorianCalendar();
|
|
|
+ calendar.setTime(date);
|
|
|
+ calendar.add(calendar.DATE, 1);
|
|
|
+ date = calendar.getTime();
|
|
|
+ return date;
|
|
|
+ }
|
|
|
}
|