| | |
| | | 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.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | |
| | | private GetPatchesMapper mapper; |
| | | @Autowired |
| | | private IFileMapper fileMapper; |
| | | @Autowired |
| | | private IMarkMapper markMapper; |
| | | |
| | | /** |
| | | * 分页获取数据的接口实现。 |
| | |
| | | */ |
| | | @Override |
| | | public PaginationData<LotInfo> limitGet(PatchesParam param) { |
| | | if (param.getIsPlan() != null) { |
| | | Page<LotInfo> page = mapper.selectPage(new Page<LotInfo>(param.getPage(), param.getPageSize()), |
| | | new LambdaQueryWrapper<LotInfo>() |
| | | .eq(LotInfo::getWorkspaceId, param.getWorkspaceId()) |
| | | .like(LotInfo::getDkbh, param.getDkbh()) |
| | | .like(LotInfo::getXzqdm, param.getXzqdm()) |
| | | .eq(LotInfo::getIsPlan, param.getIsPlan())); |
| | | List<LotInfo> records = page.getRecords() |
| | | .stream() |
| | | .collect(Collectors.toList()); |
| | | return new PaginationData<LotInfo>(records, new Pagination(page)); |
| | | } else { |
| | | Page<LotInfo> page = mapper.selectPage(new Page<LotInfo>(param.getPage(), param.getPageSize()), |
| | | new LambdaQueryWrapper<LotInfo>() |
| | | .eq(LotInfo::getWorkspaceId, param.getWorkspaceId()) |
| | | .like(LotInfo::getDkbh, param.getDkbh()) |
| | | .like(LotInfo::getXzqdm, param.getXzqdm())); |
| | | List<LotInfo> records = page.getRecords() |
| | | .stream() |
| | | .collect(Collectors.toList()); |
| | | return new PaginationData<LotInfo>(records, new Pagination(page)); |
| | | // 创建分页对象 |
| | | 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.getIsPush() != null) { |
| | | queryWrapper.eq(LotInfo::getIsPush, param.getIsPush()); |
| | | } |
| | | |
| | | @Override |
| | | public void delPatches() { |
| | | mapper.delete(null); |
| | | } |
| | | // 执行分页查询 |
| | | Page<LotInfo> resultPage = mapper.selectPage(page, queryWrapper); |
| | | |
| | | /** |
| | | * 根据条件获取照片的分页数据 |
| | | * |
| | | * @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() |
| | | // 处理查询结果 |
| | | List<LotInfo> records = resultPage.getRecords() |
| | | .stream() |
| | | .peek(lotInfo -> { |
| | | // 修改 xzqdm 字段的值 |
| | | lotInfo.setXmc(DistrictCodeUtils.codeToName(lotInfo.getXzqdm())); |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | return new PaginationData<MediaFileEntity>(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)); |
| | | } |
| | | |
| | | /** |
| | | * 根据条件获取照片的分页数据 |
| | | * |
| | | * @param workspaceId 工作空间的ID,用于指定查询的工作空间 |
| | | * @param dkbh 查询条件中带有地块编号关键字,用于文件名的模糊搜索 |
| | | * @return 返回照片的分页数据,包括分页信息和照片实体列表 |
| | | */ |
| | | @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<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 + "~" + "%")); |
| | | |
| | | // 去重处理 |
| | | 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 List<MediaFileEntity> listPohto(String dkbh) { |
| | | return fileMapper.selectList(new LambdaQueryWrapper<MediaFileEntity>().like(MediaFileEntity::getFileName, "%" + dkbh + "%") |
| | | .eq(MediaFileEntity::getExamine,1)); |
| | | } |
| | | public LotInfo getLotinfo(String dkbh, String workspaceId) { |
| | | return mapper.selectOne(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getDkbh, dkbh) |
| | | .eq(LotInfo::getWorkspaceId, workspaceId)); |
| | | } |
| | | |
| | | public LotInfo getLotinfo(String dkbh) { |
| | | return mapper.selectOne(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getDkbh, dkbh)); |
| | | } |
| | | 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 void patchesPushed(String taskId, String dkbh) { |
| | | LambdaUpdateWrapper<LotInfo> updateWrapper = new LambdaUpdateWrapper<>(); |
| | | updateWrapper.set(LotInfo::getIsPush, 1) |
| | | .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> listLotinfo() { |
| | | return mapper.selectList(null); |
| | | 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(String workspaceId) { |
| | | return mapper.selectList(new LambdaQueryWrapper<LotInfo>().eq(LotInfo::getWorkspaceId,workspaceId)); |
| | | } |
| | | @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++) { |
| | | mapper.insert(list.get(i)); |
| | | } |
| | | } |
| | | public List<LotInfo> getLotInfosByIDs(String idsStr) { |
| | | List<String> idList = Arrays.asList(idsStr.split(",")); |
| | | return mapper.selectBatchIds(idList); |
| | | } |
| | | } |