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