From dd73bbc7132f7b126b8fc2faabf2827b49622d21 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 23 Oct 2023 09:28:40 +0800
Subject: [PATCH] 获取计划最近一条

---
 src/main/java/com/dji/sample/manage/model/dto/DeviceDTO.java                 |    6 ++
 src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java              |    2 +
 src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java    |   16 ++++++++
 src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java      |   13 ++++++
 src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml               |   14 +++++++
 src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java |   16 ++++++++
 src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java         |    8 ++++
 7 files changed, 74 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/dji/sample/manage/model/dto/DeviceDTO.java b/src/main/java/com/dji/sample/manage/model/dto/DeviceDTO.java
index d4c7399..30bc3cf 100644
--- a/src/main/java/com/dji/sample/manage/model/dto/DeviceDTO.java
+++ b/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;
-}
\ No newline at end of file
+
+    private WaylineJobEntity latestWaylineJob;
+
+}
diff --git a/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
index c15873f..e332f43 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
+++ b/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;
     }
 
diff --git a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java b/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
index 788dee3..1da52e6 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
+++ b/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
diff --git a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java
index 0f1e82b..af971b5 100644
--- a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.java
+++ b/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);
 }
diff --git a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml b/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
index 90b955e..a74ea38 100644
--- a/src/main/java/com/dji/sample/wayline/dao/IWaylineJobMapper.xml
+++ b/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>
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
index 856ef03..e41b145 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
+++ b/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);
 }
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
index 0ef7b9b..c149023 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/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);

--
Gitblit v1.9.3