From cc7b680aa5b2a6ad599c394715bb4327de8670bf Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Tue, 25 Jun 2024 14:37:32 +0800
Subject: [PATCH] 调查取证手动航线更新图斑调查状态,新增媒体查询接口视频图片筛查,调整定时任务时间,新增航线任务错误代码识别

---
 src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java          |   36 ++++++++-
 src/main/java/com/dji/sample/media/controller/FileController.java             |    6 +
 src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java |   53 ++++++++-----
 src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java     |   29 ++++--
 src/main/java/com/dji/sample/wayline/util/ErrorCodeUtil.java                  |   51 ++++++++++++
 src/main/java/com/dji/sample/media/service/IFileService.java                  |    2 
 src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java  |   23 +++++
 src/main/java/com/dji/sample/patches/utils/TimerUtil.java                     |   16 ++-
 src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java          |    6 
 src/main/java/com/dji/sample/wayline/model/dto/WaylineJobDTO.java             |    2 
 src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java         |    1 
 11 files changed, 174 insertions(+), 51 deletions(-)

diff --git a/src/main/java/com/dji/sample/media/controller/FileController.java b/src/main/java/com/dji/sample/media/controller/FileController.java
index eff6ca0..4d0574c 100644
--- a/src/main/java/com/dji/sample/media/controller/FileController.java
+++ b/src/main/java/com/dji/sample/media/controller/FileController.java
@@ -81,9 +81,11 @@
                                        @RequestParam(name = "photoEnd", required = false) Long updateEnd,
                                        @RequestParam(name = "updateStart", required = false) Long photoStart,
                                        @RequestParam(name = "updateEnd", required = false) Long photoEnd,
-                                       @RequestParam(name = "jobName", required = false) String jobName) {
+                                       @RequestParam(name = "jobName", required = false) String jobName,
+                                       @RequestParam( required = false) String type
+    ) {
 
-        return ResponseResult.success(fileService.MediaQuery(page, pageSize, updateStart, updateEnd, photoStart, photoEnd, jobName,workspaceId));
+        return ResponseResult.success(fileService.MediaQuery(page, pageSize, updateStart, updateEnd, photoStart, photoEnd, jobName,workspaceId,type));
 
     }
 
diff --git a/src/main/java/com/dji/sample/media/service/IFileService.java b/src/main/java/com/dji/sample/media/service/IFileService.java
index 5cc4242..d46c437 100644
--- a/src/main/java/com/dji/sample/media/service/IFileService.java
+++ b/src/main/java/com/dji/sample/media/service/IFileService.java
@@ -63,7 +63,7 @@
      */
     List<MediaFileDTO> getAllFilesByWorkspaceId(String workspaceId);
 
-    PaginationData<MediaFileEntity> MediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName,String worksapceId);
+    PaginationData<MediaFileEntity> MediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName,String worksapceId,String isVedio);
     /**
      * 获取图斑图片集合
      * @param dkbh
diff --git a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
index f69292b..500c5da 100644
--- a/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java
@@ -25,6 +25,7 @@
 import com.dji.sample.territory.pojo.TerritoryConfigPojo;
 import com.dji.sample.territory.service.impl.TbFjServiceImpl;
 import com.dji.sample.territory.utils.WaterMarkUtil;
+import com.dji.sample.wayline.service.IWaylineFileService;
 import com.dji.sample.wayline.service.IWaylineJobService;
 import com.drew.imaging.ImageProcessingException;
 import io.minio.MinioClient;
@@ -68,6 +69,8 @@
     private TerritoryConfigPojo territoryConfigPojo;
     @Autowired
     private IWaylineJobService waylineJobService;
+    @Autowired
+    private IWaylineFileService waylineFileService;
 
     private Optional<MediaFileEntity> getMediaByFingerprint(String workspaceId, String fingerprint) {
         MediaFileEntity fileEntity = mapper.selectOne(new LambdaQueryWrapper<MediaFileEntity>()
@@ -93,6 +96,7 @@
         MediaFileEntity fileEntity = this.fileUploadConvertToEntity(file);
         fileEntity.setWorkspaceId(workspaceId);
         fileEntity.setFileId(UUID.randomUUID().toString());
+        updateInvestigate(file.getExt().getFlightId());
         return mapper.insert(fileEntity);
     }
 
@@ -158,7 +162,7 @@
     }
 
     @Override
-    public PaginationData<MediaFileEntity> MediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName, String workspaceId) {
+    public PaginationData<MediaFileEntity> MediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName, String workspaceId,String type) {
         // 创建分页对象
         Page<MediaFileEntity> pageObj = new Page<>(page, pageSize);
 
@@ -177,10 +181,17 @@
         }
 
         if (jobName != null && !jobName.isEmpty()) {
-            List<String> jobIds = waylineJobService.getJobId(jobName);
+            List<String> jobIds = waylineJobService.getJobIds(jobName);
                 queryWrapper.in(MediaFileEntity::getJobId, jobIds);
         }
-
+        if (type != null && !type.isEmpty()) {
+            if ("图片".equals(type)) {
+                queryWrapper.likeLeft(MediaFileEntity::getFileName, ".jpeg");
+            } else if ("视频".equals(type)) {
+                queryWrapper.likeLeft(MediaFileEntity::getFileName, ".mp4");
+            }
+        }
+        queryWrapper.orderByDesc(MediaFileEntity::getCreateTime);
         // 执行分页查询
         Page<MediaFileEntity> resultPage = mapper.selectPage(pageObj, queryWrapper);
 
@@ -192,13 +203,30 @@
                     String taskNameResult = waylineJobService.getName(mediaFile.getJobId());
                     mediaFile.setJobName(taskNameResult);
                 })
-                .collect(Collectors.toList());
+                .collect(Collectors.toList()
+                );
 
 // 返回分页数据
         return new PaginationData<>(records, new Pagination(resultPage));
 
     }
 
+    public void updateInvestigate(String jobId){
+        String waylineId=waylineJobService.getWaylineId(jobId);
+        String patchesId=waylineFileService.getPatchesId(waylineId);
+        if (patchesId==null){
+            return;
+        }
+        List<Long> ids = Arrays.stream(patchesId.split(","))
+                .map(Long::parseLong)
+                .collect(Collectors.toList());
+        LambdaUpdateWrapper<LotInfo> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.in(LotInfo::getId, ids)
+                .set(LotInfo::getInvestigate, 1);
+        patchesMapper.update(null, updateWrapper);
+    }
+
+
     @Override
     public List<MediaFileEntity> listMediaFileEntity(String workspaceId, String jobId) {
         return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
diff --git a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
index 4230895..9509d05 100644
--- a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
+++ b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
@@ -24,6 +24,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.io.ByteArrayResource;
 import org.springframework.http.*;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
 import org.springframework.mock.web.MockMultipartFile;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -114,7 +115,7 @@
             String times = convertTimestampToFormattedString(time);
             sendPostWithParameters(waylineName, waylineFile.getWaylineId(), times, lists1, listOfLists);
             updatePatchesStatu(list);
-            time = addOneHourToTimestamp(time,1,30);
+            time = addOneHourToTimestamp(time, 1, 30);
         }
 
     }
@@ -157,7 +158,8 @@
 
     @Scheduled(cron = "0 0 0 * * ?")
     public void mytask5() throws IOException {
-        Long time = getCurrentTimestampPlus8Hours(10);
+        Long time = getCurrentTimestampPlus8Hours(9);
+        time = addOneHourToTimestamp(time, 0, 50);
         List<List<Long>> listOfLists = new ArrayList<>();
         List<Long> sublist = new ArrayList<>();
         sublist.add(time); // 添加整数值
@@ -170,7 +172,8 @@
 
     @Scheduled(cron = "0 0 0 * * ?")
     public void mytask6() throws IOException {
-        Long time = getCurrentTimestampPlus8Hours(11);
+        Long time = getCurrentTimestampPlus8Hours(9);
+        time = addOneHourToTimestamp(time, 1, 40);
         List<List<Long>> listOfLists = new ArrayList<>();
         List<Long> sublist = new ArrayList<>();
         sublist.add(time); // 添加整数值
@@ -183,7 +186,8 @@
 
     @Scheduled(cron = "0 0 0 * * ?")
     public void mytask7() throws IOException {
-        Long time = getCurrentTimestampPlus8Hours(13);
+        Long time = getCurrentTimestampPlus8Hours(9);
+        time = addOneHourToTimestamp(time, 2, 50);
         List<List<Long>> listOfLists = new ArrayList<>();
         List<Long> sublist = new ArrayList<>();
         sublist.add(time); // 添加整数值
@@ -412,7 +416,7 @@
 
             // 发送请求
             ResponseEntity<String> response = restTemplate.exchange(
-                    "https://jxlandcloud.org.cn/landCloudWork/artifact/media/upload.action",
+                    "http://39.98.49.177:8083/landCloudWork/artifact/media/upload.action",
 //                    "http://localhost:6789/territory/tbdkjbxx/upload",
                     HttpMethod.POST,
                     requestEntity,
@@ -586,7 +590,7 @@
         return timestamp / 1000;
     }
 
-    public static Long addOneHourToTimestamp(Long timestampInSeconds,long hours,long min) {
+    public static Long addOneHourToTimestamp(Long timestampInSeconds, long hours, long min) {
         // 将输入的秒级时间戳转换为Instant对象
         Instant instant = Instant.ofEpochSecond(timestampInSeconds);
 
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 5d9fdf8..d587c29 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
+++ b/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
@@ -13,6 +13,7 @@
 import com.dji.sample.wayline.model.param.*;
 import com.dji.sample.wayline.service.IWaylineJobService;
 import com.dji.sample.wayline.service.impl.WaylineJobServiceImpl;
+import com.dji.sample.wayline.util.ErrorCodeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -78,13 +79,14 @@
 
     /**
      * 断点任务
+     *
      * @return
      */
     @PostMapping("/{workspace_id}/breakpoint-tasks")
     @SysLogAnnotation(operModul = "计划库", operType = "断点续飞", operDesc = "创建航路任务(重复定时和连续执行)")
     public ResponseResult breakPointJob(HttpServletRequest request, @Valid @RequestBody BreakPointJobParam param,
                                         @PathVariable(name = "workspace_id") String workspaceId) throws SQLException {
-        Optional<WaylineJobDTO> waylineJobDTO = waylineJobService.getJobByJobId(workspaceId, param.getJobId(),param.isBreakPoint());
+        Optional<WaylineJobDTO> waylineJobDTO = waylineJobService.getJobByJobId(workspaceId, param.getJobId(), param.isBreakPoint());
         return waylineJobService.publishOneFlightTask(waylineJobDTO.get());
     }
 
@@ -108,23 +110,24 @@
     @GetMapping("/{workspace_id}/jobs-dp")
     @SysLogAnnotation(operModul = "计划库", operType = "查询", operDesc = "分页查询")
     public ResponseResult<PaginationData<WaylineJobDTO>> getJobsByState(@RequestParam(defaultValue = "1") Long page,
-                                                                 @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
-                                                                 @PathVariable(name = "workspace_id") String workspaceId,
-                                                                 @RequestParam(name = "order", defaultValue = "") String order,
-                                                                 WaylineJobQueryParam waylineJobQueryParam) {
-        PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceIdNew(workspaceId, page, pageSize, waylineJobQueryParam,order);
+                                                                        @RequestParam(name = "page_size", defaultValue = "10") Long pageSize,
+                                                                        @PathVariable(name = "workspace_id") String workspaceId,
+                                                                        @RequestParam(name = "order", defaultValue = "") String order,
+                                                                        WaylineJobQueryParam waylineJobQueryParam) {
+        PaginationData<WaylineJobDTO> data = waylineJobService.getJobsByWorkspaceIdNew(workspaceId, page, pageSize, waylineJobQueryParam, order);
         return ResponseResult.success(data);
     }
 
     /**
      * 子查询
+     *
      * @param workspaceId
      * @return
      */
     @GetMapping("/{workspace_id}/getChildrenJobs")
     @SysLogAnnotation(operModul = "计划库", operType = "查询", operDesc = "分页查询")
     public ResponseResult<List<WaylineJobDTO>> getChildrenJobs(
-                                                                 @PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam) {
+            @PathVariable(name = "workspace_id") String workspaceId, WaylineJobQueryParam waylineJobQueryParam) {
         List<WaylineJobDTO> data = waylineJobService.getChildrenJobs(workspaceId, waylineJobQueryParam);
         return ResponseResult.success(data);
     }
@@ -143,6 +146,10 @@
         return ResponseResult.success(waylineJobEntity);
     }
 
+    @GetMapping("/code")
+    public ResponseResult errotCode(@RequestParam Integer code) {
+        return ResponseResult.success(ErrorCodeUtil.codeToReason(code));
+    }
 
     /**
      * 发送命令取消作业。
@@ -188,9 +195,9 @@
      * 统计飞行次数
      */
     @PostMapping("/{workspace_id}/patrol_statistics")
-    public ResponseResult<WaylineJobCountDTO> patrolStatistics(@PathVariable(name = "workspace_id") String workspaceId,String queryTime,String deviceSn) {
+    public ResponseResult<WaylineJobCountDTO> patrolStatistics(@PathVariable(name = "workspace_id") String workspaceId, String queryTime, String deviceSn) {
 
-        WaylineJobCountDTO waylineJobCountDTO = waylineJobService.patrolStatistics(workspaceId,queryTime,deviceSn);
+        WaylineJobCountDTO waylineJobCountDTO = waylineJobService.patrolStatistics(workspaceId, queryTime, deviceSn);
 
         return ResponseResult.success(waylineJobCountDTO);
     }
@@ -218,7 +225,7 @@
      */
     @PostMapping("/{sn}/jobs/{device_sn}/flyByArea")
     @SysLogAnnotation(operModul = "根据区域飞行", operType = "根据区域飞行", operDesc = "根据区域飞行")
-    public ResponseResult flyByArea(@PathVariable(name = "sn") String sn, @RequestBody FlyAreaParam flyAreaParam,@PathVariable(name = "device_sn")String deviceSn)throws Exception {
-            return waylineJobService.flyByArea(sn, flyAreaParam,deviceSn);
+    public ResponseResult flyByArea(@PathVariable(name = "sn") String sn, @RequestBody FlyAreaParam flyAreaParam, @PathVariable(name = "device_sn") String deviceSn) throws Exception {
+        return waylineJobService.flyByArea(sn, flyAreaParam, deviceSn);
     }
 }
diff --git a/src/main/java/com/dji/sample/wayline/model/dto/WaylineJobDTO.java b/src/main/java/com/dji/sample/wayline/model/dto/WaylineJobDTO.java
index d9aee0a..9044fba 100644
--- a/src/main/java/com/dji/sample/wayline/model/dto/WaylineJobDTO.java
+++ b/src/main/java/com/dji/sample/wayline/model/dto/WaylineJobDTO.java
@@ -74,4 +74,6 @@
     private WaylineJobBreakPointEntity waylineJobBreakPointEntity;
 
     private Boolean breakPoint;
+
+    private String reason;
 }
diff --git a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
index 671f5cf..6077384 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineFileService.java
@@ -27,6 +27,7 @@
      */
     PaginationData<WaylineFileDTO> getWaylinesByParam(String workspaceId, WaylineQueryParam param);
 
+    String getPatchesId(String waylineId);
     /**
      * Query the information of this wayline file according to the wayline file id.
      * @param workspaceId
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 cce52f0..e5e3d14 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -42,7 +42,7 @@
      * @return
      */
     Optional<WaylineJobDTO> createWaylineJobByParent(String workspaceId, String parentId);
-
+    String getWaylineId(String jobId);
     /**
      * Issue wayline mission to the dock.
      * 向机场发出航线任务
@@ -163,7 +163,7 @@
      * @param param
      */
     void updateJobStatus(String workspaceId, String jobId, UpdateJobParam param);
-
+    List<String> getJobNamesByPartialName(String partialJobName);
     /**
      * Query the wayline execution status of the dock.
      * @param dockSn
@@ -171,7 +171,7 @@
      */
     WaylineJobStatusEnum getWaylineState(String dockSn);
     String getName(String jobId);
-    List<String> getJobId(String jobName);
+    List<String> getJobIds(String jobNames);
 
     /**
      * 获取最新的航线任务
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
index 60e8331..8efa814 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -64,10 +64,10 @@
                 new LambdaQueryWrapper<WaylineFileEntity>()
                         .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
                         .eq(param.isFavorited(), WaylineFileEntity::getFavorited, param.isFavorited())
-                        .and(param.getTemplateType() != null, wrapper ->  {
-                                for (Integer type : param.getTemplateType()) {
-                                    wrapper.like(WaylineFileEntity::getTemplateTypes, type).or();
-                                }
+                        .and(param.getTemplateType() != null, wrapper -> {
+                            for (Integer type : param.getTemplateType()) {
+                                wrapper.like(WaylineFileEntity::getTemplateTypes, type).or();
+                            }
                         })
                         // There is a risk of SQL injection
                         .last(StringUtils.hasText(param.getOrderBy()), " order by " + param.getOrderBy()));
@@ -82,13 +82,20 @@
     }
 
     @Override
+    public String getPatchesId(String waylineId) {
+        WaylineFileEntity entity = mapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>()
+                .eq(WaylineFileEntity::getWaylineId, waylineId));
+        return entity.getPatchesId();
+    }
+
+    @Override
     public Optional<WaylineFileDTO> getWaylineByWaylineId(String workspaceId, String waylineId) {
         return Optional.ofNullable(
                 this.entityConvertToDTO(
                         mapper.selectOne(
                                 new LambdaQueryWrapper<WaylineFileEntity>()
-                                    .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
-                                    .eq(WaylineFileEntity::getWaylineId, waylineId))));
+                                        .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+                                        .eq(WaylineFileEntity::getWaylineId, waylineId))));
     }
 
     @Override
@@ -160,8 +167,8 @@
     @Override
     public List<String> getDuplicateNames(String workspaceId, List<String> names) {
         return mapper.selectList(new LambdaQueryWrapper<WaylineFileEntity>()
-                .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
-                .in(WaylineFileEntity::getName, names))
+                        .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+                        .in(WaylineFileEntity::getName, names))
                 .stream()
                 .map(WaylineFileEntity::getName)
                 .collect(Collectors.toList());
@@ -175,8 +182,8 @@
         }
         WaylineFileDTO wayline = waylineOpt.get();
         boolean isDel = mapper.delete(new LambdaUpdateWrapper<WaylineFileEntity>()
-                    .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
-                    .eq(WaylineFileEntity::getWaylineId, waylineId))
+                .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
+                .eq(WaylineFileEntity::getWaylineId, waylineId))
                 > 0;
         if (!isDel) {
             return false;
@@ -185,7 +192,7 @@
     }
 
     @Override
-    public void importKmzFile(MultipartFile file, String workspaceId, String creator,String patchesId) {
+    public void importKmzFile(MultipartFile file, String workspaceId, String creator, String patchesId) {
         Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
         if (waylineFileOpt.isEmpty()) {
             throw new RuntimeException("文件格式错误");
@@ -197,7 +204,7 @@
             waylineFile.setUsername(creator);
 
             ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
-            this.saveWaylineFiles(workspaceId, waylineFile,patchesId);
+            this.saveWaylineFiles(workspaceId, waylineFile, patchesId);
         } catch (IOException e) {
             e.printStackTrace();
         }
@@ -205,7 +212,7 @@
 
     @Override
     public WaylineFileDTO importKmzFileBack(MultipartFile file, String workspaceId, String creator) {
-        WaylineFileDTO waylineFile=null;
+        WaylineFileDTO waylineFile = null;
         Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
         if (waylineFileOpt.isEmpty()) {
             throw new RuntimeException("文件格式错误");
@@ -227,18 +234,18 @@
 
     @Override
     public WaylineFileEntity selectByName(String name) {
-        return mapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getName,name));
+        return mapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>().eq(WaylineFileEntity::getName, name));
     }
 
     @Override
-    public List<WaylineListDTO> waylineList(String workspaceId,String droneName) {
+    public List<WaylineListDTO> waylineList(String workspaceId, String droneName) {
         LambdaQueryChainWrapper<WaylineFileEntity> wrapper =
                 new LambdaQueryChainWrapper<>(mapper).eq(WaylineFileEntity::getWorkspaceId, workspaceId);
-        if (StringUtils.hasText(droneName)){
-            wrapper.like(WaylineFileEntity::getName,droneName);
+        if (StringUtils.hasText(droneName)) {
+            wrapper.like(WaylineFileEntity::getName, droneName);
         }
 
-        return  wrapper.list().stream().map(r -> WaylineListDTO.builder().waylineFileId(r.getWaylineId()).name(r.getName()).build())
+        return wrapper.list().stream().map(r -> WaylineListDTO.builder().waylineFileId(r.getWaylineId()).name(r.getName()).build())
                 .collect(Collectors.toList());
     }
 
@@ -282,7 +289,7 @@
 
                 return Optional.of(WaylineFileDTO.builder()
                         .droneModelKey(String.format("%s-%s-%s", DeviceDomainEnum.SUB_DEVICE.getVal(), type, subType))
-                        .payloadModelKeys(List.of(String.format("%s-%s-%s",DeviceDomainEnum.PAYLOAD.getVal(), payloadType, payloadSubType)))
+                        .payloadModelKeys(List.of(String.format("%s-%s-%s", DeviceDomainEnum.PAYLOAD.getVal(), payloadType, payloadSubType)))
 //                        .objectKey(OssConfiguration.objectDirPrefix + File.separator + filename)
                         .objectKey(OssConfiguration.objectDirPrefix + "/" + filename)
                         .name(filename.substring(0, filename.lastIndexOf(WAYLINE_FILE_SUFFIX)))
@@ -296,8 +303,10 @@
         }
         return Optional.empty();
     }
+
     /**
      * Convert database entity objects into wayline data transfer object.
+     *
      * @param entity
      * @return
      */
@@ -326,6 +335,7 @@
 
     /**
      * Convert the received wayline object into a database entity object.
+     *
      * @param file
      * @return
      */
@@ -350,9 +360,10 @@
 
         return builder.build();
     }
+
     @Override
     public int updateWayline(WaylineFileEntity entity) {
-        return mapper.update(entity,new LambdaQueryWrapper<WaylineFileEntity>()
-                .eq(WaylineFileEntity::getWaylineId,entity.getWaylineId()));
+        return mapper.update(entity, new LambdaQueryWrapper<WaylineFileEntity>()
+                .eq(WaylineFileEntity::getWaylineId, entity.getWaylineId()));
     }
 }
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 9e22c2e..589c259 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
@@ -49,6 +49,7 @@
 import com.dji.sample.wayline.service.IWaylineJobBreakPointService;
 import com.dji.sample.wayline.service.IWaylineJobService;
 import com.dji.sample.wayline.service.IWaylineRedisService;
+import com.dji.sample.wayline.util.ErrorCodeUtil;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import lombok.extern.slf4j.Slf4j;
@@ -165,6 +166,11 @@
         jobEntity.setParentId(parentId);
 
         return this.insertWaylineJob(jobEntity);
+    }
+    @Override
+    public String getWaylineId(String jobId){
+        WaylineJobEntity waylineJob=mapper.selectOne(new LambdaQueryWrapper<WaylineJobEntity>().select(WaylineJobEntity::getFileId).eq(WaylineJobEntity::getJobId,jobId));
+        return waylineJob.getFileId();
     }
 
     /**
@@ -736,6 +742,15 @@
 
     }
 
+    @Override
+    public List<String> getJobNamesByPartialName(String partialJobName) {
+        LambdaQueryWrapper<WaylineJobEntity> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.like(WaylineJobEntity::getName, partialJobName);
+        return mapper.selectList(queryWrapper).stream()
+                .map(WaylineJobEntity::getName)
+                .collect(Collectors.toList());
+    }
+
     public WaylineJobStatusEnum getWaylineState(String dockSn) {
         Optional<DeviceDTO> dockOpt = deviceRedisService.getDeviceOnline(dockSn);
         if (dockOpt.isEmpty() || !StringUtils.hasText(dockOpt.get().getChildDeviceSn())) {
@@ -772,14 +787,16 @@
     }
 
     @Override
-    public List<String> getJobId(String jobName) {
+    public List<String> getJobIds(String jobNames) {
+        List<String> names = getJobNamesByPartialName(jobNames);
+        // 使用 LambdaQueryWrapper 进行查询
         List<Object> jobIdList = mapper.selectObjs(
                 new LambdaQueryWrapper<WaylineJobEntity>()
                         .select(WaylineJobEntity::getJobId)
-                        .eq(WaylineJobEntity::getName, jobName)
+                        .in(WaylineJobEntity::getName, names) // 使用 IN 子句
         );
 
-// 将 Object 类型的 jobId 转换为 String 类型,并放入 List<String> 中
+        // 将 Object 类型的 jobId 转换为 String 类型,并放入 List<String> 中
         List<String> jobIdStringList = new ArrayList<>();
         for (Object jobIdObj : jobIdList) {
             jobIdStringList.add(String.valueOf(jobIdObj));
diff --git a/src/main/java/com/dji/sample/wayline/util/ErrorCodeUtil.java b/src/main/java/com/dji/sample/wayline/util/ErrorCodeUtil.java
new file mode 100644
index 0000000..6f9cdb5
--- /dev/null
+++ b/src/main/java/com/dji/sample/wayline/util/ErrorCodeUtil.java
@@ -0,0 +1,51 @@
+package com.dji.sample.wayline.util;
+
+import cn.hutool.core.io.resource.ResourceUtil;
+import com.alibaba.fastjson.JSONObject;
+
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+public class ErrorCodeUtil {
+    private static Map DistrictCode = new HashMap();
+    static {
+        try {
+            String result = ResourceUtil.readUtf8Str("classpath:errorCode.json");
+            DistrictCode = JSONObject.parseObject(result, Map.class);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+    }
+    public static boolean isChinese(String str) {
+        return str.matches("[\\u4E00-\\u9FFF]+");
+    }
+    public static String codeToReason(Integer name1) {
+        if (Objects.equals(name1, 0)){
+            return null;
+        }
+        String name=name1.toString();
+        boolean bs = isChinese(name);
+        if (!bs) {
+            return codeToName(name);
+        }
+        Map<String, Object> jsonObject = new HashMap<>(DistrictCode);
+        for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
+            if (entry.getValue().equals(name)) {
+                return entry.getKey();
+            }
+        }
+        return null;
+    }
+    public static String codeToName(String code) {
+        if (!DistrictCode.containsKey(code)) {
+            return null;
+        }
+        return DistrictCode.get(code).toString();
+    }
+
+    public static void main(String[] args) {
+        System.out.println(codeToReason(315002));
+    }
+}

--
Gitblit v1.9.3