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;