吉安感知网项目-后端
rain
2026-01-28 ff2ee260472e3b43c6dfd4b1406b629dfeb2d3f4
吉安航线任务推送
4 files modified
117 ■■■■■ changed files
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java 10 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdPatrolTaskEntity.java 2 ●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java 10 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java 95 ●●●●● patch | view | raw | blame | history
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/controller/GdPatrolTaskController.java
@@ -187,4 +187,14 @@
        boolean saved = gdPatrolTaskService.exportPatrolReport(id);
        return R.data(saved);
    }
    @PostMapping("/push-xingtu")
    @ApiOperationSupport(order = 14)
    @ApiOperation(value = "推送星图任务", notes = "传入巡查任务id")
    public R pushXingtuTask(@RequestParam Long id) {
        if (id == null) {
            return R.fail("巡查任务id不能为空");
        }
        return gdPatrolTaskService.pushXingtuFlyTask(id);
    }
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdPatrolTaskEntity.java
@@ -82,7 +82,7 @@
     * 关联设备ID
     */
    @ApiModelProperty(value = "关联设备ID")
    private Long deviceId;
    private String deviceId;
    /**
     * 任务描述
     */
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/IGdPatrolTaskService.java
@@ -18,7 +18,7 @@
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.sxkj.gd.workorder.entity.GdPatrolTaskEntity;
import org.sxkj.gd.workorder.enums.PatrolTaskStatusEnum;
import org.springblade.core.tool.api.R;
import org.sxkj.gd.workorder.param.GdPatrolTaskAuditParam;
import org.sxkj.gd.workorder.param.GdPatrolTaskPageParam;
import org.sxkj.gd.workorder.vo.GdPatrolTaskVO;
@@ -81,4 +81,12 @@
     */
    boolean exportPatrolReport(Long patrolTaskId);
    /**
     * 推送巡查任务到星图平台(新增飞行任务)
     *
     * @param patrolTaskId 巡查任务主键
     * @return 接口响应
     */
    R pushXingtuFlyTask(Long patrolTaskId);
}
drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdPatrolTaskServiceImpl.java
@@ -34,6 +34,8 @@
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.sxkj.gd.workorder.dto.GdXingtuFlyTaskSaveDTO;
import org.sxkj.gd.workorder.entity.GdManageDeviceEntity;
import org.sxkj.gd.workorder.entity.GdPatrolTaskEntity;
import org.sxkj.gd.workorder.entity.GdTaskResultEntity;
import org.sxkj.gd.workorder.entity.GdWorkOrderEntity;
@@ -46,11 +48,13 @@
import org.sxkj.gd.workorder.param.GdPatrolTaskAuditParam;
import org.sxkj.gd.workorder.param.GdPatrolTaskPageParam;
import org.sxkj.gd.workorder.service.IGdPatrolTaskService;
import org.sxkj.gd.workorder.service.IGdManageDeviceService;
import org.sxkj.gd.workorder.service.IGdTaskResultService;
import org.sxkj.gd.workorder.service.IGdWorkOrderFlowService;
import org.sxkj.gd.workorder.utils.GdPatrolReportWordUtil;
import org.sxkj.gd.workorder.vo.GdPatrolTaskVO;
import org.sxkj.gd.common.GdMultipartFileUtil;
import org.sxkj.gd.xingtu.JianXingtuApiService;
import org.sxkj.resource.entity.Attach;
import org.sxkj.resource.feign.IAttachClient;
import org.sxkj.system.cache.SysCache;
@@ -86,6 +90,10 @@
    private IAttachClient attachClient;
    @Autowired
    private IGdTaskResultService gdTaskResultService;
    @Autowired
    private JianXingtuApiService jianXingtuApiService;
    @Autowired
    private IGdManageDeviceService gdManageDeviceService;
    @Override
    public IPage<GdPatrolTaskVO> selectGdPatrolTaskPage(IPage<GdPatrolTaskVO> page, GdPatrolTaskPageParam gdPatrolTask) {
        return page.setRecords(baseMapper.selectGdPatrolTaskPage(page, gdPatrolTask, SysCache.getDeptChildIds(Long.valueOf(AuthUtil.getDeptId()))));
@@ -210,6 +218,8 @@
        boolean b = saveWorkOrderFlow(task.getId(), newStatusEnum, auditParam.getRejectReason(), task.getAreaCode());
        // 6. 判断是否审核成功,如果是,需要判断是否整个订单的子任务都审核成功了,除了被撤回和验收拒绝的
        if (auditStatus == 4) {
            //将审核后的任务信息推送到星图
            pushXingtuFlyTask(auditParam.getId());
            // 查询同一个工单下的所有子任务
            List<GdPatrolTaskEntity> subTasks = list(Wrappers.<GdPatrolTaskEntity>lambdaQuery()
                    .eq(GdPatrolTaskEntity::getWorkOrderId, task.getWorkOrderId()));
@@ -580,4 +590,89 @@
        }
    }
    @Override
    public R pushXingtuFlyTask(Long patrolTaskId) {
        if (patrolTaskId == null) {
            return R.fail("巡查任务主键不能为空");
        }
        GdPatrolTaskEntity taskEntity = getById(patrolTaskId);
        if (taskEntity == null) {
            return R.fail("巡查任务不存在");
        }
        GdXingtuFlyTaskSaveDTO param = buildXingtuFlyTask(taskEntity);
        return jianXingtuApiService.saveFlyTask(param);
    }
    private GdXingtuFlyTaskSaveDTO buildXingtuFlyTask(GdPatrolTaskEntity taskEntity) {
        GdXingtuFlyTaskSaveDTO param = new GdXingtuFlyTaskSaveDTO();
        if (StringUtil.isNotBlank(taskEntity.getPatrolTaskName())) {
            param.setName(taskEntity.getPatrolTaskName());
        } else if (StringUtil.isNotBlank(taskEntity.getTaskNo())) {
            param.setName(taskEntity.getTaskNo());
        }
        if (StringUtil.isNotBlank(taskEntity.getPatrolTaskType())) {
            param.setInspectionType(taskEntity.getPatrolTaskType());
        }
        param.setTimingType("单次执行");
        if (StringUtil.isNotBlank(taskEntity.getAirlineId())) {
            param.setAirlineId(taskEntity.getAirlineId());
        }
        if (taskEntity.getExecuteTime() != null) {
            param.setSingleTime(DateUtil.format(taskEntity.getExecuteTime(), "yyyy-MM-dd HH:mm:ss"));
        }
        if (StringUtil.isNotBlank(taskEntity.getAreaCode())) {
            param.setRegionCode(taskEntity.getAreaCode());
        }
        if (StringUtil.isNotBlank(taskEntity.getDeviceId())) {
            GdManageDeviceEntity device = null;
            if (StringUtils.isNumeric(taskEntity.getDeviceId())) {
                device = gdManageDeviceService.getById(Long.valueOf(taskEntity.getDeviceId()));
            }
            if (device == null) {
                device = gdManageDeviceService.lambdaQuery()
                    .eq(GdManageDeviceEntity::getAirportId, taskEntity.getDeviceId())
                    .one();
            }
            if (device != null && StringUtil.isNotBlank(device.getAirportId())) {
                param.setAirportId(device.getAirportId());
            } else {
                param.setAirportId(taskEntity.getDeviceId());
            }
        }
        String status = parseStatus(taskEntity.getTaskStatus());
        if (StringUtil.isNotBlank(status)) {
            param.setStatus(status);
        }
        param.setTaskType("定时执行");
        return param;
    }
    private String parseStatus(String taskStatus) {
        if (StringUtil.isBlank(taskStatus)) {
            return null;
        }
        switch (taskStatus) {
            case "0":
                return "待签收";
            case "1":
                return "拒绝签收";
            case "2":
                return "已撤回";
            case "3":
                return "待审核";
            case "4":
                return "审核驳回";
            case "5":
                return "审核通过";
            case "6":
                return "待验收";
            case "7":
                return "拒绝验收";
            case "8":
                return "验收通过";
            default:
                return taskStatus;
        }
    }
}