From 1a9d4e87a2d3a20bd7ff103d41fe6f38a55e6c7d Mon Sep 17 00:00:00 2001 From: zhouwentao Date: Fri, 12 Dec 2025 11:29:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=99=A2=E6=A0=A1=E7=A1=95=E5=A3=AB?= =?UTF-8?q?=E7=A0=94=E7=A9=B6=E7=94=9F=E4=BF=A1=E6=81=AF=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../YxSchoolGraduateDegreeController.java | 74 ++++++++++++++++--- 1 file changed, 64 insertions(+), 10 deletions(-) diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolGraduateDegreeController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolGraduateDegreeController.java index 42feb8a..17c8a78 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolGraduateDegreeController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/yx/controller/YxSchoolGraduateDegreeController.java @@ -12,6 +12,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.AssertUtils; import org.jeecg.modules.yx.dto.YxSchoolDTO; import org.jeecg.modules.yx.entity.*; import org.jeecg.modules.yx.service.IYxSchoolGraduateDegreeService; @@ -174,19 +175,49 @@ public class YxSchoolGraduateDegreeController extends JeecgController schoolNameSet = list.stream().map(YxSchoolGraduateDegree::getSchoolName).collect(Collectors.toSet()); - List yxSchoolList = yxSchoolService.list(new LambdaQueryWrapper().select(YxSchool::getId).select(YxSchool::getSchoolName).in(YxSchool::getSchoolName, schoolNameSet)); + List yxSchoolList = yxSchoolService.list(new LambdaQueryWrapper().select(YxSchool::getId, YxSchool::getSchoolName).in(YxSchool::getSchoolName, schoolNameSet)); Map schoolNameIdMap = yxSchoolList.stream().collect(Collectors.toMap(YxSchool::getSchoolName, YxSchool::getId)); - List yxSchoolGraduateDegreeList = yxSchoolGraduateDegreeService.list(new LambdaQueryWrapper().in(YxSchoolGraduateDegree::getSchoolName, schoolNameSet)); - String schoolId = null; - String schoolName = null; - String year = null; - for (YxSchoolGraduateDegree yxSchoolGraduateDegree : list) { - schoolName = yxSchoolGraduateDegree.getSchoolName(); - year = yxSchoolGraduateDegree.getYear(); - schoolId = schoolNameIdMap.get(schoolId); + List existingList = yxSchoolGraduateDegreeService.list(new LambdaQueryWrapper().in(YxSchoolGraduateDegree::getSchoolName, schoolNameSet)); - yxSchoolGraduateDegree.setSchoolId(schoolId); + // 构建已有数据的唯一键Map,用于快速查找 + Map existingMap = existingList.stream().collect(Collectors.toMap( + this::buildUniqueKey, + item -> item, + (existing, replacement) -> existing + )); + + List toInsertList = new ArrayList<>(); + List toUpdateList = new ArrayList<>(); + + for (YxSchoolGraduateDegree item : list) { + index++; + // 设置schoolId + String schoolId = schoolNameIdMap.get(item.getSchoolName()); + AssertUtils.notNull(schoolId, String.format("第%s行未找到院校信息", index)); + item.setSchoolId(schoolId); + + // 根据唯一键判断是新增还是更新 + String uniqueKey = buildUniqueKey(item); + YxSchoolGraduateDegree existingItem = existingMap.get(uniqueKey); + if (existingItem != null) { + // 已存在,设置id进行更新 + item.setId(existingItem.getId()); + toUpdateList.add(item); + } else { + toInsertList.add(item); + } } + + // 批量新增 + if (!toInsertList.isEmpty()) { + yxSchoolGraduateDegreeService.saveBatch(toInsertList, 100); + } + // 批量更新 + if (!toUpdateList.isEmpty()) { + yxSchoolGraduateDegreeService.updateBatchById(toUpdateList, 100); + } + + return Result.OK("导入成功!新增" + toInsertList.size() + "条,更新" + toUpdateList.size() + "条"); }catch (Exception e){ System.out.println("索引:"+index); String msg = e.getMessage(); @@ -297,4 +328,27 @@ public class YxSchoolGraduateDegreeController extends JeecgController