|
|
@@ -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(), "无效的操作类型");
|
|
|
+ }
|
|
|
}
|