From 5aa13e8d2516ad9ac9c6a1a5bead21f2a1a05692 Mon Sep 17 00:00:00 2001 From: wanghu Date: Mon, 31 Aug 2026 12:11:11 +0800 Subject: [PATCH] /DbClass/GetSchteaList groupids --- .../controller/oapi/oa/DbClassController.java | 32 ++++++++----------- 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/yunhai/bschclassmanage/controller/oapi/oa/DbClassController.java b/src/main/java/com/yunhai/bschclassmanage/controller/oapi/oa/DbClassController.java index c5c5e2e..d4f82b5 100644 --- a/src/main/java/com/yunhai/bschclassmanage/controller/oapi/oa/DbClassController.java +++ b/src/main/java/com/yunhai/bschclassmanage/controller/oapi/oa/DbClassController.java @@ -23,13 +23,12 @@ import org.springframework.web.bind.annotation.RestController; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; -import java.util.ArrayList; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; /** Compatibility endpoints used by BestSchool.IBaseClass.BLL.DbClass consumers. */ -@Tag(name = "DbClass", description = "基础班级数据接口") +@Tag(name = "DbClass", description = "School class data APIs") @RestController @RequestMapping(Config.OAPI + "/DbClass/") @CrossOrigin(originPatterns = {"*"}, allowCredentials = "true") @@ -40,35 +39,32 @@ public class DbClassController { @Autowired private SchInfoRepository schInfoRepository; @GetMapping("GetSchteaList") - @Operation(summary = "获取学校教师列表", description = "根据学校 ID 查询学校下的全部教师信息;教师属于多个组时,每个组返回一条记录") + @Operation(summary = "Get school teachers", description = "Returns one row for each active teacher-group membership. A teacher in multiple groups is returned multiple times.") public ResponseEntity>> getSchteaList( - @Parameter(description = "学校 ID", required = true, example = "3") + @Parameter(description = "School ID", required = true, example = "3") @RequestParam("Group") Integer group) { if (group == null || group <= 0) return ResponseEntity.badRequest().build(); SchInfoVO school = schInfoService.GetSchFirst(group); - String schSerId = school == null ? schInfoRepository.findBySchId(group).map(SchInfo::getSchSerId).orElse(null) : school.getSchSerId(); + String schSerId = school == null + ? schInfoRepository.findBySchId(group).map(SchInfo::getSchSerId).orElse(null) + : school.getSchSerId(); List memberships = schTeacherGroupRepository.findBySchIdAndTransferStatus(group, 0); if (memberships == null || memberships.isEmpty()) return ResponseEntity.ok(Collections.emptyList()); - Map> teacherGroupIds = memberships.stream() - .filter(m -> m.getTeaId() != null && m.getGroupId() != null) - .collect(Collectors.groupingBy(SchTeacherGroup::getTeaId, LinkedHashMap::new, - Collectors.mapping(SchTeacherGroup::getGroupId, Collectors.toList()))); + List teaIds = memberships.stream().map(SchTeacherGroup::getTeaId) + .filter(java.util.Objects::nonNull).distinct().collect(Collectors.toList()); + Map teachers = schTeacherRepository.findByTeaIdIn(teaIds).stream() + .collect(Collectors.toMap(SchTeacher::getTeaId, t -> t, (a, b) -> a, LinkedHashMap::new)); - // Keep one output row per school-group membership, including duplicate teachers. List> result = memberships.stream() - .map(SchTeacherGroup::getTeaId) - .filter(java.util.Objects::nonNull) - .map(schTeacherRepository::findByTeaId) - .filter(Optional::isPresent) - .map(Optional::get) - .map(teacher -> teacherRow(teacher, schSerId, teacherGroupIds.getOrDefault(teacher.getTeaId(), Collections.emptyList()))) + .filter(membership -> teachers.get(membership.getTeaId()) != null) + .map(membership -> teacherRow(teachers.get(membership.getTeaId()), schSerId,membership.getGroupId())) .collect(Collectors.toList()); return ResponseEntity.ok(result); } - private Map teacherRow(SchTeacher teacher, String schSerId, List groupIds) { + private Map teacherRow(SchTeacher teacher, String schSerId, Integer groupId) { Map row = new LinkedHashMap<>(); row.put("SchSerID", schSerId); row.put("TeaTel", teacher.getTel()); @@ -76,7 +72,7 @@ public class DbClassController { row.put("UserTeaSerID", teacher.getTeaId()); row.put("TeaIDCard", teacher.getIdCard()); row.put("TeaNo", teacher.getSort()); - row.put("GroupIds", groupIds); + row.put("GroupID", groupId); return row; } }