package com.dji.sample.patches.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.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 public class GetPatchesServiceImpl implements GetPatchesService { @Autowired private GetPatchesMapper mapper; @Autowired private IFileMapper fileMapper; @Autowired private IMarkMapper markMapper; /** * 分页获取数据的接口实现。 * * @param param 包含分页信息和查询条件的工作空间ID。 * @return 返回一个包含查询结果和分页信息的PaginationData对象。 */ @Override public PaginationData limitGet(PatchesParam param) { // 创建分页对象 Page page = new Page<>(param.getPage(), param.getPageSize()); // 创建查询条件对象 LambdaQueryWrapper 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 resultPage = mapper.selectPage(page, queryWrapper); // 处理查询结果 List records = resultPage.getRecords() .stream() .peek(lotInfo -> { // 修改 xzqdm 字段的值 lotInfo.setXmc(DistrictCodeUtils.codeToName(lotInfo.getXzqdm())); }) .collect(Collectors.toList()); // 返回分页数据 return new PaginationData<>(records, new Pagination(resultPage)); } @Override public int delPatches(String workspaceId) { return mapper.delete(new LambdaQueryWrapper().eq(LotInfo::getWorkspaceId,workspaceId)); } @Override public int deleteOne(int id) { return mapper.deleteById(id); } @Override public PaginationData getPhoto(PatchesParam param, String dkbh) { // LotInfo lotInfo = getLotinfoToDb(dkbh); // int statue = lotInfo.getIsPush(); // // if (statue == 1) { // List allResults = markMapper.selectList( // new LambdaQueryWrapper() // .like(MediaFileMarkEntity::getFileName, "%" + dkbh + "~" + "%")); // // // 去重处理 // Map uniqueFileMap = new LinkedHashMap<>(); // List 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 pageResults = uniqueResults.subList(start, end); // // // 创建临时的 Page 对象 // Page resultPage = new Page<>(param.getPage(), param.getPageSize()); // resultPage.setRecords(pageResults); // resultPage.setTotal(total); // // // 返回分页数据 // return new PaginationData<>(pageResults, new Pagination(resultPage)); // } // else { List allResults = fileMapper.selectList( new LambdaQueryWrapper() .like(MediaFileEntity::getFileName, "%" + dkbh + "~" + "%")); // 去重处理 Map uniqueFileMap = new LinkedHashMap<>(); List 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 pageResults = uniqueResults.subList(start, end); // 创建临时的 Page 对象 Page resultPage = new Page<>(param.getPage(), param.getPageSize()); resultPage.setRecords(pageResults); resultPage.setTotal(total); // 返回分页数据 return new PaginationData<>(pageResults, new Pagination(resultPage)); } // } public List listPohto(String dkbh, String workspaceId) { return fileMapper.selectList(new LambdaQueryWrapper().like(MediaFileEntity::getFileName, "%" + dkbh + "%") .eq(MediaFileEntity::getWorkspaceId, workspaceId) .eq(MediaFileEntity::getExamine,1)); } public LotInfo getLotinfo(String dkbh, String workspaceId) { return mapper.selectOne(new LambdaQueryWrapper().eq(LotInfo::getDkbh, dkbh) .eq(LotInfo::getWorkspaceId, workspaceId)); } public void patchesPushed(String taskId, String dkbh, String workspaceId) { LambdaUpdateWrapper 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().eq(LotInfo::getDkbh, dkbh)); } public List getLotInfosByIds(List ids) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(LotInfo::getId, ids); return mapper.selectList(queryWrapper); } public List listLotinfo() { return mapper.selectList(null); } @Override public LotInfo getPatchesFromId(String patchesId){ return mapper.selectOne(new LambdaQueryWrapper().eq(LotInfo::getId,patchesId)); } @Override public void insertLotinfo(List list) { for (int i = 0; i < list.size(); i++) { mapper.insert(list.get(i)); } } }