|
|
@@ -0,0 +1,324 @@
|
|
|
+package com.yunfeiyun.agmp.iot.common.util.dev;
|
|
|
+
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.yunfeiyun.agmp.iot.common.domain.IotSfElementfactor;
|
|
|
+import com.yunfeiyun.agmp.iot.common.enums.EnumSfElementType;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+public class RunHaoSfElementUtil {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取泵类型映射表
|
|
|
+ *
|
|
|
+ * @return 泵类型映射表,键为泵类型的标识,值为泵类型对应的枚举值
|
|
|
+ */
|
|
|
+ public static Map<String, EnumSfElementType> getPumpTypeMap() {
|
|
|
+ Map<String, EnumSfElementType> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Btn-ggbs", EnumSfElementType.WATER_SOURCE);
|
|
|
+ sfElementMap.put("Btn-sfbs", EnumSfElementType.FERTILIZER);
|
|
|
+ sfElementMap.put("Btn-fs", EnumSfElementType.SUCTION);
|
|
|
+ sfElementMap.put("Btn-js", EnumSfElementType.MIXING);
|
|
|
+
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取灌区类型映射表
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, EnumSfElementType> getGroupTypeMap() {
|
|
|
+ Map<String, EnumSfElementType> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Btn-qx", EnumSfElementType.GROUP);
|
|
|
+
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取电磁阀类型映射表
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, EnumSfElementType> getValveTypeMap() {
|
|
|
+ Map<String, EnumSfElementType> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Btn-fa", EnumSfElementType.SOLENOID_VALVE);
|
|
|
+
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取传感器类型映射表
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, EnumSfElementType> getSensorTypeMap() {
|
|
|
+ Map<String, EnumSfElementType> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Num-ph", EnumSfElementType.SENSOR);
|
|
|
+ sfElementMap.put("Num-ec", EnumSfElementType.SENSOR);
|
|
|
+ sfElementMap.put("Num-sw", EnumSfElementType.SENSOR);
|
|
|
+ sfElementMap.put("Num-gdyl", EnumSfElementType.SENSOR);
|
|
|
+
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取水泵名称映射表
|
|
|
+ *
|
|
|
+ * @return 水泵名称映射表,Map<String, String>类型,键为水泵的简写,值为对应的水泵名称
|
|
|
+ */
|
|
|
+ public static Map<String, String> getPumpNameMap() {
|
|
|
+ Map<String, String> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Btn-ggbs", "灌溉泵");
|
|
|
+ sfElementMap.put("Btn-sfbs", "施肥泵");
|
|
|
+ sfElementMap.put("Btn-fs", "肥阀");
|
|
|
+ sfElementMap.put("Btn-js", "搅拌电机");
|
|
|
+
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取灌区名称映射表
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, String> getGroupNameMap() {
|
|
|
+ Map<String, String> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Btn-qx", "区");
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取电磁阀名称映射表
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, String> getValveNameMap() {
|
|
|
+ Map<String, String> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Btn-fa", "井阀");
|
|
|
+
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取传感器名称映射表
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Map<String, String> getSensorNameMap() {
|
|
|
+ Map<String, String> sfElementMap = new HashMap<>();
|
|
|
+ sfElementMap.put("Num-ph", "PH");
|
|
|
+ sfElementMap.put("Num-ec", "EC");
|
|
|
+ sfElementMap.put("Num-sw", "水温");
|
|
|
+ sfElementMap.put("Num-gdyl", "管道压力");
|
|
|
+ return sfElementMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据键名获取泵类设备IotSfElementfactor对象
|
|
|
+ *
|
|
|
+ * @param key 设备元素因子的键名
|
|
|
+ * @return 设备元素因子对象,如果无法解析则返回null
|
|
|
+ */
|
|
|
+ public static IotSfElementfactor getPumpElementFactor(String key) {
|
|
|
+
|
|
|
+ IotSfElementfactor sfElementfactor = new IotSfElementfactor();
|
|
|
+ String sfName = null;
|
|
|
+ EnumSfElementType elementType = null;
|
|
|
+ Map<String, String> sfNameMap = getPumpNameMap();
|
|
|
+ Map<String, EnumSfElementType> sfTypeMap = getPumpTypeMap();
|
|
|
+
|
|
|
+ for(Map.Entry<String, String> entry : sfNameMap.entrySet()){
|
|
|
+ String sfKey = entry.getKey();
|
|
|
+ if(key.startsWith(sfKey)){
|
|
|
+ sfName = entry.getValue() + key.replace(sfKey, "");
|
|
|
+ elementType = sfTypeMap.get(sfKey);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(elementType == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ sfElementfactor.setSfType(elementType.getCode());
|
|
|
+ sfElementfactor.setSfName(sfName);
|
|
|
+ sfElementfactor.setSfDisplayname(sfName);
|
|
|
+ sfElementfactor.setSfCode(key);
|
|
|
+
|
|
|
+ return sfElementfactor;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据键名获取电磁阀类设备IotSfElementfactor对象
|
|
|
+ *
|
|
|
+ * @param key 设备元素因子的键名
|
|
|
+ * @return 设备元素因子对象,如果无法解析则返回null
|
|
|
+ */
|
|
|
+ public static IotSfElementfactor getValveElementFactor(String key) {
|
|
|
+
|
|
|
+ IotSfElementfactor sfElementfactor = new IotSfElementfactor();
|
|
|
+ String sfName = null;
|
|
|
+ EnumSfElementType elementType = null;
|
|
|
+ Map<String, String> sfNameMap = getValveNameMap();
|
|
|
+ Map<String, EnumSfElementType> sfTypeMap = getValveTypeMap();
|
|
|
+
|
|
|
+ for(Map.Entry<String, String> entry : sfNameMap.entrySet()){
|
|
|
+ String sfKey = entry.getKey();
|
|
|
+ if(key.startsWith(sfKey)){
|
|
|
+ sfName = entry.getValue() + key.replace(sfKey, "");
|
|
|
+ elementType = sfTypeMap.get(sfKey);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(elementType == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ sfElementfactor.setSfType(elementType.getCode());
|
|
|
+ sfElementfactor.setSfName(sfName);
|
|
|
+ sfElementfactor.setSfDisplayname(sfName);
|
|
|
+ sfElementfactor.setSfCode(key);
|
|
|
+
|
|
|
+ return sfElementfactor;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据键名获取泵类设备IotSfElementfactor对象
|
|
|
+ *
|
|
|
+ * @param key 设备元素因子的键名
|
|
|
+ * @return 设备元素因子对象,如果无法解析则返回null
|
|
|
+ */
|
|
|
+ public static IotSfElementfactor getGroupElementFactor(String key) {
|
|
|
+
|
|
|
+ IotSfElementfactor sfElementfactor = new IotSfElementfactor();
|
|
|
+ String sfName = null;
|
|
|
+ EnumSfElementType elementType = null;
|
|
|
+ Map<String, String> sfNameMap = getGroupNameMap();
|
|
|
+ Map<String, EnumSfElementType> sfTypeMap = getGroupTypeMap();
|
|
|
+
|
|
|
+ for(Map.Entry<String, String> entry : sfNameMap.entrySet()){
|
|
|
+ String sfKey = entry.getKey();
|
|
|
+ if(key.startsWith(sfKey)){
|
|
|
+ sfName = key.replace(sfKey, "") + entry.getValue();
|
|
|
+ elementType = sfTypeMap.get(sfKey);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(elementType == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ sfElementfactor.setSfType(elementType.getCode());
|
|
|
+ sfElementfactor.setSfName(sfName);
|
|
|
+ sfElementfactor.setSfDisplayname(sfName);
|
|
|
+ sfElementfactor.setSfCode(key);
|
|
|
+
|
|
|
+ return sfElementfactor;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据键名获取传感器设备IotSfElementfactor对象
|
|
|
+ *
|
|
|
+ * @param key 设备元素因子的键名
|
|
|
+ * @return 设备元素因子对象,如果无法解析则返回null
|
|
|
+ */
|
|
|
+ public static IotSfElementfactor getSensorElementFactor(String key) {
|
|
|
+
|
|
|
+ IotSfElementfactor sfElementfactor = new IotSfElementfactor();
|
|
|
+ String sfName = null;
|
|
|
+ EnumSfElementType elementType = null;
|
|
|
+ Map<String, String> sfNameMap = getSensorNameMap();
|
|
|
+ Map<String, EnumSfElementType> sfTypeMap = getSensorTypeMap();
|
|
|
+
|
|
|
+ for(Map.Entry<String, String> entry : sfNameMap.entrySet()){
|
|
|
+ String sfKey = entry.getKey();
|
|
|
+ if(key.startsWith(sfKey)){
|
|
|
+ sfName = entry.getValue() + key.replace(sfKey, "");
|
|
|
+ elementType = sfTypeMap.get(sfKey);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(elementType == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ sfElementfactor.setSfType(elementType.getCode());
|
|
|
+ sfElementfactor.setSfName(sfName);
|
|
|
+ sfElementfactor.setSfDisplayname(sfName);
|
|
|
+ sfElementfactor.setSfCode(key);
|
|
|
+
|
|
|
+ return sfElementfactor;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取流速流量IotSfElementfactor对象
|
|
|
+ *
|
|
|
+ * @param key 设备元素因子的键名
|
|
|
+ * @return 设备元素因子对象,如果无法解析则返回null
|
|
|
+ */
|
|
|
+ public static List<IotSfElementfactor> getLsLlFactor(String key) {
|
|
|
+ Map<String, String> sfNameMap = new HashMap<>();
|
|
|
+ sfNameMap.put("Num-ls", "流量");
|
|
|
+ sfNameMap.put("Num-LL", "流速");
|
|
|
+ String s = key.replace("Btn-fs", "");
|
|
|
+ List<IotSfElementfactor> factorList = new ArrayList<>();
|
|
|
+ for(Map.Entry<String, String> entry : sfNameMap.entrySet()){
|
|
|
+ String sfKey = entry.getKey();
|
|
|
+ String sfCode = sfKey + s;
|
|
|
+ String sfName = entry.getValue() + s;
|
|
|
+
|
|
|
+ IotSfElementfactor sfElementfactor = new IotSfElementfactor();
|
|
|
+ sfElementfactor.setSfType(EnumSfElementType.SENSOR.getCode());
|
|
|
+ sfElementfactor.setSfName(sfName);
|
|
|
+ sfElementfactor.setSfDisplayname(sfName);
|
|
|
+ sfElementfactor.setSfCode(sfCode);
|
|
|
+
|
|
|
+ factorList.add(sfElementfactor);
|
|
|
+ }
|
|
|
+
|
|
|
+ return factorList;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static IotSfElementfactor getElementFactor(String sfType, String sfCode) {
|
|
|
+ EnumSfElementType enumSfElementType = EnumSfElementType.findEnumByCode(sfType);
|
|
|
+ if(enumSfElementType == null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Map<String, EnumSfElementType> sfPumpTypeMap = getPumpTypeMap();
|
|
|
+ Map<String, EnumSfElementType> sfValveTypeMap = getValveTypeMap();
|
|
|
+ Map<String, EnumSfElementType> sfSensorTypeMap = getSensorTypeMap();
|
|
|
+ Map<String, EnumSfElementType> sfGroupTypeMap = getGroupTypeMap();
|
|
|
+
|
|
|
+ Set<EnumSfElementType> pumpTypeSet = new HashSet<>(sfPumpTypeMap.values());
|
|
|
+ Set<EnumSfElementType> valveTypeSet = new HashSet<>(sfValveTypeMap.values());
|
|
|
+ Set<EnumSfElementType> sensorTypeSet = new HashSet<>(sfSensorTypeMap.values());
|
|
|
+ Set<EnumSfElementType> groupTypeSet = new HashSet<>(sfGroupTypeMap.values());
|
|
|
+
|
|
|
+ IotSfElementfactor iotSfElementfactor = null;
|
|
|
+ if(pumpTypeSet.contains(enumSfElementType)){
|
|
|
+ iotSfElementfactor = getPumpElementFactor(sfCode);
|
|
|
+ }else if(valveTypeSet.contains(enumSfElementType)){
|
|
|
+ iotSfElementfactor = getValveElementFactor(sfCode);
|
|
|
+ }else if(sensorTypeSet.contains(enumSfElementType)){
|
|
|
+ iotSfElementfactor = getSensorElementFactor(sfCode);
|
|
|
+ }else if(groupTypeSet.contains(enumSfElementType)){
|
|
|
+ iotSfElementfactor = getGroupElementFactor(sfCode);
|
|
|
+ }
|
|
|
+ return iotSfElementfactor;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String getDataValue(String sfCode, JSONObject data) {
|
|
|
+ String value = data.getString(sfCode);
|
|
|
+ if(Objects.equals(value, "true")){
|
|
|
+ value = "1";
|
|
|
+ }else if(Objects.equals(value, "false")){
|
|
|
+ value = "0";
|
|
|
+ }else{
|
|
|
+ try{
|
|
|
+ value = String.valueOf((int)Math.floor(Double.parseDouble(value)));
|
|
|
+ }catch (Exception e){
|
|
|
+ value = "0";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+}
|