| | |
| | | package com.dji.sample.control.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.dji.sample.common.model.ResponseResult; |
| | | import com.dji.sample.component.mqtt.config.MqttConfiguration; |
| | | import com.dji.sample.component.mqtt.model.*; |
| | |
| | | import com.dji.sample.control.service.IControlService; |
| | | import com.dji.sample.control.service.IDrcService; |
| | | import com.dji.sample.manage.model.dto.DeviceDTO; |
| | | import com.dji.sample.manage.model.enums.DockDrcStateEnum; |
| | | import com.dji.sample.manage.model.enums.DockModeCodeEnum; |
| | | import com.dji.sample.manage.model.enums.UserTypeEnum; |
| | | import com.dji.sample.manage.model.receiver.OsdSubDeviceReceiver; |
| | |
| | | import com.dji.sample.wayline.model.dto.WaylineTaskProgressReceiver; |
| | | import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum; |
| | | import com.dji.sample.wayline.model.enums.WaylineTaskStatusEnum; |
| | | import com.dji.sample.wayline.model.param.PointPOJO; |
| | | import com.dji.sample.wayline.model.param.UpdateJobParam; |
| | | import com.dji.sample.wayline.service.IWaylineJobService; |
| | | import com.dji.sample.wayline.service.IWaylineRedisService; |
| | |
| | | String pubTopic = topic + TopicConst.DOWN; |
| | | String subTopic = topic + TopicConst.UP; |
| | | |
| | | // If the dock is in drc mode, refresh the permissions directly. |
| | | // If the dock is in drc mode, refresh the permissions directly. 如果dock处于drc模式,直接刷新权限 |
| | | if (deviceService.checkDockDrcMode(param.getDockSn()) |
| | | && param.getClientId().equals(this.getDrcModeInRedis(param.getDockSn()))) { |
| | | refreshAcl(param.getDockSn(), param.getClientId(), topic, subTopic); |
| | |
| | | } |
| | | |
| | | @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_DRC_STATUS_NOTIFY, outputChannel = ChannelName.OUTBOUND_EVENTS) |
| | | public CommonTopicReceiver handleDrcStatusNotify(CommonTopicReceiver receiver, MessageHeaders headers) { |
| | | public CommonTopicReceiver handleDrcStatusNotify(CommonTopicReceiver receiver, MessageHeaders headers) throws Exception { |
| | | String dockSn = receiver.getGateway(); |
| | | |
| | | Optional<DeviceDTO> deviceOpt = deviceRedisService.getDeviceOnline(dockSn); |
| | |
| | | .message(eventsReceiver.getResult().getErrorMsg()) |
| | | .result(eventsReceiver.getResult().getErrorCode()).build()); |
| | | } |
| | | |
| | | //当进入控制时,停止当前的图斑飞行 |
| | | if (eventsReceiver.getDrcState()==DockDrcStateEnum.CONNECTED){ |
| | | JSONObject jsonObject = (JSONObject) RedisOpsUtils.get("tuban:" + dockSn); |
| | | if (jsonObject != null) { |
| | | controlService.flyToPointStop(dockSn); |
| | | } |
| | | } |
| | | |
| | | //当退出控制后,继续执行图斑飞行 |
| | | if(eventsReceiver.getDrcState() == DockDrcStateEnum.DISCONNECTED){ |
| | | JSONObject jsonObject = (JSONObject) RedisOpsUtils.get("tuban:" + dockSn); |
| | | if (jsonObject != null) { |
| | | List<PointPOJO> targetList = (List<PointPOJO>) jsonObject.get("targetList"); |
| | | int curIndex = (Integer) jsonObject.get("curIndex"); |
| | | String payloadIndex = jsonObject.getString("payloadIndex"); |
| | | controlService.flyToNextPoint(targetList, curIndex, dockSn, payloadIndex); |
| | | } |
| | | } |
| | | |
| | | return receiver; |
| | | } |
| | | |