package com.dji.sample.wayline.plane.controller; import com.dji.sample.common.model.CustomClaim; import com.dji.sample.common.model.ResponseResult; import com.dji.sample.media.model.MinioPojo; import com.dji.sample.media.util.MinioFileDownloader; import com.dji.sample.patches.config.pojo.PatchesConfigPojo; import com.dji.sample.patches.utils.MultipartFileTOFileUtil; import com.dji.sample.patches.utils.TimerUtil; import com.dji.sample.patches.utils.ZipUtil; import com.dji.sample.patches.xml.mode.XMLTemplateModel; import com.dji.sample.patches.xml.utils.CreateWaylineFileUtils; import com.dji.sample.wayline.plane.PlaneCourseUtils; import com.dji.sample.wayline.plane.param.CreateWaylineParam; import com.dji.sample.wayline.service.IWaylineFileService; 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.File; import java.io.IOException; import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM; /** * @Author AIX * @Date 2024/7/19 10:46 * @Version 1.0 */ @RestController @RequestMapping("/wayline/plane/createWayline") public class CreateWayLineController { @Autowired private PatchesConfigPojo patchesConfigPojo; @Autowired private IWaylineFileService waylineFileService; @Autowired private MinioPojo pojo; @PostMapping("/createPoints") public ResponseResult createPoints(@RequestBody CreateWaylineParam param) { return ResponseResult.success(PlaneCourseUtils.createWaylinePoints(param)); } @PostMapping("/{workspace_id}/saveWayLineFile") public ResponseResult saveWayLineFile(@PathVariable(name = "workspace_id") String workspaceId, @RequestBody CreateWaylineParam param, HttpServletRequest request ) throws IOException { CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM); String creator = customClaim.getUsername(); // 初始化模板对象 XMLTemplateModel xmlModel = XMLTemplateModel.initPolygon(param); // 生成航线文件 CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneTemplate(), patchesConfigPojo.getPlaneTargetTemplate()); CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneWaylines(), patchesConfigPojo.getPlaneTargetWaylines()); // kmz、上传航线库 String destKMZFile = patchesConfigPojo.getPlaneKMZFile() + param.getWaylineName() + ".kmz"; // 输出的KMZ文件路径 ZipUtil.zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile); MultipartFile multipartFile = MultipartFileTOFileUtil.convert(new File(destKMZFile)); waylineFileService.importKmzFile(multipartFile, workspaceId, creator, null, "1"); return ResponseResult.success(); } @PostMapping("/{workspace_id}/updateWayLineFile") public ResponseResult updateWayLineFile(@PathVariable(name = "workspace_id") String workspaceId, @RequestBody CreateWaylineParam param, HttpServletRequest request) throws IOException { String kmz=param.getWaylineName()+".kmz"; // 初始化模板对象 MinioFileDownloader.deleteFileFromMinio(pojo.getEndpoint(), pojo.getAccessKey(), pojo.getSecretKey(), pojo.getBucket(), kmz); CustomClaim customClaim = (CustomClaim) request.getAttribute(TOKEN_CLAIM); String creator = customClaim.getUsername(); // 初始化模板对象 XMLTemplateModel xmlModel = XMLTemplateModel.initPolygon(param); // 生成航线文件 CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneTemplate(), patchesConfigPojo.getPlaneTargetTemplate()); CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, patchesConfigPojo.getPlaneWaylines(), patchesConfigPojo.getPlaneTargetWaylines()); // kmz、上传航线库 String destKMZFile = patchesConfigPojo.getPlaneKMZFile() + param.getWaylineName() + ".kmz"; // 输出的KMZ文件路径 ZipUtil.zipFolder(patchesConfigPojo.getSourceDir(), destKMZFile); MultipartFile multipartFile = MultipartFileTOFileUtil.convert(new File(destKMZFile)); waylineFileService.importPlaneKmzFile(multipartFile, workspaceId, creator, null, "1"); return ResponseResult.success(); } }