aix
2024-08-08 39ffdf5754b4ebca682bd3c925f7a500e8a1bbda
src/main/java/com/dji/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -9,7 +9,6 @@
import com.dji.sample.component.oss.model.OssConfiguration;
import com.dji.sample.component.oss.service.impl.OssServiceContext;
import com.dji.sample.manage.model.enums.DeviceDomainEnum;
import com.dji.sample.summarize.model.entity.FlyInfo;
import com.dji.sample.wayline.dao.IWaylineFileMapper;
import com.dji.sample.wayline.model.dto.KmzFileProperties;
import com.dji.sample.wayline.model.dto.WaylineFileDTO;
@@ -52,7 +51,6 @@
    @Autowired
    private IWaylineFileMapper mapper;
    @Autowired
    private OssServiceContext ossService;
@@ -82,6 +80,33 @@
    }
    @Override
    public PaginationData<WaylineFileDTO> getShowWaylinesByParam(String workspaceId, WaylineQueryParam param) {
        // Paging Query
        Page<WaylineFileEntity> page = mapper.selectPage(
                new Page<WaylineFileEntity>(param.getPage(), param.getPageSize()),
                new LambdaQueryWrapper<WaylineFileEntity>()
                        .eq(WaylineFileEntity::getWorkspaceId, workspaceId)
                        .eq(WaylineFileEntity::getIsTemp,1)
                        .eq(param.isFavorited(), WaylineFileEntity::getFavorited, param.isFavorited())
                        .and(param.getTemplateType() != null, wrapper -> {
                            for (Integer type : param.getTemplateType()) {
                                wrapper.like(WaylineFileEntity::getTemplateTypes, type).or();
                            }
                        })
                        // There is a risk of SQL injection
                        .last(StringUtils.hasText(param.getOrderBy()), " order by " + param.getOrderBy()));
        // Wrap the results of a paging query into a custom paging object.
        List<WaylineFileDTO> records = page.getRecords()
                .stream()
                .map(this::entityConvertToDTO)
                .collect(Collectors.toList());
        return new PaginationData<>(records, new Pagination(page));
    }
    @Override
    public String getPatchesId(String waylineId) {
        WaylineFileEntity entity = mapper.selectOne(new LambdaQueryWrapper<WaylineFileEntity>()
                .eq(WaylineFileEntity::getWaylineId, waylineId));
@@ -98,6 +123,7 @@
                                        .eq(WaylineFileEntity::getWaylineId, waylineId))));
    }
    @Override
    public URL getObjectUrl(String workspaceId, String waylineId) throws SQLException {
        Optional<WaylineFileDTO> waylineOpt = this.getWaylineByWaylineId(workspaceId, waylineId);
@@ -112,7 +138,6 @@
        WaylineFileEntity file = this.dtoConvertToEntity(metadata);
        file.setWaylineId(UUID.randomUUID().toString());
        file.setWorkspaceId(workspaceId);
        if (!StringUtils.hasText(file.getSign())) {
            try (InputStream object = ossService.getObject(OssConfiguration.bucket, metadata.getObjectKey())) {
                if (object.available() == 0) {
@@ -129,12 +154,12 @@
    }
    @Override
    public Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata, String patchesId) {
    public Integer saveWaylineFiles(String workspaceId, WaylineFileDTO metadata, String patchesId,String isTemp) {
        metadata.setPatchesId(patchesId);
        WaylineFileEntity file = this.dtoConvertToEntity(metadata);
        file.setWaylineId(UUID.randomUUID().toString());
        file.setWorkspaceId(workspaceId);
        file.setIsTemp(isTemp);
        if (!StringUtils.hasText(file.getSign())) {
            try (InputStream object = ossService.getObject(OssConfiguration.bucket, metadata.getObjectKey())) {
                if (object.available() == 0) {
@@ -149,6 +174,7 @@
        int insertId = mapper.insert(file);
        return insertId > 0 ? file.getId() : insertId;
    }
    @Override
    public Boolean markFavorite(String workspaceId, List<String> waylineIds, Boolean isFavorite) {
@@ -192,23 +218,27 @@
    }
    @Override
    public void importKmzFile(MultipartFile file, String workspaceId, String creator, String patchesId,String spotInFreckle) {
    public String importKmzFile(MultipartFile file, String workspaceId, String creator, String patchesId,String isTemp) {
        Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
        if (waylineFileOpt.isEmpty()) {
            throw new RuntimeException("文件格式错误");
        }
        String back = null;
        try {
            WaylineFileDTO waylineFile = waylineFileOpt.get();
            waylineFile.setWaylineId(workspaceId);
            waylineFile.setUsername(creator);
            waylineFile.setSpotInFreckle(spotInFreckle);
            ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
            this.saveWaylineFiles(workspaceId, waylineFile, patchesId);
            waylineFile.setIsTemp(isTemp);
            back = ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
            if (back == null) {
                this.saveWaylineFiles(workspaceId, waylineFile, patchesId,isTemp);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return back;
    }
    @Override
    public WaylineFileDTO importKmzFileBack(MultipartFile file, String workspaceId, String creator) {
@@ -222,10 +252,27 @@
            waylineFile = waylineFileOpt.get();
            waylineFile.setWaylineId(workspaceId);
            waylineFile.setUsername(creator);
            ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
            this.saveWaylineFile(workspaceId, waylineFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return waylineFile;
    }
    @Override
    public WaylineFileDTO importPlaneKmzFile(MultipartFile file, String workspaceId, String creator,String newName,String id) {
        WaylineFileDTO waylineFile = null;
        Optional<WaylineFileDTO> waylineFileOpt = validKmzFile(file);
        if (waylineFileOpt.isEmpty()) {
            throw new RuntimeException("文件格式错误");
        }
        try {
            waylineFile = waylineFileOpt.get();
            waylineFile.setWaylineId(workspaceId);
            waylineFile.setUsername(creator);
            ossService.putObject(OssConfiguration.bucket, waylineFile.getObjectKey(), file.getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
@@ -362,6 +409,8 @@
        return builder.build();
    }
    @Override
    public int updateWayline(WaylineFileEntity entity) {
        return mapper.update(entity, new LambdaQueryWrapper<WaylineFileEntity>()