Forráskód Böngészése

调整大华云睿监控,新增设备类型通用链接配置不存在时的禁用选择

liuyaowen 1 éve
szülő
commit
f6a0544eb2

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

@@ -2,12 +2,16 @@ package com.yunfeiyun.agmp.iotm.device.monitor.service.impl;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.constant.ErrorCode;
+import com.yunfeiyun.agmp.common.enums.RedisCacheKey;
+import com.yunfeiyun.agmp.common.exception.BizException;
 import com.yunfeiyun.agmp.common.framework.manager.RedisCacheManager;
+import com.yunfeiyun.agmp.common.log.LogCore;
 import com.yunfeiyun.agmp.common.utils.uuid.IdUtils;
 import com.yunfeiyun.agmp.iot.common.constant.IotEnumOnlineStatus;
 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.domain.reqvo.IotMonitorPtzConstant;
 import com.yunfeiyun.agmp.iot.common.exception.IotBizException;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdGroupModel;
 import com.yunfeiyun.agmp.iot.common.model.cmd.CmdModel;
@@ -22,6 +26,7 @@ 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.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
@@ -46,6 +51,8 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
     private IIotCmdtaskService iIotCmdtaskService;
     @Resource
     private RedisCacheManager redisCacheManager;
+    @Resource
+    private RedisTemplate redisTemplate;
     private ScheduledExecutorService scheduled;
 
     @PostConstruct
@@ -54,9 +61,16 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
     }
 
     public String ptz(IotMonitorPtzReqVo iotMonitorPtzReqVo) {
+        iotMonitorPtzReqVo.setStep(1);
+        iotMonitorPtzReqVo.setDirect(IotEzvizMonitorServiceImpl.transPtzDirection(iotMonitorPtzReqVo.getDirect(), iotMonitorPtzReqVo.getOperateType()));
         String result = ptzStart(iotMonitorPtzReqVo);
+        String redisKey = RedisCacheKey.IOT_MONITOR_PTZ_DELAY_ASYN + ":" + iotMonitorPtzReqVo.getDevBid();
+        redisTemplate.opsForValue().set(redisKey, LogCore.getSeq(), 500, TimeUnit.MILLISECONDS);
         scheduled.schedule(() -> {
-            ptzEnd(iotMonitorPtzReqVo);
+            Object delayAsyn = redisTemplate.opsForValue().get(redisKey);
+            if (null == delayAsyn) {
+                ptzEnd(iotMonitorPtzReqVo);
+            }
         }, 500, TimeUnit.MILLISECONDS);
         return result;
     }
@@ -83,6 +97,7 @@ 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.getDirect());
         params.put("speed", iotMonitorPtzReqVo.getStep());
         cmd.setJsons(params);
@@ -282,4 +297,18 @@ public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl impleme
         return cmdGroupModel.getTaskUuid();
     }
 
+    private static Integer transPtzDirection(Integer direct, Integer operateType) {
+        if (IotMonitorPtzConstant.OperationConstant.MOVE.equals(String.valueOf(operateType))) {
+            if (direct <= 8) {
+                return direct - 1;
+            }
+        } else if (IotMonitorPtzConstant.OperationConstant.LENS.equals(String.valueOf(operateType))) {
+            if (direct == 1) {
+                return 8;
+            } else if (direct == -1) {
+                return 9;
+            }
+        }
+        throw new BizException(ErrorCode.INVALID_PARAMETER.getCode(), "无效的操作类型");
+    }
 }

+ 15 - 5
src/main/java/com/yunfeiyun/agmp/iotm/web/domain/resvo/IotDevicetypeListResVo.java

@@ -5,26 +5,36 @@ import lombok.Data;
 
 /**
  * 设备类型对象 TosDevicetype
- * 
+ *
  * @author 杨晓辉
  * @date 2024-11-06
  */
 @Data
 public class IotDevicetypeListResVo {
 
-    /** 设备型号业务标识 */
+    /**
+     * 设备型号业务标识
+     */
     @Excel(name = "设备型号业务标识")
     private String devtypeBid;
 
-    /** 设备类型 */
+    /**
+     * 设备类型
+     */
     @Excel(name = "设备类型")
     private String devclassBid;
 
-    /** 型号名称 */
+    /**
+     * 型号名称
+     */
     @Excel(name = "型号名称")
     private String devtypeName;
 
-    /** 型号代码 */
+    /**
+     * 型号代码
+     */
     @Excel(name = "型号代码")
     private String devtypeCode;
+
+    private boolean commonDisable;
 }