|
@@ -191,7 +191,6 @@ public class NwpService extends BaseService {
|
|
list.sort(Comparator.comparing(WindTowerStatusData::getTime));
|
|
list.sort(Comparator.comparing(WindTowerStatusData::getTime));
|
|
long startTimeLong = startTime;
|
|
long startTimeLong = startTime;
|
|
long endTimeLong = endTime;
|
|
long endTimeLong = endTime;
|
|
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
long timeStep = 900000L;
|
|
long timeStep = 900000L;
|
|
if(startTimeLong%timeStep !=0){
|
|
if(startTimeLong%timeStep !=0){
|
|
startTimeLong = startTimeLong -(startTimeLong%timeStep);
|
|
startTimeLong = startTimeLong -(startTimeLong%timeStep);
|
|
@@ -208,7 +207,6 @@ public class NwpService extends BaseService {
|
|
}
|
|
}
|
|
this.defaultRealReplace(checkList);
|
|
this.defaultRealReplace(checkList);
|
|
|
|
|
|
-
|
|
|
|
ElectricField electricField = this.getElectricField();
|
|
ElectricField electricField = this.getElectricField();
|
|
List<BigDecimal> ws10Collect = new ArrayList<>();
|
|
List<BigDecimal> ws10Collect = new ArrayList<>();
|
|
List<BigDecimal> ws30Collect= new ArrayList<>();
|
|
List<BigDecimal> ws30Collect= new ArrayList<>();
|
|
@@ -238,8 +236,6 @@ public class NwpService extends BaseService {
|
|
datas.put("wsInst90",ws90Collect);
|
|
datas.put("wsInst90",ws90Collect);
|
|
datas.put("wsInst100",ws100Collect);
|
|
datas.put("wsInst100",ws100Collect);
|
|
datas.put("wsInst170",ws170Collect);
|
|
datas.put("wsInst170",ws170Collect);
|
|
-
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
map1.put("wsInst10","实时10米风速");
|
|
map1.put("wsInst10","实时10米风速");
|
|
@@ -257,6 +253,138 @@ public class NwpService extends BaseService {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ public Map<String, Object> getWindCompare(Long startTime, Long endTime) throws BusinessException {
|
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ List<Nwp> nwpList = new ArrayList<>();
|
|
|
|
+ Map<String,Object> nwpDatas = new LinkedHashMap<>();
|
|
|
|
+ List<Nwp> nwpCheckList = new ArrayList<>();
|
|
|
|
+ nwpList = nwpRepository.findByPreTimeBetween(startTime, endTime);
|
|
|
|
+ nwpList.sort(Comparator.comparing(Nwp::getPreTime));
|
|
|
|
+
|
|
|
|
+ List<WindTowerStatusData> windTowerStatusDataList = new ArrayList<>();
|
|
|
|
+ Map<String,Object> windTowerStatusDataDatas = new LinkedHashMap<>();
|
|
|
|
+ List<WindTowerStatusData> windTowerStatusDataCheckList = new ArrayList<>();
|
|
|
|
+ windTowerStatusDataList = windTowerStatusDataRepository.findByTimeBetween(new Date(startTime), new Date(endTime));
|
|
|
|
+ windTowerStatusDataList.sort(Comparator.comparing(WindTowerStatusData::getTime));
|
|
|
|
+
|
|
|
|
+ long startTimeLong = startTime;
|
|
|
|
+ long endTimeLong = endTime;
|
|
|
|
+ long timeStep = 900000L;
|
|
|
|
+ if(startTimeLong%timeStep !=0){
|
|
|
|
+ startTimeLong = startTimeLong -(startTimeLong%timeStep);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for(long i = startTimeLong;i<endTimeLong;i=i+timeStep){
|
|
|
|
+ long finalI = i;
|
|
|
|
+ List<Nwp> nwp = nwpList.stream().filter(t -> t.getPreTime() == finalI).collect(Collectors.toList());
|
|
|
|
+ if (nwp != null && nwp.size() > 0) {
|
|
|
|
+ nwpCheckList.add(nwp.get(0));
|
|
|
|
+ }else{
|
|
|
|
+ nwpCheckList.add(new Nwp());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<WindTowerStatusData> wtsd = windTowerStatusDataList.stream().filter(t -> t.getTime().getTime() == finalI).collect(Collectors.toList());
|
|
|
|
+ if (wtsd != null && wtsd.size() > 0) {
|
|
|
|
+ windTowerStatusDataCheckList.add(wtsd.get(0));
|
|
|
|
+ }else{
|
|
|
|
+ windTowerStatusDataCheckList.add(new WindTowerStatusData());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ this.defaultReplace(nwpCheckList);
|
|
|
|
+ this.defaultRealReplace(windTowerStatusDataCheckList);
|
|
|
|
+
|
|
|
|
+ ElectricField electricField = this.getElectricField();
|
|
|
|
+
|
|
|
|
+ List<BigDecimal> wd10 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wd30 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wd50 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wd70 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wd80 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wd90 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wd100 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wd170 = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ List<BigDecimal> wdInst10 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wdInst30 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wdInst50 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wdInst70 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wdInst80 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wdInst90 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wdInst100 = new ArrayList<>();
|
|
|
|
+ List<BigDecimal> wdInst170 = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ if(electricField.getElectricFieldTypeEnum().getCode() == 2){
|
|
|
|
+ wd10 = nwpCheckList.stream().map(Nwp::getWd10).collect(Collectors.toList());
|
|
|
|
+ wd30 = nwpCheckList.stream().map(Nwp::getWd30).collect(Collectors.toList());
|
|
|
|
+ wd50 = nwpCheckList.stream().map(Nwp::getWd50).collect(Collectors.toList());
|
|
|
|
+ wd70 = nwpCheckList.stream().map(Nwp::getWd70).collect(Collectors.toList());
|
|
|
|
+ wd80 = nwpCheckList.stream().map(Nwp::getWd80).collect(Collectors.toList());
|
|
|
|
+ wd90 = nwpCheckList.stream().map(Nwp::getWd90).collect(Collectors.toList());
|
|
|
|
+ wd100 = nwpCheckList.stream().map(Nwp::getWd100).collect(Collectors.toList());
|
|
|
|
+ wd170 = nwpCheckList.stream().map(Nwp::getWd170).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Integer[] wd10Integers = windFrequency(wd10);
|
|
|
|
+ Integer[] wd30Integers = windFrequency(wd30);
|
|
|
|
+ Integer[] wd50Integers = windFrequency(wd50);
|
|
|
|
+ Integer[] wd70Integers = windFrequency(wd70);
|
|
|
|
+ Integer[] wd80Integers = windFrequency(wd80);
|
|
|
|
+ Integer[] wd90Integers = windFrequency(wd90);
|
|
|
|
+ Integer[] wd100Integers = windFrequency(wd100);
|
|
|
|
+ Integer[] wd170Integers = windFrequency(wd170);
|
|
|
|
+
|
|
|
|
+ nwpDatas.put("wd10Integers",wd10Integers);
|
|
|
|
+ nwpDatas.put("wd30Integers",wd30Integers);
|
|
|
|
+ nwpDatas.put("wd50Integers",wd50Integers);
|
|
|
|
+ nwpDatas.put("wd70Integers",wd70Integers);
|
|
|
|
+ nwpDatas.put("wd80Integers",wd80Integers);
|
|
|
|
+ nwpDatas.put("wd90Integers",wd90Integers);
|
|
|
|
+ nwpDatas.put("wd100Integers",wd100Integers);
|
|
|
|
+ nwpDatas.put("wd170Integers",wd170Integers);
|
|
|
|
+
|
|
|
|
+ wdInst10 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst10).collect(Collectors.toList());
|
|
|
|
+ wdInst30 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst30).collect(Collectors.toList());
|
|
|
|
+ wdInst50 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst50).collect(Collectors.toList());
|
|
|
|
+ wdInst70 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst70).collect(Collectors.toList());
|
|
|
|
+ wdInst80 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst80).collect(Collectors.toList());
|
|
|
|
+ wdInst90 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst90).collect(Collectors.toList());
|
|
|
|
+ wdInst100 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst100).collect(Collectors.toList());
|
|
|
|
+ wdInst170 = windTowerStatusDataCheckList.stream().map(WindTowerStatusData::getWdInst110).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Integer[] wdInst10Integers = windFrequency(wdInst10);
|
|
|
|
+ Integer[] wdInst30Integers = windFrequency(wdInst30);
|
|
|
|
+ Integer[] wdInst50Integers = windFrequency(wdInst50);
|
|
|
|
+ Integer[] wdInst70Integers = windFrequency(wdInst70);
|
|
|
|
+ Integer[] wdInst80Integers = windFrequency(wdInst80);
|
|
|
|
+ Integer[] wdInst90Integers = windFrequency(wdInst90);
|
|
|
|
+ Integer[] wdInst100Integers = windFrequency(wdInst100);
|
|
|
|
+ Integer[] wdInst170Integers = windFrequency(wdInst170);
|
|
|
|
+
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst10Integers", wdInst10Integers);
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst30Integers", wdInst30Integers);
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst50Integers", wdInst50Integers);
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst70Integers", wdInst70Integers);
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst80Integers", wdInst80Integers);
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst90Integers", wdInst90Integers);
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst100Integers", wdInst100Integers);
|
|
|
|
+ windTowerStatusDataDatas.put("wdInst170Integers", wdInst170Integers);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ String[] nameList = {"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"};
|
|
|
|
+
|
|
|
|
+ map.put("nwpDatas", nwpDatas);
|
|
|
|
+ map.put("windTowerStatusDataDatas", windTowerStatusDataDatas);
|
|
|
|
+ map.put("nameList", nameList);
|
|
|
|
+
|
|
|
|
+ return map;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 根据时间 分页查询 NWP数据 yh
|
|
* 根据时间 分页查询 NWP数据 yh
|
|
*
|
|
*
|
|
@@ -478,8 +606,6 @@ public class NwpService extends BaseService {
|
|
public void defaultReplace(List<Nwp> datas){
|
|
public void defaultReplace(List<Nwp> datas){
|
|
BigDecimal nullBig = new BigDecimal(-99);
|
|
BigDecimal nullBig = new BigDecimal(-99);
|
|
for(Nwp i :datas){
|
|
for(Nwp i :datas){
|
|
-
|
|
|
|
-
|
|
|
|
if(i.getT().compareTo(nullBig)==0){
|
|
if(i.getT().compareTo(nullBig)==0){
|
|
i.setT(null);
|
|
i.setT(null);
|
|
}
|
|
}
|
|
@@ -549,9 +675,7 @@ public class NwpService extends BaseService {
|
|
if(i.getWd170().compareTo(nullBig)==0){
|
|
if(i.getWd170().compareTo(nullBig)==0){
|
|
i.setWd170(null);
|
|
i.setWd170(null);
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -562,9 +686,6 @@ public class NwpService extends BaseService {
|
|
public void defaultRealReplace(List<WindTowerStatusData> datas){
|
|
public void defaultRealReplace(List<WindTowerStatusData> datas){
|
|
BigDecimal nullBig = new BigDecimal(-99);
|
|
BigDecimal nullBig = new BigDecimal(-99);
|
|
for(WindTowerStatusData i :datas){
|
|
for(WindTowerStatusData i :datas){
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
if(i.getWsInst10().compareTo(nullBig)==0){
|
|
if(i.getWsInst10().compareTo(nullBig)==0){
|
|
i.setWsInst10(null);
|
|
i.setWsInst10(null);
|
|
}
|
|
}
|
|
@@ -589,9 +710,31 @@ public class NwpService extends BaseService {
|
|
if(i.getWsInst110().compareTo(nullBig)==0){
|
|
if(i.getWsInst110().compareTo(nullBig)==0){
|
|
i.setWsInst110(null);
|
|
i.setWsInst110(null);
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ if(i.getWdInst10().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst10(null);
|
|
|
|
+ }
|
|
|
|
+ if(i.getWdInst30().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst30(null);
|
|
|
|
+ }
|
|
|
|
+ if(i.getWdInst50().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst50(null);
|
|
|
|
+ }
|
|
|
|
+ if(i.getWdInst70().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst70(null);
|
|
|
|
+ }
|
|
|
|
+ if(i.getWdInst80().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst80(null);
|
|
|
|
+ }
|
|
|
|
+ if(i.getWdInst90().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst90(null);
|
|
|
|
+ }
|
|
|
|
+ if(i.getWdInst100().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst100(null);
|
|
|
|
+ }
|
|
|
|
+ if(i.getWdInst110().compareTo(nullBig)==0){
|
|
|
|
+ i.setWdInst110(null);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -777,4 +920,84 @@ public class NwpService extends BaseService {
|
|
}
|
|
}
|
|
return nwpDays;
|
|
return nwpDays;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // 风频计算
|
|
|
|
+ public Integer[] windFrequency(List<BigDecimal> bigDecimals){
|
|
|
|
+
|
|
|
|
+ BigDecimal b0 = new BigDecimal(0);
|
|
|
|
+ BigDecimal b225 = new BigDecimal(22.5);
|
|
|
|
+ BigDecimal b45 = new BigDecimal(45);
|
|
|
|
+ BigDecimal b675 = new BigDecimal(67.5);
|
|
|
|
+ BigDecimal b90 = new BigDecimal(90);
|
|
|
|
+ BigDecimal b1125 = new BigDecimal(112.5);
|
|
|
|
+ BigDecimal b135 = new BigDecimal(135);
|
|
|
|
+ BigDecimal b1575 = new BigDecimal(157.5);
|
|
|
|
+ BigDecimal b180 = new BigDecimal(180);
|
|
|
|
+ BigDecimal b2025 = new BigDecimal(202.5);
|
|
|
|
+ BigDecimal b225b = new BigDecimal(225);
|
|
|
|
+ BigDecimal b2475 = new BigDecimal(247.5);
|
|
|
|
+ BigDecimal b270 = new BigDecimal(270);
|
|
|
|
+ BigDecimal b2925 = new BigDecimal(292.5);
|
|
|
|
+ BigDecimal b315 = new BigDecimal(315);
|
|
|
|
+ BigDecimal b3375 = new BigDecimal(337.5);
|
|
|
|
+ BigDecimal b360 = new BigDecimal(360);
|
|
|
|
+
|
|
|
|
+ Integer N = 0;
|
|
|
|
+ Integer NNE = 0;
|
|
|
|
+ Integer NE = 0;
|
|
|
|
+ Integer ENE = 0;
|
|
|
|
+ Integer E = 0;
|
|
|
|
+ Integer ESE = 0;
|
|
|
|
+ Integer SE = 0;
|
|
|
|
+ Integer SSE = 0;
|
|
|
|
+ Integer S = 0;
|
|
|
|
+ Integer SSW = 0;
|
|
|
|
+ Integer SW = 0;
|
|
|
|
+ Integer WSW = 0;
|
|
|
|
+ Integer W = 0;
|
|
|
|
+ Integer WNW = 0;
|
|
|
|
+ Integer NW = 0;
|
|
|
|
+ Integer NNW = 0;
|
|
|
|
+
|
|
|
|
+ if(bigDecimals.get(0) != null){
|
|
|
|
+ for(BigDecimal bg: bigDecimals){
|
|
|
|
+ if(bg.compareTo(b0) > -1 && bg.compareTo(b225) == -1 ){
|
|
|
|
+ N++;
|
|
|
|
+ }else if(bg.compareTo(b225) > -1 && bg.compareTo(b45) == -1){
|
|
|
|
+ NNE++;
|
|
|
|
+ }else if(bg.compareTo(b45) > -1 && bg.compareTo(b675) == -1){
|
|
|
|
+ NE++;
|
|
|
|
+ }else if(bg.compareTo(b675) > -1 && bg.compareTo(b90) == -1){
|
|
|
|
+ ENE++;
|
|
|
|
+ }else if(bg.compareTo(b90) > -1 && bg.compareTo(b1125) == -1){
|
|
|
|
+ E++;
|
|
|
|
+ }else if(bg.compareTo(b1125) > -1 && bg.compareTo(b135) == -1){
|
|
|
|
+ ESE++;
|
|
|
|
+ }else if(bg.compareTo(b135) > -1 && bg.compareTo(b1575) == -1){
|
|
|
|
+ SE++;
|
|
|
|
+ }else if(bg.compareTo(b1575) > -1 && bg.compareTo(b180) == -1){
|
|
|
|
+ SSE++;
|
|
|
|
+ }else if(bg.compareTo(b180) > -1 && bg.compareTo(b2025) == -1){
|
|
|
|
+ S++;
|
|
|
|
+ }else if(bg.compareTo(b2025) > -1 && bg.compareTo(b225b) == -1){
|
|
|
|
+ SSW++;
|
|
|
|
+ }else if(bg.compareTo(b225b) > -1 && bg.compareTo(b2475) == -1){
|
|
|
|
+ SW++;
|
|
|
|
+ }else if(bg.compareTo(b2475) > -1 && bg.compareTo(b270) == -1){
|
|
|
|
+ WSW++;
|
|
|
|
+ }else if(bg.compareTo(b270) > -1 && bg.compareTo(b2925) == -1){
|
|
|
|
+ W++;
|
|
|
|
+ }else if(bg.compareTo(b2925) > -1 && bg.compareTo(b315) == -1){
|
|
|
|
+ WNW++;
|
|
|
|
+ }else if(bg.compareTo(b315) > -1 && bg.compareTo(b3375) == -1){
|
|
|
|
+ NW++;
|
|
|
|
+ }else if(bg.compareTo(b3375) > -1 && bg.compareTo(b360) == -1){
|
|
|
|
+ NNW++;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // 16
|
|
|
|
+ Integer[] integers = {N,NNE,NE,ENE,E,ESE,SE,SSE,S,SSW,SW,WSW,W,WNW,NW,NNW};
|
|
|
|
+ return integers;
|
|
|
|
+ }
|
|
}
|
|
}
|