浏览代码

优化设备添加检测唯一性逻辑,避免设备重复添加

zhaiyifei 10 月之前
父节点
当前提交
f0ea74397b

+ 47 - 47
src/main/java/com/yunfeiyun/agmp/iot/common/constant/devicetype/IotDeviceDictEnum.java

@@ -17,55 +17,55 @@ import java.util.List;
 public enum IotDeviceDictEnum {
 
 
-
-    TYPE_YF_SY3(IotDeviceDictConst.TYPE_YF_SY3, "云飞性诱3.0"),
-    TYPE_YF_SY2(IotDeviceDictConst.TYPE_YF_SY2, "云飞性诱2.0"),
-
-
-
-
-
-
-
-
-
-    TYPE_JP(IotDeviceDictConst.TYPE_JP, "卷盘"),
-    TYPE_HT_SFJ(IotDeviceDictConst.TYPE_HT_SFJ, "宏泰水肥机", ServiceNameConst.SERVICE_Ht_SF, IotDeviceTypeLv1Enum.SFJ),
-    TYPE_BY_SFJ(IotDeviceDictConst.TYPE_BY_SFJ, "博云水肥机", ServiceNameConst.SERVICE_BY_SF, IotDeviceTypeLv1Enum.SFJ),
-    TYPE_XMZN_PNHJJC(IotDeviceDictConst.TYPE_XMZN_PNHJJC, "小马智农-棚内环境监测", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.PNHJJC),
-    TYPE_XMZN_QXZ(IotDeviceDictConst.TYPE_XMZN_QXZ, "小马智农-气象站", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.QXZ),
-    TYPE_XMZN_GSSQ(IotDeviceDictConst.TYPE_XMZN_GSSQ, "小马智农-管式墒情", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.GSSQ),
-    TYPE_XMZN_JM(IotDeviceDictConst.TYPE_XMZN_JM, "小马智农-卷膜", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.JM),
-    TYPE_XMZN_JB(IotDeviceDictConst.TYPE_XMZN_JB, "小马智农-卷被", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.JB),
-    TYPE_XMZN_SQZ(IotDeviceDictConst.TYPE_XMZN_SQZ, "小马智农-墒情站", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.SQZ),
-    TYPE_RT_XJ(IotDeviceDictConst.TYPE_RT_XJ, "睿瞳相机", IotDeviceTypeLv1Enum.WH_XJ),
-    TYPE_ZHAO_HE_SFJ(IotDeviceDictConst.TYPE_ZHAO_HE_SFJ, "兆赫水肥机", ServiceNameConst.SERVICE_ZHAO_HE_SF, IotDeviceTypeLv1Enum.SFJ),
-
-
-
-    TYPE_XPH_SZZX_JC(IotDeviceDictConst.TYPE_XPH_SZZX_JC, "新浦会水质在线监测站", ServiceNameConst.SERVICE_XPH_SZZX_JC, IotDeviceTypeLv1Enum.JZC_SZ_ZX),
-    TYPE_XPH_LDSW_JC(IotDeviceDictConst.TYPE_XPH_LDSW_JC, "新浦会雷达水位监测站", ServiceNameConst.SERVICE_XPH_LDSW_JC, IotDeviceTypeLv1Enum.JZC_LD_SW),
-    TYPE_DAHUA_DEVICE(IotDeviceDictConst.TYPE_DAHUA_DEVICE, "大华球形摄像机", ServiceNameConst.SERVICE_DAHUA_ICC, IotDeviceTypeLv1Enum.JKSB),
-    TYPE_OB_NTSWJ(IotDeviceDictConst.TYPE_OB_NTSWJ, "欧标农田水位计", ServiceNameConst.SERVICE_OB_NTSWJ, IotDeviceTypeLv1Enum.NTSWJ),
-    TYPE_OB_SZ(IotDeviceDictConst.TYPE_OB_SZ, "欧标水闸设备", ServiceNameConst.SERVICE_OB_SZ, IotDeviceTypeLv1Enum.SZ),
-
-    TYPE_XPH_WSHJ_JC(IotDeviceDictConst.TYPE_XPH_WSHJ_JC, "新浦会温室环境监测", ServiceNameConst.SERVICE_XPH_WSHJ_JC, IotDeviceTypeLv1Enum.PNHJJC),
-
-    TYPE_XPH_WSKZ(IotDeviceDictConst.TYPE_XPH_WSKZ, "新浦会温室控制", ServiceNameConst.SERVICE_XPH_WSKZ, IotDeviceTypeLv1Enum.WSKZ),
-
-    TYPE_YF_GXZW(IotDeviceDictConst.TYPE_YF_GXZW, "根系作物监测", ServiceNameConst.SERVICE_YF_GXZW, IotDeviceTypeLv1Enum.SQZ),
+//
+//    TYPE_YF_SY3(IotDeviceDictConst.TYPE_YF_SY3, "云飞性诱3.0"),
+//    TYPE_YF_SY2(IotDeviceDictConst.TYPE_YF_SY2, "云飞性诱2.0"),
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//    TYPE_JP(IotDeviceDictConst.TYPE_JP, "卷盘"),
+//    TYPE_HT_SFJ(IotDeviceDictConst.TYPE_HT_SFJ, "宏泰水肥机", ServiceNameConst.SERVICE_Ht_SF, IotDeviceTypeLv1Enum.SFJ),
+//    TYPE_BY_SFJ(IotDeviceDictConst.TYPE_BY_SFJ, "博云水肥机", ServiceNameConst.SERVICE_BY_SF, IotDeviceTypeLv1Enum.SFJ),
+//    TYPE_XMZN_PNHJJC(IotDeviceDictConst.TYPE_XMZN_PNHJJC, "小马智农-棚内环境监测", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.PNHJJC),
+//    TYPE_XMZN_QXZ(IotDeviceDictConst.TYPE_XMZN_QXZ, "小马智农-气象站", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.QXZ),
+//    TYPE_XMZN_GSSQ(IotDeviceDictConst.TYPE_XMZN_GSSQ, "小马智农-管式墒情", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.GSSQ),
+//    TYPE_XMZN_JM(IotDeviceDictConst.TYPE_XMZN_JM, "小马智农-卷膜", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.JM),
+//    TYPE_XMZN_JB(IotDeviceDictConst.TYPE_XMZN_JB, "小马智农-卷被", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.JB),
+//    TYPE_XMZN_SQZ(IotDeviceDictConst.TYPE_XMZN_SQZ, "小马智农-墒情站", ServiceNameConst.SERVICE_XMZN_ZNDP, IotDeviceTypeLv1Enum.SQZ),
+//    TYPE_RT_XJ(IotDeviceDictConst.TYPE_RT_XJ, "睿瞳相机", IotDeviceTypeLv1Enum.WH_XJ),
+//    TYPE_ZHAO_HE_SFJ(IotDeviceDictConst.TYPE_ZHAO_HE_SFJ, "兆赫水肥机", ServiceNameConst.SERVICE_ZHAO_HE_SF, IotDeviceTypeLv1Enum.SFJ),
+//
+//
+//
+//    TYPE_XPH_SZZX_JC(IotDeviceDictConst.TYPE_XPH_SZZX_JC, "新浦会水质在线监测站", ServiceNameConst.SERVICE_XPH_SZZX_JC, IotDeviceTypeLv1Enum.JZC_SZ_ZX),
+//    TYPE_XPH_LDSW_JC(IotDeviceDictConst.TYPE_XPH_LDSW_JC, "新浦会雷达水位监测站", ServiceNameConst.SERVICE_XPH_LDSW_JC, IotDeviceTypeLv1Enum.JZC_LD_SW),
+//    TYPE_DAHUA_DEVICE(IotDeviceDictConst.TYPE_DAHUA_DEVICE, "大华球形摄像机", ServiceNameConst.SERVICE_DAHUA_ICC, IotDeviceTypeLv1Enum.JKSB),
+//    TYPE_OB_NTSWJ(IotDeviceDictConst.TYPE_OB_NTSWJ, "欧标农田水位计", ServiceNameConst.SERVICE_OB_NTSWJ, IotDeviceTypeLv1Enum.NTSWJ),
+//    TYPE_OB_SZ(IotDeviceDictConst.TYPE_OB_SZ, "欧标水闸设备", ServiceNameConst.SERVICE_OB_SZ, IotDeviceTypeLv1Enum.SZ),
+//
+//    TYPE_XPH_WSHJ_JC(IotDeviceDictConst.TYPE_XPH_WSHJ_JC, "新浦会温室环境监测", ServiceNameConst.SERVICE_XPH_WSHJ_JC, IotDeviceTypeLv1Enum.PNHJJC),
+//
+//    TYPE_XPH_WSKZ(IotDeviceDictConst.TYPE_XPH_WSKZ, "新浦会温室控制", ServiceNameConst.SERVICE_XPH_WSKZ, IotDeviceTypeLv1Enum.WSKZ),
+//
+//    TYPE_YF_GXZW(IotDeviceDictConst.TYPE_YF_GXZW, "根系作物监测", ServiceNameConst.SERVICE_YF_GXZW, IotDeviceTypeLv1Enum.SQZ),
 
     TYPE_XPH_TRSH_CL(IotDeviceDictConst.TYPE_XPH_TRSH_CL, "土壤水势测量", ServiceNameConst.SERVICE_XPH_TRSH_CL, IotDeviceTypeLv1Enum.TRSH_CL),
-    /**
-     * 大数据平台监控设备,用于通过mqtt接收设备定时上报的抓拍图片
-     */
-    TYPE_BIG_DATA_MONITOR_DEVICE(IotDeviceDictConst.TYPE_BIG_DATA_MONITOR_DEVICE, "大数据平台监控设备", ServiceNameConst.SERVICE_BIG_DATA_MONITOR, IotDeviceTypeLv1Enum.JKSB),
-
-    TYPE_HPF_WSMJ_ZNKG(IotDeviceDictConst.TYPE_HPF_WSMJ_ZNKG, "海普发温室灭菌智能开关", ServiceNameConst.SERVICE_HPF_WSMJ_ZNKG, IotDeviceTypeLv1Enum.HPF_WSMJ_ZNKG),
-    TYPE_XPH_GP_QXZ(IotDeviceDictConst.TYPE_XPH_GP_QXZ, "新普惠光谱气象站", ServiceNameConst.SERVICE_XPH_GP_QXZ, IotDeviceTypeLv1Enum.QXZ),
-    TYPE_YR_SF_SERVICE(IotDeviceDictConst.TYPE_YR_SF, "源润水肥机", ServiceNameConst.SERVICE_YR_SF_SERVICE, IotDeviceTypeLv1Enum.YR_SF),
-    TYPE_JSY_ST_QF(IotDeviceDictConst.TYPE_JSY_ST_QF, "及时雨三通球阀", ServiceNameConst.SERVICE_JSY_ST_QF, IotDeviceTypeLv1Enum.QF),
-    TYPE_XPH_GSSQ(IotDeviceDictConst.TYPE_XPH_GSSQ, "新浦会管式墒情", ServiceNameConst.SERVICE_XPH_GSSQ, IotDeviceTypeLv1Enum.GSSQ),
+//    /**
+//     * 大数据平台监控设备,用于通过mqtt接收设备定时上报的抓拍图片
+//     */
+//    TYPE_BIG_DATA_MONITOR_DEVICE(IotDeviceDictConst.TYPE_BIG_DATA_MONITOR_DEVICE, "大数据平台监控设备", ServiceNameConst.SERVICE_BIG_DATA_MONITOR, IotDeviceTypeLv1Enum.JKSB),
+//
+//    TYPE_HPF_WSMJ_ZNKG(IotDeviceDictConst.TYPE_HPF_WSMJ_ZNKG, "海普发温室灭菌智能开关", ServiceNameConst.SERVICE_HPF_WSMJ_ZNKG, IotDeviceTypeLv1Enum.HPF_WSMJ_ZNKG),
+//    TYPE_XPH_GP_QXZ(IotDeviceDictConst.TYPE_XPH_GP_QXZ, "新普惠光谱气象站", ServiceNameConst.SERVICE_XPH_GP_QXZ, IotDeviceTypeLv1Enum.QXZ),
+//    TYPE_YR_SF_SERVICE(IotDeviceDictConst.TYPE_YR_SF, "源润水肥机", ServiceNameConst.SERVICE_YR_SF_SERVICE, IotDeviceTypeLv1Enum.YR_SF),
+//    TYPE_JSY_ST_QF(IotDeviceDictConst.TYPE_JSY_ST_QF, "及时雨三通球阀", ServiceNameConst.SERVICE_JSY_ST_QF, IotDeviceTypeLv1Enum.QF),
+//    TYPE_XPH_GSSQ(IotDeviceDictConst.TYPE_XPH_GSSQ, "新浦会管式墒情", ServiceNameConst.SERVICE_XPH_GSSQ, IotDeviceTypeLv1Enum.GSSQ),
 
     /**
      * 新版本的写道下面

+ 29 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/constant/mqtt/IotMqttConstant.java

@@ -1,8 +1,14 @@
 package com.yunfeiyun.agmp.iot.common.constant.mqtt;
 
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
+import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictEnum;
 import com.yunfeiyun.agmp.iot.common.util.dev.QxzTypeUtil;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 /**
  * mqtt topic 厂家维护
  */
@@ -244,6 +250,7 @@ public class IotMqttConstant {
                 case IotDeviceDictConst.TYPE_YF_CBD:
                 case IotDeviceDictConst.TYPE_YF_SDCBD:
                 case IotDeviceDictConst.TYPE_YF_GKCBD:
+                case IotDeviceDictConst.TYPE_YF_XCT:
                     topic = YFCbdTopic.TOPIC_CBD_REPORT_PREFIX;
                     break;
                 case IotDeviceDictConst.TYPE_BY_SFJ:
@@ -274,4 +281,26 @@ public class IotMqttConstant {
         }
         return topic;
     }
+
+    public static List<String> getDevtypeBidList(String devtypeBid){
+        Map<String, String> devtypeBidMap = new HashMap<>();
+        Map<String, ArrayList<String>> devtypeBidListMap = new HashMap<>();
+        for (IotDeviceDictEnum iotDeviceDictEnum : IotDeviceDictEnum.values()) {
+            String bid = iotDeviceDictEnum.getCode();
+            String subTopic = getReportTopicByDevtype(bid);
+            if (subTopic == null) {
+                continue;
+            }
+            devtypeBidMap.put(bid, subTopic);
+            devtypeBidListMap.computeIfAbsent(subTopic, k -> new ArrayList<>()).add(bid);
+        }
+        ArrayList<String> devtypeBidList = new ArrayList<>();
+        String key = devtypeBidMap.get(devtypeBid);
+        if(key == null){
+            devtypeBidList.add(devtypeBid);
+        }else{
+            devtypeBidList = devtypeBidListMap.get(key);
+        }
+        return devtypeBidList;
+    }
 }

+ 5 - 2
src/main/java/com/yunfeiyun/agmp/iot/common/domain/IotDevice.java

@@ -1,10 +1,11 @@
 package com.yunfeiyun.agmp.iot.common.domain;
 
-import java.math.BigDecimal;
 import com.yunfeiyun.agmp.common.annotation.Excel;
-import com.yunfeiyun.agmp.common.core.domain.BaseEntity;
 import lombok.Data;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 设备基础对象 IotDevice
  *
@@ -167,4 +168,6 @@ public class IotDevice extends IotBaseEntity
     private String devSubtype;
     private String devOriginalid;
     private String devHostingstatus;
+
+    private List<String> devtypeBidList;
 }