Kaynağa Gözat

修复设备通用连接更新失败的问题。
新增大华云睿监控对接。
调整萤石云设备云台控制(暂时处理)

liuyaowen 1 yıl önce
ebeveyn
işleme
ed22fed1a2

+ 12 - 19
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/controller/IotMonitorController.java

@@ -1,11 +1,8 @@
 package com.yunfeiyun.agmp.iotm.device.monitor.controller;
 
-import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.core.domain.AjaxResult;
 import com.yunfeiyun.agmp.common.core.page.TableDataInfo;
-import com.yunfeiyun.agmp.common.framework.mq.rabbitmq.model.SynGlobalTenantInfoDto;
 import com.yunfeiyun.agmp.common.utils.SecurityUtils;
-import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
 import com.yunfeiyun.agmp.iotm.common.controller.BaseController;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseCtlReqVo;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseListReqVo;
@@ -15,7 +12,6 @@ import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorCaptureReqVo;
 import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorPtzReqVo;
 import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorVideoReqVo;
 import com.yunfeiyun.agmp.iotm.device.monitor.service.IotMonitorService;
-import org.checkerframework.checker.units.qual.C;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -29,47 +25,44 @@ public class IotMonitorController extends BaseController {
     private IotDeviceCommonService iotDeviceCommonService;
 
     @GetMapping("/page")
-    public TableDataInfo page(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
-        startPage();
-        iotDeviceBaseListReqVo.setTid(SecurityUtils.getTid());
-        return getDataTable(iotMonitorService.list(iotDeviceBaseListReqVo));
-    }
-    @GetMapping("/test")
-    public TableDataInfo test(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
-        CmdGroupModel cmdGroupModel = new CmdGroupModel();
-        SynGlobalTenantInfoDto synGlobalTenantInfoDto = new SynGlobalTenantInfoDto();
-        synGlobalTenantInfoDto.setData(new JSONObject());
-        synGlobalTenantInfoDto.setData(JSONObject.from(cmdGroupModel));
+    public TableDataInfo page(IotDeviceBaseListReqVo iotDeviceBaseListReqVo) {
         startPage();
         iotDeviceBaseListReqVo.setTid(SecurityUtils.getTid());
         return getDataTable(iotMonitorService.list(iotDeviceBaseListReqVo));
     }
+
     @PostMapping("/address")
-    public AjaxResult address(@RequestBody IotMonitorAddressGetReqVo iotMonitorAddressGetReqVo){
+    public AjaxResult address(@RequestBody IotMonitorAddressGetReqVo iotMonitorAddressGetReqVo) {
         IotDeviceBaseCtlReqVo iotDeviceBaseCtlReqVo = new IotDeviceBaseCtlReqVo();
         iotDeviceBaseCtlReqVo.setDevBid(iotMonitorAddressGetReqVo.getDevBid());
         iotDeviceBaseCtlReqVo.setCtlType("address");
         iotDeviceBaseCtlReqVo.setParams(iotMonitorAddressGetReqVo);
         return AjaxResult.success(iotDeviceCommonService.ctl(iotDeviceBaseCtlReqVo));
     }
+
     @PostMapping("/video")
-    public AjaxResult video(@RequestBody IotMonitorVideoReqVo iotMonitorVideoReqVo){
+    public AjaxResult video(@RequestBody IotMonitorVideoReqVo iotMonitorVideoReqVo) {
         IotDeviceBaseCtlReqVo iotDeviceBaseCtlReqVo = new IotDeviceBaseCtlReqVo();
         iotDeviceBaseCtlReqVo.setDevBid(iotMonitorVideoReqVo.getDevBid());
         iotDeviceBaseCtlReqVo.setCtlType("video");
         iotDeviceBaseCtlReqVo.setParams(iotMonitorVideoReqVo);
         return AjaxResult.success(iotDeviceCommonService.ctl(iotDeviceBaseCtlReqVo));
     }
+
     @PostMapping("/capture")
-    public AjaxResult capture(@RequestBody IotMonitorCaptureReqVo iotMonitorCaptureReqVo){
+    public AjaxResult capture(@RequestBody IotMonitorCaptureReqVo iotMonitorCaptureReqVo) {
         IotDeviceBaseCtlReqVo iotDeviceBaseCtlReqVo = new IotDeviceBaseCtlReqVo();
         iotDeviceBaseCtlReqVo.setDevBid(iotMonitorCaptureReqVo.getDevBid());
         iotDeviceBaseCtlReqVo.setCtlType("capture");
         iotDeviceBaseCtlReqVo.setParams(iotMonitorCaptureReqVo);
         return AjaxResult.success(iotDeviceCommonService.ctl(iotDeviceBaseCtlReqVo));
     }
+
+    /**
+     * @param iotMonitorPtzReqVo
+     */
     @PostMapping("/ptz")
-    public AjaxResult ptz(@RequestBody IotMonitorPtzReqVo iotMonitorPtzReqVo){
+    public AjaxResult ptz(@RequestBody IotMonitorPtzReqVo iotMonitorPtzReqVo) {
         IotDeviceBaseCtlReqVo iotDeviceBaseCtlReqVo = new IotDeviceBaseCtlReqVo();
         iotDeviceBaseCtlReqVo.setDevBid(iotMonitorPtzReqVo.getDevBid());
         iotDeviceBaseCtlReqVo.setCtlType("ptz");

+ 24 - 3
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/domin/IotMonitorPtzReqVo.java

@@ -1,13 +1,34 @@
 package com.yunfeiyun.agmp.iotm.device.monitor.domin;
 
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import com.yunfeiyun.agmp.iot.common.domain.reqvo.IotMonitorPtzConstant;
 import lombok.Data;
 
 @Data
 public class IotMonitorPtzReqVo {
+    /**
+     * 设备标识
+     */
     private String devBid;
+    /**
+     * 设备数据
+     */
     private IotDevice iotDevice;
-    private Integer direction;
-    private Integer speed;
-    private boolean isStart;
+
+    /**
+     * 操作类型
+     * {@link IotMonitorPtzConstant.OperationConstant}
+     */
+    private Integer operateType;
+    /**
+     * 控制方向</br>
+     * 云台控制:{@link IotMonitorPtzConstant.MoveDirectConstant}</br>
+     * 镜头控制:{@link IotMonitorPtzConstant.LensDirectConstant}</br>
+     */
+    private Integer direct;
+    /**
+     * 移动幅度
+     */
+    private Integer step;
+
 }

+ 26 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/service/IYunRuiMonitorService.java

@@ -0,0 +1,26 @@
+package com.yunfeiyun.agmp.iotm.device.monitor.service;
+
+
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorAddressGetReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorCaptureReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorPtzReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorVideoReqVo;
+
+public interface IYunRuiMonitorService extends IotDeviceBaseService {
+
+    public String ptz(IotMonitorPtzReqVo iotMonitorPtzReqVo);
+
+    /**
+     * 抓拍
+     */
+    public String capture(IotMonitorCaptureReqVo iotMonitorCaptureReqVo);
+
+    /**
+     * 回放
+     */
+    public String video(IotMonitorVideoReqVo iotMonitorVideoReqVo);
+
+    public String address(IotMonitorAddressGetReqVo iotEzvizDeviceAddressGetReqVo);
+
+}

+ 1 - 2
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/service/IotMonitorService.java

@@ -2,12 +2,11 @@ package com.yunfeiyun.agmp.iotm.device.monitor.service;
 
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseListReqVo;
-import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
 
 import java.util.List;
 
-public interface IotMonitorService extends IotDeviceBaseService {
+public interface IotMonitorService {
     public List<IotDeviceListResVo> list(IotDeviceBaseListReqVo iotDeviceBaseListReqVo);
 
     public IotDevice info(IotDeviceBaseListReqVo iotDeviceBaseListReqVo);

+ 169 - 0
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/service/impl/IYunRuiMonitorServiceImpl.java

@@ -0,0 +1,169 @@
+package com.yunfeiyun.agmp.iotm.device.monitor.service.impl;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
+import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceTypeLv1Enum;
+import com.yunfeiyun.agmp.iot.common.constant.devicetype.ServiceNameConst;
+import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
+import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
+import com.yunfeiyun.agmp.iot.common.model.cmd.CmdModel;
+import com.yunfeiyun.agmp.iot.common.util.tmn.CustomerIdUtil;
+import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorAddressGetReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorCaptureReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorPtzReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorVideoReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.service.IYunRuiMonitorService;
+import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceconfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.LinkedList;
+
+@Service(value = ServiceNameConst.SERVICE_YUN_RUI_MINITOR)
+public class IYunRuiMonitorServiceImpl extends IotDeviceBaseServiceImpl implements IYunRuiMonitorService {
+
+    @Autowired
+    private IIotCmdtaskService iIotCmdtaskService;
+    @Autowired
+    private IIotDeviceService iotDeviceService;
+    @Autowired
+    private IIotDeviceconfigService iIotDeviceconfigService;
+
+
+    @Override
+    public String ptz(IotMonitorPtzReqVo iotMonitorPtzReqVo) {
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(iotMonitorPtzReqVo.getDevBid());
+        CmdGroupModel cmdGroupModel = new CmdGroupModel();
+        cmdGroupModel.setTid(CustomerIdUtil.getCustomerId());
+        cmdGroupModel.setCmdModels(new LinkedList<>());
+        CmdModel cmdModel = new CmdModel();
+        cmdModel.setDeviceId(iotDevice.getDevBid());
+        CmdModel.Cmd cmd = new CmdModel.Cmd();
+        cmd.setFunc("ptz");
+        cmd.setRetry(0L);
+        JSONObject params = new JSONObject();
+        String[] devArray = iotDevice.getDevCode().split("-");
+        params.put("deviceId", devArray[0]);
+        params.put("channelId", devArray[1]);
+        params.put("direct", iotMonitorPtzReqVo.getDirect());
+        params.put("step", iotMonitorPtzReqVo.getStep());
+        params.put("operateType", iotMonitorPtzReqVo.getOperateType());
+        cmd.setJsons(params);
+        cmdModel.setFinalStatus(false);
+        cmdModel.setTimeout(10);
+        cmdModel.setNeedcheckStatus(false);
+        cmdModel.setCmdDistribution(cmd);
+        cmdGroupModel.getCmdModels().add(Collections.singletonList(cmdModel));
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
+
+
+    @Override
+    public String capture(IotMonitorCaptureReqVo iotMonitorCaptureReqVo) {
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(iotMonitorCaptureReqVo.getDevBid());
+        CmdGroupModel cmdGroupModel = new CmdGroupModel();
+        cmdGroupModel.setTid(CustomerIdUtil.getCustomerId());
+        cmdGroupModel.setCmdModels(new LinkedList<>());
+        CmdModel cmdModel = new CmdModel();
+        cmdModel.setDeviceId(iotDevice.getDevBid());
+        CmdModel.Cmd cmd = new CmdModel.Cmd();
+        cmd.setFunc("capture");
+        cmd.setRetry(0L);
+        JSONObject params = new JSONObject();
+        String deviceCode = iotDevice.getDevCode();
+        String[] devArray = deviceCode.split("-");
+        params.put("deviceId", devArray[0]);
+        params.put("channelId", devArray[1]);
+        params.put("streamType", 1);
+        cmd.setJsons(params);
+        cmdModel.setFinalStatus(false);
+        cmdModel.setTimeout(10);
+        cmdModel.setNeedcheckStatus(false);
+        cmdModel.setCmdDistribution(cmd);
+        cmdGroupModel.getCmdModels().add(Collections.singletonList(cmdModel));
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
+
+
+    @Override
+    public String video(IotMonitorVideoReqVo iotMonitorVideoReqVo) {
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(iotMonitorVideoReqVo.getDevBid());
+        CmdGroupModel cmdGroupModel = new CmdGroupModel();
+        cmdGroupModel.setTid(CustomerIdUtil.getCustomerId());
+        cmdGroupModel.setCmdModels(new LinkedList<>());
+        CmdModel cmdModel = new CmdModel();
+        cmdModel.setDeviceId(iotDevice.getDevBid());
+        CmdModel.Cmd cmd = new CmdModel.Cmd();
+        cmd.setFunc("backView");
+        cmd.setRetry(0L);
+        JSONObject params = new JSONObject();
+        String[] devArray = iotDevice.getDevCode().split("-");
+        params.put("deviceId", devArray[0]);
+        params.put("channelId", devArray[1]);
+        params.put("beginTime", iotMonitorVideoReqVo.getStartTime());
+        params.put("endTime", iotMonitorVideoReqVo.getEndTime());
+        params.put("recordType", "localRecord");
+        cmd.setJsons(params);
+        cmdModel.setFinalStatus(false);
+        cmdModel.setTimeout(10);
+        cmdModel.setNeedcheckStatus(false);
+        cmdModel.setCmdDistribution(cmd);
+        cmdGroupModel.getCmdModels().add(Collections.singletonList(cmdModel));
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
+
+    @Override
+    public String address(IotMonitorAddressGetReqVo iotEzvizDeviceAddressGetReqVo) {
+        IotDevice iotDevice = iotDeviceService.selectIotDeviceByDevBid(iotEzvizDeviceAddressGetReqVo.getDevBid());
+        CmdGroupModel cmdGroupModel = new CmdGroupModel();
+        cmdGroupModel.setTid(CustomerIdUtil.getCustomerId());
+        cmdGroupModel.setCmdModels(new LinkedList<>());
+        CmdModel cmdModel = new CmdModel();
+        cmdModel.setDeviceId(iotDevice.getDevBid());
+        CmdModel.Cmd cmd = new CmdModel.Cmd();
+        cmd.setFunc("refreshVideoUrl");
+        cmd.setRetry(0L);
+        JSONObject params = new JSONObject();
+        String[] devArray = iotDevice.getDevCode().split("-");
+        params.put("deviceId", devArray[0]);
+        params.put("channelId", devArray[1]);
+        cmd.setJsons(params);
+        cmdModel.setFinalStatus(false);
+        cmdModel.setTimeout(10);
+        cmdModel.setNeedcheckStatus(false);
+        cmdModel.setCmdDistribution(cmd);
+        cmdGroupModel.getCmdModels().add(Collections.singletonList(cmdModel));
+        cmdGroupModel.setRequestId(IdUtils.fastUUID());
+        cmdGroupModel.setDevCode(iotDevice.getDevCode());
+        cmdGroupModel.setCtBiztype("3");
+        cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotDevice.getDevCode());
+        cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
+        iIotCmdtaskService.handInternalCmd(cmdGroupModel);
+        return cmdGroupModel.getTaskUuid();
+    }
+}

+ 43 - 29
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/service/impl/IotEzvizMonitorServiceImpl.java

@@ -1,9 +1,7 @@
 package com.yunfeiyun.agmp.iotm.device.monitor.service.impl;
 
-import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.constant.ErrorCode;
-import com.yunfeiyun.agmp.common.enums.RedisCacheKey;
 import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
 import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
 import com.yunfeiyun.agmp.iot.common.constant.IotEnumOnlineStatus;
@@ -15,22 +13,32 @@ import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdModel;
 import com.yunfeiyun.agmp.iot.common.util.tmn.CustomerIdUtil;
 import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
-import com.yunfeiyun.agmp.iotm.device.monitor.domin.*;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorAddressGetReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorCaptureReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorPtzReqVo;
+import com.yunfeiyun.agmp.iotm.device.monitor.domin.IotMonitorVideoReqVo;
 import com.yunfeiyun.agmp.iotm.device.monitor.service.IotEzvizMonitorService;
 import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceMapper;
 import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.util.Collections;
 import java.util.LinkedList;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 萤石云监控设备实现
  *
- * @author liuyaowen*/
+ * @author liuyaowen
+ */
 @Service(value = ServiceNameConst.SERVICE_EZVIZ_MINITOR)
+@Slf4j
 public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl implements IotEzvizMonitorService {
     @Resource
     private IotDeviceMapper iotDeviceMapper;
@@ -38,24 +46,30 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
     private IIotCmdtaskService iIotCmdtaskService;
     @Resource
     private RedisCacheManager redisCacheManager;
+    private ScheduledExecutorService scheduled;
 
-    public String ptz(IotMonitorPtzReqVo iotMonitorPtzReqVo){
-        if(iotMonitorPtzReqVo.isStart()){
-            return ptzStart(iotMonitorPtzReqVo);
-        }else {
-            return ptzEnd(iotMonitorPtzReqVo);
-        }
+    @PostConstruct
+    public void init() {
+        scheduled = Executors.newScheduledThreadPool(1);
+    }
+
+    public String ptz(IotMonitorPtzReqVo iotMonitorPtzReqVo) {
+        String result = ptzStart(iotMonitorPtzReqVo);
+        scheduled.schedule(() -> {
+            ptzEnd(iotMonitorPtzReqVo);
+        }, 500, TimeUnit.MILLISECONDS);
+        return result;
     }
 
 
     @Override
     public String ptzStart(IotMonitorPtzReqVo iotMonitorPtzReqVo) {
         IotDevice iotDevice = iotMonitorPtzReqVo.getIotDevice();
-        if(null == iotDevice){
+        if (null == iotDevice) {
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorPtzReqVo.getDevBid());
         }
-        if(!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())){
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
+        if (!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())) {
+            throw new IotBizException(ErrorCode.FAILURE.getCode(), "设备已离线");
         }
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
         cmdGroupModel.setTid(CustomerIdUtil.getCustomerId());
@@ -69,8 +83,8 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         String[] devCodeArray = iotDevice.getDevCode().split("-");
         params.put("deviceSerial", devCodeArray[0]);
         params.put("channelNo", devCodeArray[1]);
-        params.put("direction", iotMonitorPtzReqVo.getDirection());
-        params.put("speed", iotMonitorPtzReqVo.getSpeed());
+        params.put("direction", iotMonitorPtzReqVo.getDirect());
+        params.put("speed", iotMonitorPtzReqVo.getStep());
         cmd.setJsons(params);
         cmdModel.setFinalStatus(false);
         cmdModel.setTimeout(10);
@@ -90,11 +104,11 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
     @Override
     public String ptzEnd(IotMonitorPtzReqVo iotMonitorPtzReqVo) {
         IotDevice iotDevice = iotMonitorPtzReqVo.getIotDevice();
-        if(null == iotDevice){
+        if (null == iotDevice) {
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorPtzReqVo.getDevBid());
         }
-        if(!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())){
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
+        if (!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())) {
+            throw new IotBizException(ErrorCode.FAILURE.getCode(), "设备已离线");
         }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
@@ -108,7 +122,7 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         JSONObject params = new JSONObject();
         params.put("deviceSerial", devCodeArray[0]);
         params.put("channelNo", devCodeArray[1]);
-        params.put("direction", iotMonitorPtzReqVo.getDirection());
+        params.put("direction", iotMonitorPtzReqVo.getDirect());
         cmd.setJsons(params);
         cmdModel.setFinalStatus(false);
         cmdModel.setTimeout(10);
@@ -127,11 +141,11 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
     @Override
     public String capture(IotMonitorCaptureReqVo iotMonitorCaptureReqVo) {
         IotDevice iotDevice = iotMonitorCaptureReqVo.getIotDevice();
-        if(null == iotDevice){
+        if (null == iotDevice) {
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorCaptureReqVo.getDevBid());
         }
-        if(!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())){
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
+        if (!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())) {
+            throw new IotBizException(ErrorCode.FAILURE.getCode(), "设备已离线");
         }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
@@ -164,11 +178,11 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
     @Override
     public String video(IotMonitorVideoReqVo iotMonitorVideoReqVo) {
         IotDevice iotDevice = iotMonitorVideoReqVo.getIotDevice();
-        if(null == iotDevice){
+        if (null == iotDevice) {
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorVideoReqVo.getDevBid());
         }
-        if(!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())){
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
+        if (!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())) {
+            throw new IotBizException(ErrorCode.FAILURE.getCode(), "设备已离线");
         }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
@@ -202,11 +216,11 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
     @Override
     public String address(IotMonitorAddressGetReqVo iotMonitorAddressGetReqVo) {
         IotDevice iotDevice = iotMonitorAddressGetReqVo.getIotDevice();
-        if(null == iotDevice){
+        if (null == iotDevice) {
             iotDevice = iotDeviceMapper.selectIotDeviceByDevBid(iotMonitorAddressGetReqVo.getDevBid());
         }
-        if(!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())){
-            throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
+        if (!IotEnumOnlineStatus.ONLINE.getStatus().equals(iotDevice.getDevStatus())) {
+            throw new IotBizException(ErrorCode.FAILURE.getCode(), "设备已离线");
         }
         String[] devCodeArray = iotDevice.getDevCode().split("-");
         CmdGroupModel cmdGroupModel = new CmdGroupModel();
@@ -251,7 +265,7 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         cmd.setRetry(0L);
         JSONObject params = new JSONObject();
         params.put("devBid", iotDevice.getDevBid());
-        params.put("devCode",iotDevice.getDevCode());
+        params.put("devCode", iotDevice.getDevCode());
         cmd.setJsons(params);
         cmdModel.setFinalStatus(false);
         cmdModel.setTimeout(10);

+ 8 - 15
src/main/java/com/yunfeiyun/agmp/iotm/device/monitor/service/impl/IotMonitorServiceImpl.java

@@ -1,48 +1,41 @@
 package com.yunfeiyun.agmp.iotm.device.monitor.service.impl;
 
-import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
 import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceDictConst;
-import com.yunfeiyun.agmp.iot.common.constant.devicetype.IotDeviceTypeLv1Enum;
 import com.yunfeiyun.agmp.iot.common.domain.IotDevice;
-import com.yunfeiyun.agmp.iot.common.domain.IotDevicetype;
-import com.yunfeiyun.agmp.iot.common.domain.dto.IotDeviceDto;
-import com.yunfeiyun.agmp.iot.common.enums.IotRedisCacheKey;
 import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseListReqVo;
-import com.yunfeiyun.agmp.iotm.device.common.service.impl.IotDeviceBaseServiceImpl;
 import com.yunfeiyun.agmp.iotm.device.monitor.service.IotMonitorService;
-import com.yunfeiyun.agmp.iotm.mq.provider.IotsMqProviderService;
 import com.yunfeiyun.agmp.iotm.mq.service.SendToIotsMsgService;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceListResVo;
-import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceMapper;
 import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 @Service
-public class IotMonitorServiceImpl extends IotDeviceBaseServiceImpl implements IotMonitorService {
+public class IotMonitorServiceImpl implements IotMonitorService {
     @Resource
     private IIotDeviceService iotDeviceService;
     @Resource
     private SendToIotsMsgService sendToIotsMsgService;
+
     @Override
-    public List<IotDeviceListResVo> list(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
+    public List<IotDeviceListResVo> list(IotDeviceBaseListReqVo iotDeviceBaseListReqVo) {
         IotDeviceListReqVo iotDeviceListReqVo = new IotDeviceListReqVo();
-        BeanUtils.copyProperties(iotDeviceBaseListReqVo,iotDeviceListReqVo);
-        List<String> devTypeBidList = Arrays.asList(IotDeviceDictConst.TYPE_EZVIZ_JKSB,IotDeviceDictConst.TYPE_DAHUA_DEVICE,IotDeviceDictConst.TYPE_HIK_OPEN_DEVICE);
+        BeanUtils.copyProperties(iotDeviceBaseListReqVo, iotDeviceListReqVo);
+        List<String> devTypeBidList = Arrays.asList(IotDeviceDictConst.TYPE_EZVIZ_JKSB, IotDeviceDictConst.TYPE_DAHUA_DEVICE, IotDeviceDictConst.TYPE_HIK_OPEN_DEVICE, IotDeviceDictConst.TYPE_DAHUA_YUNRUI_DEVICE);
         iotDeviceListReqVo.setDevtypeBidList(devTypeBidList);
         List<IotDeviceListResVo> iotDeviceListResVoList = iotDeviceService.selectIotDeviceListByType(iotDeviceListReqVo);
-        sendToIotsMsgService.sendIotSynAllDeviceMsg(IotDeviceDictConst.TYPE_EZVIZ_JKSB,5L, TimeUnit.SECONDS);
+        sendToIotsMsgService.sendIotSynAllDeviceMsg(IotDeviceDictConst.TYPE_EZVIZ_JKSB, 5L, TimeUnit.SECONDS);
         return iotDeviceListResVoList;
     }
+
     @Override
-    public IotDevice info(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
+    public IotDevice info(IotDeviceBaseListReqVo iotDeviceBaseListReqVo) {
         return iotDeviceService.selectIotDeviceByDevBid(iotDeviceBaseListReqVo.getDevBid());
     }
 

+ 13 - 8
src/main/java/com/yunfeiyun/agmp/iotm/web/mapper/IotDeviceconnMapper.java

@@ -1,36 +1,41 @@
 package com.yunfeiyun.agmp.iotm.web.mapper;
 
 import com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn;
-import com.yunfeiyun.agmp.iotm.web.domain.IotDevconnConfigInfoVo;
 import com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceconnListReqVo;
 import com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceconnListResVo;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 /**
  * 设备连接配置Mapper接口
- * 
+ *
  * @author 杨晓辉
  * @date 2024-11-06
  */
-public interface IotDeviceconnMapper 
-{
+public interface IotDeviceconnMapper {
     /**
      * 查询设备连接配置列表
-     * 
+     *
      * @param iotDeviceconn 设备连接配置
      * @return 设备连接配置集合
      */
     public List<IotDeviceconn> selectIotDeviceconnList(IotDeviceconn iotDeviceconn);
 
     /**
+     * 根据设备类型查询所有租户的连接信息
+     */
+    public List<IotDeviceconn> selectIotDeviceconnListByDevtypeCode(@Param("devtypeCode") String devtypeCode, @Param("devconnType") String devconnType);
+
+    /**
      * 查询所有设备连接配置列表
-     * */
+     */
     public List<IotDeviceconn> selectIotDeviceconnAllList();
+
     /**
      * 批量删除设备连接配置
-     * 
-     * @param ids 需要删除的数据主键集合
+     *
+     * @param devconnBids 需要删除的数据主键集合
      * @return 结果
      */
     public int deleteIotDeviceconnByBids(String[] devconnBids);

+ 4 - 7
src/main/java/com/yunfeiyun/agmp/iotm/web/service/impl/TosDevicetypeServiceImpl.java

@@ -46,7 +46,7 @@ public class TosDevicetypeServiceImpl implements ITosDevicetypeService {
             typeCacheService.setCache(tosDevicetype);
         }
     }
-    
+
 
     /**
      * 查询设备类型
@@ -92,13 +92,8 @@ public class TosDevicetypeServiceImpl implements ITosDevicetypeService {
     @Override
     public int updateTosDevicetypeByTosMsg(TosDevicetype tosDevicetype) {
         TosDevicetype oldTosDeviceType = tosDevicetypeMapper.selectTosDevicetypeByDevtypeBid(tosDevicetype.getDevtypeBid());
-        int result = tosDevicetypeMapper.updateTosDevicetype(tosDevicetype);
-        typeCacheService.setCache(tosDevicetype);
         if (oldTosDeviceType != null && !oldTosDeviceType.getDevTypeConfig().equals(tosDevicetype.getDevTypeConfig())) {
-            IotDeviceconn iotDeviceConnQuery = new IotDeviceconn();
-            iotDeviceConnQuery.setDevconnType(IotDeviceconnTypeEnum.COMMON.getCode());
-            iotDeviceConnQuery.setDevtypeBid(tosDevicetype.getDevtypeBid());
-            List<IotDeviceconn> iotDeviceconnList = iotDeviceconnMapper.selectIotDeviceconnList(iotDeviceConnQuery);
+            List<IotDeviceconn> iotDeviceconnList = iotDeviceconnMapper.selectIotDeviceconnListByDevtypeCode(tosDevicetype.getDevtypeCode(), IotDeviceconnTypeEnum.COMMON.getCode());
             for (IotDeviceconn iotDeviceconn : iotDeviceconnList) {
                 iotDeviceconn.setDevconnConfig(tosDevicetype.getDevTypeConfig());
             }
@@ -107,6 +102,8 @@ public class TosDevicetypeServiceImpl implements ITosDevicetypeService {
             }
             sendToIotsMsgService.sendTosDeviceTypeUpdate(tosDevicetype);
         }
+        int result = tosDevicetypeMapper.updateTosDevicetype(tosDevicetype);
+        typeCacheService.setCache(tosDevicetype);
         return result;
     }
 

+ 90 - 61
src/main/resources/mapper/IotDeviceconnMapper.xml

@@ -1,46 +1,45 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceconnMapper">
-    
+
     <resultMap type="IotDeviceconn" id="IotDeviceconnResult">
-        <result property="id"    column="id"    />
-        <result property="devconnBid"    column="devconnBid"    />
-        <result property="devclassBid"    column="devclassBid"    />
-        <result property="devtypeBid"    column="devtypeBid"    />
-        <result property="firmBid"    column="firmBid"    />
-        <result property="devconnType"    column="devconnType"    />
-        <result property="devconnName"    column="devconnName"    />
-        <result property="devtypeName"    column="devtypeName"    />
-        <result property="devconnConfig"    column="devconnConfig"    />
-        <result property="devconnRemark"    column="devconnRemark"    />
-        <result property="devconnCreator"    column="devconnCreator"    />
-        <result property="devconnModifier"    column="devconnModifier"    />
-        <result property="devconnModifieddate"    column="devconnModifieddate"    />
-        <result property="devconnCreateddate"    column="devconnCreateddate"    />
-        <result property="tid"    column="tid"    />
+        <result property="id" column="id"/>
+        <result property="devconnBid" column="devconnBid"/>
+        <result property="devclassBid" column="devclassBid"/>
+        <result property="devtypeBid" column="devtypeBid"/>
+        <result property="firmBid" column="firmBid"/>
+        <result property="devconnType" column="devconnType"/>
+        <result property="devconnName" column="devconnName"/>
+        <result property="devtypeName" column="devtypeName"/>
+        <result property="devconnConfig" column="devconnConfig"/>
+        <result property="devconnRemark" column="devconnRemark"/>
+        <result property="devconnCreator" column="devconnCreator"/>
+        <result property="devconnModifier" column="devconnModifier"/>
+        <result property="devconnModifieddate" column="devconnModifieddate"/>
+        <result property="devconnCreateddate" column="devconnCreateddate"/>
+        <result property="tid" column="tid"/>
     </resultMap>
 
     <sql id="selectIotDeviceconnVo">
         select id, devconnBid, devtypeBid, devconnType, devconnName, devconnConfig, devconnRemark, devconnCreator,
-            devconnModifier, devconnModifieddate, devconnCreateddate, tid from IotDeviceconn
+        devconnModifier, devconnModifieddate, devconnCreateddate, tid from IotDeviceconn
     </sql>
     <update id="updateBatchByBid">
-        <foreach collection="list" open="(" separator="," close=")" index="index" item="item">
+        <foreach collection="list" separator=";" index="index" item="item">
             update IotDeviceconn
             <trim prefix="SET" suffixOverrides=",">
-                <if test="devconnType != null">devcfgBid = #{devcfgBid},</if>
-                <if test="devconnName != null">tid = #{tid},</if>
-                <if test="devconnConfig != null">devBid = #{devBid},</if>
-                <if test="devconnRemark != null">devcfgCmd = #{devcfgCmd},</if>
-                <if test="devconnCreator != null">devcfgContext = #{devcfgContext},</if>
-                <if test="devconnModifier != null">devcfgCreator = #{devcfgCreator},</if>
-                <if test="devcfgModifier != null">devcfgModifier = #{devcfgModifier},</if>
-                <if test="devconnModifieddate != null">devcfgModifieddate = #{devcfgModifieddate},</if>
-                <if test="devconnCreateddate != null">devcfgCreateddate = #{devcfgCreateddate},</if>
+                <if test="item.devconnType != null">devconnType = #{item.devconnType},</if>
+                <if test="item.devconnName != null">devconnName = #{item.devconnName},</if>
+                <if test="item.devconnConfig != null">devconnConfig = #{item.devconnConfig},</if>
+                <if test="item.devconnRemark != null">devconnRemark = #{item.devconnRemark},</if>
+                <if test="item.devconnCreator != null">devconnCreator = #{item.devconnCreator},</if>
+                <if test="item.devconnModifier != null">devconnModifier = #{item.devconnModifier},</if>
+                <if test="item.devconnModifieddate != null">devconnModifieddate = #{item.devconnModifieddate},</if>
+                <if test="item.devconnCreateddate != null">devconnCreateddate = #{item.devconnCreateddate},</if>
             </trim>
-            where devconnBid = #{devconnBid}
+            where devconnBid = #{item.devconnBid}
         </foreach>
     </update>
     <update id="updateIotDeviceconnByBid">
@@ -61,23 +60,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectIotDeviceconnList" parameterType="IotDeviceconn" resultMap="IotDeviceconnResult">
         select dcn.devconnBid, dcn.devtypeBid, dcn.devconnType, dcn.devconnName, dcn.devconnConfig, dcn.devconnRemark,
-            dcn.devconnCreator, dcn.devconnModifier, dcn.devconnModifieddate, dcn.devconnCreateddate,
-            dt.devclassBid, dt.firmBid, dt.devtypeName
+        dcn.devconnCreator, dcn.devconnModifier, dcn.devconnModifieddate, dcn.devconnCreateddate,
+        dt.devclassBid, dt.firmBid, dt.devtypeName
         from IotDeviceconn as dcn
-            left join TosDevicetype as dt on dt.devtypeBid = dcn.devtypeBid
+        left join TosDevicetype as dt on dt.devtypeBid = dcn.devtypeBid
 
         <where>
             tid = #{tid}
-            <if test="devconnBid != null  and devconnBid != ''"> and dcn.devconnBid = #{devconnBid}</if>
-            <if test="devtypeBid != null  and devtypeBid != ''"> and dcn.devtypeBid = #{devtypeBid}</if>
-            <if test="devconnType != null  and devconnType != ''"> and dcn.devconnType = #{devconnType}</if>
-            <if test="devconnName != null  and devconnName != ''"> and dcn.devconnName like concat('%', #{devconnName}, '%')</if>
-            <if test="devconnConfig != null  and devconnConfig != ''"> and dcn.devconnConfig = #{devconnConfig}</if>
-            <if test="devconnRemark != null  and devconnRemark != ''"> and dcn.devconnRemark = #{devconnRemark}</if>
-            <if test="devconnCreator != null  and devconnCreator != ''"> and dcn.devconnCreator = #{devconnCreator}</if>
-            <if test="devconnModifier != null  and devconnModifier != ''"> and dcn.devconnModifier = #{devconnModifier}</if>
-            <if test="devconnModifieddate != null  and devconnModifieddate != ''"> and dcn.devconnModifieddate = #{devconnModifieddate}</if>
-            <if test="devconnCreateddate != null  and devconnCreateddate != ''"> and dcn.devconnCreateddate = #{devconnCreateddate}</if>
+            <if test="devconnBid != null  and devconnBid != ''">and dcn.devconnBid = #{devconnBid}</if>
+            <if test="devtypeBid != null  and devtypeBid != ''">and dcn.devtypeBid = #{devtypeBid}</if>
+            <if test="devconnType != null  and devconnType != ''">and dcn.devconnType = #{devconnType}</if>
+            <if test="devconnName != null  and devconnName != ''">and dcn.devconnName like concat('%', #{devconnName},
+                '%')
+            </if>
+            <if test="devconnConfig != null  and devconnConfig != ''">and dcn.devconnConfig = #{devconnConfig}</if>
+            <if test="devconnRemark != null  and devconnRemark != ''">and dcn.devconnRemark = #{devconnRemark}</if>
+            <if test="devconnCreator != null  and devconnCreator != ''">and dcn.devconnCreator = #{devconnCreator}</if>
+            <if test="devconnModifier != null  and devconnModifier != ''">and dcn.devconnModifier = #{devconnModifier}
+            </if>
+            <if test="devconnModifieddate != null  and devconnModifieddate != ''">and dcn.devconnModifieddate =
+                #{devconnModifieddate}
+            </if>
+            <if test="devconnCreateddate != null  and devconnCreateddate != ''">and dcn.devconnCreateddate =
+                #{devconnCreateddate}
+            </if>
         </where>
     </select>
 
@@ -85,45 +91,68 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             parameterType="com.yunfeiyun.agmp.iotm.web.domain.reqvo.IotDeviceconnListReqVo"
             resultType="com.yunfeiyun.agmp.iotm.web.domain.resvo.IotDeviceconnListResVo">
         SELECT dcn.devconnBid, dcn.devconnType, dcn.devconnName, dcn.devconnRemark, dc.devclassBid, dc.devclassCode,
-            dc.devclassName, dt.devtypeBid, dt.devtypeCode, dt.devtypeName, dcn.devconnCreateddate
+        dc.devclassName, dt.devtypeBid, dt.devtypeCode, dt.devtypeName, dcn.devconnCreateddate
         FROM IotDeviceconn AS dcn
-            LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = dcn.devtypeBid
-            LEFT JOIN TosDeviceclass AS dc ON dc.devclassBid = dt.devclassBid
+        LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = dcn.devtypeBid
+        LEFT JOIN TosDeviceclass AS dc ON dc.devclassBid = dt.devclassBid
         <where>
             dcn.tid = #{tid}
-            <if test="devclassCode != null  and devclassCode != ''"> and dc.devclassCode like concat('%', #{devclassCode}, '%')</if>
-            <if test="devclassName != null  and devclassName != ''"> and dc.devclassName like concat('%', #{devclassName}, '%')</if>
-            <if test="devtypeName != null  and devtypeName != ''"> and dt.devtypeName like concat('%', #{devtypeName}, '%')</if>
-            <if test="devtypeCode != null  and devtypeCode != ''"> and dt.devtypeCode like concat('%', #{devtypeCode}, '%')</if>
-            <if test="devconnName != null  and devconnName != ''"> and dcn.devconnName like concat('%', #{devconnName}, '%')</if>
-            <if test="devconnType != null  and devconnType != ''"> and devconnType = #{devconnType}</if>
+            <if test="devclassCode != null  and devclassCode != ''">and dc.devclassCode like concat('%',
+                #{devclassCode}, '%')
+            </if>
+            <if test="devclassName != null  and devclassName != ''">and dc.devclassName like concat('%',
+                #{devclassName}, '%')
+            </if>
+            <if test="devtypeName != null  and devtypeName != ''">and dt.devtypeName like concat('%', #{devtypeName},
+                '%')
+            </if>
+            <if test="devtypeCode != null  and devtypeCode != ''">and dt.devtypeCode like concat('%', #{devtypeCode},
+                '%')
+            </if>
+            <if test="devconnName != null  and devconnName != ''">and dcn.devconnName like concat('%', #{devconnName},
+                '%')
+            </if>
+            <if test="devconnType != null  and devconnType != ''">and devconnType = #{devconnType}</if>
         </where>
         GROUP BY dcn.devtypeBid
     </select>
 
-    <select id="selectIotDeviceconnByBid" parameterType="string" resultType="com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn">
+    <select id="selectIotDeviceconnByBid" parameterType="string"
+            resultType="com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn">
         SELECT dcn.devconnBid, dcn.devconnType, dcn.devconnName, dcn.devconnRemark, dc.devclassBid, dc.devclassCode,
-            dc.devclassName, dt.devtypeBid, dt.devtypeCode, dt.devtypeName, dcn.devconnCreateddate, dt.firmBid
+        dc.devclassName, dt.devtypeBid, dt.devtypeCode, dt.devtypeName, dcn.devconnCreateddate, dt.firmBid
         FROM IotDeviceconn AS dcn
-            LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = dcn.devtypeBid
-            LEFT JOIN TosDeviceclass AS dc ON dc.devclassBid = dt.devclassBid
+        LEFT JOIN TosDevicetype AS dt ON dt.devtypeBid = dcn.devtypeBid
+        LEFT JOIN TosDeviceclass AS dc ON dc.devclassBid = dt.devclassBid
         WHERE dcn.devconnBid = #{devconnBid}
     </select>
     <select id="selectIotDeviceconnAllList" resultType="com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn">
         <include refid="selectIotDeviceconnVo"/>
     </select>
+    <select id="selectIotDeviceconnListByDevtypeCode"
+            resultType="com.yunfeiyun.agmp.iot.common.domain.IotDeviceconn">
+        select
+        idc.*
+        from IotDeviceconn idc
+        LEFT JOIN TosDevicetype tdt on tdt.devtypeBid = idc.devtypeBid
+        where
+        tdt.devtypeCode = #{devtypeCode}
+        <if test="devconnType != null and devconnType != ''">
+            and idc.devconnType = #{devconnType}
+        </if>
+    </select>
 
     <insert id="insertIotDeviceconnByBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
         insert into IotDeviceconn (
-            devconnBid, devtypeBid, devconnType, devconnName, devconnConfig, devconnRemark, devconnCreator,
-            devconnModifier, devconnModifieddate, devconnCreateddate, tid
+        devconnBid, devtypeBid, devconnType, devconnName, devconnConfig, devconnRemark, devconnCreator,
+        devconnModifier, devconnModifieddate, devconnCreateddate, tid
         )
         values
         <foreach collection="list" item="item" separator="," index="index">
             (
-                #{item.devconnBid}, #{item.devtypeBid}, #{item.devconnType}, #{item.devconnName}, #{item.devconnConfig},
-                #{item.devconnRemark}, #{item.devconnCreator}, #{item.devconnModifier}, #{item.devconnModifieddate},
-                #{item.devconnCreateddate}, #{item.tid}
+            #{item.devconnBid}, #{item.devtypeBid}, #{item.devconnType}, #{item.devconnName}, #{item.devconnConfig},
+            #{item.devconnRemark}, #{item.devconnCreator}, #{item.devconnModifier}, #{item.devconnModifieddate},
+            #{item.devconnCreateddate}, #{item.tid}
             )
         </foreach>
     </insert>