| | |
| | | import com.dji.sample.media.model.MediaFileCountDTO; |
| | | import com.dji.sample.wayline.model.dto.WaylineJobDTO; |
| | | import com.dji.sample.wayline.model.dto.WaylineJobKey; |
| | | import com.dji.sample.wayline.model.dto.WaylineTaskProgressExtBreakPoint; |
| | | import com.dji.sample.wayline.model.dto.WaylineTaskProgressReceiver; |
| | | import com.dji.sample.wayline.model.entity.WaylineJobBreakPointEntity; |
| | | import com.dji.sample.wayline.model.enums.WaylineJobStatusEnum; |
| | | import com.dji.sample.wayline.model.enums.WaylineTaskTypeEnum; |
| | | import com.dji.sample.wayline.service.IFlightTaskService; |
| | | import com.dji.sample.wayline.service.IWaylineJobBreakPointService; |
| | | import com.dji.sample.wayline.service.IWaylineJobService; |
| | | import com.dji.sample.wayline.service.IWaylineRedisService; |
| | | import com.fasterxml.jackson.core.type.TypeReference; |
| | |
| | | @Autowired |
| | | private IWaylineRedisService waylineRedisService; |
| | | |
| | | @Autowired |
| | | private IWaylineJobBreakPointService waylineJobBreakPointService; |
| | | |
| | | /** |
| | | * Handle the progress messages of the flight tasks reported by the dock. |
| | | * 处理机场上报的飞行任务进度信息 |
| | | * @param receiver |
| | | * @param headers |
| | | */ |
| | | @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_FLIGHT_TASK_PROGRESS, outputChannel = ChannelName.OUTBOUND_EVENTS) |
| | | public CommonTopicReceiver handleProgress(CommonTopicReceiver receiver, MessageHeaders headers) { |
| | | log.info("上报航线任务进度: {}", receiver.toString()); |
| | | EventsReceiver<WaylineTaskProgressReceiver> eventsReceiver = mapper.convertValue(receiver.getData(), |
| | | new TypeReference<EventsReceiver<WaylineTaskProgressReceiver>>(){}); |
| | | eventsReceiver.setBid(receiver.getBid()); |
| | | eventsReceiver.setSn(receiver.getGateway()); |
| | | |
| | | //用户记录飞行任务id |
| | | RedisOpsUtils.set(RedisConst.FLIGHT_LOG + "job_id",receiver.getBid()); |
| | | |
| | | WaylineTaskProgressReceiver output = eventsReceiver.getOutput(); |
| | | |
| | | log.info("Task progress: {}", output.getProgress().toString()); |
| | | log.info("任务进度: {}", output.getProgress().toString()); |
| | | |
| | | if (null != output.getExt().getBreakPoint()) { |
| | | WaylineTaskProgressExtBreakPoint breakPoint = output.getExt().getBreakPoint(); |
| | | log.info("任务进度 ===> 断点信息:{}", breakPoint.toString()); |
| | | // 保存断点信息 |
| | | try { |
| | | Boolean isAddBp = waylineJobBreakPointService.addWaylineJobBreakPoint(WaylineJobBreakPointEntity.builder() |
| | | .jobId(receiver.getBid()) |
| | | .bpIndex(breakPoint.getIndex()) |
| | | .state(breakPoint.getState()) |
| | | .progress(breakPoint.getProgress()) |
| | | .waylineId(breakPoint.getWaylineId()) |
| | | .breakReason(breakPoint.getBreakReason()) |
| | | .latitude(breakPoint.getLatitude()) |
| | | .longitude(breakPoint.getLongitude()) |
| | | .height(breakPoint.getHeight()) |
| | | .attitudeHead(breakPoint.getAttitudeHead()) |
| | | .build()); |
| | | if (isAddBp) { |
| | | log.info("任务进度 ===> 断点信息 ===> 保存成功:{}", breakPoint.toString()); |
| | | } else { |
| | | log.info("任务进度 ===> 断点信息 ===> 保存失败:{}", breakPoint.toString()); |
| | | } |
| | | }catch (Exception e) { |
| | | log.info("任务进度 ===> 断点信息 ===> 保存失败:{},\n {}", breakPoint.toString(),e.getMessage()); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (eventsReceiver.getResult() != ResponseResult.CODE_SUCCESS) { |
| | | log.error("Task progress ===> Error code: " + eventsReceiver.getResult()); |
| | | log.error("任务进度 ===> 错误编码: " + eventsReceiver.getResult()); |
| | | } |
| | | |
| | | EventsResultStatusEnum statusEnum = EventsResultStatusEnum.find(output.getStatus()); |
| | |
| | | .mediaCount(mediaCount) |
| | | .build(); |
| | | |
| | | // record the update of the media count. |
| | | //记录媒体计数的更新 |
| | | if (Objects.nonNull(job.getMediaCount()) && job.getMediaCount() != 0) { |
| | | RedisOpsUtils.hashSet(RedisConst.MEDIA_FILE_PREFIX + receiver.getGateway(), job.getJobId(), |
| | | MediaFileCountDTO.builder().jobId(receiver.getBid()).mediaCount(job.getMediaCount()).uploadedCount(0).build()); |