rain
2024-07-29 86384846e317381e7bb9e31ee76760e4ecb3ee67
src/main/java/com/dji/sample/patches/service/impl/GetPatchesServiceImpl.java
@@ -1,21 +1,26 @@
package com.dji.sample.patches.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dji.sample.common.model.Pagination;
import com.dji.sample.common.model.PaginationData;
import com.dji.sample.media.dao.IFileMapper;
import com.dji.sample.media.dao.IMarkMapper;
import com.dji.sample.media.model.MediaFileEntity;
import com.dji.sample.media.model.MediaFileMarkEntity;
import com.dji.sample.patches.dao.GetPatchesMapper;
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.wayline.model.entity.WaylineFileEntity;
import com.dji.sample.patches.utils.DistrictCodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@@ -24,6 +29,8 @@
    private GetPatchesMapper mapper;
    @Autowired
    private IFileMapper fileMapper;
    @Autowired
    private IMarkMapper markMapper;
    /**
     * 分页获取数据的接口实现。
@@ -33,69 +40,160 @@
     */
    @Override
    public PaginationData<LotInfo> limitGet(PatchesParam param) {
        Page<LotInfo> page = mapper.selectPage(new Page<LotInfo>(param.getPage(), param.getPageSize()),
                new LambdaQueryWrapper<LotInfo>()
                        .eq(LotInfo::getWorkspaceId, param.getWorkspaceId()));
        List<LotInfo> records = page.getRecords()
        // 创建分页对象
        Page<LotInfo> page = new Page<>(param.getPage(), param.getPageSize());
        // 创建查询条件对象
        LambdaQueryWrapper<LotInfo> queryWrapper = new LambdaQueryWrapper<>();
        // 添加查询条件
        queryWrapper.eq(LotInfo::getWorkspaceId, param.getWorkspaceId());
        if (param.getDkbh() != null && !param.getDkbh().isEmpty()) {
            queryWrapper.like(LotInfo::getDkbh, param.getDkbh());
        }
        if (param.getInvestigate() != null) {
            queryWrapper.eq(LotInfo::getInvestigate, param.getInvestigate());
        }
        if (param.getDkbh() != null && !param.getDkbh().isEmpty()) {
            queryWrapper.like(LotInfo::getDkbh, param.getDkbh());
        }
        if (param.getXzqdm() != null && !param.getXzqdm().isEmpty()) {
            queryWrapper.like(LotInfo::getXzqdm, param.getXzqdm());
        }
        if (param.getXmc() != null && !param.getXmc().isEmpty()) {
            queryWrapper.like(LotInfo::getXmc, param.getXmc());
        }
        if (param.getBsm() != null && !param.getBsm().isEmpty()) {
            queryWrapper.like(LotInfo::getXmc, param.getBsm());
        }
        if (param.getDkmj()!=null){
            queryWrapper.eq(LotInfo::getDkmj,param.getDkmj());
        }
        if (param.getIsPlan() != null) {
            queryWrapper.eq(LotInfo::getIsPlan, param.getIsPlan());
        }
        // 执行分页查询
        Page<LotInfo> resultPage = mapper.selectPage(page, queryWrapper);
        // 处理查询结果
        List<LotInfo> records = resultPage.getRecords()
                .stream()
                .peek(lotInfo -> {
                    // 修改 xzqdm 字段的值
                     lotInfo.setXmc(DistrictCodeUtils.codeToName(lotInfo.getXzqdm()));
                })
                .collect(Collectors.toList());
        return new PaginationData<LotInfo>(records, new Pagination(page));
        // 返回分页数据
        return new PaginationData<>(records, new Pagination(resultPage));
    }
    @Override
    public int delPatches(String workspaceId) {
        return mapper.delete(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getWorkspaceId,workspaceId));
    }
    @Override
    public void delPatches() {
        mapper.delete(null);
    public int deleteOne(int id) {
        return mapper.deleteById(id);
    }
    /**
     * 根据条件获取照片的分页数据
     *
     * @param param 包含分页信息和查询条件的参数对象
     * @param dkbh  查询条件中带有地块编号关键字,用于文件名的模糊搜索
     * @return 返回照片的分页数据,包括分页信息和照片实体列表
     */
    @Override
    public PaginationData<MediaFileEntity> getPhoto(PatchesParam param, String dkbh) {
        Page<MediaFileEntity> page = fileMapper.selectPage(new Page<MediaFileEntity>(param.getPage(), param.getPageSize()),
                new LambdaQueryWrapper<MediaFileEntity>().like(MediaFileEntity::getFileName, "%" + dkbh + "~" + "%"));
        List<MediaFileEntity> records = page.getRecords()
                .stream()
                .collect(Collectors.toList());
        return new PaginationData<MediaFileEntity>(records, new Pagination(page));
    }
    public PaginationData getPhoto(PatchesParam param, String dkbh) {
//        LotInfo lotInfo = getLotinfoToDb(dkbh);
//        int statue = lotInfo.getIsPush();
//
//        if (statue == 1) {
//            List<MediaFileMarkEntity> allResults = markMapper.selectList(
//                    new LambdaQueryWrapper<MediaFileMarkEntity>()
//                            .like(MediaFileMarkEntity::getFileName, "%" + dkbh + "~" + "%"));
//
//            // 去重处理
//            Map<String, MediaFileMarkEntity> uniqueFileMap = new LinkedHashMap<>();
//            List<MediaFileMarkEntity> uniqueResults = allResults.stream()
//                    .filter(mediaFile -> uniqueFileMap.putIfAbsent(mediaFile.getFileName(), mediaFile) == null)
//                    .collect(Collectors.toList());
//
//            // 计算分页信息
//            int total = uniqueResults.size();
//            int start = (param.getPage() - 1) * param.getPageSize();
//            int end = Math.min(start + param.getPageSize(), total);
//
//            // 获取当前页的结果
//            List<MediaFileMarkEntity> pageResults = uniqueResults.subList(start, end);
//
//            // 创建临时的 Page 对象
//            Page<MediaFileMarkEntity> resultPage = new Page<>(param.getPage(), param.getPageSize());
//            resultPage.setRecords(pageResults);
//            resultPage.setTotal(total);
//
//            // 返回分页数据
//            return new PaginationData<>(pageResults, new Pagination(resultPage));
//        }
//        else {
            List<MediaFileEntity> allResults = fileMapper.selectList(
                    new LambdaQueryWrapper<MediaFileEntity>()
                            .like(MediaFileEntity::getFileName, "%" + dkbh + "~" + "%"));
    /**
     * 根据条件获取照片的分页数据
     *
     * @param workspaceId 工作空间的ID,用于指定查询的工作空间
     * @param dkbh        查询条件中带有地块编号关键字,用于文件名的模糊搜索
     * @return 返回照片的分页数据,包括分页信息和照片实体列表
     */
            // 去重处理
            Map<String, MediaFileEntity> uniqueFileMap = new LinkedHashMap<>();
            List<MediaFileEntity> uniqueResults = allResults.stream()
                    .filter(mediaFile -> uniqueFileMap.putIfAbsent(mediaFile.getFileName(), mediaFile) == null)
                    .collect(Collectors.toList());
            // 计算分页信息
            int total = uniqueResults.size();
            int start = (param.getPage() - 1) * param.getPageSize();
            int end = Math.min(start + param.getPageSize(), total);
            // 获取当前页的结果
            List<MediaFileEntity> pageResults = uniqueResults.subList(start, end);
            // 创建临时的 Page 对象
            Page<MediaFileEntity> resultPage = new Page<>(param.getPage(), param.getPageSize());
            resultPage.setRecords(pageResults);
            resultPage.setTotal(total);
            // 返回分页数据
            return new PaginationData<>(pageResults, new Pagination(resultPage));
        }
//    }
    public List<MediaFileEntity> listPohto(String dkbh, String workspaceId) {
        return fileMapper.selectList(new LambdaQueryWrapper<MediaFileEntity>().like(MediaFileEntity::getFileName, "%" + dkbh + "%")
                .eq(MediaFileEntity::getWorkspaceId, workspaceId));
                .eq(MediaFileEntity::getWorkspaceId, workspaceId)
                .eq(MediaFileEntity::getExamine,1));
    }
    /**
     * 根据地块编号和工作空间ID获取地块信息。
     *
     * @param dkbh        地块编号,用于查询特定定单的地块信息。
     * @param workspaceId 工作空间ID,用于查询属于特定工作空间的地块信息。
     * @return 返回匹配给定地块编号和工作空间ID的地块信息对象。如果找不到匹配的记录,则返回null。
     */
    public LotInfo getLotinfo(String dkbh, String workspaceId) {
        return mapper.selectOne(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getDkbh, dkbh)
                .eq(LotInfo::getWorkspaceId, workspaceId));
    }
    public void patchesPushed(String taskId, String dkbh, String workspaceId) {
        LambdaUpdateWrapper<LotInfo> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(LotInfo::getIsPush, 1)
                .eq(LotInfo::getWorkspaceId, workspaceId)
                .eq(LotInfo::getDkbh, dkbh)
                .eq(LotInfo::getTaskId, taskId);
        mapper.update(null, updateWrapper);
    }
    public LotInfo getLotinfoToDb(String dkbh) {
        return mapper.selectOne(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getDkbh, dkbh));
    }
    public List<LotInfo> getLotInfosByIds(List<Integer> ids) {
        LambdaQueryWrapper<LotInfo> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(LotInfo::getId, ids);
        return mapper.selectList(queryWrapper);
    }
    public List<LotInfo> listLotinfo() {
        return mapper.selectList(null);
    }
    @Override
    public LotInfo getPatchesFromId(String patchesId){
        return mapper.selectOne(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getId,patchesId));
    }
    @Override
    public void insertLotinfo(List<LotInfo> list) {
        for (int i = 0; i < list.size(); i++) {