From 511c4319ca81b9a427650e99d262823357d6e4b7 Mon Sep 17 00:00:00 2001 From: wanghu Date: Thu, 27 Aug 2026 17:13:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teacher/SchTeacherRelationService.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java b/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java index 237c6ac..8f56bcf 100644 --- a/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java +++ b/src/main/java/com/yunhai/bschclassmanage/service/impl/teacher/SchTeacherRelationService.java @@ -107,14 +107,27 @@ public class SchTeacherRelationService { schId, TransferStatus.OUT.getId() ); - if (updated != idList.size()) { + // 预期更新的行数 = 这些教师在本校的组关联行数(一个教师可能关联多个组) + long expectedUpdated = groups.stream() + .filter(g -> schId.equals(g.getSchId()) && teacherTeaIds.contains(g.getTeaId())) + .count(); + if (updated != expectedUpdated) { throw new DException("转出失败"); } - for (SchTeacher tea: teachers) - { - Integer groupId=tea.getGroupList().stream().map(s->s.getGroupId()).findFirst().get(); - sendUserBaseService.setUserGroupState(tea.getTeaId(),groupId,schId); + // 平台同步:将教师在其当前学校(schId)的组状态置为转出 + // 注意:不能使用 tea.getGroupList()(findAllById 不会填充该字段,可能为 null) + for (SchTeacher tea : teachers) { + Integer groupId = groupMap.getOrDefault(tea.getTeaId(), Collections.emptyList()).stream() + .filter(g -> schId.equals(g.getSchId())) + .map(SchTeacherGroup::getGroupId) + .findFirst() + .orElse(null); + if (groupId != null) { + sendUserBaseService.setUserGroupState(tea.getTeaId(), groupId, schId); + } else { + log.warn("教师 teaId={} 在当前学校无组关联,跳过平台转出同步", tea.getTeaId()); + } } // 5. 异步日志