From 1fc2b9a38ce7fb5f0a78361a731e98750fbd20c1 Mon Sep 17 00:00:00 2001
From: rain <167982779@qq.com>
Date: Mon, 24 Jun 2024 10:28:09 +0800
Subject: [PATCH] 定时四个九洲巡查任务,新增媒体文件任务查询、搜索接口

---
 src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java         |   52 +++++++++++++
 src/main/java/com/dji/sample/media/controller/FileController.java            |   15 +++
 src/main/java/com/dji/sample/media/model/MediaFileEntity.java                |    2 
 src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java    |    4 +
 src/main/java/com/dji/sample/media/service/IFileService.java                 |    2 
 src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java |   32 ++++++-
 src/main/java/com/dji/sample/patches/utils/TimerUtil.java                    |   74 ++++++++++++++----
 src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java         |    2 
 src/main/java/com/dji/sample/patches/controller/PatchesController.java       |   29 ++++--
 9 files changed, 177 insertions(+), 35 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 13dd656..eff6ca0 100644
--- a/src/main/java/com/dji/sample/media/controller/FileController.java
+++ b/src/main/java/com/dji/sample/media/controller/FileController.java
@@ -58,7 +58,6 @@
         return ResponseResult.success(entityList);
     }
 
-
     @PutMapping("/examine")
     public ResponseResult examineData(@RequestParam String fileId) {
         return fileService.updateExamByFileId(fileId);
@@ -74,6 +73,20 @@
         return ResponseResult.success(fileService.listMediaFileEntity(workspaceId, jobId));
     }
 
+    @GetMapping("dataShow/{workspace_id}")
+    public ResponseResult getMeidaData(@PathVariable(name = "workspace_id") String workspaceId,
+                                       @RequestParam Integer page,
+                                       @RequestParam(name = "page_size", defaultValue = "10") Integer pageSize,
+                                       @RequestParam(name = "photoStart", required = false) Long updateStart,
+                                       @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) {
+
+        return ResponseResult.success(fileService.MediaQuery(page, pageSize, updateStart, updateEnd, photoStart, photoEnd, jobName,workspaceId));
+
+    }
+
     @PostMapping("/{workspace_id}/updateFile")
     public ResponseResult updateFile(HttpServletRequest request, @PathVariable(name = "workspace_id") String workspaceId, @RequestBody MediaFileEntity mediaFileEntity) {
         CustomClaim claims = (CustomClaim) request.getAttribute(TOKEN_CLAIM);
diff --git a/src/main/java/com/dji/sample/media/model/MediaFileEntity.java b/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
index 1babeb3..2a0093b 100644
--- a/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
+++ b/src/main/java/com/dji/sample/media/model/MediaFileEntity.java
@@ -78,6 +78,8 @@
 
     @TableField("examine")
     private Integer examine;
+    @TableField("job_name")
+    private String jobName;
 
 }
 
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 a4fc934..5cc4242 100644
--- a/src/main/java/com/dji/sample/media/service/IFileService.java
+++ b/src/main/java/com/dji/sample/media/service/IFileService.java
@@ -1,5 +1,6 @@
 package com.dji.sample.media.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.dji.sample.common.model.PaginationData;
 import com.dji.sample.common.model.ResponseResult;
 import com.dji.sample.media.model.FileUploadDTO;
@@ -62,6 +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);
     /**
      * 获取图斑图片集合
      * @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 7b739d0..f69292b 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
@@ -20,10 +20,12 @@
 import com.dji.sample.media.util.ImgUtil;
 import com.dji.sample.patches.dao.GetPatchesMapper;
 import com.dji.sample.patches.model.entity.LotInfo;
+import com.dji.sample.patches.utils.DistrictCodeUtils;
 import com.dji.sample.patches.utils.TimerUtil;
 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.IWaylineJobService;
 import com.drew.imaging.ImageProcessingException;
 import io.minio.MinioClient;
 import io.minio.PutObjectArgs;
@@ -64,6 +66,9 @@
     private OssServiceContext ossService;
     @Autowired
     private TerritoryConfigPojo territoryConfigPojo;
+    @Autowired
+    private IWaylineJobService waylineJobService;
+
     private Optional<MediaFileEntity> getMediaByFingerprint(String workspaceId, String fingerprint) {
         MediaFileEntity fileEntity = mapper.selectOne(new LambdaQueryWrapper<MediaFileEntity>()
                 .eq(MediaFileEntity::getWorkspaceId, workspaceId)
@@ -153,6 +158,48 @@
     }
 
     @Override
+    public PaginationData<MediaFileEntity> MediaQuery(Integer page, Integer pageSize, Long updateStart, Long updateEnd, Long photoStart, Long photoEnd, String jobName, String workspaceId) {
+        // 创建分页对象
+        Page<MediaFileEntity> pageObj = new Page<>(page, pageSize);
+
+        // 创建查询条件对象
+        LambdaQueryWrapper<MediaFileEntity> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 添加查询条件
+        queryWrapper.eq(MediaFileEntity::getWorkspaceId,workspaceId);
+
+        if (updateStart != null && updateEnd != null) {
+            queryWrapper.between(MediaFileEntity::getCreateTime, updateStart, updateEnd);
+        }
+
+        if (photoStart != null && photoEnd != null) {
+            queryWrapper.apply("JSON_UNQUOTE(JSON_EXTRACT(metadata, '$.createdTime')) BETWEEN {0} AND {1}", photoStart, photoEnd);
+        }
+
+        if (jobName != null && !jobName.isEmpty()) {
+            List<String> jobIds = waylineJobService.getJobId(jobName);
+                queryWrapper.in(MediaFileEntity::getJobId, jobIds);
+        }
+
+        // 执行分页查询
+        Page<MediaFileEntity> resultPage = mapper.selectPage(pageObj, queryWrapper);
+
+        // 处理查询结果
+        List<MediaFileEntity> records = resultPage.getRecords()
+                .stream()
+                .peek(mediaFile -> {
+                    // 获取任务名称并设置到fileId
+                    String taskNameResult = waylineJobService.getName(mediaFile.getJobId());
+                    mediaFile.setJobName(taskNameResult);
+                })
+                .collect(Collectors.toList());
+
+// 返回分页数据
+        return new PaginationData<>(records, new Pagination(resultPage));
+
+    }
+
+    @Override
     public List<MediaFileEntity> listMediaFileEntity(String workspaceId, String jobId) {
         return mapper.selectList(new LambdaQueryWrapper<MediaFileEntity>()
                 .eq(MediaFileEntity::getWorkspaceId, workspaceId).eq(MediaFileEntity::getJobId, jobId));
@@ -201,6 +248,11 @@
 
         List<MediaFileEntity> records = pageData.getRecords()
                 .stream()
+                .peek(mediaFile -> {
+                    // 获取任务名称并设置到fileId
+                    String taskNameResult = waylineJobService.getName(mediaFile.getJobId());
+                    mediaFile.setJobName(taskNameResult);
+                })
                 .collect(Collectors.toList());
         return new PaginationData<MediaFileEntity>(records, new Pagination(pageData));
     }
diff --git a/src/main/java/com/dji/sample/patches/controller/PatchesController.java b/src/main/java/com/dji/sample/patches/controller/PatchesController.java
index 5860f0b..1a845ad 100644
--- a/src/main/java/com/dji/sample/patches/controller/PatchesController.java
+++ b/src/main/java/com/dji/sample/patches/controller/PatchesController.java
@@ -28,6 +28,8 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM;
 
@@ -151,6 +153,9 @@
 //            timerUtil.myTask2();
 //            timerUtil.myTask3();
             timerUtil.mytask4();
+            timerUtil.mytask5();
+            timerUtil.mytask6();
+            timerUtil.mytask7();
 
         } catch (Exception e) {
             throw new RuntimeException("db存储发送出现异常" + e);
@@ -158,16 +163,20 @@
         return ResponseResult.success();
     }
 
-    //    @GetMapping ("/tests")
-//    public ResponseResult use()  {
-//        try {
-//            TimerUtil.sendPostWithFileAndParameter("src/main/resources/tmp/20240613/205621_635148ea-0ddb-4b23-945c-8a67abd813c9.db",
-//                    "635148ea-0ddb-4b23-945c-8a67abd813c9");
-//        } catch (IOException e) {
-//            throw new RuntimeException(e);
-//        }
-//        return ResponseResult.success();
-//    }
+        @GetMapping ("/tests")
+    public ResponseResult use()  {
+            ExecutorService executor = Executors.newSingleThreadExecutor();
+            executor.execute(() -> {
+                try {
+                    timerUtil.sendPostWithFileAndParameter("DB/result_db.db",
+                            "635148ea-0ddb-4b23-945c-8a67abd813c9");
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            });
+            executor.shutdown();
+            return ResponseResult.success();
+    }
     @PostMapping("/way")
     public void getway(@RequestParam("file") MultipartFile file,
                        @RequestParam String workspaceId,
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 ace82b0..4230895 100644
--- a/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
+++ b/src/main/java/com/dji/sample/patches/utils/TimerUtil.java
@@ -114,7 +114,7 @@
             String times = convertTimestampToFormattedString(time);
             sendPostWithParameters(waylineName, waylineFile.getWaylineId(), times, lists1, listOfLists);
             updatePatchesStatu(list);
-            time = addOneHourToTimestamp(time);
+            time = addOneHourToTimestamp(time,1,30);
         }
 
     }
@@ -132,16 +132,16 @@
         executor.shutdown();
     }
 
-    public void myTask3() throws SQLException {
-        String workspaceId = "4a574db8-4ad3-48f7-9f16-3edbcd8056e1";
-        String name = getNowDay();
-        List<String> jobs = waylineJobService.selectJobIdByName(name);
-        List<String> jobIds = jobBreakPointService.selectHaveBreak(jobs);
-        for (String jobid : jobIds) {
-            Optional<WaylineJobDTO> waylineJobDTO = waylineJobService.getJobByJobId(workspaceId, jobid, true);
-            waylineJobService.publishOneFlightTask(waylineJobDTO.get());
-        }
-    }
+    //    public void myTask3() throws SQLException {
+//        String workspaceId = "4a574db8-4ad3-48f7-9f16-3edbcd8056e1";
+//        String name = getNowDay();
+//        List<String> jobs = waylineJobService.selectJobIdByName(name);
+//        List<String> jobIds = jobBreakPointService.selectHaveBreak(jobs);
+//        for (String jobid : jobIds) {
+//            Optional<WaylineJobDTO> waylineJobDTO = waylineJobService.getJobByJobId(workspaceId, jobid, true);
+//            waylineJobService.publishOneFlightTask(waylineJobDTO.get());
+//        }
+//    }
     @Scheduled(cron = "0 0 0 * * ?")
     public void mytask4() throws IOException {
         Long time = getCurrentTimestampPlus8Hours(9);
@@ -152,7 +152,46 @@
         List<Long> lists1 = new ArrayList<>();
         lists1.add(time);
         String times = convertTimestampToFormattedString(time);
-        sendPostWithParameters("九洲巡查","73e14492-f1b2-4fc4-81c0-7ca65cd3bc56", times, lists1, listOfLists);
+        sendPostWithParameters("别墅巡查一段", "a07229af-471a-4058-9da6-5a2b84308b9e", times, lists1, listOfLists);
+    }
+
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void mytask5() throws IOException {
+        Long time = getCurrentTimestampPlus8Hours(10);
+        List<List<Long>> listOfLists = new ArrayList<>();
+        List<Long> sublist = new ArrayList<>();
+        sublist.add(time); // 添加整数值
+        listOfLists.add(sublist);
+        List<Long> lists1 = new ArrayList<>();
+        lists1.add(time);
+        String times = convertTimestampToFormattedString(time);
+        sendPostWithParameters("别墅巡查二段", "561ecb37-d673-40f8-a859-05dbfc7d9976", times, lists1, listOfLists);
+    }
+
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void mytask6() throws IOException {
+        Long time = getCurrentTimestampPlus8Hours(11);
+        List<List<Long>> listOfLists = new ArrayList<>();
+        List<Long> sublist = new ArrayList<>();
+        sublist.add(time); // 添加整数值
+        listOfLists.add(sublist);
+        List<Long> lists1 = new ArrayList<>();
+        lists1.add(time);
+        String times = convertTimestampToFormattedString(time);
+        sendPostWithParameters("九洲巡河一段", "9f471686-a73a-4e90-8f37-92eed8ed5929", times, lists1, listOfLists);
+    }
+
+    @Scheduled(cron = "0 0 0 * * ?")
+    public void mytask7() throws IOException {
+        Long time = getCurrentTimestampPlus8Hours(13);
+        List<List<Long>> listOfLists = new ArrayList<>();
+        List<Long> sublist = new ArrayList<>();
+        sublist.add(time); // 添加整数值
+        listOfLists.add(sublist);
+        List<Long> lists1 = new ArrayList<>();
+        lists1.add(time);
+        String times = convertTimestampToFormattedString(time);
+        sendPostWithParameters("九洲巡河二段", "58cd4261-02d7-4c4e-b876-25a4a2630c18", times, lists1, listOfLists);
     }
 
     /**
@@ -185,7 +224,7 @@
             dbSave(territoryConfigPojo.getResult(), territoryConfigPojo.getResultsave(), taskId);
 
             //发送请求给第三方接口
-            sendPostWithFileAndParameter(territoryConfigPojo.getResult(), taskId, dkbh, workspaceId);
+            sendPostWithFileAndParameter(territoryConfigPojo.getResult(), taskId);
 
         }
     }
@@ -351,7 +390,7 @@
      * @param taskId
      * @throws IOException
      */
-    public void sendPostWithFileAndParameter(String filePath, String taskId, String dkbh, String workspaceId) throws IOException {
+    public void sendPostWithFileAndParameter(String filePath, String taskId) throws IOException {
         // 创建 RestTemplate 实例
         try {
             RestTemplate restTemplate = new RestTemplate();
@@ -373,12 +412,11 @@
 
             // 发送请求
             ResponseEntity<String> response = restTemplate.exchange(
-                    "http://39.98.48.180:8087/landCloudWork/artifact/media/upload.action",
+                    "https://jxlandcloud.org.cn/landCloudWork/artifact/media/upload.action",
 //                    "http://localhost:6789/territory/tbdkjbxx/upload",
                     HttpMethod.POST,
                     requestEntity,
                     String.class);
-            System.out.println(response);
         } catch (Exception e) {
             throw new IllegalArgumentException("db推送失败" + e.getMessage());
         }
@@ -548,7 +586,7 @@
         return timestamp / 1000;
     }
 
-    public static Long addOneHourToTimestamp(Long timestampInSeconds) {
+    public static Long addOneHourToTimestamp(Long timestampInSeconds,long hours,long min) {
         // 将输入的秒级时间戳转换为Instant对象
         Instant instant = Instant.ofEpochSecond(timestampInSeconds);
 
@@ -556,7 +594,7 @@
         ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
 
         // 加上一小时
-        ZonedDateTime zonedDateTimePlusOneHour = zonedDateTime.plusHours(1).plusMinutes(30);
+        ZonedDateTime zonedDateTimePlusOneHour = zonedDateTime.plusHours(hours).plusMinutes(min);
 
         // 将ZonedDateTime对象转换回秒级时间戳
         return zonedDateTimePlusOneHour.toInstant().getEpochSecond();
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 b0a3ac9..5d9fdf8 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
+++ b/src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java
@@ -194,6 +194,10 @@
 
         return ResponseResult.success(waylineJobCountDTO);
     }
+    @GetMapping("/idToName")
+    public ResponseResult findName(@RequestParam String jobid) {
+        return ResponseResult.success(waylineJobService.getName(jobid));
+    }
 
     /**
      * 收藏媒体库
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 96c9de4..cce52f0 100644
--- a/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
+++ b/src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -170,6 +170,8 @@
      * @return
      */
     WaylineJobStatusEnum getWaylineState(String dockSn);
+    String getName(String jobId);
+    List<String> getJobId(String jobName);
 
     /**
      * 获取最新的航线任务
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 f55eefa..9e22c2e 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
@@ -15,15 +15,11 @@
 import com.dji.sample.common.model.PaginationData;
 import com.dji.sample.common.model.ResponseResult;
 import com.dji.sample.common.util.MinioUrlUtils;
-import com.dji.sample.common.util.SpringBeanUtils;
 import com.dji.sample.component.mqtt.model.*;
 import com.dji.sample.component.mqtt.service.IMessageSenderService;
 import com.dji.sample.component.redis.RedisConst;
 import com.dji.sample.component.redis.RedisOpsUtils;
 import com.dji.sample.control.model.dto.PointDTO;
-import com.dji.sample.control.model.enums.CameraModeEnum;
-import com.dji.sample.control.model.enums.DroneAuthorityEnum;
-import com.dji.sample.control.model.enums.PayloadCommandsEnum;
 import com.dji.sample.control.model.param.*;
 import com.dji.sample.control.service.IControlService;
 import com.dji.sample.control.service.IDrcService;
@@ -66,7 +62,6 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import java.io.File;
 import java.net.URL;
 import java.sql.SQLException;
 import java.time.*;
@@ -664,7 +659,6 @@
     }
 
 
-
     @Override
     public void uploadMediaHighestPriority(String workspaceId, String jobId) {
         Optional<WaylineJobDTO> jobOpt = getJobByJobId(workspaceId, jobId);
@@ -768,6 +762,32 @@
     }
 
     @Override
+    public String getName(String jobId) {
+        WaylineJobEntity entity = mapper.selectOne(
+                new LambdaQueryWrapper<WaylineJobEntity>()
+                        .select(WaylineJobEntity::getName)
+                        .eq(WaylineJobEntity::getJobId, jobId)
+        );
+        return entity != null ? entity.getName() : null;
+    }
+
+    @Override
+    public List<String> getJobId(String jobName) {
+        List<Object> jobIdList = mapper.selectObjs(
+                new LambdaQueryWrapper<WaylineJobEntity>()
+                        .select(WaylineJobEntity::getJobId)
+                        .eq(WaylineJobEntity::getName, jobName)
+        );
+
+// 将 Object 类型的 jobId 转换为 String 类型,并放入 List<String> 中
+        List<String> jobIdStringList = new ArrayList<>();
+        for (Object jobIdObj : jobIdList) {
+            jobIdStringList.add(String.valueOf(jobIdObj));
+        }
+        return jobIdStringList;
+    }
+
+    @Override
     public WaylineJobEntity getLatestJob(String workspaceId, WaylineJobQueryParam waylineJobQueryParam) {
         WaylineJobEntity waylineJobEntity = mapper.getLatest(workspaceId, waylineJobQueryParam);
         return waylineJobEntity;

--
Gitblit v1.9.3