package com.dji.sample.patches.controller; import com.dji.sample.common.model.CustomClaim; 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.media.model.MediaFileEntity; import com.dji.sample.media.service.impl.FileServiceImpl; import com.dji.sample.patches.model.Param.PatchesParam; import com.dji.sample.patches.model.entity.LotInfo; import com.dji.sample.patches.service.GetPatchesService; import com.dji.sample.patches.service.ShpToDataSourceService; import com.dji.sample.patches.utils.DistrictCodeUtils; import com.dji.sample.patches.utils.GeoToolsUtil; import com.dji.sample.patches.utils.PointPO; import com.dji.sample.patches.utils.TimerUtil; import com.dji.sample.territory.service.impl.TbDkjbxxServiceImpl; import com.dji.sample.wayline.model.entity.WaylineFileEntity; import com.dji.sample.wayline.service.IWaylineFileService; import com.dji.sample.wayline.service.IWaylineJobService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.net.URL; import java.sql.SQLException; 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; @RequestMapping("${url.patches.prefix}${url.patches.version}/Patches") @RestController public class PatchesController { @Autowired private GetPatchesService getPatchesService; @Autowired private ShpToDataSourceService shpToDataSourceService; @Autowired private IWaylineFileService waylineFileService; @Autowired private IWaylineJobService waylineJobService; @Autowired private TbDkjbxxServiceImpl tbDkjbxxService; @Autowired private FileServiceImpl fileService; @Autowired private TimerUtil timerUtil; /** * 根据workspaceId获取图斑列表信息 * * @param page * @param pageSize * @param workspaceId * @return */ @GetMapping("/listPatches") public ResponseResult> page(@RequestParam Integer page, @RequestParam(name = "page_size", defaultValue = "10") Integer pageSize, @RequestParam String workspaceId, @RequestParam(name = "dkbh", required = false) String dkbh, @RequestParam(name = "xzqdm", required = false) String xzqdm, @RequestParam(name = "bsm", required = false) String bsm, @RequestParam(name = "xmc", required = false) String xmc, @RequestParam(name = "investigate", required = false) Integer investigate ) { fileService.getNoaddFile(); //调用service分页查询 PatchesParam param = PatchesParam.builder() .page(page) .workspaceId(workspaceId) .pageSize(pageSize) .dkbh(dkbh) .xzqdm(xzqdm) .bsm(bsm) .xmc(xmc) .investigate(investigate) .build(); PaginationData data = getPatchesService.limitGet(param); return ResponseResult.success(data); } /** * 删除图斑信息 * 本接口不需要接收任何参数,调用成功后会删除相应的补丁信息。 * * @return 返回操作结果,如果操作成功,则返回一个成功的响应结果。 */ @DeleteMapping("/deletePatches") public ResponseResult del(String workspaceId) { int count = getPatchesService.delPatches(workspaceId); return ResponseResult.success("删除的图斑数量是" + count); } @DeleteMapping("/deleteOne") public ResponseResult deleteOne(int id) { int count = getPatchesService.deleteOne(id); if (count != 0) { return ResponseResult.success("图斑删除成功id为" + id); } return ResponseResult.error("图斑删除失败"); } @GetMapping("/getXzq") public ResponseResult xzq(@RequestParam String code) { String xzq = DistrictCodeUtils.nameToCode(code); return ResponseResult.success(xzq); } @GetMapping("/getInfoById") public ResponseResult wayAndPatchesId(@RequestParam String patchesId) { return ResponseResult.success(getPatchesService.getPatchesFromId(patchesId)); } @GetMapping("/getWayline") public ResponseResult getWayline(@RequestParam String waylineName, @RequestBody List list) { try { MultipartFile file = timerUtil.getFile(waylineName, list, 25.8917266, 116.020940643); return ResponseResult.success(file); } catch (IOException e) { throw new RuntimeException(e); } } @GetMapping("/getPoint") public List getPoint(@RequestParam List list, @RequestParam Double airportLat, @RequestParam Double airportLon) { List lotInfos = getPatchesService.getLotInfosByIds(list); return GeoToolsUtil.getRoutePointOrder(lotInfos, airportLat, airportLon); } @PostMapping("/patchesToWayline") public ResponseResult patchesToWayline(@RequestBody List lotInfos, @RequestParam String waylineName, @RequestParam String spotInFreckle, @RequestParam String workspaceId, @RequestParam String patchesId, @RequestParam double lat, @RequestParam double lon, HttpServletRequest request) throws IOException { CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM); String creator = customClaim.getUsername(); MultipartFile file = timerUtil.getFile(waylineName, lotInfos, lat, lon); waylineFileService.importKmzFile(file, workspaceId, creator, patchesId, spotInFreckle); WaylineFileEntity entity = waylineFileService.selectByName(waylineName); Map infoMap = new HashMap<>(); URL url = null; try { url = waylineFileService.getObjectUrl(workspaceId, entity.getWaylineId()); infoMap.put("url", String.valueOf(MinioUrlUtils.getUrl(url))); infoMap.put("waylineId", entity.getWaylineId()); } catch (SQLException e) { throw new RuntimeException(e); } return ResponseResult.success(infoMap); } @GetMapping("/useMyTask") public ResponseResult useMyTask() throws Exception { try { timerUtil.myTask(); // timerUtil.myTask2(); // timerUtil.myTask3(); // timerUtil.mytask4(); // timerUtil.mytask5(); // timerUtil.mytask6(); // timerUtil.mytask7(); } catch (Exception e) { throw new RuntimeException("db存储发送出现异常" + 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, @RequestParam String waylineName, @RequestParam String username) { waylineFileService.importKmzFileBack(file, workspaceId, username); } /** * 根据图斑的地块编号获取相对应音视频 * * @param page * @param pageSize * @param workspaceId * @param dkbh * @return */ @GetMapping("/listPhoto") public ResponseResult> GetPatchesPhoto(@RequestParam(name = "page", defaultValue = "1") Integer page, @RequestParam(name = "page_size", defaultValue = "10") Integer pageSize, @RequestParam String workspaceId, @RequestParam String dkbh) { try { PatchesParam param = PatchesParam.builder() .page(page) .workspaceId(workspaceId) .pageSize(pageSize).build(); PaginationData paginationData = getPatchesService.getPhoto(param, dkbh); return ResponseResult.success(paginationData); } catch (Exception e) { e.printStackTrace(); // 记录异常信息到控制台 return ResponseResult.error("未匹配到相关图片"); // 返回错误信息,可以根据实际情况自定义 } } /** * 上传图斑文件,解析文件并入库,再生成航线并返回 * * @param file * @param workspaceId * @param waylineName * @param airportLat * @param airportLon * @param request * @return * @throws Exception */ @PostMapping("/uploadLot") public ResponseResult getGeo(@RequestParam("file") MultipartFile file, @RequestParam String workspaceId, @RequestParam String waylineName, @RequestParam double airportLat, @RequestParam double airportLon, HttpServletRequest request) throws Exception { MultipartFile multipartFile = shpToDataSourceService.insertGeo(file, workspaceId, waylineName, airportLat, airportLon); CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM); String creator = customClaim.getUsername(); waylineFileService.importKmzFileBack(multipartFile, workspaceId, creator); WaylineFileEntity entity = waylineFileService.selectByName(waylineName); Map infoMap = new HashMap<>(); URL url = null; try { url = waylineFileService.getObjectUrl(workspaceId, entity.getWaylineId()); infoMap.put("url", String.valueOf(MinioUrlUtils.getUrl(url))); infoMap.put("waylineId", entity.getWaylineId()); } catch (SQLException e) { throw new RuntimeException(e); } return ResponseResult.success(infoMap); } }