rain
2024-07-31 22c71b441fd63fbaa240552e82d557e23cfffc00
src/main/java/com/dji/sample/wayline/plane/controller/CreateWayLineController.java
@@ -1,11 +1,28 @@
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 javax.validation.Valid;
import java.io.File;
import java.io.IOException;
import static com.dji.sample.component.AuthInterceptor.TOKEN_CLAIM;
/**
 * @Author AIX
@@ -15,25 +32,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) {
    public ResponseResult createPoints(@RequestBody @Valid CreateWaylineParam param) {
        return ResponseResult.success(PlaneCourseUtils.createWaylinePoints(param));
    }
    @PostMapping("/saveWayLineFile")
    public ResponseResult saveWayLineFile(@RequestBody CreateWaylineParam param) {
        // 初始化模板对象
    @PostMapping("/{workspace_id}/saveWayLineFile")
    public ResponseResult saveWayLineFile(@PathVariable(name = "workspace_id") String workspaceId,
                                          @RequestBody @Valid 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, "src\\main\\resources\\template\\template-polygon.xml", "src\\main\\resources\\template\\wpmz2\\template.xml");
        CreateWaylineFileUtils.createWaylineFileByPolygon(xmlModel, "src\\main\\resources\\template\\waylines-polygon.xml", "src\\main\\resources\\template\\wpmz2\\waylines.xml");
        //kmz、上传航线库
//        生成航线文件
        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();
    }
}