Просмотр исходного кода

阶段性提交:链接管理

yf_zn 1 год назад
Родитель
Сommit
b1d5964da1

+ 60 - 0
src/main/java/com/yunfeiyun/agmp/iots/common/modal/TosDevicetypeResVo.java

@@ -0,0 +1,60 @@
+package com.yunfeiyun.agmp.iots.common.modal;
+
+import com.yunfeiyun.agmp.common.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class TosDevicetypeResVo {
+
+    /** 设备型号业务标识 */
+    @Excel(name = "设备型号业务标识")
+    private String devtypeBid;
+
+    /** 设备类型 */
+    @Excel(name = "设备类型")
+    private String devclassBid;
+
+    /** 型号名称 */
+    @Excel(name = "型号名称")
+    private String devtypeName;
+
+    /** 型号代码 */
+    @Excel(name = "型号代码")
+    private String devtypeCode;
+
+    /** 厂家标识 */
+    @Excel(name = "厂家标识")
+    private String firmBid;
+
+    /** 型号图示 */
+    @Excel(name = "型号图示")
+    private String devtypePreview;
+
+    /** 备注 */
+    @Excel(name = "备注")
+    private String devtypeRemark;
+
+    /** 设备类型通用配置 */
+    @Excel(name = "设备类型通用配置")
+    private String devTypeConfig;
+
+    /** 创建人 */
+    @Excel(name = "创建人")
+    private String devtypeCreator;
+
+    /** 修改人 */
+    @Excel(name = "修改人")
+    private String devtypeModifier;
+
+    /** 修改时间 */
+    @Excel(name = "修改时间")
+    private String devtypeModifieddate;
+
+    /** 创建时间 */
+    @Excel(name = "创建时间")
+    private String devtypeCreateddate;
+
+    private String devclassName;
+    private String firmName;
+    private String devNum;
+}

+ 38 - 27
src/main/java/com/yunfeiyun/agmp/iots/core/manager/ConnectionManager.java

@@ -2,9 +2,8 @@ package com.yunfeiyun.agmp.iots.core.manager;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.utils.StringUtils;
-import com.yunfeiyun.agmp.iot.common.domain.IotFirmdev;
-import com.yunfeiyun.agmp.iot.common.domain.resvo.IotFirmdevResVo;
-import com.yunfeiyun.agmp.iots.device.service.IIotFirmdevService;
+import com.yunfeiyun.agmp.iots.common.modal.TosDevicetypeResVo;
+import com.yunfeiyun.agmp.iots.service.BusinessCoreService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.util.TextUtils;
 import org.eclipse.paho.client.mqttv3.MqttException;
@@ -25,7 +24,7 @@ public class ConnectionManager {
     private HttpManager httpManager;
 
     @Autowired
-    private IIotFirmdevService iotFirmdevService;
+    BusinessCoreService businessCoreService;
 
     /**
      * 加载数据库设备配置
@@ -34,47 +33,59 @@ public class ConnectionManager {
      */
     @PostConstruct
     public void init() throws MqttException {
-        log.info("【初始化】协议");
-        IotFirmdev iotFirmdev = new IotFirmdev();
+        log.info("【初始化】设备型号 构建链接 协议");
         //先把所有型号查出来
-        List<IotFirmdevResVo> iotFirmdevResVos = iotFirmdevService.selectIotFirmdevList(iotFirmdev);
-        for (IotFirmdevResVo iotFirmdevResVo : iotFirmdevResVos) {
-            log.info("【初始化】【开始】协议加载,厂家:{},类型:{} ,配置:{}", iotFirmdevResVo.getFirmName(), iotFirmdevResVo.getDevtypeBid(), iotFirmdevResVo.getFirmdevCfg());
+        List<TosDevicetypeResVo> iotFirmdevResVos = businessCoreService.selectTosDevicetypeResVoList();
+        for (TosDevicetypeResVo tosDeviceType : iotFirmdevResVos) {
+            log.info("【初始化】【开始】协议加载,厂家:{},类型:{} ,配置:{}", tosDeviceType.getFirmName(), tosDeviceType.getDevtypeBid(), tosDeviceType.getDevTypeConfig());
             //将配置信息转换成jsonObject
-            JSONObject jsonConfig = parseConfigJson(iotFirmdevResVo.getFirmdevCfg());
+            JSONObject jsonConfig = parseConfigJson(tosDeviceType.getDevTypeConfig());
 
             if (jsonConfig == null) {
-                log.info("【初始化】协议加载,厂家:{},失败:配置为空", iotFirmdevResVo.getFirmName());
+                log.info("【初始化】协议加载,厂家:{},失败:配置为空", tosDeviceType.getFirmName());
                 continue;
             }
 
             String type = jsonConfig.getString("type");
             if (TextUtils.isEmpty(type)) {
+                log.info("【初始化】协议加载,厂家:{} type 为空:跳过", tosDeviceType.getFirmName());
                 continue;
             }
-            switch (type) {
-                case "mqtt":
-                    mqttManager.buildMqttConnection(iotFirmdevResVo, jsonConfig);
-                    break;
-                case "modbus-tcp": {
-                   //先不处理,对接到了再梳理
-                    break;
-                }
-                case "http": {
-                    httpManager.buildHttpConnection(iotFirmdevResVo, jsonConfig);
-                    break;
-                }
-                default: {
-                    log.info("【初始化】其它类型:{},跳过", type);
-                    continue;
+            // 对核心构建方法catch,错了目前跳过
+            try {
+                switch (type) {
+                    case "mqtt":
+                        mqttManager.buildMqttConnection(tosDeviceType, jsonConfig);
+                        break;
+                    case "modbus-tcp": {
+                        //先不处理,对接到了再梳理
+                        break;
+                    }
+                    case "http": {
+                        httpManager.buildHttpConnection(tosDeviceType, jsonConfig);
+                        break;
+                    }
+                    default: {
+                        log.info("【初始化】其它类型:{},跳过", type);
+                        continue;
+                    }
                 }
+                log.info("【初始化】【完成】协议加载,厂家:{},类型:{} ,", tosDeviceType.getFirmName(), tosDeviceType.getDevtypeBid());
+            } catch (Exception e) {
+                log.error("【构建{}失败】 异常信息: {}, {}", type, e.getMessage(), e);
             }
-            log.info("【初始化】【完成】协议加载,厂家:{},类型:{} ,", iotFirmdevResVo.getFirmName(), iotFirmdevResVo.getDevtypeBid());
+
 
         }
 
     }
 
+    /**
+     * json的解析,后续定位为参数公共校验等
+     *
+     * @param config
+     * @return
+     */
     private JSONObject parseConfigJson(String config) {
         if (StringUtils.isEmpty(config)) {
             log.error("【初始化】协议加载, 对接配置 empty, {}", config);

+ 39 - 39
src/main/java/com/yunfeiyun/agmp/iots/core/manager/HttpManager.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.utils.JSONUtils;
 import com.yunfeiyun.agmp.iot.common.domain.resvo.IotFirmdevResVo;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
+import com.yunfeiyun.agmp.iots.common.modal.TosDevicetypeResVo;
 import com.yunfeiyun.agmp.iots.core.http.*;
 import com.yunfeiyun.agmp.iots.device.service.XphHttpDevice;
 import com.yunfeiyun.agmp.iots.device.service.XphHttpGpQxzDevice;
@@ -15,13 +16,11 @@ import java.util.HashMap;
 
 /**
  * http对接管理器
- *
- *
- *
  */
 @Slf4j
 @Component
 public class HttpManager {
+
     @Autowired
     private XphHttpDevice xphHttpDevice;
 
@@ -32,130 +31,131 @@ public class HttpManager {
      * key:厂商对接配置id
      */
     private HashMap<String, HttpClient> hmClients = new HashMap<>();
+
     private HashMap<String, HttpClient> hmClientByServiceName = new HashMap<>();
 
     /**
      * 初始化
+     * 注意:原来的getFirmDevBid(原来的配置id)暂时换成了getDevtypeBid,真正实现时候看是否正确
      */
-    public void buildHttpConnection(IotFirmdevResVo iotFirmdevResVo, JSONObject jsonConfig) {
+    public void buildHttpConnection(TosDevicetypeResVo tosDeviceType, JSONObject jsonConfig) {
 
-        log.info("【http初始化】加载配置{}",jsonConfig);
+        log.info("【http初始化】加载配置{}", jsonConfig);
 
         //小马智农  https://zn-website-xiaomaiot.oss-cn-qingdao.aliyuncs.com/xiaomaiot/api_v2.html
 
         HttpConfig httpConfig = null;
         try {
-            httpConfig = JSONUtils.toObject(iotFirmdevResVo.getFirmdevCfg(), HttpConfig.class);
+            httpConfig = JSONUtils.toObject(tosDeviceType.getDevTypeConfig(), HttpConfig.class);
         } catch (Exception e) {
-            log.error("【http初始化】异常",e);
+            log.error("【http初始化】异常", e);
             return;
         }
 
 
-        if(httpConfig==null){
+        if (httpConfig == null) {
             log.error("【http初始化】取【连接配置】失败!");
             return;
         }
         String service = httpConfig.getService();
-        String firmBid = iotFirmdevResVo.getFirmBid();
-        if(ServiceNameConst.SERVICE_XMZN_ZNDP.equals(httpConfig.getService())){
+        String firmBid = tosDeviceType.getFirmBid();
+        if (ServiceNameConst.SERVICE_XMZN_ZNDP.equals(httpConfig.getService())) {
 
-            if(hmClientByServiceName.get(ServiceNameConst.SERVICE_XMZN_ZNDP)!=null){
+            if (hmClientByServiceName.get(ServiceNameConst.SERVICE_XMZN_ZNDP) != null) {
                 log.info("【小马智农】http-client只初始一个实例");
                 return;
             }
 
             XmznHttpClient xmznHttpClient = new XmznHttpClient();
-            hmClients.put(iotFirmdevResVo.getFirmdevBid(),xmznHttpClient);
+            hmClients.put(tosDeviceType.getDevtypeBid(), xmznHttpClient);
 
-            xmznHttpClient.init(iotFirmdevResVo.getFirmBid(), httpConfig, iotFirmdevResVo.getDevtypeBid());
+            xmznHttpClient.init(tosDeviceType.getFirmBid(), httpConfig, tosDeviceType.getDevtypeBid());
 
             hmClientByServiceName.put(ServiceNameConst.SERVICE_XMZN_ZNDP, xmznHttpClient);
             //hmClientByServiceName.put(httpConfig.getServiceName(), xmznHttpClient);
             log.info("【小马智农】http-client初始化结束");
-        }else if(ServiceNameConst.SERVICE_ZHAO_HE_SF.equals(httpConfig.getService())){
+        } else if (ServiceNameConst.SERVICE_ZHAO_HE_SF.equals(httpConfig.getService())) {
             ZhaoHeSfHttpClient zhaoHeSfHttpClient = new ZhaoHeSfHttpClient();
-            zhaoHeSfHttpClient.init(iotFirmdevResVo.getFirmBid(), httpConfig, iotFirmdevResVo.getDevtypeBid());
+            zhaoHeSfHttpClient.init(tosDeviceType.getFirmBid(), httpConfig, tosDeviceType.getDevtypeBid());
 
-            hmClients.put(iotFirmdevResVo.getFirmdevBid(), zhaoHeSfHttpClient);
+            hmClients.put(tosDeviceType.getDevtypeBid(), zhaoHeSfHttpClient);
 
             hmClientByServiceName.put(ServiceNameConst.SERVICE_ZHAO_HE_SF, zhaoHeSfHttpClient);
             log.info("【兆赫水肥机】http-client初始化结束");
-        }else if(ServiceNameConst.SERVICE_ADZN_GSSQ.equals(httpConfig.getService())){
+        } else if (ServiceNameConst.SERVICE_ADZN_GSSQ.equals(httpConfig.getService())) {
             AdznHttpClient adznHttpClient = new AdznHttpClient();
 
             AdznHttpConfig adznHttpConfig = null;
             try {
-                adznHttpConfig = JSONUtils.toObject(iotFirmdevResVo.getFirmdevCfg(), AdznHttpConfig.class);
+                adznHttpConfig = JSONUtils.toObject(tosDeviceType.getDevTypeConfig(), AdznHttpConfig.class);
             } catch (Exception e) {
-                log.error("【http初始化】异常",e);
+                log.error("【http初始化】异常", e);
                 return;
             }
 
-            adznHttpClient.init(iotFirmdevResVo.getFirmBid(), adznHttpConfig, iotFirmdevResVo.getDevtypeBid());
+            adznHttpClient.init(tosDeviceType.getFirmBid(), adznHttpConfig, tosDeviceType.getDevtypeBid());
 
-            hmClients.put(iotFirmdevResVo.getFirmdevBid(), adznHttpClient);
+            hmClients.put(tosDeviceType.getDevtypeBid(), adznHttpClient);
 
             hmClientByServiceName.put(ServiceNameConst.SERVICE_ADZN_GSSQ, adznHttpClient);
             log.info("【爱迪智农】http-client初始化结束");
         } else if (ServiceNameConst.SERVICE_XPH_HTTP.equals(service)) {
-            if(!hmClientByServiceName.containsKey(ServiceNameConst.SERVICE_XPH_HTTP)){
+            if (!hmClientByServiceName.containsKey(ServiceNameConst.SERVICE_XPH_HTTP)) {
 
                 try {
                     XphHttpClient xphHttpClient = new XphHttpClient();
                     xphHttpClient.init(firmBid, httpConfig, null);
-                    hmClients.put(iotFirmdevResVo.getFirmdevBid(), xphHttpClient);
+                    hmClients.put(tosDeviceType.getDevtypeBid(), xphHttpClient);
                     hmClientByServiceName.put(ServiceNameConst.SERVICE_XPH_HTTP, xphHttpClient);
 
                     xphHttpDevice.initElementInfo();
                     log.info("【新浦会HTTP】http-client初始化结束");
                 } catch (Exception e) {
-                    log.error("【新浦会HTTP】http-client初始化异常",e);
+                    log.error("【新浦会HTTP】http-client初始化异常", e);
                     return;
                 }
-            }else {
+            } else {
                 log.info("【新浦会HTTP】http-client已存在");
             }
-        }else if (ServiceNameConst.SERVICE_XPH_GP_QXZ.equals(service)) {
-            if(!hmClientByServiceName.containsKey(ServiceNameConst.SERVICE_XPH_GP_QXZ)){
+        } else if (ServiceNameConst.SERVICE_XPH_GP_QXZ.equals(service)) {
+            if (!hmClientByServiceName.containsKey(ServiceNameConst.SERVICE_XPH_GP_QXZ)) {
 
                 try {
                     XphHttpClient xphHttpClient = new XphHttpClient();
                     xphHttpClient.init(firmBid, httpConfig, null);
-                    hmClients.put(iotFirmdevResVo.getFirmdevBid(), xphHttpClient);
+                    hmClients.put(tosDeviceType.getDevtypeBid(), xphHttpClient);
                     hmClientByServiceName.put(ServiceNameConst.SERVICE_XPH_GP_QXZ, xphHttpClient);
 
                     xphHttpGpQxzDevice.initElementInfo();
                     log.info("【新浦会光谱气象站HTTP】http-client初始化结束");
                 } catch (Exception e) {
-                    log.error("【新浦会光谱气象站】http-client初始化异常",e);
+                    log.error("【新浦会光谱气象站】http-client初始化异常", e);
                     return;
                 }
-            }else {
+            } else {
                 log.info("【新浦会光谱气象站】http-client已存在");
             }
-        } else if(ServiceNameConst.SERVICE_ZJSF_XYCB.equals(service)){
+        } else if (ServiceNameConst.SERVICE_ZJSF_XYCB.equals(service)) {
             ZjsfXycbHttpClient zjsfXycbHttpClient = new ZjsfXycbHttpClient();
-            zjsfXycbHttpClient.init(iotFirmdevResVo.getFirmBid(), httpConfig, iotFirmdevResVo.getDevtypeBid());
-            hmClients.put(iotFirmdevResVo.getFirmdevBid(), zjsfXycbHttpClient);
+            zjsfXycbHttpClient.init(tosDeviceType.getFirmBid(), httpConfig, tosDeviceType.getDevtypeBid());
+            hmClients.put(tosDeviceType.getDevtypeBid(), zjsfXycbHttpClient);
             hmClientByServiceName.put(ServiceNameConst.SERVICE_ZJSF_XYCB, zjsfXycbHttpClient);
             log.info("【中捷四方性诱测报】http-client初始化结束");
-        }
-        else{
+        } else {
             log.error("【http初始化】其它");
         }
     }
 
-    public HttpClient getHttpClient(String firmdevBid){
+    public HttpClient getHttpClient(String firmdevBid) {
         return hmClients.get(firmdevBid);
     }
 
-    public HttpClient getHttpClientByServiceName(String serviceName){
+    public HttpClient getHttpClientByServiceName(String serviceName) {
         return hmClientByServiceName.get(serviceName);
     }
 
-    public HttpClient getDefaultHttpClient(){
-        if(hmClients.size()<1){
+    public HttpClient getDefaultHttpClient() {
+        if (hmClients.size() < 1) {
             return null;
         }
         return hmClients.values().stream().findFirst().orElse(null);

+ 60 - 69
src/main/java/com/yunfeiyun/agmp/iots/core/manager/MqttManager.java

@@ -5,17 +5,15 @@ import com.yunfeiyun.agmp.common.constant.ErrorCode;
 import com.yunfeiyun.agmp.common.utils.DateUtils;
 import com.yunfeiyun.agmp.iot.common.constant.IotErrorCode;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
-import com.yunfeiyun.agmp.iot.common.domain.IotFirmdev;
-import com.yunfeiyun.agmp.iot.common.domain.resvo.IotFirmdevResVo;
 import com.yunfeiyun.agmp.iot.common.enums.DevType;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
+import com.yunfeiyun.agmp.iots.common.modal.TosDevicetypeResVo;
 import com.yunfeiyun.agmp.iots.core.mqtt.DeviceTopicService;
 import com.yunfeiyun.agmp.iots.core.mqtt.network.MqttConfig;
 import com.yunfeiyun.agmp.iots.core.mqtt.network.MqttCore;
 import com.yunfeiyun.agmp.iots.core.mqtt.network.MqttPublisher;
 import com.yunfeiyun.agmp.iots.device.common.Device;
 import com.yunfeiyun.agmp.iots.device.service.IIotDeviceService;
-import com.yunfeiyun.agmp.iots.device.service.IIotFirmdevService;
 import com.yunfeiyun.agmp.iots.service.CmdResultCheckService;
 import lombok.extern.slf4j.Slf4j;
 import org.eclipse.paho.client.mqttv3.MqttClient;
@@ -44,8 +42,6 @@ public class MqttManager {
     @Autowired
     IIotDeviceService iIotDeviceService;
 
-    @Autowired
-    IIotFirmdevService iotFirmdevService;
 
     /**
      * 实现类名称-->mqtt
@@ -62,12 +58,11 @@ public class MqttManager {
     private CmdResultCheckService cmdResultCheckService;
 
 
-
     /**
      * 强制对于已经废弃/逻辑需要重新梳理抛出异常
      */
-    void throwDeprecatedMethod(String msg){
-        throw new IotBizException(ErrorCode.FAILURE.getCode(),msg == null ? "方法已经废弃/逻辑需要重新梳理,重新更换" : msg);
+    void throwDeprecatedMethod(String msg) {
+        throw new IotBizException(ErrorCode.FAILURE.getCode(), msg == null ? "方法已经废弃/逻辑需要重新梳理,重新更换" : msg);
     }
 
 
@@ -77,19 +72,25 @@ public class MqttManager {
      * 【链接管理-创建】
      * 根据配置构建 MqttCoreConnection
      * 创建连接,底层统一调这个
-     * @param iotFirmdevResVo
+     *
+     * @param tosDeviceType
      * @param jsonConfig
      * @throws MqttException
      */
-    public void buildMqttConnection(IotFirmdevResVo iotFirmdevResVo, JSONObject jsonConfig) throws MqttException {
-        log.info("【开始构建MQTT连接】 iotFirmdevResVo: {}, jsonConfig: {}", iotFirmdevResVo, jsonConfig);
+    public void buildMqttConnection(TosDevicetypeResVo tosDeviceType, JSONObject jsonConfig) throws MqttException {
+        log.info("【开始构建MQTT连接】 tosDeviceTypeName: {}, tosDeviceTypeId:{}, jsonConfig: {}", tosDeviceType.getDevclassName(), tosDeviceType.getDevtypeBid(), jsonConfig);
 
         // 构建配置
-        MqttConfig cfgYf = buildMqttConfig(iotFirmdevResVo, jsonConfig);
+        MqttConfig cfgYf = buildMqttConfig(tosDeviceType, jsonConfig);
+        // 厂家id
         String firmBizId = cfgYf.getFirmBizId();
+        //服务类Bean名称
         String serviceName = cfgYf.getServiceName();
+        // 之前干嘛的待定,
         String type = cfgYf.getType();
+        //厂家名称
         String firmName = cfgYf.getFirmName();
+        //设备类型id(原来的类型小类id)
         String deviceTypeId = cfgYf.getDeviceTypeBizId();
         log.info("【初始化厂商配置】 {} {} 开始", firmName, type);
 
@@ -97,20 +98,16 @@ public class MqttManager {
         MqttCore mqttCore = new MqttCore();
         log.info("【创建MqttCore实例】 mqttCore: {}", mqttCore);
 
-        // 查询topics
-        String[] topics = deviceTopicService.getBatchTopic(serviceName, deviceTopicService.getDeviceIdByFirmBizId(firmBizId, deviceTypeId));
+        // 查询topics【需要实现:重新更改获取该型号下的设备】
+        //String[] topics = deviceTopicService.getBatchTopic(serviceName, deviceTopicService.getDeviceIdByFirmBizId(firmBizId, deviceTypeId));
+        String[] topics = deviceTopicService.getBatchTopic(serviceName, new String[]{"", "", ""});
         cfgYf.setSubTopic(topics);
         cfgYf.setServiceName(serviceName);
         log.info("【初始化厂商加载配置】 {} {} {}", firmName, type, Arrays.toString(topics));
 
         // 处理连接ID的逻辑
-        if ("私有".equals("查询字段")) {
-            log.info("【添加私有连接】 connectionId: connectionId");
-            addPrivateConnectionMap("connectionId", mqttCore);
-        } else {
-            log.info("【添加公共连接】 connectionId: connectionId");
-            addCommonConnectionMap("connectionId", mqttCore);
-        }
+        log.info("【添加公共连接】 connectionId: connectionId");
+        addConnectionMap("connectionId", mqttCore);
 
         // 构建MqttCore
         try {
@@ -129,6 +126,7 @@ public class MqttManager {
     /**
      * 【链接管理-删除】
      * 删除mqtt链接,底层统一调这个
+     *
      * @param connectionId
      * @throws MqttException
      */
@@ -164,13 +162,13 @@ public class MqttManager {
     /**
      * 将json配置文件解析,构建配置
      *
-     * @param iotFirmdevResVo
+     * @param tosDeviceType
      * @param jsonConfig
      * @return
      */
-    MqttConfig buildMqttConfig(IotFirmdevResVo iotFirmdevResVo, JSONObject jsonConfig) {
+    MqttConfig buildMqttConfig(TosDevicetypeResVo tosDeviceType, JSONObject jsonConfig) {
         MqttConfig cfgYf = new MqttConfig();
-        String firmBizId = iotFirmdevResVo.getFirmBid();
+        String firmBizId = tosDeviceType.getFirmBid();
         String serviceName = jsonConfig.getString("service");
         String type = jsonConfig.getString("type");
 
@@ -178,9 +176,9 @@ public class MqttManager {
         cfgYf.setFirmBizId(firmBizId);
         cfgYf.setType(type);
         //其他信息
-        cfgYf.setFirmName(iotFirmdevResVo.getFirmName());
-        cfgYf.setDeviceType(DevType.valueOfCode(iotFirmdevResVo.getDevtypeBid()));
-        cfgYf.setDeviceTypeBizId(iotFirmdevResVo.getDevtypeBid());
+        cfgYf.setFirmName(tosDeviceType.getFirmName());
+        cfgYf.setDeviceType(DevType.valueOfCode(tosDeviceType.getDevtypeBid()));
+        cfgYf.setDeviceTypeBizId(tosDeviceType.getDevtypeBid());
 
         cfgYf.setIp(jsonConfig.getString("ip"));
         cfgYf.setPort(jsonConfig.getString("port"));
@@ -193,27 +191,18 @@ public class MqttManager {
 
 
     /**
-     * 添加私有的链接:自行修改入参,链接的id生成
-     * @param connectionId
-     * @param mqttCore
-     */
-    private void addPrivateConnectionMap(String connectionId, MqttCore mqttCore) {
-        putConnection(connectionId,mqttCore);
-
-    }
-
-    /**
-     * 添加公有的链接:自行修改入参,链接的id生成
+     * 添加链接:自行修改入参,链接的id生成
+     *
      * @param connectionId
      * @param mqttCore
      */
-    private void addCommonConnectionMap(String connectionId, MqttCore mqttCore) {
-        putConnection(connectionId,mqttCore);
-
+    private void addConnectionMap(String connectionId, MqttCore mqttCore) {
+        putConnection(connectionId, mqttCore);
     }
 
     /**
      * 维护链接,connectionId => mqttCore
+     *
      * @param connectionId
      * @param mqttCore
      */
@@ -236,6 +225,7 @@ public class MqttManager {
     /**
      * 获取Publisher 根据服务名称
      * 之前对外暴漏publish,现在将其包装,直接提供发布方法
+     *
      * @param connectionId
      * @return
      */
@@ -252,6 +242,7 @@ public class MqttManager {
     /**
      * 【操作-发布消息】
      * 发布消息
+     *
      * @param connectionId 链接id
      * @param topic
      * @param message
@@ -346,7 +337,6 @@ public class MqttManager {
     }
 
 
-
     /**
      * 根据connectionId 获取mqttcore
      *
@@ -376,6 +366,7 @@ public class MqttManager {
      * 如此分类的原因
      * 1. 相同connectionId下serviceName不一定相同
      * 2. 相同的serviceName的connectionId不一定相同
+     *
      * @param connectionId
      * @param serviceName
      * @param deviceIds
@@ -407,6 +398,7 @@ public class MqttManager {
     /**
      * 【订阅-单个订阅】
      * 单个设备订阅
+     *
      * @param connectionId
      * @param serviceName
      * @param deviceId
@@ -428,6 +420,7 @@ public class MqttManager {
 
     /**
      * 【订阅-批量取消订阅】
+     *
      * @param connectionId
      * @param serviceName
      * @param deviceIds
@@ -458,6 +451,7 @@ public class MqttManager {
 
     /**
      * 【订阅-单个设备取消订阅】
+     *
      * @param connectionId
      * @param serviceName
      * @param deviceId
@@ -481,46 +475,43 @@ public class MqttManager {
 
 
     /**
-     * @deprecated
-     * 逻辑需要基于connectionId梳理
-     *
+     * @deprecated 逻辑需要基于connectionId梳理
+     * <p>
      * 两个小时内没有产生更新便认为是设备订阅失效,重新订阅
      */
     @Deprecated
     public void reSubscribe() {
         throwDeprecatedMethod("重新订阅逻辑不完善,需要梳理构建新的逻辑");
-        IotFirmdev iotFirmdev = new IotFirmdev();
-        List<IotFirmdevResVo> iotFirmdevResVos = iotFirmdevService.selectIotFirmdevList(iotFirmdev);
-        for (IotFirmdevResVo iotFirmdevResVo : iotFirmdevResVos) {
-            try {
-                JSONObject jsonConfig = JSONObject.parseObject(iotFirmdevResVo.getFirmdevCfg());
-                String type = jsonConfig.getString("type");
-                if (!Objects.equals(type, "mqtt")) {
-                    continue;
-                }
-                startSubscribe(iotFirmdevResVo, jsonConfig);
-            } catch (Exception e) {
-                log.error("【设备重新订阅】【订阅】【重连】 解析配置文件错误: \n" + iotFirmdevResVo.getFirmdevCfg() + "\n" + e);
-            }
-        }
+//        IotFirmdev iotFirmdev = new IotFirmdev();
+//        List<IotFirmdevResVo> iotFirmdevResVos = iotFirmdevService.selectIotFirmdevList(iotFirmdev);
+//        for (IotFirmdevResVo tosDeviceType : iotFirmdevResVos) {
+//            try {
+//                JSONObject jsonConfig = JSONObject.parseObject(tosDeviceType.getFirmdevCfg());
+//                String type = jsonConfig.getString("type");
+//                if (!Objects.equals(type, "mqtt")) {
+//                    continue;
+//                }
+//                startSubscribe(tosDeviceType, jsonConfig);
+//            } catch (Exception e) {
+//                log.error("【设备重新订阅】【订阅】【重连】 解析配置文件错误: \n" + tosDeviceType.getFirmdevCfg() + "\n" + e);
+//            }
+//        }
     }
 
     /**
-     * @deprecated
-     * 逻辑需要基于connectionId梳理
-     * 两个小时内没有产生更新便认为是设备订阅失效,重新订阅
-     *
-     * @param iotFirmdevResVo
+     * @param tosDeviceType
      * @param jsonConfig
+     * @deprecated 逻辑需要基于connectionId梳理
+     * 两个小时内没有产生更新便认为是设备订阅失效,重新订阅
      */
     @Deprecated
-    private void startSubscribe(IotFirmdevResVo iotFirmdevResVo, JSONObject jsonConfig) {
-        log.info("【设备重新订阅】【订阅】【重连】:设备:{} {}", iotFirmdevResVo, jsonConfig);
-        MqttConfig cfgYf = buildMqttConfig(iotFirmdevResVo, jsonConfig);
+    private void startSubscribe(TosDevicetypeResVo tosDeviceType, JSONObject jsonConfig) {
+        log.info("【设备重新订阅】【订阅】【重连】:设备:{} {}", tosDeviceType, jsonConfig);
+        MqttConfig cfgYf = buildMqttConfig(tosDeviceType, jsonConfig);
         String firmBizId = cfgYf.getFirmBizId();
         String serviceName = cfgYf.getServiceName();
         String deviceTypeId = cfgYf.getDeviceTypeBizId();
-        String connectionId="获取链接id";
+        String connectionId = "获取链接id";
         long nowTime = DateUtils.getNowDate().getTime() - (2 * 60 * 60 * 1000);
         String devUpdateddate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date(nowTime));
 
@@ -546,7 +537,7 @@ public class MqttManager {
         try {
             MqttClient mqttClient = mqttCore.getClient();
             if (!mqttClient.isConnected()) {
-                buildMqttConnection(iotFirmdevResVo,jsonConfig);
+                buildMqttConnection(tosDeviceType, jsonConfig);
             } else {
                 mqttCore.unsubscribe(topics);
                 mqttCore.subscribe(topics);

+ 14 - 0
src/main/java/com/yunfeiyun/agmp/iots/device/mapper/BusinessCoreMapper.java

@@ -0,0 +1,14 @@
+package com.yunfeiyun.agmp.iots.device.mapper;
+
+import com.yunfeiyun.agmp.iots.common.modal.TosDevicetypeResVo;
+
+import java.util.List;
+
+public interface BusinessCoreMapper {
+    /**
+     * 这个方法的定位就是:获取设备型号的信息,用于构建链接
+     *
+     * @return
+     */
+    List<TosDevicetypeResVo> selectTosDevicetypeResVoList();
+}

+ 29 - 0
src/main/java/com/yunfeiyun/agmp/iots/service/BusinessCoreService.java

@@ -0,0 +1,29 @@
+package com.yunfeiyun.agmp.iots.service;
+
+import com.yunfeiyun.agmp.iots.common.modal.TosDevicetypeResVo;
+import com.yunfeiyun.agmp.iots.device.mapper.BusinessCoreMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 不想创建service,mapper的简单查询,不需要完整的增删改查统一放到这里
+ */
+@Service
+public class BusinessCoreService {
+
+    @Autowired
+    private BusinessCoreMapper businessCoreMapper;
+
+    /**
+     * 这个方法的定位就是:获取设备型号的信息,用于构建链接
+     *
+     * @return
+     */
+    public List<TosDevicetypeResVo> selectTosDevicetypeResVoList() {
+
+        return businessCoreMapper.selectTosDevicetypeResVoList();
+    }
+
+}

+ 35 - 0
src/main/resources/mapper/BusinessCoreMapper.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yunfeiyun.agmp.iots.device.mapper.BusinessCoreMapper">
+
+
+    <!-- * 这个方法的定位就是:获取设备型号的信息,用于构建链接 *-->
+    <select id="selectTosDevicetypeResVoList"
+            resultType="com.yunfeiyun.agmp.iots.common.modal.TosDevicetypeResVo">
+        SELECT
+        tdt.id,
+        tdt.devtypeBid,
+        tdt.devclassBid,
+        tdt.devtypeName,
+        tdt.devtypeCode,
+        tdt.firmBid,
+        tdt.devtypePreview,
+        tdt.devtypeRemark,
+        tdt.devTypeConfig,
+        tdt.devtypeCreator,
+        tdt.devtypeModifier,
+        tdt.devtypeModifieddate,
+        tdt.devtypeCreateddate,
+        tdc.devclassName,
+        tf.firmName,
+        tf.firmShortname
+        FROM
+        TosDevicetype tdt
+        LEFT JOIN TosDeviceclass tdc on tdc.devclassBid = tdt.devclassBid
+        LEFT JOIN TosFirm tf on tf.firmBid = tdt.firmBid
+    </select>
+
+
+</mapper>