rain
2024-07-29 86384846e317381e7bb9e31ee76760e4ecb3ee67
src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
@@ -1,9 +1,27 @@
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
@@ -13,10 +31,57 @@
@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();
    }
    @PutMapping("/{workspace_id}/updateWayLineFile/{id}")
    public ResponseResult updateWayLineFile(@PathVariable(name = "workspace_id") String workspaceId,
                                            @PathVariable(name = "id") String id,
                                            @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());
        MinioFileDownloader.deleteFileFromMinio(pojo.getEndpoint(), pojo.getAccessKey(), pojo.getSecretKey(), pojo.getBucket(), param.getWaylineName());
//        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, param.getWaylineName(), id);
        return ResponseResult.success();
    }
}