From 2314a1adac242c2f5a2b2a49d2c52573ce21e2ab Mon Sep 17 00:00:00 2001 From: wanghu Date: Tue, 25 Aug 2026 16:33:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/classes/SchClassImportService.java | 4 +--- .../service/impl/com/SendUserBaseService.java | 7 ++++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/yunhai/bschclassmanage/service/impl/classes/SchClassImportService.java b/src/main/java/com/yunhai/bschclassmanage/service/impl/classes/SchClassImportService.java index d0f3d32..b707851 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/impl/classes/SchClassImportService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/impl/classes/SchClassImportService.java @@ -300,9 +300,7 @@ public class SchClassImportService { Integer stuParentId = stuGroup.getId(); Map> schGradeGroupMap = comSchTreeService.getSchGroupTypeList(schId, NodeType.GRADE.getId()); - if (schGradeGroupMap.isEmpty()) { - throw new DException("该学制下没有学级,请先同步年级组数据!"); - } + // 构建「年级组ID -> (班级组名 -> 班级组ID)」映射,使同名班级按年级区分,避免跨年级误复用平台组 Map> gradeClassGroupMap = buildGradeClassGroupMap(schId); diff --git a/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java b/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java index 8dfc7d9..5a076e3 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/impl/com/SendUserBaseService.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Comparator; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -236,7 +237,11 @@ public class SendUserBaseService implements ISendUserBaseService { if (groupIds == null) { return; } - for (Integer groupId : groupIds) { + // 从大到小排序后删除:子节点(班级组)的 groupId 通常大于父节点(年级组/学段组), + // 先删子节点再删父节点,避免平台树因父节点先删而报"存在子节点"等约束异常 + List sortedIds = new ArrayList<>(groupIds); + sortedIds.sort(Comparator.reverseOrder()); + for (Integer groupId : sortedIds) { try { deleteGroup(groupId, schId); } catch (Exception ignore) {