Jelajahi Sumber

新增 气象设备 折线图,列表,导出 增加风向显示

zhaiyifei 9 bulan lalu
induk
melakukan
24f02b6c95

+ 14 - 3
src/main/java/com/yunfeiyun/agmp/iot/common/constant/device/ElementFormatUtil.java

@@ -16,6 +16,8 @@ import com.yunfeiyun.agmp.iot.common.util.dev.WindUtil;
 
 import java.util.*;
 
+import static com.yunfeiyun.agmp.iot.common.enums.EnumYfQxzElement.TYPE6;
+
 public class ElementFormatUtil {
 
     public static String getAddress(String eName, String eKey){
@@ -93,7 +95,7 @@ public class ElementFormatUtil {
         iotElementDto.setEUnit(eUnit);
         iotElementDto.setEValue(eValue);
 
-        if(eNum.equals(EnumYfQxzElement.TYPE6.geteNum())
+        if(eNum.equals(TYPE6.geteNum())
                 || eNum.equals(EnumYfQxzElement.TYPE6_7.geteNum())){
 
             if(!elementMap.containsKey(eNum)){
@@ -103,15 +105,24 @@ public class ElementFormatUtil {
         }else if(eNum.equals(EnumYfQxzElement.TYPE7.geteNum())
                 || eNum.equals(EnumYfQxzElement.TYPE32.geteNum())
                 || eNum.equals(EnumYfQxzElement.TYPE33.geteNum())
-                || eNum.equals(EnumYfQxzElement.TYPE45.geteNum())){
+                || eNum.equals(EnumYfQxzElement.TYPE45.geteNum())
+                || eNum.equals(EnumYfQxzElement.TYPE8.geteNum())){
             if(StringUtils.isNotEmpty(eValue)){
                 String labelName = WindUtil.getWindSpeed(eValue);
+                if(eNum.equals(EnumYfQxzElement.TYPE8.geteNum())){
+                    labelName = WindUtil.getWindDirection(eValue);
+                }
                 iotElementDto.setEValue(eValue + " (" + labelName + ")");
             }
 
             if(dataList!= null && !dataList.isEmpty()){
                 for (JSONObject jsonObject : dataList) {
-                    jsonObject.put("labelName", WindUtil.getWindSpeed(jsonObject.getString("number")));
+                    String eNumber = jsonObject.getString("number");
+                    String labelName = WindUtil.getWindSpeed(eNumber);
+                    if(eNum.equals(EnumYfQxzElement.TYPE8.geteNum())){
+                        labelName = WindUtil.getWindDirection(eNumber);
+                    }
+                    jsonObject.put("labelName", labelName);
                 }
             }
         }

+ 31 - 26
src/main/java/com/yunfeiyun/agmp/iot/common/util/dev/WindUtil.java

@@ -3,7 +3,7 @@ package com.yunfeiyun.agmp.iot.common.util.dev;
 import com.yunfeiyun.agmp.iot.common.util.BigDecimalUtil;
 
 import java.math.BigDecimal;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 
 public class WindUtil {
@@ -13,9 +13,31 @@ public class WindUtil {
      * @param windDirection 风向
      * @return 风向
      */
-//    public static String getWindDirection(String windDirection) {
-//
-//    }
+    public static String getWindDirection(String windDirection) {
+        Map<String, String> directionNameMap = new LinkedHashMap<>();
+        directionNameMap.put("22.25", "北风");
+        directionNameMap.put("67.5", "东北风");
+        directionNameMap.put("112.5", "东风");
+        directionNameMap.put("157.5", "东南风");
+        directionNameMap.put("202.5", "南风");
+        directionNameMap.put("247.5", "西南风");
+        directionNameMap.put("292.5", "西风");
+        directionNameMap.put("337.5", "西北风");
+        directionNameMap.put("360", "北风");
+        String directionName = "未知";
+        try{
+            BigDecimal standValue = BigDecimalUtil.format(windDirection, scale);
+            for(Map.Entry<String, String> entry : directionNameMap.entrySet()) {
+                if (standValue.compareTo(BigDecimalUtil.format(entry.getKey(), scale)) <= 0) {
+                    directionName = entry.getValue();
+                    break;
+                }
+            }
+        }catch (Exception e){
+
+        }
+        return directionName;
+    }
 
     /**
      * 获取风速
@@ -23,24 +45,7 @@ public class WindUtil {
      * @return 风速
      */
     public static String getWindSpeed(String windSpeed) {
-
-        String[] speedArray = {
-                "0.2",
-                "1.5",
-                "3.3",
-                "5.4",
-                "7.9",
-                "10.7",
-                "13.8",
-                "17.1",
-                "20.7",
-                "24.4",
-                "28.4",
-                "32.6",
-                "36.9",
-        };
-
-        Map<String, String> speedNameMap = new HashMap<>();
+        Map<String, String> speedNameMap = new LinkedHashMap<>();
         speedNameMap.put("0.2", "0级 无风");
         speedNameMap.put("1.5", "1级 软风");
         speedNameMap.put("3.3", "2级 轻风");
@@ -57,10 +62,10 @@ public class WindUtil {
 
         String speedName = "未知";
         try{
-            BigDecimal speed = BigDecimalUtil.format(windSpeed, scale);
-            for (String s : speedArray) {
-                if (speed.compareTo(BigDecimalUtil.format(s, scale)) <= 0) {
-                    speedName = speedNameMap.getOrDefault(s, "未知");
+            BigDecimal standValue = BigDecimalUtil.format(windSpeed, scale);
+            for(Map.Entry<String, String> entry : speedNameMap.entrySet()) {
+                if (standValue.compareTo(BigDecimalUtil.format(entry.getKey(), scale)) <= 0) {
+                    speedName = entry.getValue();
                     break;
                 }
             }