update 处理学段条件下的统计

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

@ -650,26 +650,27 @@ public class TeacherServiceImpl implements TeacherService {
teachingAgeDistribution.put("6-10", 0);
teachingAgeDistribution.put("11+", 0);
List<School.Period> period = schoolRepository.findPeriodById(teacherDto.getCode(), teacherDto.getPeriodId());
if (period.isEmpty()) {
List<School.Period> periods = schoolRepository.findPeriodById(teacherDto.getCode());
if (periods.isEmpty()) {
throw new ServiceException(ErrorCode.PARAMS_ERROR);
}
School.Period periodModel = period.get(0);
List<String> gradeNames = periodModel.getGrades();
// 初始化年级统计(按示例顺序)
//List<String> gradeNames = Arrays.asList("一年级", "二年级", "三年级", "四年级", "五年级");
gradeNames.forEach(grade -> gradeCount.put(grade, 0));
// 收集所有学段的年级名称(去重并保持顺序)
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));
try {
List<PtTeacherInfo> teachers = ptTeacherRepository.findAllTeacher(
List<PtTeacherInfo> teachers = ptTeacherRepository.findAdminTeacher(
teacherDto.getCode(),
String.format(PK.PTTEACHER, teacherDto.getCode()),
teacherDto.getPeriodId()
String.format(PK.PTTEACHER, teacherDto.getCode())
);
teachers = teachers.stream()
.filter(teacher -> teacherDto.periodId.equals(teacher.getPeriodId()))
.collect(Collectors.toList());
for (PtTeacherInfo teacher : teachers) {
// 构建教师基本信息
Map<String, Object> teacherInfo = new HashMap<>();
@ -677,12 +678,6 @@ 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);
@ -2306,11 +2301,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.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.setScientificScore(parseScore(scores.get("scientificScore"), 0.0));*/
})
.collect(Collectors.toList());

@ -36,7 +36,7 @@ public class PtTeacherInfo extends BaseItem {
public String periodId ;
public List<String> identity;
public Integer age;
public Integer teachingAge;
public Integer teachingAge = 0;
//教师状态 join invite 以IES5为准
public String status;
//职称
@ -47,9 +47,4 @@ public class PtTeacherInfo extends BaseItem {
public Integer state = 1;
public Integer version = 1;
public String source;
private Double teachingScore; // 教学分数
private Double researchScore; // 教研分数
private Double honorScore; // 荣誉分数
private Double trainingScore; // 培训分数
private Double scientificScore; // 科研分数
}

@ -19,6 +19,8 @@ public interface SchoolRepository extends CosmosRepository<School, String> {
*/
@Query("select value p from School as s join p in s.period where s.id = @schoolId and s.code = 'Base' and p.id = @periodId")
List<School.Period> findPeriodById(@Param("schoolId") String schoolId, @Param("periodId") String periodId);
@Query("select value p from School as s join p in s.period where s.id = @schoolId and s.code = 'Base' ")
List<School.Period> findPeriodById(@Param("schoolId") String schoolId);
@Query("select value p.semesters from School as s join p in s.period where s.id = @schoolId and s.code = 'Base' and p.id = @periodId")
List<School.Semester> findSemestersById(@Param("schoolId") String schoolId, @Param("periodId") String periodId);
@Query("select value p.subjects from School as s join p in s.period where s.id = @schoolId and s.code = 'Base' and p.id = @periodId")

Loading…
Cancel
Save