From 259f2ff857cbb884f9e3c1c908ffffdba20348a2 Mon Sep 17 00:00:00 2001 From: "hhb@hotmail.com" Date: Wed, 21 May 2025 14:45:21 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=B0=83=E6=95=B4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TeacherServiceImpl.java | 275 +++++++++++------- 1 file changed, 164 insertions(+), 111 deletions(-) diff --git a/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java b/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java index 42c234d..3031314 100644 --- a/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java +++ b/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java @@ -630,16 +630,104 @@ public class TeacherServiceImpl implements TeacherService { @Override public Map getTeacherGradeCount(TeacherDto teacherDto, HttpServletRequest request) { + Map result = new HashMap<>(); + List> teachersList = new ArrayList<>(); + Map gradeCount = new LinkedHashMap<>(); + + // 新增教龄统计变量 + int totalTeachingAge = 0; + int validTeachers = 0; + + // 在结果集中新增 + Map teachingAgeDistribution = new HashMap<>(); + teachingAgeDistribution.put("0-5", 0); + teachingAgeDistribution.put("6-10", 0); + teachingAgeDistribution.put("11+", 0); + + List period = schoolRepository.findPeriodById(teacherDto.getCode(), teacherDto.getPeriodId()); + if (period.isEmpty()) { + throw new ServiceException(ErrorCode.PARAMS_ERROR); + } + School.Period periodModel = period.get(0); + List gradeNames = periodModel.getGrades(); + // 初始化年级统计(按示例顺序) + //List gradeNames = Arrays.asList("一年级", "二年级", "三年级", "四年级", "五年级"); + gradeNames.forEach(grade -> gradeCount.put(grade, 0)); - Map gradeMap; - String url = env.getProperty("ies.server-url-get-teacher-grade-count"); try { - gradeMap = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url); - }catch (Exception e) { - throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "数据转换错误"); + List teachers = ptTeacherRepository.findAllTeacher( + teacherDto.getCode(), + String.format(PK.PTTEACHER, teacherDto.getCode()) + ); + teachers = teachers.stream() + .filter(teacher -> teacherDto.periodId.equals(teacher.getPeriodId())) + .collect(Collectors.toList()); + + for (PtTeacherInfo teacher : teachers) { + // 构建教师基本信息 + Map teacherInfo = new HashMap<>(); + teacherInfo.put("tmdId", teacher.getId()); + 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); + else if (teacher.getTeachingAge() <= 10) teachingAgeDistribution.put("6-10", teachingAgeDistribution.getOrDefault("6-10", 0) + 1); + else teachingAgeDistribution.put("11+", teachingAgeDistribution.getOrDefault("11+", 0) + 1); + } + + // 构建年级信息 + List> gradeList = new ArrayList<>(); + List grades = teacher.getGrade(); + List gradeNameList = teacher.getGradeName(); + + if (grades != null && gradeNameList != null) { + int size = Math.min(grades.size(), gradeNameList.size()); + for (int i = 0; i < size; i++) { + Map gradeInfo = new HashMap<>(); + String gradeValue = grades.get(i); + String gradeName = gradeNameList.get(i); + + // 转换年级值为数字类型 + try { + gradeInfo.put("grade", Integer.parseInt(gradeValue)); + } catch (NumberFormatException e) { + gradeInfo.put("grade", gradeValue); // 保留原始值 + } + gradeInfo.put("gradeName", gradeName); + gradeList.add(gradeInfo); + + // 统计年级人数 + if (gradeCount.containsKey(gradeName)) { + gradeCount.put(gradeName, gradeCount.get(gradeName) + 1); + } + } + } + teacherInfo.put("grade", gradeList); + teachersList.add(teacherInfo); + } + + // 计算平均教龄(新增逻辑) + int averageTeachingAge = validTeachers > 0 ? + Math.round((float) totalTeachingAge / validTeachers) : 0; + + result.put("teacher", teachersList); + result.put("gradeCount", gradeCount); + result.put("teachingAge", averageTeachingAge); // 新增字段 + result.put("teachingAgeDistribution", teachingAgeDistribution); + } catch (Exception e) { + throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "数据转换错误"); } - return gradeMap; + + return result; } @Override @@ -649,95 +737,22 @@ public class TeacherServiceImpl implements TeacherService { Map> gradesMap = new HashMap<>(); Map> degreesMap = new HashMap<>(); Map> subjectsMap= new HashMap<>(); - Map> groupsMap = new HashMap<>(); - Map teachers; - //获取全学校教师名单详情 - String url = env.getProperty("ies.server-url-get-teacher-all"); + Map> teachingAgeMap = new HashMap<>(); + List teachers = new ArrayList<>(); + String code = String.format(PK.PTTEACHER, teacherDto.getCode()); try { - teachers = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url); - List teachersList = new ArrayList<>(); - for (Map.Entry entry : teachers.entrySet()) { - // 假设 entry.getValue() 返回的是 List> - List> mapList = (List>) entry.getValue(); - for (Map map : mapList) { - // 将 Map 转换为 GpTeacherVo 对象 - GpTeacherVo teacher = convertToGpTeacherVo(map,teacherDto.getCode()); - teachersList.add(teacher); - } - } - List phones = new ArrayList<>(); - // 进一步处理 teachersList - for (GpTeacherVo teacher : teachersList) { - phones.add(teacher.getPhone()); - } - GpTeacherDto gpTeacherDto = new GpTeacherDto(); - gpTeacherDto.setMobiles(phones); - Map tBase = getTeacherBase(gpTeacherDto, request); - List gpTeachers = new ArrayList<>(); - for (Map.Entry entry : tBase.entrySet()) { - if (entry.getKey().equals("teachers")) { - List> dataList = (List>) entry.getValue(); - for (Map dataMap : dataList) { - GpTeacher gpTeacher = convertToGpTeacher(dataMap); - gpTeachers.add(gpTeacher); - } - } - } - //把对应年级的信息进行映射 - List gradeList = new ArrayList<>(); - Map gradeInfo = getTeacherGradeCount(teacherDto, request); - for (Map.Entry entry : gradeInfo.entrySet()) { - if (entry.getKey().equals("teacher")) { - List> dataList = (List>) entry.getValue(); - for (Map dataMap : dataList) { - TeacherGradeVo teacherGradeVo = convertToTeacherGradeVo(dataMap); - gradeList.add(teacherGradeVo); - } - } - } - for (GpTeacherVo teacher : teachersList) { - for(GpTeacher gpTeacher : gpTeachers) { - if(StringUtils.isNotEmpty(teacher.phone) && teacher.phone.equalsIgnoreCase(gpTeacher.mobile)) { - if(gpTeacher.basic.gender != null) { - teacher.setGender(gpTeacher.basic.gender); - }else { - teacher.setGender(""); - } - if(gpTeacher.degree != null) { - teacher.setDegree(gpTeacher.degree); - }else { - teacher.setDegree(""); - } - break; - } - } - for (TeacherGradeVo grade : gradeList) { - if(StringUtils.isNotEmpty(teacher.getId()) && teacher.getId().equals(grade.getId())) { - if(StringUtils.isNotEmpty(grade.getPeriodId())) { - teacher.setPeriodId(grade.getPeriodId()); - } - List grades = grade.getGrade(); - for (TeacherGradeVo.IdAndName gg : grades) { - String id = String.valueOf(teacherDto.year - gg.getGrade()); - if (teacher.grade == null) { - teacher.setGrade(new ArrayList<>()); - } - teacher.grade.add(id); - - } - } - } - } + //获取教师平台教师列表 + List ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherDto.getCode(),code); - teachersList = teachersList.stream() + ptTeacherInfos = ptTeacherInfos.stream() .filter(teacher -> teacherDto.periodId.equals(teacher.getPeriodId())) .collect(Collectors.toList()); Map gradeCount = new HashMap<>(); Map degreeCount = new HashMap<>(); Map subjectCount = new HashMap<>(); - Map GroupCount = new HashMap<>(); + Map teachingAgeCount = new HashMap<>(); if(StringUtils.isNotEmpty(teacherDto.getGrade()) && StringUtils.isNotEmpty(teacherDto.getSubjectId())) { - for (GpTeacherVo teacher : teachersList) { + for (PtTeacherInfo teacher : ptTeacherInfos) { if(teacher.getGrade() != null &&teacher.getSubjectIds() != null &&teacher.getGrade().contains(teacherDto.getGrade()) && teacher.getSubjectIds().contains(teacherDto.getSubjectId())) { { Long count = gradeCount.getOrDefault(teacherDto.getGrade(), 0L); @@ -758,6 +773,20 @@ public class TeacherServiceImpl implements TeacherService { Long count = subjectCount.getOrDefault(name, 0L); subjectCount.put(name, count + 1); } + //获取教龄分类信息 + if (teacher.getTeachingAge() != null) { + int age = teacher.getTeachingAge(); + String teachingAge = ""; + if (age >= 0 && age <= 5) { + teachingAge = "0-5"; + } else if (age > 5 && age <= 10) { + teachingAge = "5-10"; + } else if (age > 10 && age <= 15) { + teachingAge = "10-15"; + } + Long count = teachingAgeCount.getOrDefault(teachingAge, 0L); + teachingAgeCount.put(teachingAge, count + 1); + } /*if(teacher.getGroups() != null) { for (GpTeacherVo.IdNameCode group : teacher.getGroups()) { Long count = GroupCount.getOrDefault(group.getName(), 0L); @@ -767,7 +796,7 @@ public class TeacherServiceImpl implements TeacherService { } } }else if(StringUtils.isEmpty(teacherDto.getGrade()) && StringUtils.isNotEmpty(teacherDto.getSubjectId())) { - for (GpTeacherVo teacher : teachersList) { + for (PtTeacherInfo teacher : ptTeacherInfos) { if(teacher.getSubjectIds() != null && teacher.getSubjectIds().contains(teacherDto.getSubjectId())) { if(teacher.getGrade() != null) { for (String grade : teacher.getGrade()) { @@ -790,17 +819,25 @@ public class TeacherServiceImpl implements TeacherService { Long count = subjectCount.getOrDefault(name, 0L); subjectCount.put(name, count + 1); } - /*if(teacher.getGroups() != null) { - for (GpTeacherVo.IdNameCode group : teacher.getGroups()) { - Long count = GroupCount.getOrDefault(group.getName(), 0L); - GroupCount.put(group.getName(), count + 1); + //获取教龄分类信息 + if (teacher.getTeachingAge() != null) { + int age = teacher.getTeachingAge(); + String teachingAge = ""; + if (age >= 0 && age <= 5) { + teachingAge = "0-5"; + } else if (age > 5 && age <= 10) { + teachingAge = "5-10"; + } else if (age > 10 && age <= 15) { + teachingAge = "10-15"; } - }*/ + Long count = teachingAgeCount.getOrDefault(teachingAge, 0L); + teachingAgeCount.put(teachingAge, count + 1); + } } } }else if(StringUtils.isNotEmpty(teacherDto.getGrade()) && StringUtils.isEmpty(teacherDto.getSubjectId())) { - for (GpTeacherVo teacher : teachersList) { + for (PtTeacherInfo teacher : ptTeacherInfos) { if(teacher.getGrade() != null && teacher.getGrade().contains(teacherDto.getGrade())) { { Long count = gradeCount.getOrDefault(teacherDto.getGrade(), 0L); @@ -823,17 +860,25 @@ public class TeacherServiceImpl implements TeacherService { subjectCount.put(name, count + 1); } } - /* if(teacher.getGroups() != null) { - for (GpTeacherVo.IdNameCode group : teacher.getGroups()) { - Long count = GroupCount.getOrDefault(group.getName(), 0L); - GroupCount.put(group.getName(), count + 1); + //获取教龄分类信息 + if (teacher.getTeachingAge() != null) { + int age = teacher.getTeachingAge(); + String teachingAge = ""; + if (age >= 0 && age <= 5) { + teachingAge = "0-5"; + } else if (age > 5 && age <= 10) { + teachingAge = "5-10"; + } else if (age > 10 && age <= 15) { + teachingAge = "10-15"; } - }*/ + Long count = teachingAgeCount.getOrDefault(teachingAge, 0L); + teachingAgeCount.put(teachingAge, count + 1); + } } } }else { - for (GpTeacherVo teacher : teachersList) { + for (PtTeacherInfo teacher : ptTeacherInfos) { if(teacher.getGrade() != null) { for (String grade : teacher.getGrade()) { Long count = gradeCount.getOrDefault(grade, 0L); @@ -857,12 +902,20 @@ public class TeacherServiceImpl implements TeacherService { subjectCount.put(name, count + 1); } } - /* if(teacher.getGroups() != null) { - for (GpTeacherVo.IdNameCode group : teacher.getGroups()) { - Long count = GroupCount.getOrDefault(group.getName(), 0L); - GroupCount.put(group.getName(), count + 1); - } - }*/ + //获取教龄分类信息 + if (teacher.getTeachingAge() != null) { + int age = teacher.getTeachingAge(); + String teachingAge = ""; + if (age >= 0 && age <= 5) { + teachingAge = "0-5"; + } else if (age > 5 && age <= 10) { + teachingAge = "5-10"; + } else if (age > 10 && age <= 15) { + teachingAge = "10-15"; + } + Long count = teachingAgeCount.getOrDefault(teachingAge, 0L); + teachingAgeCount.put(teachingAge, count + 1); + } } } @@ -870,11 +923,11 @@ public class TeacherServiceImpl implements TeacherService { gradesMap.put("grade", gradeCount); degreesMap.put("degree", degreeCount); subjectsMap.put("subject", subjectCount); - groupsMap.put("group", GroupCount); + teachingAgeMap.put("group", teachingAgeCount); distributionList.add(gradesMap); distributionList.add(degreesMap); distributionList.add(subjectsMap); - distributionList.add(groupsMap); + distributionList.add(teachingAgeMap); /* Map genderCount = gpTeachers.stream() .collect(Collectors.groupingBy(gpTeacher -> gpTeacher.getBasic().getGender(), Collectors.counting())); @@ -1228,8 +1281,8 @@ public class TeacherServiceImpl implements TeacherService { } if (!StringUtils.isNotEmpty(teacherDto.getTmdId()) && !StringUtils.isNotEmpty(teacherDto.getGrade())) { Map detailMap = getTeacherDetail(teacherDto, request); - List teachersList = new ArrayList<>(); - teachersList = (List) detailMap.get("info"); + //获取detailMap中的info 并计算其长度 + List teachersList = (List) detailMap.get("info"); TData = Math.round((TData / teachersList.size()) * 100.0) / 100.0; TGreen = Math.round((TGreen / teachersList.size()) * 100.0) / 100.0; Lessons = Math.round((Lessons / teachersList.size()) * 100.0) / 100.0; @@ -1239,7 +1292,7 @@ public class TeacherServiceImpl implements TeacherService { ObserveLessons = Math.round((ObserveLessons / teachersList.size()) * 100.0) / 100.0; PublicCount = Math.round((PublicCount / teachersList.size()) * 100.0) / 100.0; List ids = teachersList.stream() - .map(GpTeacherVo::getId) + .map(PtTeacherInfo::getId) .collect(Collectors.toList()); gpTeacherDto.setOwnerIds(ids); gpTeacherDto.setIds(ids);