|
@@ -238,11 +238,11 @@ public class PowerCurveFittingByTimeService {
|
|
|
|
|
|
cfmday = new ProEconCurveFittingMain();
|
|
|
cfmday.setWindturbineId(key);
|
|
|
- cfmday.setRecordDate(recordDate);
|
|
|
+ cfmday.setRecordDate(DateUtils.truncate(recordDate));
|
|
|
|
|
|
|
|
|
//日---实际/最优
|
|
|
- cfmday.setDeviationRate1(pcl(windMap.get(key).getYsjglPoints(), windMap.get(key).getYzyglPoints(), modelpower));
|
|
|
+ cfmday.setDeviationRate1(pcl(windMap.get(key).getRsjglPoints(), windMap.get(key).getRzyglPoints(), modelpower));
|
|
|
//日---实际/保证
|
|
|
cfmday.setDeviationRate2(pcl(windMap.get(key).getRsjglPoints(), bzglpowerPoints, modelpower));
|
|
|
//日---最优/保证
|
|
@@ -268,7 +268,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
pLCBuild(key, recordDate, windMap, modelpower, 11, bzglpowerPoints, dayLastMonthPoints, dayLastYearPoints, dayStandardPoints);
|
|
|
pLCBuild(key, recordDate, windMap, modelpower, 12, bzglpowerPoints, dayLastMonthPoints, dayLastYearPoints, dayStandardPoints);
|
|
|
pLCBuild(key, recordDate, windMap, modelpower, 13, bzglpowerPoints, dayLastMonthPoints, dayLastYearPoints, dayStandardPoints);
|
|
|
- pLCBuild(key, recordDate, windMap, modelpower, 3, bzglpowerPoints, dayLastMonthPoints, dayLastYearPoints, dayStandardPoints);
|
|
|
+
|
|
|
|
|
|
|
|
|
insertPoints(recordDate, windMap.get(key).getRsjglPoints(), windMap.get(key).getRzyglPoints(), key);
|
|
@@ -503,7 +503,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
pLCBuild(key, stringyear, stringmonth, windMap, modelpower, 10, bzglpowerPoints, monthLastMonthPoints, monthLastYearPoints, monthStandardPoints);
|
|
|
pLCBuild(key, stringyear, stringmonth, windMap, modelpower, 11, bzglpowerPoints, monthLastMonthPoints, monthLastYearPoints, monthStandardPoints);
|
|
|
pLCBuild(key, stringyear, stringmonth, windMap, modelpower, 12, bzglpowerPoints, monthLastMonthPoints, monthLastYearPoints, monthStandardPoints);
|
|
|
- pLCBuild(key, stringyear, stringmonth, windMap, modelpower, 12, bzglpowerPoints, monthLastMonthPoints, monthLastYearPoints, monthStandardPoints);
|
|
|
+ pLCBuild(key, stringyear, stringmonth, windMap, modelpower, 13, bzglpowerPoints, monthLastMonthPoints, monthLastYearPoints, monthStandardPoints);
|
|
|
|
|
|
|
|
|
insertPoints(stringyear, stringmonth, windMap.get(key).getYsjglPoints(), windMap.get(key).getYzyglPoints(), key);
|
|
@@ -737,7 +737,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
pLCBuild(key, stringyear, windMap, modelpower, 10, bzglpowerPoints, yearLastMonthPoints, yearLastYearPoints, yearStandardPoints);
|
|
|
pLCBuild(key, stringyear, windMap, modelpower, 11, bzglpowerPoints, yearLastMonthPoints, yearLastYearPoints, yearStandardPoints);
|
|
|
pLCBuild(key, stringyear, windMap, modelpower, 12, bzglpowerPoints, yearLastMonthPoints, yearLastYearPoints, yearStandardPoints);
|
|
|
- pLCBuild(key, stringyear, windMap, modelpower, 12, bzglpowerPoints, yearLastMonthPoints, yearLastYearPoints, yearStandardPoints);
|
|
|
+ pLCBuild(key, stringyear, windMap, modelpower, 13, bzglpowerPoints, yearLastMonthPoints, yearLastYearPoints, yearStandardPoints);
|
|
|
|
|
|
|
|
|
insertPoints(stringyear, windMap.get(key).getNsjglPoints(), windMap.get(key).getNzyglPoints(), key);
|
|
@@ -773,7 +773,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
cfms = new ProEconCurveFittingSub();
|
|
|
cfms.setWindturbineId(key);
|
|
|
cfms.setSpeed(String.valueOf(speed));
|
|
|
- cfms.setRecordDate(current);
|
|
|
+ cfms.setRecordDate(DateUtils.truncate(current));
|
|
|
|
|
|
|
|
|
cfms.setDeviationRate1(pcl2(windMap.get(key).getRsjglPoints(), windMap.get(key).getRzyglPoints(), modelpower, speed));
|
|
@@ -812,12 +812,13 @@ public class PowerCurveFittingByTimeService {
|
|
|
}
|
|
|
|
|
|
cfmsmonth = new ProEconCurveFittMonthSub();
|
|
|
+
|
|
|
cfmsmonth.setWindturbineId(key);
|
|
|
cfmsmonth.setYear(stringyear);
|
|
|
cfmsmonth.setMonth(stringmonth);
|
|
|
cfmsmonth.setSpeed(String.valueOf(speed));
|
|
|
|
|
|
- proEconCurveFittMonthSubService.save(cfmsmonth);
|
|
|
+
|
|
|
|
|
|
//月---实际/最优
|
|
|
cfmsmonth.setDeviationRate1(pcl2(windMap.get(key).getYsjglPoints(), windMap.get(key).getYzyglPoints(), modelpower, speed));
|
|
@@ -883,7 +884,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
private void insertPoints(Date current, List<PointVo> sjglls, List<PointVo> zyglls, String windturbineId) {
|
|
|
|
|
|
//*********************************************当日曲线偏差记录**********************************************************/
|
|
|
- List<Integer> wtcfidls = proEconWtCurveFittingService.list().stream().filter(i -> i.getWindturbineId().equals(windturbineId) &&
|
|
|
+ List<Long> wtcfidls = proEconWtCurveFittingService.list().stream().filter(i -> i.getWindturbineId().equals(windturbineId) &&
|
|
|
i.getRecordDate().compareTo(current) == 0).map(ProEconWtCurveFitting::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
@@ -902,10 +903,10 @@ public class PowerCurveFittingByTimeService {
|
|
|
continue;
|
|
|
// item.SPEED = Double.Truncate(pointsF2[i].X);
|
|
|
} else {
|
|
|
- boolean l = String.valueOf(sjglls.get(i).getX()).contains(".");
|
|
|
- if (l) {
|
|
|
- continue;
|
|
|
- }
|
|
|
+// boolean l = String.valueOf(sjglls.get(i).getX()).contains(".");
|
|
|
+// if (l) {
|
|
|
+// continue;
|
|
|
+// }
|
|
|
item.setSpeed(sjglls.get(i).getX());
|
|
|
|
|
|
}
|
|
@@ -913,7 +914,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
|
|
|
item.setActualPower(sjglls.get(i).getY());
|
|
|
item.setOptimalPower(zyglls.get(i).getY());
|
|
|
- item.setRecordDate(current);
|
|
|
+ item.setRecordDate(DateUtils.truncate(current));
|
|
|
|
|
|
proEconWtCurveFittingService.save(item);
|
|
|
|
|
@@ -964,7 +965,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
private void insertPoints(String year, String month, List<PointVo> sjglls, List<PointVo> zyglls, String windturbineId) {
|
|
|
|
|
|
//*********************************************当月曲线偏差记录**********************************************************/
|
|
|
- List<Integer> wtcfmmonthidls = proEconWtCurveFittingMonthService.list().stream().filter(i -> i.getWindturbineId().equals(windturbineId) &&
|
|
|
+ List<Long> wtcfmmonthidls = proEconWtCurveFittingMonthService.list().stream().filter(i -> i.getWindturbineId().equals(windturbineId) &&
|
|
|
i.getYear().equals(year) && i.getMonth().equals(month)).map(ProEconWtCurveFittingMonth::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
@@ -1038,7 +1039,7 @@ public class PowerCurveFittingByTimeService {
|
|
|
|
|
|
private void insertPoints(String year, List<PointVo> sjglls, List<PointVo> zyglls, String windturbineId) {
|
|
|
//*********************************************当年曲线偏差记录**********************************************************/
|
|
|
- List<Integer> wtcfmyearidls = proEconWtCurveFittingYearService.list().stream().filter(i -> i.getWindturbineId().equals(windturbineId) &&
|
|
|
+ List<Long> wtcfmyearidls = proEconWtCurveFittingYearService.list().stream().filter(i -> i.getWindturbineId().equals(windturbineId) &&
|
|
|
i.getYear().equals(year)).map(ProEconWtCurveFittingYear::getId).collect(Collectors.toList());
|
|
|
|
|
|
for (int i = 0; i < wtcfmyearidls.size(); i++) {
|
|
@@ -1284,90 +1285,90 @@ public class PowerCurveFittingByTimeService {
|
|
|
|
|
|
//todo-sl 添加数据筛选
|
|
|
private boolean filterData(PointData gl, PointData fs, PointData zt, double maxvalue, String windturbineId) throws Exception {
|
|
|
- if (StringUtils.notEmp(gl)) {
|
|
|
- //判定功率是否超过最大值
|
|
|
- if (gl.getPointValueInDouble() > maxvalue) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (StringUtils.notEmp(fs)) {
|
|
|
- //判定功率是否超过最大值
|
|
|
- if (gl.getPointValueInDouble() > 25) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //判定状态不为运行的进行过滤
|
|
|
- if (zt.getPointValueInDouble() != 2) {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //设置时间为10分钟前,10钟前有停机事件数据进行过滤
|
|
|
- Calendar c = Calendar.getInstance();
|
|
|
- c.setTimeInMillis(zt.getPointTime());
|
|
|
- Date end = c.getTime();
|
|
|
- c.add(Calendar.MINUTE, -10);
|
|
|
- Date bedin = c.getTime();
|
|
|
- List<PointData> points = edosUtil.getHistoryDatasSnap(zt.getEdnaId(), bedin.getTime() / 1000, end.getTime() / 1000);
|
|
|
- if (!points.isEmpty()) {
|
|
|
- for (PointData p : points) {
|
|
|
- if (p.getPointValueInDouble() == 4) {
|
|
|
-
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- //设置时间为10分钟后,运行后10分钟数据进行过滤
|
|
|
- c = Calendar.getInstance();
|
|
|
- c.setTimeInMillis(zt.getPointTime());
|
|
|
- bedin = c.getTime();
|
|
|
- c.add(Calendar.MINUTE, 10);
|
|
|
- end = c.getTime();
|
|
|
- points = edosUtil.getHistoryDatasSnap(zt.getEdnaId(), bedin.getTime() / 1000, end.getTime() / 1000);
|
|
|
- if (!points.isEmpty()) {
|
|
|
- for (PointData p : points) {
|
|
|
- if (p.getPointValueInDouble() != 2) {
|
|
|
- return false;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
|
|
|
- Map<String, ProBasicEquipmentPoint> wtpointmap = wtpAimap.get(windturbineId);
|
|
|
- //与保证功率进行对比,偏差大于25%的进行过滤
|
|
|
- List<String> pointid = new ArrayList<>();
|
|
|
-
|
|
|
- pointid.add(wtpointmap.get(ContantXk.BZGL).getNemCode());
|
|
|
- List<PointData> value = edosUtil.getHistMatrix(pointid, gl.getPointTime() / 1000);
|
|
|
-
|
|
|
-
|
|
|
- if (null != value && value.size() > 0) {
|
|
|
- double bzgl = value.get(0).getPointValueInDouble();
|
|
|
- double sjgl = gl.getPointValueInDouble();
|
|
|
-
|
|
|
- double temp = Math.abs(sjgl - bzgl);
|
|
|
- if (temp > sjgl * 0.25) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- //欠发状态大于2过滤掉
|
|
|
- pointid = new ArrayList<>();
|
|
|
-
|
|
|
- pointid.add(wtpointmap.get(ContantXk.LSQFZT).getNemCode());
|
|
|
- value = edosUtil.getHistMatrix(pointid, gl.getPointTime() / 1000);
|
|
|
- if (null != value && value.size() > 0) {
|
|
|
- double qfzt = value.get(0).getPointValueInDouble();
|
|
|
-
|
|
|
- return !(qfzt > 2);
|
|
|
- }
|
|
|
+// if (StringUtils.notEmp(gl)) {
|
|
|
+// //判定功率是否超过最大值
|
|
|
+// if (gl.getPointValueInDouble() > maxvalue) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (StringUtils.notEmp(fs)) {
|
|
|
+// //判定功率是否超过最大值
|
|
|
+// if (fs.getPointValueInDouble() > 25) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// //判定状态不为运行的进行过滤
|
|
|
+// if (zt.getPointValueInDouble() != 2) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+//
|
|
|
+//
|
|
|
+// //设置时间为10分钟前,10钟前有停机事件数据进行过滤
|
|
|
+// Calendar c = Calendar.getInstance();
|
|
|
+// c.setTimeInMillis(zt.getPointTime());
|
|
|
+// Date end = c.getTime();
|
|
|
+// c.add(Calendar.MINUTE, -10);
|
|
|
+// Date bedin = c.getTime();
|
|
|
+// List<PointData> points = edosUtil.getHistoryDatasSnap(zt.getEdnaId(), bedin.getTime() / 1000, end.getTime() / 1000);
|
|
|
+// if (!points.isEmpty()) {
|
|
|
+// for (PointData p : points) {
|
|
|
+// if (p.getPointValueInDouble() == 4) {
|
|
|
+//
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// //设置时间为10分钟后,运行后10分钟数据进行过滤
|
|
|
+// c = Calendar.getInstance();
|
|
|
+// c.setTimeInMillis(zt.getPointTime());
|
|
|
+// bedin = c.getTime();
|
|
|
+// c.add(Calendar.MINUTE, 10);
|
|
|
+// end = c.getTime();
|
|
|
+// points = edosUtil.getHistoryDatasSnap(zt.getEdnaId(), bedin.getTime() / 1000, end.getTime() / 1000);
|
|
|
+// if (!points.isEmpty()) {
|
|
|
+// for (PointData p : points) {
|
|
|
+// if (p.getPointValueInDouble() != 2) {
|
|
|
+// return false;
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+// Map<String, Map<String, ProBasicEquipmentPoint>> wtpAimap = CacheContext.wtpAimap;
|
|
|
+// Map<String, ProBasicEquipmentPoint> wtpointmap = wtpAimap.get(windturbineId);
|
|
|
+// //与保证功率进行对比,偏差大于25%的进行过滤
|
|
|
+// List<String> pointid = new ArrayList<>();
|
|
|
+//
|
|
|
+// pointid.add(wtpointmap.get(ContantXk.BZGL).getNemCode());
|
|
|
+// List<PointData> value = edosUtil.getHistMatrix(pointid, gl.getPointTime() / 1000);
|
|
|
+//
|
|
|
+//
|
|
|
+// if (null != value && value.size() > 0) {
|
|
|
+// double bzgl = value.get(0).getPointValueInDouble();
|
|
|
+// double sjgl = gl.getPointValueInDouble();
|
|
|
+//
|
|
|
+// double temp = Math.abs(sjgl - bzgl);
|
|
|
+// if (temp > sjgl * 0.25) {
|
|
|
+// return false;
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// //欠发状态大于2过滤掉
|
|
|
+// pointid = new ArrayList<>();
|
|
|
+//
|
|
|
+// pointid.add(wtpointmap.get(ContantXk.LSQFZT).getNemCode());
|
|
|
+// value = edosUtil.getHistMatrix(pointid, gl.getPointTime() / 1000);
|
|
|
+// if (null != value && value.size() > 0) {
|
|
|
+// double qfzt = value.get(0).getPointValueInDouble();
|
|
|
+//
|
|
|
+// return !(qfzt > 2);
|
|
|
+// }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -1408,14 +1409,14 @@ public class PowerCurveFittingByTimeService {
|
|
|
List<PointData> yArray = glpoints.stream().filter(it -> it.getPointTime().compareTo(fspoints.get(finalI1).getPointTime()) == 0).collect(Collectors.toList());
|
|
|
if (yArray.size() > 0) {
|
|
|
|
|
|
- y = yArray.get(i).getPointValueInDouble();
|
|
|
+ y = yArray.get(0).getPointValueInDouble();
|
|
|
}
|
|
|
|
|
|
int finalI = i;
|
|
|
yArray = ztpoints.stream().filter(it -> it.getPointTime().compareTo(fspoints.get(finalI).getPointTime()) == 0).collect(Collectors.toList());
|
|
|
if (yArray.size() > 0) {
|
|
|
|
|
|
- z = yArray.get(i).getPointValueInDouble();
|
|
|
+ z = yArray.get(0).getPointValueInDouble();
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1524,6 +1525,11 @@ public class PowerCurveFittingByTimeService {
|
|
|
sjglnhpoints.add(new PointfVo(0.0, 0.0));
|
|
|
|
|
|
sjglnhpoints = sjglnhpoints.stream().filter(it -> it.getX() >= 3).sorted(Comparator.comparing(PointfVo::getX)).collect(Collectors.toList());
|
|
|
+ if (sjglnhpoints.stream().min(Comparator.comparing(PointfVo::getX)).isPresent()) {
|
|
|
+ double Xmax = sjglnhpoints.stream().max(Comparator.comparing(PointfVo::getX)).get().getX();
|
|
|
+ double Ymax = sjglnhpoints.stream().max(Comparator.comparing(PointfVo::getX)).get().getY();
|
|
|
+ System.out.println("");
|
|
|
+ }
|
|
|
|
|
|
List<PointVo> temp = LineUtil.buildLine(sjglnhpoints.stream().mapToDouble(PointfVo::getX).toArray(), sjglnhpoints.stream().mapToDouble(PointfVo::getY).toArray(), sjglnhpoints.size(), dimension, scale);
|
|
|
|