|
@@ -82,9 +82,17 @@ public class WindTowerStatusDataController {
|
|
|
List<BigDecimal> ws80List = new ArrayList<>();
|
|
|
List<BigDecimal> ws90List = new ArrayList<>();
|
|
|
List<BigDecimal> ws100List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wdHubHeightList = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd10List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd30List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd50List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd60List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd70List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd80List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd90List = new ArrayList<>();
|
|
|
+ List<BigDecimal> wd100List = new ArrayList<>();
|
|
|
LinkedHashMap<String, List> wsMap = new LinkedHashMap<>();
|
|
|
|
|
|
-
|
|
|
Long momentTime = 5 * 60 * 1000L;
|
|
|
for (Long tempTime = startTime; tempTime <= endTime; tempTime = tempTime + momentTime) {
|
|
|
// 设置时间
|
|
@@ -95,30 +103,48 @@ public class WindTowerStatusDataController {
|
|
|
// 风速轮毂
|
|
|
BigDecimal wsHubHeight = windTowerStatusData.getWsHubHeight();
|
|
|
wsHubHeightList.add(wsHubHeight);
|
|
|
+ // 轮毂风向
|
|
|
+ wdHubHeightList.add(windTowerStatusData.getWdHubHeight());
|
|
|
// ws10
|
|
|
BigDecimal ws10 = windTowerStatusData.getWs10();
|
|
|
ws10List.add(ws10);
|
|
|
+ // wd10
|
|
|
+ wd10List.add(windTowerStatusData.getWd10());
|
|
|
// ws30
|
|
|
BigDecimal ws30 = windTowerStatusData.getWs30();
|
|
|
ws30List.add(ws30);
|
|
|
+ // wd30
|
|
|
+ wd30List.add(windTowerStatusData.getWd30());
|
|
|
// ws50
|
|
|
BigDecimal ws50 = windTowerStatusData.getWs50();
|
|
|
ws50List.add(ws50);
|
|
|
+ // wd50
|
|
|
+ wd50List.add(windTowerStatusData.getWd50());
|
|
|
// ws60
|
|
|
BigDecimal ws60 = windTowerStatusData.getWs60();
|
|
|
ws60List.add(ws60);
|
|
|
+ // wd60
|
|
|
+ wd60List.add(windTowerStatusData.getWd60());
|
|
|
// ws70
|
|
|
BigDecimal ws70 = windTowerStatusData.getWs70();
|
|
|
ws70List.add(ws70);
|
|
|
+ // wd70
|
|
|
+ wd70List.add(windTowerStatusData.getWd70());
|
|
|
// ws80
|
|
|
BigDecimal ws80 = windTowerStatusData.getWs80();
|
|
|
ws80List.add(ws80);
|
|
|
+ // wd80
|
|
|
+ wd80List.add(windTowerStatusData.getWd80());
|
|
|
// ws90
|
|
|
BigDecimal ws90 = windTowerStatusData.getWs90();
|
|
|
ws90List.add(ws90);
|
|
|
+ // wd90
|
|
|
+ wd90List.add(windTowerStatusData.getWd90());
|
|
|
// ws100
|
|
|
BigDecimal ws100 = windTowerStatusData.getWs100();
|
|
|
ws100List.add(ws100);
|
|
|
+ // wd100
|
|
|
+ wd100List.add(windTowerStatusData.getWd100());
|
|
|
}
|
|
|
else{
|
|
|
// 风速轮毂
|
|
@@ -141,7 +167,6 @@ public class WindTowerStatusDataController {
|
|
|
ws100List.add(null);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
wsMap.put("轮毂风速", wsHubHeightList);
|
|
|
wsMap.put("10米风速", ws10List);
|
|
|
wsMap.put("30米风速", ws30List);
|
|
@@ -156,6 +181,121 @@ public class WindTowerStatusDataController {
|
|
|
returnMap.put("tableList", talbeList);
|
|
|
returnMap.put("wsTime", timeList);
|
|
|
returnMap.put("wsMap", wsMap);
|
|
|
+
|
|
|
+ LinkedHashMap<String, Float[]> wdMap = new LinkedHashMap<>();
|
|
|
+ Float[] wdHubHeightRate = getCalcWd(wdHubHeightList);
|
|
|
+ Float[] wd10Rate = getCalcWd(wd10List);
|
|
|
+ Float[] wd30Rate = getCalcWd(wd30List);
|
|
|
+ Float[] wd50Rate = getCalcWd(wd50List);
|
|
|
+ Float[] wd60Rate = getCalcWd(wd60List);
|
|
|
+ Float[] wd70Rate = getCalcWd(wd70List);
|
|
|
+ Float[] wd80Rate = getCalcWd(wd80List);
|
|
|
+ Float[] wd90Rate = getCalcWd(wd90List);
|
|
|
+ Float[] wd100Rate = getCalcWd(wd100List);
|
|
|
+ wdMap.put("轮毂风向", wdHubHeightRate);
|
|
|
+ wdMap.put("10米风向", wd10Rate);
|
|
|
+ wdMap.put("30米风向", wd30Rate);
|
|
|
+ wdMap.put("50米风向", wd50Rate);
|
|
|
+ wdMap.put("60米风向", wd60Rate);
|
|
|
+ wdMap.put("70米风向", wd70Rate);
|
|
|
+ wdMap.put("80米风向", wd80Rate);
|
|
|
+ wdMap.put("90米风向", wd90Rate);
|
|
|
+ wdMap.put("100米风向", wd100Rate);
|
|
|
+ returnMap.put("wdMap", wdMap);
|
|
|
+
|
|
|
return R.ok(returnMap);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算风向
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Float[] getCalcWd(List<BigDecimal> wdList){
|
|
|
+ int[] frequency16 = new int[16];
|
|
|
+ Float[] frequency16Rate = new Float[16];
|
|
|
+ for(BigDecimal b: wdList){
|
|
|
+ if(b!=null){
|
|
|
+ float wdfloat = b.floatValue();
|
|
|
+ //N 北 0 348.76-11.25
|
|
|
+ if( (wdfloat>=348.76F && wdfloat<=360F) || (wdfloat>=0 && wdfloat<= 11.25)){
|
|
|
+ frequency16[0]++;
|
|
|
+ }
|
|
|
+ //NNE 北东北 22.5 11.26-33.75
|
|
|
+ if(wdfloat>=11.26F && wdfloat<=33.75F){
|
|
|
+ frequency16[15]++;
|
|
|
+ }
|
|
|
+ //NE 东北 45 33.76-56.25
|
|
|
+ if(wdfloat>=33.76F && wdfloat<=56.25F){
|
|
|
+ frequency16[14]++;
|
|
|
+ }
|
|
|
+ //ENE 东东北 67.5 56.26-78.75
|
|
|
+ if(wdfloat>=56.26F && wdfloat<=78.75F){
|
|
|
+ frequency16[13]++;
|
|
|
+ }
|
|
|
+ //E 东 90 78.76-101.25
|
|
|
+ if(wdfloat>=78.76F && wdfloat<=101.25F){
|
|
|
+ frequency16[12]++;
|
|
|
+ }
|
|
|
+ //ESE 东东南 112.5 101.26-123.75
|
|
|
+ if(wdfloat>=101.26F && wdfloat<=123.75F){
|
|
|
+ frequency16[11]++;
|
|
|
+ }
|
|
|
+ //SE 东南 135 123.76-146.25
|
|
|
+ if(wdfloat>=123.76F && wdfloat<=146.25F){
|
|
|
+ frequency16[10]++;
|
|
|
+ }
|
|
|
+ //SSE 南东南 157.5 146.26-168.75
|
|
|
+ if(wdfloat>=146.26F && wdfloat<=168.75F){
|
|
|
+ frequency16[9]++;
|
|
|
+ }
|
|
|
+ //S 南 180 168.76-191.25
|
|
|
+ if(wdfloat>=168.76F && wdfloat<=191.25F){
|
|
|
+ frequency16[8]++;
|
|
|
+ }
|
|
|
+ //SSW 南西南 202.5 191.26-213.75
|
|
|
+ if(wdfloat>=191.26F && wdfloat<=213.75F){
|
|
|
+ frequency16[7]++;
|
|
|
+ }
|
|
|
+ //SW 西南 225 213.76-236.25
|
|
|
+ if(wdfloat>=213.76F && wdfloat<=236.25F){
|
|
|
+ frequency16[6]++;
|
|
|
+ }
|
|
|
+ //WSW 西西南 247.5 236.26-258.75
|
|
|
+ if(wdfloat>=236.26F && wdfloat<=258.75F){
|
|
|
+ frequency16[5]++;
|
|
|
+ }
|
|
|
+ //W 西 270 258.76-281.25
|
|
|
+ if(wdfloat>=258.76F && wdfloat<=281.25F){
|
|
|
+ frequency16[4]++;
|
|
|
+ }
|
|
|
+ //WNW 西西北 295.5 281.26-303.75
|
|
|
+ if(wdfloat>=281.26F && wdfloat<=303.75F){
|
|
|
+ frequency16[3]++;
|
|
|
+ }
|
|
|
+ //NW 西北 315 303.76-326.25
|
|
|
+ if(wdfloat>=303.76F && wdfloat<=326.25F){
|
|
|
+ frequency16[2]++;
|
|
|
+ }
|
|
|
+ //NNW 北西北 337.5 326.26-348.
|
|
|
+ if(wdfloat>=326.26F && wdfloat<=348.75F){
|
|
|
+ frequency16[1]++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BigDecimal sumToltal= new BigDecimal(0);
|
|
|
+ for(int wdf:frequency16){
|
|
|
+ BigDecimal b = new BigDecimal(wdf);
|
|
|
+ sumToltal = sumToltal.add(b);
|
|
|
+ }
|
|
|
+
|
|
|
+ for(int i =0; i<frequency16.length;i++){
|
|
|
+ if(frequency16[i] ==0){
|
|
|
+ frequency16Rate[i]= 0f;
|
|
|
+ }else{
|
|
|
+ BigDecimal dividend = new BigDecimal(frequency16[i]);
|
|
|
+ frequency16Rate[i] =dividend.divide(sumToltal,2, BigDecimal.ROUND_HALF_UP).floatValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return frequency16Rate;
|
|
|
+ }
|
|
|
}
|