|
|
@@ -0,0 +1,269 @@
|
|
|
+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.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.resvo.IotDeviceResVo;
|
|
|
+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;
|
|
|
+import com.yunfeiyun.agmp.iot.common.util.tmn.CustomerIdUtil;
|
|
|
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseCtlReqVo;
|
|
|
+import com.yunfeiyun.agmp.iotm.device.common.domin.IotDeviceBaseListReqVo;
|
|
|
+import com.yunfeiyun.agmp.iotm.device.common.service.IotDeviceBaseService;
|
|
|
+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.service.IotEzvizMonitorService;
|
|
|
+import com.yunfeiyun.agmp.iotm.web.mapper.IotDeviceMapper;
|
|
|
+import com.yunfeiyun.agmp.iotm.web.service.IIotCmdtaskService;
|
|
|
+import com.yunfeiyun.agmp.iotm.web.service.IIotDeviceService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.LinkedList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 萤石云监控设备实现
|
|
|
+ *
|
|
|
+ * @author liuyaowen*/
|
|
|
+@Service(value = ServiceNameConst.SERVICE_EZVIZ_MINITOR)
|
|
|
+public class IotEzvizMonitorServiceImpl extends IotDeviceBaseServiceImpl implements IotEzvizMonitorService {
|
|
|
+ @Resource
|
|
|
+ private IotDeviceMapper iotDeviceMapper;
|
|
|
+ @Autowired
|
|
|
+ private IIotCmdtaskService iIotCmdtaskService;
|
|
|
+ @Resource
|
|
|
+ private RedisCacheManager redisCacheManager;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<IotDevice> list(IotDeviceBaseListReqVo iotDeviceBaseCtlReqVo){
|
|
|
+ return iotDeviceMapper.selectIotDeviceList(iotDeviceBaseCtlReqVo);
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public IotDevice info(IotDeviceBaseListReqVo iotDeviceBaseListReqVo){
|
|
|
+ return iotDeviceMapper.selectIotDeviceByDevBid(iotDeviceBaseListReqVo.getDevBid());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String ptzStart(IotEzvizDevicePtzReqVo iotEzvizDevicePtzReqVo) {
|
|
|
+ if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS,iotEzvizDevicePtzReqVo.getDevBid()))){
|
|
|
+ throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
|
|
|
+ }
|
|
|
+ CmdGroupModel cmdGroupModel = new CmdGroupModel();
|
|
|
+ cmdGroupModel.setCId(CustomerIdUtil.getCustomerId());
|
|
|
+ cmdGroupModel.setCmdModels(new LinkedList<>());
|
|
|
+ CmdModel cmdModel = new CmdModel();
|
|
|
+ cmdModel.setDeviceId(iotEzvizDevicePtzReqVo.getDevBid());
|
|
|
+ CmdModel.Cmd cmd = new CmdModel.Cmd();
|
|
|
+ cmd.setFunc("ptzStart");
|
|
|
+ cmd.setRetry(0L);
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ String[] devCodeArray = iotEzvizDevicePtzReqVo.getDevCode().split("-");
|
|
|
+ params.put("deviceSerial", devCodeArray[0]);
|
|
|
+ params.put("channelNo", devCodeArray[1]);
|
|
|
+ params.put("direction", iotEzvizDevicePtzReqVo.getDirection());
|
|
|
+ params.put("speed", iotEzvizDevicePtzReqVo.getSpeed());
|
|
|
+ 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(iotEzvizDevicePtzReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtBiztype("3");
|
|
|
+ cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotEzvizDevicePtzReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtDevtype(iotEzvizDevicePtzReqVo.getDevtypeBid());
|
|
|
+
|
|
|
+ iIotCmdtaskService.handInternalCmd(cmdGroupModel);
|
|
|
+ return cmdGroupModel.getTaskUuid();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String ptzEnd(IotEzvizDevicePtzReqVo iotEzvizDevicePtzReqVo) {
|
|
|
+ if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS,iotEzvizDevicePtzReqVo.getDevBid()))){
|
|
|
+ throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
|
|
|
+ }
|
|
|
+ String[] devCodeArray = iotEzvizDevicePtzReqVo.getDevCode().split("-");
|
|
|
+ CmdGroupModel cmdGroupModel = new CmdGroupModel();
|
|
|
+ cmdGroupModel.setCId(CustomerIdUtil.getCustomerId());
|
|
|
+ cmdGroupModel.setCmdModels(new LinkedList<>());
|
|
|
+ CmdModel cmdModel = new CmdModel();
|
|
|
+ cmdModel.setDeviceId(iotEzvizDevicePtzReqVo.getDevBid());
|
|
|
+ CmdModel.Cmd cmd = new CmdModel.Cmd();
|
|
|
+ cmd.setFunc("ptzEnd");
|
|
|
+ cmd.setRetry(0L);
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("deviceSerial", devCodeArray[0]);
|
|
|
+ params.put("channelNo", devCodeArray[1]);
|
|
|
+ params.put("direction", iotEzvizDevicePtzReqVo.getDirection());
|
|
|
+ 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(iotEzvizDevicePtzReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtBiztype("3");
|
|
|
+ cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotEzvizDevicePtzReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtDevtype(iotEzvizDevicePtzReqVo.getDevtypeBid());
|
|
|
+ iIotCmdtaskService.handInternalCmd(cmdGroupModel);
|
|
|
+ return cmdGroupModel.getTaskUuid();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String capture(IotEzvizDeviceCaptureReqVo iotEzvizDeviceCaptureReqVo) {
|
|
|
+ if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS,iotEzvizDeviceCaptureReqVo.getDevBid()))){
|
|
|
+ throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
|
|
|
+ }
|
|
|
+ String[] devCodeArray = iotEzvizDeviceCaptureReqVo.getDevCode().split("-");
|
|
|
+ CmdGroupModel cmdGroupModel = new CmdGroupModel();
|
|
|
+ cmdGroupModel.setCId(CustomerIdUtil.getCustomerId());
|
|
|
+ cmdGroupModel.setCmdModels(new LinkedList<>());
|
|
|
+ CmdModel cmdModel = new CmdModel();
|
|
|
+ cmdModel.setDeviceId(iotEzvizDeviceCaptureReqVo.getDevBid());
|
|
|
+ CmdModel.Cmd cmd = new CmdModel.Cmd();
|
|
|
+ cmd.setFunc("capture");
|
|
|
+ cmd.setRetry(0L);
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("deviceSerial", devCodeArray[0]);
|
|
|
+ params.put("channelNo", devCodeArray[1]);
|
|
|
+ params.put("quality", iotEzvizDeviceCaptureReqVo.getQuality());
|
|
|
+ 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(iotEzvizDeviceCaptureReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtBiztype("3");
|
|
|
+ cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotEzvizDeviceCaptureReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtDevtype(iotEzvizDeviceCaptureReqVo.getDevtypeBid());
|
|
|
+ iIotCmdtaskService.handInternalCmd(cmdGroupModel);
|
|
|
+ return cmdGroupModel.getTaskUuid();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String video(IotEzvizDeviceVideoReqVo iotEzvizDeviceVideoReqVo) {
|
|
|
+ if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS,iotEzvizDeviceVideoReqVo.getDevBid()))){
|
|
|
+ throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
|
|
|
+ }
|
|
|
+ String[] devCodeArray = iotEzvizDeviceVideoReqVo.getDevCode().split("-");
|
|
|
+ CmdGroupModel cmdGroupModel = new CmdGroupModel();
|
|
|
+ cmdGroupModel.setCId(CustomerIdUtil.getCustomerId());
|
|
|
+ cmdGroupModel.setCmdModels(new LinkedList<>());
|
|
|
+ CmdModel cmdModel = new CmdModel();
|
|
|
+ cmdModel.setDeviceId(iotEzvizDeviceVideoReqVo.getDevBid());
|
|
|
+ CmdModel.Cmd cmd = new CmdModel.Cmd();
|
|
|
+ cmd.setFunc("video");
|
|
|
+ cmd.setRetry(0L);
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("deviceSerial", devCodeArray[0]);
|
|
|
+ params.put("channelNo", devCodeArray[1]);
|
|
|
+ params.put("startTime", iotEzvizDeviceVideoReqVo.getStartTime());
|
|
|
+ params.put("endTime", iotEzvizDeviceVideoReqVo.getEndTime());
|
|
|
+ params.put("recType", iotEzvizDeviceVideoReqVo.getRecType());
|
|
|
+ params.put("version", iotEzvizDeviceVideoReqVo.getVersion());
|
|
|
+ params.put("pageSize", iotEzvizDeviceVideoReqVo.getPageSize());
|
|
|
+ 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(iotEzvizDeviceVideoReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtBiztype("3");
|
|
|
+ cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotEzvizDeviceVideoReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtDevtype(iotEzvizDeviceVideoReqVo.getDevtypeBid());
|
|
|
+ iIotCmdtaskService.handInternalCmd(cmdGroupModel);
|
|
|
+ return cmdGroupModel.getTaskUuid();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String address(IotEzvizDeviceAddressGetReqVo iotEzvizDeviceAddressGetReqVo) {
|
|
|
+ if(ObjectUtil.isNull(redisCacheManager.getCacheObject(RedisCacheKey.IOT_DEVICE_STATUS,iotEzvizDeviceAddressGetReqVo.getDevBid()))){
|
|
|
+ throw new IotBizException(ErrorCode.FAILURE.getCode(),"设备已离线");
|
|
|
+ }
|
|
|
+ String[] devCodeArray = iotEzvizDeviceAddressGetReqVo.getDevCode().split("-");
|
|
|
+ CmdGroupModel cmdGroupModel = new CmdGroupModel();
|
|
|
+ cmdGroupModel.setCId(CustomerIdUtil.getCustomerId());
|
|
|
+ cmdGroupModel.setCmdModels(new LinkedList<>());
|
|
|
+ CmdModel cmdModel = new CmdModel();
|
|
|
+ cmdModel.setDeviceId(iotEzvizDeviceAddressGetReqVo.getDevBid());
|
|
|
+ CmdModel.Cmd cmd = new CmdModel.Cmd();
|
|
|
+ cmd.setFunc("address");
|
|
|
+ cmd.setRetry(0L);
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("deviceSerial", devCodeArray[0]);
|
|
|
+ params.put("channelNo", devCodeArray[1]);
|
|
|
+ params.put("startTime", iotEzvizDeviceAddressGetReqVo.getStartTime());
|
|
|
+ params.put("stopTime", iotEzvizDeviceAddressGetReqVo.getStopTime());
|
|
|
+ params.put("protocol", iotEzvizDeviceAddressGetReqVo.getProtocol());
|
|
|
+ params.put("code", iotEzvizDeviceAddressGetReqVo.getCode());
|
|
|
+ params.put("expireTime", iotEzvizDeviceAddressGetReqVo.getExpireTime());
|
|
|
+ params.put("type", iotEzvizDeviceAddressGetReqVo.getType());
|
|
|
+ params.put("quality", iotEzvizDeviceAddressGetReqVo.getQuality());
|
|
|
+ params.put("supportH265", iotEzvizDeviceAddressGetReqVo.getSupportH265());
|
|
|
+ params.put("playbackSpeed", iotEzvizDeviceAddressGetReqVo.getPlaybackSpeed());
|
|
|
+ params.put("gbchannel", iotEzvizDeviceAddressGetReqVo.getGbchannel());
|
|
|
+ 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(iotEzvizDeviceAddressGetReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtBiztype("3");
|
|
|
+ cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotEzvizDeviceAddressGetReqVo.getDevCode());
|
|
|
+ cmdGroupModel.setCtDevtype(iotEzvizDeviceAddressGetReqVo.getDevtypeBid());
|
|
|
+
|
|
|
+ iIotCmdtaskService.handInternalCmd(cmdGroupModel);
|
|
|
+ return cmdGroupModel.getTaskUuid();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String refreshStatus(IotDevice iotDevice) {
|
|
|
+ String[] devCodeArray = iotDevice.getDevCode().split("-");
|
|
|
+ CmdGroupModel cmdGroupModel = new CmdGroupModel();
|
|
|
+ cmdGroupModel.setCId(CustomerIdUtil.getCustomerId());
|
|
|
+ cmdGroupModel.setCmdModels(new LinkedList<>());
|
|
|
+ CmdModel cmdModel = new CmdModel();
|
|
|
+ cmdModel.setDeviceId(iotDevice.getDevBid());
|
|
|
+ CmdModel.Cmd cmd = new CmdModel.Cmd();
|
|
|
+ cmd.setFunc("refreshStatus");
|
|
|
+ cmd.setRetry(0L);
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("devBid", iotDevice.getDevBid());
|
|
|
+ params.put("devCode",iotDevice.getDevCode());
|
|
|
+ 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(devCodeArray[0]);
|
|
|
+ cmdGroupModel.setCtBiztype("3");
|
|
|
+ cmdGroupModel.setCtBiztitle(IotDeviceTypeLv1Enum.JKSB.getName() + ":" + iotDevice.getDevCode());
|
|
|
+ cmdGroupModel.setCtDevtype(iotDevice.getDevtypeBid());
|
|
|
+ cmdGroupModel.setCtParam(params.toJSONString());
|
|
|
+ iIotCmdtaskService.handInternalCmd(cmdGroupModel);
|
|
|
+ return cmdGroupModel.getTaskUuid();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|