rain
2024-06-24 1fc2b9a38ce7fb5f0a78361a731e98750fbd20c1
定时四个九洲巡查任务,新增媒体文件任务查询、搜索接口
9 files modified
212 ■■■■ changed files
src/main/java/com/dji/sample/media/controller/FileController.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/media/model/MediaFileEntity.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/media/service/IFileService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/media/service/impl/FileServiceImpl.java 52 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/controller/PatchesController.java 29 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/patches/utils/TimerUtil.java 74 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/controller/WaylineJobController.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java 32 ●●●● patch | view | raw | blame | history
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);
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;
}
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
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));
    }
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,
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();
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));
    }
    /**
     * 收藏媒体库
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);
    /**
     * 获取最新的航线任务
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;