update 处理学段条件下的统计

develop
hhb@hotmail.com 2 weeks ago
parent e09d57310b
commit f1d453b93f

@ -116,6 +116,7 @@ public class TeacherServiceImpl implements TeacherService {
public List<Map<String, Integer>> getTeacherList(TeacherDto teacherDto) {
List<Map<String, Integer>> result = new ArrayList<>();
Map<String, Integer> teacherCountMap = new HashMap<>();
Map<String, Integer> gradeCount = new LinkedHashMap<>();
//Map<String, Integer> groupCountMap = new HashMap<>();
String code = String.format(PK.PTTEACHER, teacherDto.getCode());
//List<GroupList> groupLists = getCachedGroupLists(code);
@ -139,6 +140,17 @@ public class TeacherServiceImpl implements TeacherService {
}
// 收集所有学段的年级名称(去重并保持顺序)
Set<String> allGradeNames = new LinkedHashSet<>();
for (School.Period p : periods) {
List<String> grades = p.getGrades();
if (grades != null) {
allGradeNames.addAll(grades);
}
}
// 初始化年级统计
allGradeNames.forEach(grade -> gradeCount.put(grade, 0));
Map<String, Integer> updatedSubjectCountMap = getStringIntegerMap(subjects, ptTeacherInfos);
// 创建一个映射,用于存储每个职位的教师数量
@ -152,6 +164,21 @@ public class TeacherServiceImpl implements TeacherService {
// 更新每个职位的教师数量
jobCountMap.put(job, jobCountMap.getOrDefault(job, 0) + 1);
}
// 构建年级信息
List<String> grades = teacher.getGrade();
List<String> gradeNameList = teacher.getGradeName();
if (grades != null && gradeNameList != null) {
int size = Math.min(grades.size(), gradeNameList.size());
for (int i = 0; i < size; i++) {
// 统计年级人数
String gradeName = gradeNameList.get(i);
if (gradeCount.containsKey(gradeName)) {
gradeCount.put(gradeName, gradeCount.get(gradeName) + 1);
}
}
}
}
jobCountMap.entrySet().removeIf(entry -> entry.getKey().isEmpty());
Map<String, Integer> periodCountMap = getPeriodCountMap(periods,ptTeacherInfos);
@ -164,6 +191,7 @@ public class TeacherServiceImpl implements TeacherService {
result.add(jobCountMap);
result.add(periodCountMap);
result.add(teacherCountMap);
result.add(gradeCount);
//result.add(groupCountMap);
return result;
}
@ -650,27 +678,26 @@ public class TeacherServiceImpl implements TeacherService {
teachingAgeDistribution.put("6-10", 0);
teachingAgeDistribution.put("11+", 0);
List<School.Period> periods = schoolRepository.findPeriodById(teacherDto.getCode());
if (periods.isEmpty()) {
List<School.Period> period = schoolRepository.findPeriodById(teacherDto.getCode(), teacherDto.getPeriodId());
if (period.isEmpty()) {
throw new ServiceException(ErrorCode.PARAMS_ERROR);
}
// 收集所有学段的年级名称(去重并保持顺序)
Set<String> allGradeNames = new LinkedHashSet<>();
for (School.Period p : periods) {
List<String> grades = p.getGrades();
if (grades != null) {
allGradeNames.addAll(grades);
}
}
// 初始化年级统计
allGradeNames.forEach(grade -> gradeCount.put(grade, 0));
School.Period periodModel = period.get(0);
List<String> gradeNames = periodModel.getGrades();
// 初始化年级统计(按示例顺序)
//List<String> gradeNames = Arrays.asList("一年级", "二年级", "三年级", "四年级", "五年级");
gradeNames.forEach(grade -> gradeCount.put(grade, 0));
try {
List<PtTeacherInfo> teachers = ptTeacherRepository.findAdminTeacher(
List<PtTeacherInfo> teachers = ptTeacherRepository.findAllTeacher(
teacherDto.getCode(),
String.format(PK.PTTEACHER, teacherDto.getCode())
String.format(PK.PTTEACHER, teacherDto.getCode()),
teacherDto.getPeriodId()
);
teachers = teachers.stream()
.filter(teacher -> teacherDto.periodId.equals(teacher.getPeriodId()))
.collect(Collectors.toList());
for (PtTeacherInfo teacher : teachers) {
// 构建教师基本信息
Map<String, Object> teacherInfo = new HashMap<>();
@ -678,6 +705,12 @@ public class TeacherServiceImpl implements TeacherService {
teacherInfo.put("name", teacher.getName());
teacherInfo.put("periodId", teacher.getPeriodId());
// // 收集教龄数据(新增逻辑)
// if (teacher.getTeachingAge() != null && teacher.getTeachingAge() > 0) {
// totalTeachingAge += teacher.getTeachingAge();
// validTeachers++;
// }
// 在遍历教师时统计
if (teacher.getTeachingAge() != null) {
if (teacher.getTeachingAge() <= 5) teachingAgeDistribution.put("0-5", teachingAgeDistribution.getOrDefault("0-5", 0) + 1);
@ -2301,11 +2334,11 @@ public class TeacherServiceImpl implements TeacherService {
List<PtTeacherInfo> teachers = ptTeacherInfos.stream()
.peek(ptTeacherInfo -> {
Map<String, Object> scores = getTeacherOfCapabilityAssessment(teacherDto, request);
/*ptTeacherInfo.setTeachingScore(parseScore(scores.get("teachingScore"), 0.0));
ptTeacherInfo.setResearchScore(parseScore(scores.get("researchScore"), 0.0));
ptTeacherInfo.setHonorScore(parseScore(scores.get("honorScore"), 0.0));
ptTeacherInfo.setTrainingScore(parseScore(scores.get("trainingScore"), 0.0));
ptTeacherInfo.setScientificScore(parseScore(scores.get("scientificScore"), 0.0));*/
// ptTeacherInfo.setTeachingScore(parseScore(scores.get("teachingScore"), 0.0));
// ptTeacherInfo.setResearchScore(parseScore(scores.get("researchScore"), 0.0));
// ptTeacherInfo.setHonorScore(parseScore(scores.get("honorScore"), 0.0));
// ptTeacherInfo.setTrainingScore(parseScore(scores.get("trainingScore"), 0.0));
// ptTeacherInfo.setScientificScore(parseScore(scores.get("scientificScore"), 0.0));
})
.collect(Collectors.toList());

Loading…
Cancel
Save