|
|
@@ -885,4 +885,659 @@
|
|
|
// //powerLossesService.saveBatch(losses);
|
|
|
// ////powerLossesService.saveBatch(turbineLosses);
|
|
|
// //turbineInfoDayService.saveOrUpdateBatch(dayMap.values());
|
|
|
-//}
|
|
|
+//}
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+public void calcTurbine5s_ha(DateTime begin, DateTime end, double ssxs) {
|
|
|
+ //风速
|
|
|
+ List<PointInfo> entityFs = getEntity("AI066", "turbine");
|
|
|
+ getSnapDataByEntity(entityFs, begin, end, 15);
|
|
|
+ Map<String, Map<String, List<PointData>>> fsMapMap = entityFs.stream().collect(Collectors.groupingBy(PointInfo::getStationId,
|
|
|
+ Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+ //功率
|
|
|
+ List<PointInfo> entityGl = getEntity("AI114", "turbine");
|
|
|
+ getSnapDataByEntity(entityGl, begin, end, 15);
|
|
|
+ Map<String, Map<String, List<PointData>>> glMapMap = entityGl.stream().collect(Collectors.groupingBy(PointInfo::getStationId,
|
|
|
+ Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+ //状态
|
|
|
+ List<PointInfo> ztMapMap = calcTurbineZt(begin, end, entityFs, entityGl);
|
|
|
+ Map<String, Map<String, PointInfo>> ztMapMapInfos = ztMapMap.stream().collect(
|
|
|
+ Collectors.groupingBy(PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+
|
|
|
+ List<PointData> glpdss = entityFs.get(0).getPointDatas();
|
|
|
+ List<Double> zeroList = IntStream.range(0, glpdss.size()).mapToObj(i -> 0.0).collect(Collectors.toList());
|
|
|
+ Map<String, TurbineInfoDay> dayMap = getTurbineinfoMap(begin, entityFs);
|
|
|
+ ztMapMapInfos.forEach((stId, ztMapInfo) -> ztMapInfo.forEach((wtId, ztInfo) -> {
|
|
|
+ //0 待机,1 手动停机,2 正常发电,3 发电降出力,4 故障,5 故障受累,6 检修,7 检修受累,8 限电降出力,
|
|
|
+ // 9 限电停机,10 电网受累,11 环境受累,12 通讯中断,13 设备离线
|
|
|
+ TurbineInfoDay infoDay = dayMap.get(wtId);
|
|
|
+ getXdQx(zeroList, ztInfo, fsMapMap.get(stId).get(wtId), glMapMap.get(stId).get(wtId));
|
|
|
+ Map<String, Double> loss = getTurbinePowerLoss(infoDay.getRfdl(), ztInfo, fsMapMap.get(stId).get(wtId), glMapMap.get(stId).get(wtId));
|
|
|
+ infoDay.setJhjxss(loss.get("jxss") * ssxs);
|
|
|
+ infoDay.setFjhjxss(loss.get("gzss") * ssxs + loss.get("fdjcl") * ssxs + loss.get("sdtj") * ssxs);
|
|
|
+ infoDay.setXdss(loss.get("xdjcl") * ssxs + loss.get("xdtj") * ssxs);
|
|
|
+ infoDay.setSlss(0.0);
|
|
|
+ infoDay.setDjss(loss.get("djss") * ssxs);
|
|
|
+ infoDay.setGzss(loss.get("gzss") * ssxs);
|
|
|
+ infoDay.setXnss(loss.get("xnss") * ssxs + loss.get("djss") * ssxs);
|
|
|
+ infoDay.setLlfdl(infoDay.getRfdl() + infoDay.getJhjxss() + infoDay.getFjhjxss() + infoDay.getXdss() + infoDay.getSlss() + infoDay.getXnss());
|
|
|
+ }));
|
|
|
+ List<Double> collect = zeroList.stream().map(v -> v / 240).collect(Collectors.toList());
|
|
|
+ List<Long> tss = glpdss.stream().map(v -> v.getTs()).collect(Collectors.toList());
|
|
|
+ List<PowerLosses> losses = calcLossPeriods(collect, tss);
|
|
|
+ QueryWrapper<PowerLosses> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("record_date", new Date(begin.getTime()));
|
|
|
+ powerLossesService.remove(queryWrapper);
|
|
|
+ powerLossesService.saveBatch(losses);
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(dayMap.values());
|
|
|
+}*/
|
|
|
+/*
|
|
|
+public void acc(DateTime date) {
|
|
|
+ DateTime end = DateUtil.beginOfDay(date);
|
|
|
+ DateTime begin = DateUtil.offsetDay(end, -1);
|
|
|
+ List<TurbineInfoDay> byDate = getTurbineinfoByDate(begin);
|
|
|
+ byDate.forEach(tid -> {
|
|
|
+ tid.setLlfdl(tid.getRfdl() + tid.getXdss() + tid.getFjhjxss() + tid.getJhjxss() + tid.getXnss());
|
|
|
+ });
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(byDate);
|
|
|
+}*/
|
|
|
+/*public void calcTurbine5s2SameDay() {
|
|
|
+ DateTime time = DateUtil.date();
|
|
|
+ //date当天零点
|
|
|
+ DateTime time0 = DateUtil.beginOfDay(time);
|
|
|
+ //风速
|
|
|
+ List<PointInfo> entityFs = getEntity("AI066", "turbine");
|
|
|
+ //功率
|
|
|
+ List<PointInfo> entityGl = getEntity("AI114", "turbine");
|
|
|
+ //状态
|
|
|
+ List<PointInfo> entityZT = getEntity("MXZT", "turbine");
|
|
|
+ Map<String, Map<String, PointInfo>> ztMapMapInfos = entityZT.stream().collect(Collectors.groupingBy(PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+ Map<String, TurbineInfoDay> dayMap = getTurbineinfoMap(time0, entityFs);
|
|
|
+ List<TurbineInfoDay> infoDays = new ArrayList<>();
|
|
|
+ Map<String, Map<String, PointInfo>> fsMapMap = entityFs.stream().collect(Collectors.groupingBy(PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+ Map<String, Map<String, PointInfo>> glMapMap = entityGl.stream().collect(Collectors.groupingBy(PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+
|
|
|
+ ztMapMapInfos.forEach((stId, ztMapInfo) -> ztMapInfo.forEach((wtId, ztInfo) -> {
|
|
|
+ //0 待机,1 手动停机,2 正常发电,3 发电降出力,4 故障,5 故障受累,6 检修,7 检修受累,8 限电降出力,
|
|
|
+ // 9 限电停机,10 电网受累,11 环境受累,12 通讯中断,13 设备离线
|
|
|
+ TurbineInfoDay infoDay = dayMap.get(wtId);
|
|
|
+ PointInfo fspi = fsMapMap.get(stId).get(wtId);
|
|
|
+ PointInfo glpi = glMapMap.get(stId).get(wtId);
|
|
|
+ getSnapDataByEntity(fspi, time0, time, 15);
|
|
|
+ getSnapDataByEntity(glpi, time0, time, 15);
|
|
|
+ getSnapDataByEntity(ztInfo, taosUri(), time0, time, 15);
|
|
|
+ List<PointData> fsData = fspi.getPointDatas();
|
|
|
+ fsData = fsData.stream().peek(pd -> pd.setDoubleValue(NumberUtil.round(pd.getValue() > 25 ? 25.0 : pd.getValue(), 2).doubleValue())).collect(Collectors.toList());
|
|
|
+ Map<String, Double> loss = getTurbinePowerLoss(infoDay.getRfdl(), ztInfo, fsData, glpi.getPointDatas());
|
|
|
+ infoDay.setJhjxss(loss.get("jxss") + loss.get("sdtj"));
|
|
|
+ infoDay.setFjhjxss(loss.get("gzss") + loss.get("fdjcl"));
|
|
|
+ infoDay.setXdss(loss.get("xdjcl") + loss.get("xdtj"));
|
|
|
+ infoDay.setSlss(0.0);
|
|
|
+ infoDay.setDjss(loss.get("djss"));
|
|
|
+ infoDay.setGzss(loss.get("gzss"));
|
|
|
+ infoDay.setXnss(loss.get("xnss") + loss.get("djss"));
|
|
|
+ //if (infoDay.getRfdl() == 0) {
|
|
|
+ // infoDay.setXnss(0.0);
|
|
|
+ //} else {
|
|
|
+ // infoDay.setXnss(loss.get("xnss"));
|
|
|
+ //}
|
|
|
+ infoDay.setLlfdl(infoDay.getRfdl() + infoDay.getJhjxss() + infoDay.getFjhjxss() + infoDay.getXdss() + infoDay.getSlss() + infoDay.getXnss());
|
|
|
+ infoDays.add(infoDay);
|
|
|
+ }));
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(infoDays);
|
|
|
+}*/
|
|
|
+ /*public void calcTurbine5s(Date date) {
|
|
|
+ //date当天零点
|
|
|
+ DateTime time = DateUtil.beginOfDay(date);
|
|
|
+ //date昨天零点
|
|
|
+ DateTime time0 = DateUtil.offsetDay(time, -1);
|
|
|
+
|
|
|
+ //状态
|
|
|
+ List<PointInfo> entityZt = getEntity("MXZT", "turbine");
|
|
|
+ //功率
|
|
|
+ Map<String, String> collectGl = getEntityMap("AI114", "turbine");
|
|
|
+ //风速
|
|
|
+ Map<String, String> collectFs = getEntityMap("AI066", "turbine");
|
|
|
+
|
|
|
+ Map<String, TurbineInfoDay> dayMap = getTurbineinfoMap(time0, entityZt);
|
|
|
+
|
|
|
+ String tbId;
|
|
|
+ TurbineInfoDay infoDay;
|
|
|
+ List<TurbineInfoDay> infoDays = new ArrayList<>();
|
|
|
+ for (PointInfo info : entityZt) {
|
|
|
+ tbId = info.getTurbineId();
|
|
|
+ List<PointData> snapZt = adapter.getHistorySnap(taosUri(), info.getPointKey(), time0.getTime(), time.getTime(), 60);
|
|
|
+ //0 待机,1 手动停机,2 正常发电,3 发电降出力,4 故障,5 故障受累,6 检修,7 检修受累,8 限电降出力,
|
|
|
+ // 9 限电停机,10 电网受累,11 环境受累,12 通讯中断,13 设备离线
|
|
|
+
|
|
|
+ List<DoubleStatData> statGl = adapter.getHistoryStat2(goldenUri(), collectGl.get(tbId), time0.getTime(), time.getTime(), 60);
|
|
|
+ List<DoubleStatData> statFs = adapter.getHistoryStat2(goldenUri(), collectFs.get(tbId), time0.getTime(), time.getTime(), 60);
|
|
|
+ List<PointData> glList = statGl.stream().map(DoubleStatData::getAvg).collect(Collectors.toList());
|
|
|
+ List<PointData> fsList = statFs.stream().map(DoubleStatData::getAvg)
|
|
|
+ .peek(fs -> {
|
|
|
+ if (fs.getValue() < 25) {
|
|
|
+ fs.setDoubleValue(NumberUtil.round(fs.getValue(), 2).doubleValue());
|
|
|
+ } else {
|
|
|
+ fs.setDoubleValue(25.0);
|
|
|
+ }
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+// Map<String, Double> loss = getTurbinePowerLoss(snapZt, fsList, tbId, glList);
|
|
|
+ Map<String, Double> loss = new HashMap<>();
|
|
|
+
|
|
|
+ infoDay = dayMap.get(tbId);
|
|
|
+ infoDay.setJhjxss(loss.get("jxss") + loss.get("sdtj"));
|
|
|
+ infoDay.setFjhjxss(loss.get("gzss") + loss.get("djss") + loss.get("fdjcl"));
|
|
|
+ infoDay.setXdss(loss.get("xdjcl") + loss.get("xdtj"));
|
|
|
+ infoDay.setSlss(0.0);
|
|
|
+ if (infoDay.getRfdl() == 0) {
|
|
|
+ infoDay.setXnss(0.0);
|
|
|
+ } else {
|
|
|
+ infoDay.setXnss(loss.get("xnss") * 0.1);
|
|
|
+ }
|
|
|
+ infoDay.setLlfdl(infoDay.getRfdl() + infoDay.getJhjxss() + infoDay.getFjhjxss() +
|
|
|
+ infoDay.getXdss() + infoDay.getSlss() + infoDay.getXnss());
|
|
|
+ infoDays.add(infoDay);
|
|
|
+ }
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(infoDays);
|
|
|
+ }*/
|
|
|
+/*
|
|
|
+public void calcTurbine5s2(Date date) {
|
|
|
+ //date当天零点
|
|
|
+ DateTime time = DateUtil.beginOfDay(date);
|
|
|
+ //date昨天零点
|
|
|
+ DateTime time0 = DateUtil.offsetDay(time, -1);
|
|
|
+ //风速
|
|
|
+ List<PointInfo> entityFs = getEntity("AI066", "turbine");
|
|
|
+ //功率
|
|
|
+ List<PointInfo> entityGl = getEntity("AI114", "turbine");
|
|
|
+ getSnapDataByEntity(entityFs, time0, time, 15);
|
|
|
+ getSnapDataByEntity(entityGl, time0, time, 15);
|
|
|
+
|
|
|
+ List<PointInfo> ztMapMap = calcTurbineZt(time0, time, entityFs, entityGl);
|
|
|
+ Map<String, Map<String, PointInfo>> ztMapMapInfos = ztMapMap.stream().collect(
|
|
|
+ Collectors.groupingBy(PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+ Map<String, TurbineInfoDay> dayMap = getTurbineinfoMap(time0, entityFs);
|
|
|
+
|
|
|
+ List<TurbineInfoDay> infoDays = new ArrayList<>();
|
|
|
+ Map<String, Map<String, List<PointData>>> fsMapMap = entityFs.stream().collect(Collectors.groupingBy(PointInfo::getStationId,
|
|
|
+ Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+ Map<String, Map<String, List<PointData>>> glMapMap = entityGl.stream().collect(Collectors.groupingBy(PointInfo::getStationId,
|
|
|
+ Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+
|
|
|
+ ztMapMapInfos.forEach((stId, ztMapInfo) -> ztMapInfo.forEach((wtId, ztInfo) -> {
|
|
|
+ //0 待机,1 手动停机,2 正常发电,3 发电降出力,4 故障,5 故障受累,6 检修,7 检修受累,8 限电降出力,
|
|
|
+ // 9 限电停机,10 电网受累,11 环境受累,12 通讯中断,13 设备离线
|
|
|
+ TurbineInfoDay infoDay = dayMap.get(wtId);
|
|
|
+ Map<String, Double> loss = getTurbinePowerLoss(infoDay.getRfdl(), ztMapMapInfos.get(stId).get(wtId), fsMapMap.get(stId).get(wtId), glMapMap.get(stId).get(wtId));
|
|
|
+ infoDay.setJhjxss(loss.get("jxss") + loss.get("sdtj"));
|
|
|
+ infoDay.setFjhjxss(loss.get("gzss") + loss.get("fdjcl"));
|
|
|
+ infoDay.setXdss(loss.get("xdjcl") + loss.get("xdtj"));
|
|
|
+ infoDay.setSlss(0.0);
|
|
|
+ infoDay.setDjss(loss.get("djss"));
|
|
|
+ infoDay.setGzss(loss.get("gzss"));
|
|
|
+ infoDay.setXnss(loss.get("xnss") + loss.get("djss"));
|
|
|
+ //if (infoDay.getRfdl() == 0) {
|
|
|
+ // infoDay.setXnss(0.0);
|
|
|
+ //} else {
|
|
|
+ // infoDay.setXnss(loss.get("xnss"));
|
|
|
+ //}
|
|
|
+ infoDay.setLlfdl(infoDay.getRfdl() + infoDay.getJhjxss() + infoDay.getFjhjxss() +
|
|
|
+ infoDay.getXdss() + infoDay.getSlss() + infoDay.getXnss());
|
|
|
+ infoDays.add(infoDay);
|
|
|
+ }));
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(infoDays);
|
|
|
+}*/
|
|
|
+/*
|
|
|
+public void calcTurbine5sSameDay(DateTime begin, DateTime end) {
|
|
|
+ //风速
|
|
|
+ List<PointInfo> entityFs = getEntity("AI066", "turbine");
|
|
|
+ getSnapDataByEntity(entityFs, begin, end, 15);
|
|
|
+ Map<String, Map<String, List<PointData>>> fsMapMap = entityFs.stream().collect(Collectors.groupingBy
|
|
|
+ (PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+ //功率
|
|
|
+ List<PointInfo> entityGl = getEntity("AI114", "turbine");
|
|
|
+ getSnapDataByEntity(entityGl, begin, end, 15);
|
|
|
+ Map<String, Map<String, List<PointData>>> glMapMap = entityGl.stream().collect(Collectors.groupingBy
|
|
|
+ (PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+ //状态
|
|
|
+ List<PointInfo> ztMapMap = calcTurbineZt(begin, end, entityFs, entityGl);
|
|
|
+ Map<String, Map<String, PointInfo>> ztMapMapInfos = ztMapMap.stream().collect(Collectors.groupingBy
|
|
|
+ (PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+ //AGC
|
|
|
+ List<PointInfo> entityAgc = getEntity("AGC002", "booster");
|
|
|
+ getSnapDataByEntity(entityAgc, begin, end, 15);
|
|
|
+ //出线
|
|
|
+ List<PointInfo> entityCx = getEntity("AGC020", "booster");
|
|
|
+ getSnapDataByEntity(entityCx, begin, end, 15);
|
|
|
+ //可用功率
|
|
|
+ List<PointData> kyglpds = adapter.getHistorySnap(goldenUri(), "区域集控.惠安风场.升压站.中车风机设备信息.可用发电功率", begin.getTime(), end.getTime(), 15);
|
|
|
+ List<PointData> kyglpds2 = adapter.getHistorySnap(goldenUri(), "区域集控.惠安风场.升压站.联合动力能管信息.可用发电功率", begin.getTime(), end.getTime(), 15);
|
|
|
+ CollUtil.forEach(kyglpds, (pd, i) -> pd.setDoubleValue(pd.getValue() + kyglpds2.get(i).getValue()));
|
|
|
+ //信息表
|
|
|
+ Map<String, TurbineInfoMin> dayMap = getTurbineinfoByMinMap(begin, entityFs);
|
|
|
+ List<TurbineInfoMin> infoDays = new ArrayList<>();
|
|
|
+ ztMapMapInfos.forEach((stId, ztMapInfo) -> ztMapInfo.forEach((wtId, ztInfo) -> {
|
|
|
+ //0 待机,1 手动停机,2 正常发电,3 发电降出力,4 故障,5 故障受累,6 检修,7 检修受累,8 限电降出力,
|
|
|
+ // 9 限电停机,10 电网受累,11 环境受累,12 通讯中断,13 设备离线
|
|
|
+ TurbineInfoMin infoDay = dayMap.get(wtId);
|
|
|
+ Map<String, Double> loss = getTurbinePowerLoss(ztMapMapInfos.get(stId).get(wtId), fsMapMap.get(stId).get(wtId), glMapMap.get(stId).get(wtId));
|
|
|
+ infoDay.setJhjxss(loss.get("jxss") + loss.get("sdtj"));
|
|
|
+ infoDay.setFjhjxss(loss.get("gzss") + loss.get("fdjcl"));
|
|
|
+ infoDay.setXdss(loss.get("xdjcl") + loss.get("xdtj"));
|
|
|
+ infoDay.setSlss(0.0);
|
|
|
+ infoDay.setDjss(loss.get("djss"));
|
|
|
+ infoDay.setGzss(loss.get("gzss"));
|
|
|
+ infoDay.setXnss(loss.get("xnss") + loss.get("djss"));
|
|
|
+ infoDay.setLlfdl(infoDay.getJhjxss() + infoDay.getFjhjxss() +
|
|
|
+ infoDay.getXdss() + infoDay.getSlss() + infoDay.getXnss());
|
|
|
+ infoDays.add(infoDay);
|
|
|
+ }));
|
|
|
+ turbineInfoMinService.saveOrUpdateBatch(infoDays);
|
|
|
+}*/
|
|
|
+/*
|
|
|
+public void calcTurbine5s2_ha(Date date) {
|
|
|
+ //date当天零点
|
|
|
+ DateTime time = DateUtil.beginOfDay(date);
|
|
|
+ //date昨天零点
|
|
|
+ DateTime time0 = DateUtil.offsetDay(time, -1);
|
|
|
+ //风速
|
|
|
+ List<PointInfo> entityFs = getEntity("AI066", "turbine");
|
|
|
+ //功率
|
|
|
+ List<PointInfo> entityGl = getEntity("AI114", "turbine");
|
|
|
+ getSnapDataByEntity(entityFs, time0, time, 15);
|
|
|
+ getSnapDataByEntity(entityGl, time0, time, 15);
|
|
|
+
|
|
|
+ List<PointData> glpdss = entityGl.get(0).getPointDatas();
|
|
|
+ TimeSeriesChart example = new TimeSeriesChart("分析限电");
|
|
|
+ List<Double> zeroList = IntStream.range(0, glpdss.size()).mapToObj(i -> 0.0).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<PointInfo> ztMapMap = calcTurbineZtC(example, time0, time, entityFs, entityGl);
|
|
|
+ //List<PointInfo> ztMapMap = calcTurbineZt(time0, time, entityFs, entityGl);
|
|
|
+ Map<String, Map<String, PointInfo>> ztMapMapInfos = ztMapMap.stream().collect(
|
|
|
+ Collectors.groupingBy(PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+ Map<String, TurbineInfoDay> dayMap = getTurbineinfoMap(time0, entityFs);
|
|
|
+
|
|
|
+ List<TurbineInfoDay> infoDays = new ArrayList<>();
|
|
|
+ Map<String, Map<String, List<PointData>>> fsMapMap = entityFs.stream().collect(Collectors.groupingBy(PointInfo::getStationId,
|
|
|
+ Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+ Map<String, Map<String, List<PointData>>> glMapMap = entityGl.stream().collect(Collectors.groupingBy(PointInfo::getStationId,
|
|
|
+ Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas)));
|
|
|
+
|
|
|
+ ztMapMapInfos.forEach((stId, ztMapInfo) -> ztMapInfo.forEach((wtId, ztInfo) -> {
|
|
|
+ //0 待机,1 手动停机,2 正常发电,3 发电降出力,4 故障,5 故障受累,6 检修,7 检修受累,8 限电降出力,
|
|
|
+ // 9 限电停机,10 电网受累,11 环境受累,12 通讯中断,13 设备离线
|
|
|
+ TurbineInfoDay infoDay = dayMap.get(wtId);
|
|
|
+ //getXdQx(zeroList, ztMapMapInfos.get(stId).get(wtId), fsMapMap.get(stId).get(wtId), glMapMap.get(stId).get(wtId));
|
|
|
+ Map<String, Double> loss = getTurbinePowerLoss(infoDay.getRfdl(), ztMapMapInfos.get(stId).get(wtId), fsMapMap.get(stId).get(wtId), glMapMap.get(stId).get(wtId));
|
|
|
+ infoDay.setJhjxss(loss.get("jxss") / 10 + loss.get("sdtj") / 10);
|
|
|
+ infoDay.setFjhjxss(loss.get("gzss") / 10 + loss.get("fdjcl") / 10);
|
|
|
+ infoDay.setXdss(loss.get("xdjcl") / 10 + loss.get("xdtj") / 10);
|
|
|
+ infoDay.setSlss(0.0);
|
|
|
+ infoDay.setDjss(loss.get("djss") / 10);
|
|
|
+ infoDay.setGzss(loss.get("gzss") / 10);
|
|
|
+ infoDay.setXnss(loss.get("xnss") / 10 + loss.get("djss") / 10);
|
|
|
+ //if (infoDay.getRfdl() == 0) {
|
|
|
+ // infoDay.setXnss(0.0);
|
|
|
+ //} else {
|
|
|
+ // infoDay.setXnss(loss.get("xnss"));
|
|
|
+ //}
|
|
|
+ infoDay.setLlfdl(infoDay.getRfdl() + infoDay.getJhjxss() + infoDay.getFjhjxss() +
|
|
|
+ infoDay.getXdss() + infoDay.getSlss() + infoDay.getXnss());
|
|
|
+ infoDays.add(infoDay);
|
|
|
+ }));
|
|
|
+
|
|
|
+ XYSeries seriesXdl = new XYSeries("限电电量");
|
|
|
+ for (int i = 0; i < glpdss.size(); i++) {
|
|
|
+ long ts = glpdss.get(i).getTs();
|
|
|
+ //seriesXdl.add(calcTime(ts),zeroList.get(i)*1000/2400);
|
|
|
+ System.out.println(DateUtil.formatDateTime(new Date(ts)) + "," + zeroList.get(i) * 1000 / 2400);
|
|
|
+ }
|
|
|
+ example.add(seriesXdl);
|
|
|
+ example.create();
|
|
|
+
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(infoDays);
|
|
|
+}*/
|
|
|
+/*
|
|
|
+public void calcTurbine5s(DateTime begin, DateTime end, double ssxs, List<PointData> kygl) {
|
|
|
+ //风速
|
|
|
+ List<PointInfo> entityFs = getEntity("AI066", "turbine");
|
|
|
+ getSnapDataByEntity(entityFs, begin, end, 15);
|
|
|
+ Map<String, List<PointData>> fsMap = entityFs.stream().collect(Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas));
|
|
|
+ //功率
|
|
|
+ List<PointInfo> entityGl = getEntity("AI114", "turbine");
|
|
|
+ getSnapDataByEntity(entityGl, begin, end, 15);
|
|
|
+ Map<String, List<PointData>> glMap = entityGl.stream().collect(Collectors.toMap(PointInfo::getTurbineId, PointInfo::getPointDatas));
|
|
|
+ //状态
|
|
|
+ List<PointInfo> ztMapMap = calcTurbineZt(begin, end, entityFs, entityGl);
|
|
|
+ Map<String, Map<String, PointInfo>> ztMapMapInfos = ztMapMap.stream().collect(
|
|
|
+ Collectors.groupingBy(PointInfo::getStationId, Collectors.toMap(PointInfo::getTurbineId, Function.identity())));
|
|
|
+ //发电量
|
|
|
+ List<PointInfo> fdlEntity = getEntity("AI121", "turbine");
|
|
|
+ getSnapDataByEntity(fdlEntity, begin, end, 15);
|
|
|
+ Map<String, PointInfo> fdlMap = fdlEntity.stream().collect(Collectors.toMap(PointInfo::getTurbineId, Function.identity()));
|
|
|
+
|
|
|
+ List<PointData> glpdss = entityGl.get(0).getPointDatas();
|
|
|
+ List<Long> tss = glpdss.stream().map(v -> v.getTs()).collect(Collectors.toList());
|
|
|
+ List<Double> zeroList = IntStream.range(0, glpdss.size()).mapToObj(i -> 0.0).collect(Collectors.toList());
|
|
|
+ List<PointData> tbFsPdList = new ArrayList<>();
|
|
|
+ List<PowerLosses> turbineLosses = new ArrayList<>();
|
|
|
+ Map<String, TurbineInfoDay> dayMap = getTurbineinfoMap(begin, entityFs);
|
|
|
+ ztMapMapInfos.forEach((stId, ztMapInfo) -> ztMapInfo.forEach((wtId, ztInfo) -> {
|
|
|
+ //0 待机,1 手动停机,2 正常发电,3 发电降出力,4 故障,5 故障受累,6 检修,7 检修受累,8 限电降出力,
|
|
|
+ // 9 限电停机,10 电网受累,11 环境受累,12 通讯中断,13 设备离线
|
|
|
+ List<PointData> fsPds = fsMap.get(wtId);
|
|
|
+ TurbineInfoDay infoDay = dayMap.get(wtId);
|
|
|
+ List<Double> turbineZeroList = IntStream.range(0, glpdss.size()).mapToObj(i -> 0.0).collect(Collectors.toList());
|
|
|
+ getXdQx(turbineZeroList, zeroList, ztInfo, fsPds, glMap.get(wtId));
|
|
|
+ Map<String, Double> loss = getTurbinePowerLoss(infoDay.getRfdl(), ztInfo, fsPds, glMap.get(wtId));
|
|
|
+ infoDay.setJhjxss(loss.get("jxss") * ssxs);
|
|
|
+ infoDay.setFjhjxss(loss.get("gzss") * ssxs + loss.get("fdjcl") * ssxs + loss.get("sdtj") * ssxs);
|
|
|
+ infoDay.setXdss(loss.get("xdjcl") * ssxs + loss.get("xdtj") * ssxs);
|
|
|
+ infoDay.setSlss(0.0);
|
|
|
+ infoDay.setDjss(loss.get("djss") * ssxs);
|
|
|
+ infoDay.setGzss(loss.get("gzss") * ssxs);
|
|
|
+ infoDay.setXnss(loss.get("xnss") * ssxs + loss.get("djss") * ssxs);
|
|
|
+ infoDay.setLlfdl(infoDay.getRfdl() + infoDay.getJhjxss() + infoDay.getFjhjxss() + infoDay.getXdss() + infoDay.getSlss() + infoDay.getXnss());
|
|
|
+ //风机限电时段
|
|
|
+ List<Double> collect = turbineZeroList.stream().map(v -> v / 240).collect(Collectors.toList());
|
|
|
+ List<PowerLosses> tblss = calcLossPeriods(collect, tss);
|
|
|
+ PointInfo fdlPis = fdlMap.get(wtId);
|
|
|
+ List<PointData> fdlPds = fdlPis.getPointDatas();
|
|
|
+ for (PowerLosses pl : tblss) {
|
|
|
+ pl.setItem("turbine");
|
|
|
+ pl.setStationId(stId);
|
|
|
+ pl.setTurbineId(wtId);
|
|
|
+ List<PointData> tbXdPdsn = fdlPds.stream().filter(pd -> isTimeIn(pd.getTs(), pl)).collect(Collectors.toList());
|
|
|
+ List<PointData> tbFsPdsn = fsPds.stream().filter(pd -> isTimeIn(pd.getTs(), pl)).collect(Collectors.toList());
|
|
|
+ pl.setFdl(calcHaDl(tbXdPdsn, fdlPis.getCoef()));
|
|
|
+ double pjfs = tbFsPdsn.stream().mapToDouble(pd -> pd.getValue()).average().orElse(0d);
|
|
|
+ pl.setPjfs(pjfs);
|
|
|
+ tbFsPdList.addAll(tbFsPdsn);
|
|
|
+ }
|
|
|
+ turbineLosses.addAll(tblss);
|
|
|
+ }));
|
|
|
+ //场站限电时段
|
|
|
+ List<Double> collect = zeroList.stream().map(v -> v / 240).collect(Collectors.toList());
|
|
|
+ List<PowerLosses> losses = calcLossPeriods(collect, tss);
|
|
|
+ for (PowerLosses loss : losses) {
|
|
|
+ loss.setItem("station");
|
|
|
+ double pjfs = tbFsPdList.stream().filter(pd -> isTimeIn(pd.getTs(), loss)).mapToDouble(pd -> pd.getValue()).average().orElse(0d);
|
|
|
+ loss.setPjfs(pjfs);
|
|
|
+ double fdl = turbineLosses.stream().filter(tl -> isTimeIn(tl, loss)).mapToDouble(PowerLosses::getFdl).sum();
|
|
|
+ loss.setFdl(fdl);
|
|
|
+ }
|
|
|
+ QueryWrapper<PowerLosses> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("record_date", new Date(begin.getTime()));
|
|
|
+ powerLossesService.remove(queryWrapper);
|
|
|
+ powerLossesService.saveBatch(losses);
|
|
|
+ //powerLossesService.saveBatch(turbineLosses);
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(dayMap.values());
|
|
|
+}*/
|
|
|
+
|
|
|
+
|
|
|
+//依赖calcTurbineRfdl、calcTurbineStateMin、calcTurbine5s2
|
|
|
+/*
|
|
|
+
|
|
|
+public void calcTurbineLyxs(Date date) {
|
|
|
+ //date当天零点
|
|
|
+ DateTime time = DateUtil.beginOfDay(date);
|
|
|
+ //date昨天零点
|
|
|
+ DateTime time0 = DateUtil.offsetDay(time, -1);
|
|
|
+ List<TurbineInfoDay> byDate = getTurbineinfoByDate(time0);
|
|
|
+ Map<String, PointInfo> entityAiZt = getEntity("AI422", "state", PointInfo::getTurbineId);
|
|
|
+
|
|
|
+ for (TurbineInfoDay day : byDate) {
|
|
|
+ String tbId = day.getTurbineId();
|
|
|
+ double lyxs = day.getRfdl() / entityAiZt.get(tbId).getSpare2();
|
|
|
+ //double klyl = (24 * 60 - day.getGzMin() - day.getTjMin() - day.getJxMin()) / (24 * 60);
|
|
|
+ double klyl = (24 * 60 - day.getGzMin() - day.getJxMin()) / (24 * 60);
|
|
|
+ double fnlyl = divInfinite(day.getRfdl(), day.getLlfdl());
|
|
|
+ day.setLyxs(lyxs);
|
|
|
+ day.setKlyl(klyl * 100);
|
|
|
+ day.setFnlyl(fnlyl * 100);
|
|
|
+ }
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(byDate);
|
|
|
+}*/
|
|
|
+////场站限电五损
|
|
|
+//public void calcStation5s(DateTime begin, DateTime end) {
|
|
|
+// if (end.equals(DateUtil.beginOfDay(end))) return;
|
|
|
+// //AGC
|
|
|
+// List<PointInfo> entityAgc = CalcCache.pointInfosMap.get("推送-booster-AGC-snap15s");
|
|
|
+// //出线
|
|
|
+// List<PointInfo> entityCx = CalcCache.pointInfosMap.get("推送-booster-出线-snap15s");
|
|
|
+// //可用功率
|
|
|
+// List<PointData> kyglpds = CalcCache.pointDatasMap.get("推送-booster-可用功率-snap15s");
|
|
|
+// PointInfo cxPi = entityCx.get(0);
|
|
|
+// List<PointData> cxPds = cxPi.getPointDatas();
|
|
|
+// List<PointData> czxd = calcStationXd2(entityAgc.get(0), cxPds, kyglpds, 0.01);
|
|
|
+// List<Double> xdl = new ArrayList<>();
|
|
|
+//
|
|
|
+// for (int i = 0; i < cxPds.size(); i++) {
|
|
|
+// double v = kyglpds.get(i).getValue() * 1000 - cxPds.get(i).getValue() * cxPi.getCoef();
|
|
|
+// if (v < 0) v = 0;
|
|
|
+// if (czxd.get(i).isBooleanValue()) {
|
|
|
+// xdl.add(v);
|
|
|
+// } else {
|
|
|
+// xdl.add(0d);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// double sumxdl = xdl.stream().mapToDouble(Double::doubleValue).sum() / 2400000;
|
|
|
+// //adapter.writeHistoryBatch(mqttUri(), getDataForZbs2(end, "区域集控.惠安风场.光耀计算.日限电量", sumxdl, 1));
|
|
|
+//
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.日限电率", sumxdl/tsAdd(sumxdl, "日发电量")*100);
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.月限电率", tsDiv("月限电量",tsAdd("月限电量", "月发电量"))*100);
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.年限电率", tsDiv("年限电量",tsAdd("年限电量", "年发电量"))*100);
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.日限电率", CalcCache.pointDataMap.get("区域集控.惠安风场.光耀计算.日限电率").getValue());
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.月限电率", CalcCache.pointDataMap.get("区域集控.惠安风场.光耀计算.月限电率").getValue());
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.年限电率", CalcCache.pointDataMap.get("区域集控.惠安风场.光耀计算.年限电率").getValue());
|
|
|
+//}
|
|
|
+
|
|
|
+//废弃
|
|
|
+//public void calcStation5s(DateTime begin, DateTime end) {
|
|
|
+// if (end.equals(DateUtil.beginOfDay(end))) return;
|
|
|
+// //AGC
|
|
|
+// List<PointInfo> entityAgc = CalcCache.pointInfosMap.get("推送-booster-AGC-snap15s");
|
|
|
+// //出线
|
|
|
+// List<PointInfo> entityCx = CalcCache.pointInfosMap.get("推送-booster-出线-snap15s");
|
|
|
+// //可用功率
|
|
|
+// List<PointData> kyglpds = CalcCache.pointDatasMap.get("推送-booster-可用功率-snap15s");
|
|
|
+// PointInfo cxPi = entityCx.get(0);
|
|
|
+// List<PointData> cxPds = cxPi.getPointDatas();
|
|
|
+// List<PointData> czxd = calcStationXd2(entityAgc.get(0), cxPds, kyglpds, 0.01);
|
|
|
+// List<Double> xdl = new ArrayList<>();
|
|
|
+//
|
|
|
+// for (int i = 0; i < cxPds.size(); i++) {
|
|
|
+// double v = kyglpds.get(i).getValue() * 1000 - cxPds.get(i).getValue() * cxPi.getCoef();
|
|
|
+// if (v < 0) v = 0;
|
|
|
+// if (czxd.get(i).isBooleanValue()) {
|
|
|
+// xdl.add(v);
|
|
|
+// } else {
|
|
|
+// xdl.add(0d);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// double sumxdl = xdl.stream().mapToDouble(Double::doubleValue).sum() / 2400000;
|
|
|
+// //adapter.writeHistoryBatch(mqttUri(), getDataForZbs2(end, "区域集控.惠安风场.光耀计算.日限电量", sumxdl, 1));
|
|
|
+// getDataForZbs2(end, "区域集控.惠安风场.光耀计算.日限电量", sumxdl, 1);
|
|
|
+//
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.日限电率", sumxdl / tsAdd(sumxdl, "日发电量") * 100);
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.月限电率", tsDiv("月限电量", tsAdd("月限电量", "月发电量")) * 100);
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.年限电率", tsDiv("年限电量", tsAdd("年限电量", "年发电量")) * 100);
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.日限电率", CalcCache.pointDataMap.get("区域集控.惠安风场.光耀计算.日限电率").getValue());
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.月限电率", CalcCache.pointDataMap.get("区域集控.惠安风场.光耀计算.月限电率").getValue());
|
|
|
+// getDataForZb(end, "区域集控.惠安风场.光耀计算.年限电率", CalcCache.pointDataMap.get("区域集控.惠安风场.光耀计算.年限电率").getValue());
|
|
|
+//}
|
|
|
+
|
|
|
+ /*public void calcPowerConsistencyCoefficient(DateTime begin, DateTime end) {
|
|
|
+ final String model1 = "WT2000D121H85";
|
|
|
+ final String model2 = "UP2000-130";
|
|
|
+ final String project1 = "NX_FGS_HAF01_EG";
|
|
|
+ final String project2 = "NX_FGS_HAF02_EG";
|
|
|
+
|
|
|
+ QueryWrapper<TurbineInfoMin> qw = new QueryWrapper<>();
|
|
|
+ qw.between("record_date", begin, end);
|
|
|
+ List<TurbineInfoMin> turMins = turbineInfoMinService.list(qw);
|
|
|
+ Map<String, List<TurbineInfoMin>> wtMap = turMins.stream().collect(Collectors.groupingBy(TurbineInfoMin::getTurbineId));
|
|
|
+
|
|
|
+ //获取 保证功率
|
|
|
+ List<ProBasicModelPowerRd> modelPowerRds = proBasicModelPowerRdService.list();
|
|
|
+ //保证功率 按照机型分组
|
|
|
+ Map<String, List<ProBasicModelPowerRd>> modelMap = modelPowerRds.stream().collect(Collectors.groupingBy(ProBasicModelPowerRd::getModelId));
|
|
|
+
|
|
|
+ //保证功率 建立风速Map 对应表
|
|
|
+ Map<String, Map<Double, ProBasicModelPowerRd>> modelSpeedMap = new HashMap<>();
|
|
|
+ modelMap.forEach((key, value) -> {
|
|
|
+ Map<Double, ProBasicModelPowerRd> mod = value.stream().collect(Collectors.toMap(ProBasicModelPowerRd::getSpeed, Function.identity()));
|
|
|
+ if (model1.equals(key)) {
|
|
|
+ modelSpeedMap.put("WT2000D121H85", mod);
|
|
|
+ } else if (model2.equals(key)) {
|
|
|
+ modelSpeedMap.put("UP2000-130", mod);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Map<Double, ProBasicModelPowerRd> bzglMap = new HashMap<>();
|
|
|
+
|
|
|
+ //风机编号,风速,功率
|
|
|
+ Map<String, Double> glyzxxsMap = new HashMap<>();
|
|
|
+ for (Map.Entry<String, List<TurbineInfoMin>> entry : wtMap.entrySet()) {
|
|
|
+ String key = entry.getKey();
|
|
|
+ List<TurbineInfoMin> value = entry.getValue();
|
|
|
+ List<Double> ls = new ArrayList<>();
|
|
|
+ //单台风机 根据风速分组-风机表
|
|
|
+ Map<Double, List<TurbineInfoMin>> fsMap = value.stream().collect(Collectors.groupingBy(fs -> NumberUtil.round(fs.getPjfs(), 2).doubleValue()));
|
|
|
+
|
|
|
+ //根据风速将 功率求平均值
|
|
|
+ for (Map.Entry<Double, List<TurbineInfoMin>> ent : fsMap.entrySet()) {
|
|
|
+ Double k = ent.getKey();
|
|
|
+ List<TurbineInfoMin> val = ent.getValue();
|
|
|
+ double gl = 0.0;
|
|
|
+ if (val.size() > 1) {
|
|
|
+ DoubleSummaryStatistics glAvg = val.stream().mapToDouble(TurbineInfoMin::getPjgl).summaryStatistics();
|
|
|
+ gl = glAvg.getAverage();
|
|
|
+ } else {
|
|
|
+ gl = val.get(0).getPjgl();
|
|
|
+ }
|
|
|
+
|
|
|
+ //计算 功率一致性系数
|
|
|
+ double glyzxxs = 0.0;
|
|
|
+ if (gl != 0) {
|
|
|
+ if (project1.equals(val.get(0).getProjectId())) {
|
|
|
+ bzglMap = modelSpeedMap.get(model1);
|
|
|
+ } else if (project2.equals(val.get(0).getProjectId())) {
|
|
|
+ bzglMap = modelSpeedMap.get(model2);
|
|
|
+ }
|
|
|
+ if (bzglMap.containsKey(k)) {
|
|
|
+ double bzgl = bzglMap.get(k).getEnsurePower();
|
|
|
+ if (bzgl != 0) {
|
|
|
+ glyzxxs = (gl / bzgl) * 100;
|
|
|
+ if (glyzxxs > 80 && glyzxxs < 120) {
|
|
|
+ ls.add(glyzxxs);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ ls.stream().mapToDouble(Double::doubleValue).average().ifPresent(avg -> glyzxxsMap.put(key, avg));
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取当天风机表
|
|
|
+ List<TurbineInfoDay> byDate = getTurbineinfoByDate(begin);
|
|
|
+ for (TurbineInfoDay info : byDate) {
|
|
|
+ if (glyzxxsMap.containsKey(info.getTurbineId())) {
|
|
|
+ double glyzxxs = glyzxxsMap.get(info.getTurbineId());
|
|
|
+ if (glyzxxs > 100) {
|
|
|
+ glyzxxs = 100;
|
|
|
+ } else if (glyzxxs < 90) {
|
|
|
+ glyzxxs = 90;
|
|
|
+ }
|
|
|
+ info.setGlyzxxs(NumberUtil.round(glyzxxs, 2).doubleValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ turbineInfoDayService.saveOrUpdateBatch(byDate);
|
|
|
+ }*/
|
|
|
+
|
|
|
+
|
|
|
+//废弃
|
|
|
+/*public void calcStationYcglSwdl(Date time) {
|
|
|
+ DateTime beginOfDay = DateUtil.beginOfDay(time);
|
|
|
+ //时间调为整15分钟
|
|
|
+ DateTime time0 = DateUtil.beginOfMinute(time);
|
|
|
+ int i = Math.floorDiv(time0.minute(), 15) * 15;
|
|
|
+ time0.setMinutes(i);
|
|
|
+ //短期
|
|
|
+ long l = DateUtil.between(beginOfDay, time0, DateUnit.MINUTE) / 15 + 48;
|
|
|
+ String dq = "区域集控.惠安风场.WpdToDip.短期1.短期" + l;
|
|
|
+ //FCFGDQDT0015-96-区域集控.惠安风场.WpdToDip.短期1.短期
|
|
|
+ //FCFGCDQ0001-16-区域集控.惠安风场.WpdToDip.超短期.超短期
|
|
|
+ //FCFGLLCDQ0001-24-区域集控.惠安风场.WpdToDip.理论超短期.理论超短期
|
|
|
+ //String tagNames = "区域集控.惠安风场.上网电量,区域集控.惠安风场.短期功率预测,区域集控.惠安风场.超短期功率预测,区域集控.惠安风场.理论超短期功率预测,区域集控.惠安风场.风速,区域集控.惠安风场.并网总有功功率";
|
|
|
+ //String tagNames = "区域集控.惠安风场.上网电量,区域集控.惠安风场.短期功率预测,区域集控.惠安风场.超短期功率预测";
|
|
|
+ DateTime begin = DateUtil.offsetMinute(time0, -15);
|
|
|
+ long dqTime = beginOfDay.getTime();
|
|
|
+ if ((time0.getHours() == 12 && time0.getMinutes() >= 15) || time0.getHours() > 12) dqTime = time.getTime();
|
|
|
+ Map<String, PointData> dqData = adapter.getHistorySection(goldenUri(), dq, dqTime);
|
|
|
+ //出线
|
|
|
+ List<PointInfo> entityCx = getEntity("AGC001", "booster");
|
|
|
+ Map<String, PointInfo> cxData = getRawDataByEntity(entityCx, goldenUri(), begin, time0, PointInfo::getStationId);
|
|
|
+ //超短期
|
|
|
+ DateTime cdqTime = DateUtil.offsetMinute(time0, -115);
|
|
|
+ String cdq = "区域集控.惠安风场.WpdToDip.超短期.超短期8";
|
|
|
+ Map<String, PointData> cdqData = adapter.getHistorySection(goldenUri(), cdq, cdqTime.getTime());
|
|
|
+ //理论超短期
|
|
|
+ String llcdq = "区域集控.惠安风场.WpdToDip.理论超短期.理论超短期8";
|
|
|
+ Map<String, PointData> llcdqData = adapter.getHistorySection(goldenUri(), llcdq, cdqTime.getTime());
|
|
|
+
|
|
|
+ List<StationInfoMin> byDate = getStationinfoByMin(begin, entityCx);
|
|
|
+ for (StationInfoMin day : byDate) {
|
|
|
+ PointInfo cxInfo = cxData.get(day.getStationId());
|
|
|
+ double pjgl = 0, dqycgl = 0, cdqycgl = 0, llcdqycgl = 0;
|
|
|
+ if (cxInfo != null) {
|
|
|
+ pjgl = cxInfo.getPointDatas().stream().mapToDouble(PointData::getValue).average().orElse(0) * cxInfo.getCoef();
|
|
|
+ }
|
|
|
+ day.setPjgl(pjgl);
|
|
|
+ if (!dqData.isEmpty()) {
|
|
|
+ dqycgl = dqData.values().stream().findFirst().get().getValue();
|
|
|
+ }
|
|
|
+ if (!cdqData.isEmpty()) {
|
|
|
+ cdqycgl = cdqData.values().stream().findFirst().get().getValue();
|
|
|
+ }
|
|
|
+ if (!llcdqData.isEmpty()) {
|
|
|
+ llcdqycgl = llcdqData.values().stream().findFirst().get().getValue();
|
|
|
+ }
|
|
|
+ double pjglw = pjgl / 1000;
|
|
|
+ if (pjglw < 0) pjglw = 0;
|
|
|
+ day.setDqycgl(dqycgl);
|
|
|
+ double v1 = Math.abs(pjglw - dqycgl) / dqycgl;
|
|
|
+ if (v1 > 2) {
|
|
|
+ v1 = 0;
|
|
|
+ } else if (v1 > 1) {
|
|
|
+ v1 = 2 - v1;
|
|
|
+ } else {
|
|
|
+ v1 = 1 - v1;
|
|
|
+ }
|
|
|
+ day.setDqycglZql(v1 * 100);
|
|
|
+ day.setCdqycgl(cdqycgl);
|
|
|
+ double v2 = Math.abs(pjglw - cdqycgl) / cdqycgl;
|
|
|
+ if (v2 > 2) {
|
|
|
+ v2 = 0;
|
|
|
+ } else if (v2 > 1) {
|
|
|
+ v2 = 2 - v2;
|
|
|
+ } else {
|
|
|
+ v2 = 1 - v2;
|
|
|
+ }
|
|
|
+ day.setCdqycglZql(v2 * 100);
|
|
|
+ day.setLlcdqycgl(llcdqycgl);
|
|
|
+ double v3 = Math.abs(pjglw - llcdqycgl) / llcdqycgl;
|
|
|
+ if (v3 > 2) {
|
|
|
+ v3 = 0;
|
|
|
+ } else if (v3 > 1) {
|
|
|
+ v3 = 2 - v3;
|
|
|
+ } else {
|
|
|
+ v3 = 1 - v3;
|
|
|
+ }
|
|
|
+ day.setLlcdqycglZql(v3 * 100);
|
|
|
+ }
|
|
|
+ stationInfoMinService.saveOrUpdateBatch(byDate);
|
|
|
+}*/
|