/DbClass/GetSchteaList groupids
This commit is contained in:
+14
-18
@@ -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<List<Map<String, Object>>> 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<SchTeacherGroup> memberships = schTeacherGroupRepository.findBySchIdAndTransferStatus(group, 0);
|
||||
if (memberships == null || memberships.isEmpty()) return ResponseEntity.ok(Collections.emptyList());
|
||||
|
||||
Map<Integer, List<Integer>> 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<Integer> teaIds = memberships.stream().map(SchTeacherGroup::getTeaId)
|
||||
.filter(java.util.Objects::nonNull).distinct().collect(Collectors.toList());
|
||||
Map<Integer, SchTeacher> 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<Map<String, Object>> 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<String, Object> teacherRow(SchTeacher teacher, String schSerId, List<Integer> groupIds) {
|
||||
private Map<String, Object> teacherRow(SchTeacher teacher, String schSerId, Integer groupId) {
|
||||
Map<String, Object> 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user