From 5f1032a92bb0fdf8ded4633e43e2526869fdc135 Mon Sep 17 00:00:00 2001 From: wxyclub Date: Mon, 20 Nov 2023 10:32:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BA=A7=E5=93=81=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=8E=BB=E9=99=A4=E9=87=8D=E5=A4=8D=E6=96=87=E4=BB=B6=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SarBussStandFileController.java | 7 +++ .../service/ISarBussStandFileService.java | 1 + .../impl/SarBussStandFileServiceImpl.java | 60 +++++++++++++++++++ 3 files changed, 68 insertions(+) diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/controller/SarBussStandFileController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/controller/SarBussStandFileController.java index d9e266bf..b956fd27 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/controller/SarBussStandFileController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/controller/SarBussStandFileController.java @@ -91,4 +91,11 @@ public class SarBussStandFileController extends BaseController String result = sarBussStandFileEOService.batchUpdateSarBussFileRepeat(); return Result.success(result); } + + @ApiOperation(value = "企标发布稿重复问题,去重处理,产品标准下划线和斜杠问题") + @GetMapping("/batchUpdateSarBussFileRepeat2") + public ResponseMessage batchUpdateSarBussFileRepeat2() throws Exception { + String result = sarBussStandFileEOService.batchUpdateSarBussFileRepeat2(); + return Result.success(result); + } } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/ISarBussStandFileService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/ISarBussStandFileService.java index 9225ee69..aaa764a4 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/ISarBussStandFileService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/ISarBussStandFileService.java @@ -23,4 +23,5 @@ public interface ISarBussStandFileService extends IService { ResponseMessage> batchUpdateSarBussFileMQ(); String batchUpdateSarBussFileRepeat(); + String batchUpdateSarBussFileRepeat2(); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/impl/SarBussStandFileServiceImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/impl/SarBussStandFileServiceImpl.java index bc40f93a..09aa109e 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/impl/SarBussStandFileServiceImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarBussStandFile/service/impl/SarBussStandFileServiceImpl.java @@ -191,6 +191,66 @@ public class SarBussStandFileServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SarBussStandAttrInfo::getValidFlag,"0"); + wrapper.isNotNull(SarBussStandAttrInfo::getFbgbuss); + wrapper.ne(SarBussStandAttrInfo::getFbgbuss,""); + wrapper.select(SarBussStandAttrInfo::getStandId,SarBussStandAttrInfo::getFbgbuss); + List allStand = standAttrInfoService.list(wrapper); + + // 转换为Map + Map fbBussMap = new HashMap<>(); + allStand.forEach(each -> fbBussMap.put(each.getStandId(),each.getFbgbuss())); + // 循环每条数据 + for (Map.Entry entry : fbBussMap.entrySet()) { + // 把发布告文件做分割 + List attIdList = Arrays.asList(entry.getValue().split(",")); + // 根据发布稿文件查询发布告的具体信息,获取原文件名 + LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); + wrapper1.eq(SarBussStandFile::getValidFlag,"0"); + wrapper1.in(SarBussStandFile::getAttId, attIdList); + List sarBussStandFileList = sarStandFileEODao.selectList(wrapper1); + sarBussStandFileList.forEach(each -> { + String fileName = each.getFileName().replace("/", "").replace("_", ""); + each.setFileName(fileName); + }); + // 使用 HashMap 记录已经出现过的 fileName + Map fileNameMap = new HashMap<>(); + // 最终的结果列表 + List deduplicatedList = new ArrayList<>(); + // 遍历原始列表 + for (SarBussStandFile file : sarBussStandFileList) { + String fileName = file.getFileName(); + + // 如果 fileName 已经在 map 中 + if (fileNameMap.containsKey(fileName)) { + // 比较 createTime,保留更新时间较新的对象 + SarBussStandFile existingFile = fileNameMap.get(fileName); + if (file.getCreationTime().after(existingFile.getCreationTime())) { + fileNameMap.put(fileName, file); + } + } else { + // 如果 fileName 不存在,将该 fileName 加入 map,并将当前对象加入结果列表 + fileNameMap.put(fileName, file); + deduplicatedList.add(file); + } + } + // 如果长度不相等,说明执行了去重,需要修改,重新放回企标详情表中 + String fbgbuss = deduplicatedList.stream().map(SarBussStandFile::getAttId).collect(Collectors.joining(",")); + if (fbgbuss.length() != entry.getValue().length()) { + LambdaUpdateWrapper wrapper2 = new LambdaUpdateWrapper<>(); + wrapper2.eq(SarBussStandAttrInfo::getStandId,entry.getKey()); + wrapper2.set(SarBussStandAttrInfo::getFbgbuss,fbgbuss); + standAttrInfoService.update(wrapper2); + logger.info("出现重复的企标:"+ entry.getKey() + ",去重后发布稿包含:" + fbgbuss + "---去重前发布稿包含:" + entry.getValue()); + } + } + return "去重成功"; + } public static Predicate distinctByKey(Function keyExtractor) { Set seen = ConcurrentHashMap.newKeySet(); return t -> seen.add(keyExtractor.apply(t));