Переглянути джерело

新增 润浩水肥机对接

zhaiyifei 10 місяців тому
батько
коміт
4da76f30e5

+ 12 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/constant/devicetype/IotDeviceDictConst.java

@@ -368,4 +368,16 @@ public class IotDeviceDictConst {
      * 带图片 不带控制
      * 带图片 不带控制
      */
      */
     public static final String TYPE_ZJSF_XYCB = "XYCB00005";
     public static final String TYPE_ZJSF_XYCB = "XYCB00005";
+
+
+    /*
+     ***********************************************************
+                               水肥设备
+     ***********************************************************
+     */
+
+    /**
+     * 润浩水肥机
+     */
+    public static final String TYPE_RUNHAO_SF = "SF00001";
 }
 }

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

@@ -106,7 +106,11 @@ public enum IotDeviceDictEnum {
     TYPE_YF_XYCB_III(IotDeviceDictConst.TYPE_YF_XYCB_III, "云飞-性诱测报灯III", ServiceNameConst.SERVICE_YF_XYCB_III, IotDeviceTypeLv1Enum.XYCB),
     TYPE_YF_XYCB_III(IotDeviceDictConst.TYPE_YF_XYCB_III, "云飞-性诱测报灯III", ServiceNameConst.SERVICE_YF_XYCB_III, IotDeviceTypeLv1Enum.XYCB),
     TYPE_ZJSF_XYCB(IotDeviceDictConst.TYPE_ZJSF_XYCB, "中捷四方性诱", ServiceNameConst.SERVICE_ZJSF_XYCB, IotDeviceTypeLv1Enum.XYCB),
     TYPE_ZJSF_XYCB(IotDeviceDictConst.TYPE_ZJSF_XYCB, "中捷四方性诱", ServiceNameConst.SERVICE_ZJSF_XYCB, IotDeviceTypeLv1Enum.XYCB),
     /**  宁录性诱测报灯 */
     /**  宁录性诱测报灯 */
-    TYPE_YF_XYCB_2(IotDeviceDictConst.TYPE_YF_XYCB_2, "云飞-性诱测报灯2.0", ServiceNameConst.SERVICE_YF_XYCB_2, IotDeviceTypeLv1Enum.XYCB);
+    TYPE_YF_XYCB_2(IotDeviceDictConst.TYPE_YF_XYCB_2, "云飞-性诱测报灯2.0", ServiceNameConst.SERVICE_YF_XYCB_2, IotDeviceTypeLv1Enum.XYCB),
+
+
+    /**  润浩水肥机 */
+    TYPE_RUNHAO_SF(IotDeviceDictConst.TYPE_RUNHAO_SF, "润浩水肥机", ServiceNameConst.SERVICE_RUNHAO_SF, IotDeviceTypeLv1Enum.SFJ);
 
 
     private String code;
     private String code;
     private String name;
     private String name;

+ 6 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/constant/devicetype/ServiceNameConst.java

@@ -194,4 +194,10 @@ public class ServiceNameConst {
      * 云飞吸虫塔设备
      * 云飞吸虫塔设备
      * */
      * */
     public static final String SERVICE_YF_XCT = "YF_XCT_SERVICE";
     public static final String SERVICE_YF_XCT = "YF_XCT_SERVICE";
+
+
+    /**
+     * 润浩水肥机
+     */
+    public static final String SERVICE_RUNHAO_SF = "RUNHAO-SF-SERVICE";
 }
 }

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

@@ -239,6 +239,28 @@ public class IotMqttConstant {
 
 
     }
     }
 
 
+
+    /**
+     * 润浩水肥机
+     */
+    public class RunHaoSfTopic {
+
+        /**
+         * 系统->设备
+         */
+        public final static String TOPIC_YR_SF_CMD_PREFIX = "device/kunluntongtaishuifeiji/set/";
+
+        /**
+         * 设备->系统
+         */
+        public final static String TOPIC_RUNHAO_SF_REPORT_PREFIX = "device/kunluntongtaishuifeiji/get/";
+
+//        /**
+//         * 变化上报
+//         */
+//        public final static String TOPIC_YR_SF_CHANGE_PREFIX =  "/hbyr/sf/change/";
+    }
+
     public static String getReportTopicByDevtype(String devtypeBid){
     public static String getReportTopicByDevtype(String devtypeBid){
         String topic = null;
         String topic = null;
         if (DevTypeUtil.isXphYfQxSq(devtypeBid)) {
         if (DevTypeUtil.isXphYfQxSq(devtypeBid)) {
@@ -279,6 +301,9 @@ public class IotMqttConstant {
                 case IotDeviceDictConst.TYPE_YF_XYCB_III:
                 case IotDeviceDictConst.TYPE_YF_XYCB_III:
                     topic = YFXycbIIITopic.TOPIC_XYCB_III_REPORT_PREFIX;
                     topic = YFXycbIIITopic.TOPIC_XYCB_III_REPORT_PREFIX;
                     break;
                     break;
+                case IotDeviceDictConst.TYPE_RUNHAO_SF:
+                    topic = RunHaoSfTopic.TOPIC_RUNHAO_SF_REPORT_PREFIX;
+                    break;
             }
             }
         }
         }
         return topic;
         return topic;

+ 28 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/domain/IotRunHaoSfdata.java

@@ -0,0 +1,28 @@
+package com.yunfeiyun.agmp.iot.common.domain;
+
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * mongo
+ * 润浩水肥机上报数据
+ */
+@Data
+@TableName("IotRunHaoSfdata")
+public class IotRunHaoSfdata extends IotBaseEntity{
+
+    private String id;
+
+    private String cId;
+
+    private String sfdataBid;
+
+    private String devBid;
+
+    private JSONObject sfdataContent;
+
+    private String sfdataCreatedDate;
+
+}

+ 53 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/domain/IotSfElementfactor.java

@@ -0,0 +1,53 @@
+package com.yunfeiyun.agmp.iot.common.domain;
+
+import lombok.Data;
+
+/**
+ * 水肥机要素
+ */
+@Data
+public class IotSfElementfactor extends IotBaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** 自增主键 */
+    private Long id;
+
+    /** 业务标识 */
+    private String sfBid;
+
+    /** 设备编号 */
+    private String devBid;
+
+    /** 水肥要素类型 */
+    private String sfType;
+
+    /** 原始名称 */
+    private String sfName;
+
+    /** 显示名称 */
+    private String sfDisplayname;
+
+    /** 要素编码 */
+    private String sfCode;
+
+    /** 父类id */
+    private String sfParentBid;
+
+    /** 排序字段 默认0 */
+    private int sfSequence;
+
+    /** 租户ID */
+    private String tid;
+
+    /** 创建时间 */
+    private String sfCreatedDate;
+
+    /** 创建人 */
+    private String sfCreator;
+
+    /** 修改时间 */
+    private String sfModifieddate;
+    /** 修改人 */
+    private String sfModifier;
+
+}

+ 73 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/enums/EnumSfElementType.java

@@ -0,0 +1,73 @@
+package com.yunfeiyun.agmp.iot.common.enums;
+
+/**
+ * 水肥机要素类型
+ */
+public enum EnumSfElementType {
+    /**
+     * 逻辑区域,电磁阀的分组
+     */
+    GROUP("6", "灌区"),
+
+    /**
+     * 水肥机上的 温度,压力,流速,PH EC等监测类要素
+     */
+    SENSOR("5", "传感器"),
+
+    /**
+     * 管道最末端每个田地里控制出水的阀门
+     */
+    SOLENOID_VALVE("4", "电磁阀"),
+
+    /**
+     * 肥料桶的搅拌电机或者泵 每个肥料桶一个
+     */
+    MIXING("3", "搅拌"),
+
+    /**
+     * 控制肥料桶出肥的阀或者泵,每个肥料桶一个
+     */
+    SUCTION("2", "吸肥"),
+
+    /**
+     * 负责肥料进入管道的总阀或者泵
+     */
+    FERILIZER("1", "肥料"),
+
+    /**
+     * 负责水源进入管道的总泵或者阀
+     */
+    WATER_SOURCE("0", "水源");
+
+    private final String code;
+    private final String name;
+
+    EnumSfElementType(String code, String name) {
+        this.code = code;
+        this.name = name;
+    }
+
+    public String getCode()
+    {
+        return code;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    /**
+     * 根据code查找
+     * @param code 枚举code
+     * @return 枚举对象
+     */
+    public static EnumSfElementType findEnumByCode(String code) {
+        for (EnumSfElementType item : EnumSfElementType.values()) {
+            if (item.getCode().equals(code)) {
+                return item;
+            }
+        }
+        return null;
+    }
+}

+ 75 - 0
src/main/java/com/yunfeiyun/agmp/iot/common/util/dev/RunHaoSfElementUtil.java

@@ -0,0 +1,75 @@
+package com.yunfeiyun.agmp.iot.common.util.dev;
+
+import com.yunfeiyun.agmp.iot.common.domain.IotSfElementfactor;
+import com.yunfeiyun.agmp.iot.common.enums.EnumSfElementType;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class RunHaoSfElementUtil {
+
+    public static Map<String, EnumSfElementType> getBtnTypeMap() {
+        Map<String, EnumSfElementType> sfElementMap = new HashMap<>();
+        sfElementMap.put("ggbs", EnumSfElementType.WATER_SOURCE);
+        sfElementMap.put("sfbs", EnumSfElementType.FERILIZER);
+        sfElementMap.put("fs", EnumSfElementType.SUCTION);
+        sfElementMap.put("js", EnumSfElementType.MIXING);
+        sfElementMap.put("fa", EnumSfElementType.SOLENOID_VALVE);
+        sfElementMap.put("qx", EnumSfElementType.GROUP);
+
+        return sfElementMap;
+    }
+
+    public static Map<String, String> getBtnNameMap() {
+        Map<String, String> sfElementMap = new HashMap<>();
+        sfElementMap.put("ggbs", "灌溉泵");
+        sfElementMap.put("sfbs", "施肥泵");
+        sfElementMap.put("fs", "肥阀");
+        sfElementMap.put("js", "搅拌电机");
+        sfElementMap.put("fa", "井阀");
+        sfElementMap.put("qx", "灌区");
+
+        return sfElementMap;
+    }
+
+    public static IotSfElementfactor getBtnElementfactor(String key) {
+        String[] temp = key.split("_");
+        String suffix = temp[1];
+
+        IotSfElementfactor sfElementfactor = new IotSfElementfactor();
+        String sfName = null;
+        EnumSfElementType elementType = null;
+        Map<String, String> sfNameMap = getBtnNameMap();
+        Map<String, EnumSfElementType> sfTypeMap = getBtnTypeMap();
+
+        for(Map.Entry<String, String> entry : sfNameMap.entrySet()){
+            String sfKey = entry.getKey();
+            if(suffix.startsWith(sfKey)){
+                sfName = entry.getValue() + suffix.replace(sfKey, "");
+                elementType = sfTypeMap.get(sfKey);
+            }
+        }
+        if(elementType == null){
+            return null;
+        }
+
+        sfElementfactor.setSfType(elementType.getCode());
+        sfElementfactor.setSfName(sfName);
+        sfElementfactor.setSfCode(suffix);
+
+        return sfElementfactor;
+    }
+
+    public static IotSfElementfactor getSfElementfactor(String key) {
+        String[] temp = key.split("_");
+        if(temp.length != 2){
+            return null;
+        }
+        IotSfElementfactor iotSfElementfactor = null;
+        String prefix = temp[0];
+        if("Btn".equals(prefix)){
+            iotSfElementfactor = getBtnElementfactor(key);
+        }
+        return iotSfElementfactor;
+    }
+}