无人机项目后端代码
guoshilong
2023-10-23 dd73bbc7132f7b126b8fc2faabf2827b49622d21
获取计划最近一条
7 files modified
73 ■■■■■ changed files
src/main/java/com/dji/sample/manage/model/dto/DeviceDTO.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml 14 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/manage/model/dto/DeviceDTO.java
@@ -1,5 +1,6 @@
package com.dji.sample.manage.model.dto;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -64,4 +65,7 @@
    private Integer firmwareProgress;
    private String parentSn;
    private WaylineJobEntity latestWaylineJob;
}
src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
@@ -26,6 +26,9 @@
import com.dji.sample.manage.model.param.DeviceQueryParam;
import com.dji.sample.manage.model.receiver.*;
import com.dji.sample.manage.service.*;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
import com.dji.sample.wayline.service.IWaylineJobService;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -97,6 +100,9 @@
    @Autowired
    private IDeviceRedisService deviceRedisService;
    @Autowired
    private IWaylineJobService waylineJobService;
    @Autowired
    @Qualifier("gatewayOSDServiceImpl")
@@ -318,6 +324,13 @@
                        deviceRedisService.checkDeviceOnline(gateway.getDeviceSn()))
                .forEach(this::spliceDeviceTopo);
        devicesList.forEach(deviceDTO -> {
            WaylineJobQueryParam waylineJobQueryParam = new WaylineJobQueryParam();
            waylineJobQueryParam.setDockSn(deviceDTO.getDeviceSn());
            WaylineJobEntity latestJob = waylineJobService.getLatestJob(workspaceId, waylineJobQueryParam);
            deviceDTO.setLatestWaylineJob(latestJob);
        });
        return devicesList;
    }
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
@@ -5,6 +5,7 @@
import com.dji.sample.common.model.ResponseResult;
import com.dji.sample.log.aspect.SysLogAnnotation;
import com.dji.sample.wayline.model.dto.WaylineJobDTO;
import com.dji.sample.wayline.model.entity.WaylineJobEntity;
import com.dji.sample.wayline.model.param.CreateJobParam;
import com.dji.sample.wayline.model.param.UpdateJobParam;
import com.dji.sample.wayline.model.param.WaylineJobQueryParam;
@@ -85,6 +86,21 @@
    }
    /**
     * 查询最新的记录
     * @return
     */
    @GetMapping("/{workspace_id}/latestJob")
    public ResponseResult<WaylineJobEntity> getLatestJobs(@PathVariable(name = "workspace_id") String workspaceId,WaylineJobQueryParam waylineJobQueryParam){
        WaylineJobEntity waylineJobEntity = waylineJobService.getLatestJob(workspaceId,waylineJobQueryParam);
        return ResponseResult.success(waylineJobEntity);
    }
    /**
     * 发送命令取消作业。
     * @param jobIds
     * @param workspaceId
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java
@@ -14,4 +14,6 @@
public interface IWaylineJobMapper extends BaseMapper<WaylineJobEntity> {
    Page<WaylineJobEntity> getPage(Page<WaylineJobEntity> waylineJobEntityPage, @Param("queryParam") WaylineJobQueryParam param, @Param("workspaceId") String workspaceId);
    WaylineJobEntity getLatest(@Param("workspaceId")String workspaceId,@Param("queryParam") WaylineJobQueryParam waylineJobQueryParam);
}
src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
@@ -40,4 +40,18 @@
        ORDER BY job.create_time DESC
    </select>
    <select id="getLatest" resultType="com.dji.sample.wayline.model.entity.WaylineJobEntity">
        SELECT job.* FROM wayline_job job
        WHERE job.workspace_id = #{workspaceId}
        <if test="queryParam.dockSn != null and queryParam.dockSn != '' ">
            AND job.dock_sn = #{queryParam.dockSn}
        </if>
        AND job.status = 1
        AND DATE_FORMAT(FROM_UNIXTIME(job.begin_time/1000,'%Y-%m-%d'),'%Y-%m-%d')  &gt;=   DATE(NOW())
        AND DATE_FORMAT(FROM_UNIXTIME(job.begin_time/1000,'%Y-%m-%d'),'%Y-%m-%d')   &lt;= DATE(NOW()) + INTERVAL 2 DAY
        ORDER BY job.begin_time - NOW() ASC
        LIMIT 1
    </select>
</mapper>
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -156,4 +156,12 @@
     * @return
     */
    WaylineJobStatusEnum getWaylineState(String dockSn);
    /**
     * 获取最新的航线任务
     * @param workspaceId
     * @param waylineJobQueryParam
     * @return
     */
    WaylineJobEntity getLatestJob(String workspaceId, WaylineJobQueryParam waylineJobQueryParam);
}
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -673,6 +673,22 @@
        return WaylineJobStatusEnum.UNKNOWN;
    }
    @Override
    public WaylineJobEntity getLatestJob(String workspaceId, WaylineJobQueryParam waylineJobQueryParam) {
//        List<WaylineJobEntity> waylineJobEntities = mapper.selectList(new LambdaQueryWrapper<>(WaylineJobEntity.class)
//                .eq(WaylineJobEntity::getWorkspaceId, workspaceId)
//                .eq(WaylineJobEntity::getDockSn, waylineJobQueryParam.getDockSn())
//                //获取状态为待执行
//                        .eq(WaylineJobEntity::getStatus,1)
//                .orderByDesc(WaylineJobEntity::getBeginTime)
//        );
        WaylineJobEntity waylineJobEntity = mapper.getLatest(workspaceId,waylineJobQueryParam);
       return waylineJobEntity;
    }
    private void pauseJob(String workspaceId, String dockSn, String jobId, WaylineJobStatusEnum statusEnum) {
        if (WaylineJobStatusEnum.PAUSED == statusEnum && jobId.equals(waylineRedisService.getPausedWaylineJobId(dockSn))) {
            waylineRedisService.setPausedWaylineJob(dockSn, jobId);