| | |
| | | package com.ard.sample.manage.service.impl; |
| | | |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.ard.common.core.domain.model.LoginUser; |
| | | import com.ard.common.utils.SecurityUtils; |
| | | import com.ard.device.camera.domain.ArdCamera; |
| | | import com.ard.device.camera.service.IArdCameraService; |
| | | import com.ard.device.channel.domain.ArdChannel; |
| | |
| | | //region 单独写一个方法做权限验证,由于有好多定时任务也在实时获取设备列表,原方法不适用再添加权限注解 |
| | | @Override |
| | | public List<DeviceDTO> getDockList(String nickname) { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | List<DeviceDTO> devicesList = this.getDockListByParams( |
| | | DeviceQueryParam.builder() |
| | | .domains(List.of(DeviceDomainEnum.GATEWAY.getVal(), DeviceDomainEnum.DOCK.getVal())) |
| | |
| | | .build()); |
| | | // 在獲取设备列表时,顺便获取直播地址 |
| | | for(DeviceDTO devices : devicesList){ |
| | | _liveStreamHandler.StartLiveStreaming(devices.getDeviceSn()); |
| | | _liveStreamHandler.StartLiveStreaming(devices.getChildDeviceSn()); |
| | | // 暂时注释掉机场设备视频直址 2026-04-01 |
| | | // _liveStreamHandler.StartLiveStreaming(devices.getDeviceSn(), loginUser.getUserId().toString()); |
| | | // _liveStreamHandler.StartLiveStreaming(devices.getChildDeviceSn(), loginUser.getUserId().toString()); |
| | | ArdCamera ardCamera = new ArdCamera(); |
| | | ardCamera.setDockId(devices.getId()); |
| | | List<ArdCamera> ardCameraList = _cameraService.selectArdCameraList(ardCamera); |
| | |
| | | return ResponseResult.success(); |
| | | } |
| | | |
| | | /** |
| | | * 属性设置 |
| | | * */ |
| | | @Override |
| | | public void devicePropertySet(String dockSn, DeviceSetPropertyEnum propertyEnum, JsonNode param) { |
| | | public ResponseResult devicePropertySet(String dockSn, DeviceSetPropertyEnum propertyEnum, JsonNode param) { |
| | | boolean dockOnline = this.checkDeviceOnline(dockSn); |
| | | if (!dockOnline) { |
| | | throw new RuntimeException(CommonErrorEnum.DEVICE_OFFLINE.getErrorMsg()); |
| | | return ResponseResult.error(CommonErrorEnum.DEVICE_OFFLINE.getErrorCode(),"机场" + CommonErrorEnum.DEVICE_OFFLINE.getErrorMsg()); |
| | | //throw new RuntimeException(CommonErrorEnum.DEVICE_OFFLINE.getErrorMsg()); |
| | | } |
| | | DeviceDTO deviceDTO = (DeviceDTO) RedisOpsUtils.get(RedisConst.DEVICE_ONLINE_PREFIX + dockSn); |
| | | boolean deviceOnline = this.checkDeviceOnline(deviceDTO.getChildDeviceSn()); |
| | | if (!deviceOnline) { |
| | | throw new RuntimeException("Device is offline."); |
| | | return ResponseResult.error(2222,"无人机" + CommonErrorEnum.DEVICE_OFFLINE.getErrorMsg()); |
| | | //throw new RuntimeException("Device is offline."); |
| | | // CommonErrorEnum.DEVICE_OFFLINE.getErrorCode() |
| | | } |
| | | |
| | | // Make sure the data is valid. |
| | | BasicDeviceProperty basicDeviceProperty = objectMapper.convertValue(param, propertyEnum.getClazz()); |
| | | boolean valid = basicDeviceProperty.valid(); |
| | | if (!valid) { |
| | | throw new IllegalArgumentException(CommonErrorEnum.ILLEGAL_ARGUMENT.getErrorMsg()); |
| | | return ResponseResult.error(CommonErrorEnum.ILLEGAL_ARGUMENT.getErrorMsg()); |
| | | // throw new IllegalArgumentException(CommonErrorEnum.ILLEGAL_ARGUMENT.getErrorMsg()); |
| | | } |
| | | |
| | | String topic = THING_MODEL_PRE + PRODUCT + dockSn + PROPERTY_SUF + SET_SUF; |
| | |
| | | (OsdSubDeviceReceiver) RedisOpsUtils.get(RedisConst.OSD_PREFIX + deviceDTO.getChildDeviceSn()); |
| | | if (!param.isObject()) { |
| | | this.deviceOnePropertySet(topic, propertyEnum, Map.entry(propertyEnum.getProperty(), param)); |
| | | return; |
| | | return ResponseResult.success(); |
| | | // return; |
| | | } |
| | | |
| | | if(param.size()==1){ |
| | | this.deviceOnePropertySetSilent(topic,propertyEnum,param); |
| | | return; |
| | | return ResponseResult.success(); |
| | | // return; |
| | | } |
| | | // if(Objects.equals(param.fieldNames().next(), "silent_mode")) |
| | | // { |
| | |
| | | |
| | | this.deviceOnePropertySet(topic, propertyEnum, Map.entry(propertyEnum.getProperty(), node)); |
| | | } |
| | | |
| | | return ResponseResult.success(); |
| | | } |
| | | |
| | | /** |
| | |
| | | CommonTopicReceiver<Map<String,Integer>> stateReceiver = new CommonTopicReceiver<>(); |
| | | stateReceiver.setTid(UUID.randomUUID().toString()); |
| | | stateReceiver.setBid(UUID.randomUUID().toString()); |
| | | stateReceiver.setType(MessageType.LIVESTREAM.getType()); |
| | | stateReceiver.setType(MessageType.LIVESTATUS.getType()); |
| | | stateReceiver.setGateway(sn); |
| | | stateReceiver.setTimestamp(System.currentTimeMillis()); |
| | | Map<String,Integer> live_status = new HashMap<>(); |