update 调整数据统计内容

develop
hhb@hotmail.com 3 weeks ago
parent 69cc67218c
commit 259f2ff857

@ -630,16 +630,104 @@ public class TeacherServiceImpl implements TeacherService {
@Override
public Map<String, Object> getTeacherGradeCount(TeacherDto teacherDto, HttpServletRequest request) {
Map<String, Object> result = new HashMap<>();
List<Map<String, Object>> teachersList = new ArrayList<>();
Map<String, Integer> gradeCount = new LinkedHashMap<>();
// 新增教龄统计变量
int totalTeachingAge = 0;
int validTeachers = 0;
// 在结果集中新增
Map<String, Integer> teachingAgeDistribution = new HashMap<>();
teachingAgeDistribution.put("0-5", 0);
teachingAgeDistribution.put("6-10", 0);
teachingAgeDistribution.put("11+", 0);
List<School.Period> period = schoolRepository.findPeriodById(teacherDto.getCode(), teacherDto.getPeriodId());
if (period.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));
Map<String, Object> 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<PtTeacherInfo> 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<String, Object> 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<Map<String, Object>> gradeList = new ArrayList<>();
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++) {
Map<String, Object> 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<String,Map<String, Long>> gradesMap = new HashMap<>();
Map<String,Map<String, Long>> degreesMap = new HashMap<>();
Map<String,Map<String, Long>> subjectsMap= new HashMap<>();
Map<String,Map<String, Long>> groupsMap = new HashMap<>();
Map<String, Object> teachers;
//获取全学校教师名单详情
String url = env.getProperty("ies.server-url-get-teacher-all");
Map<String,Map<String, Long>> teachingAgeMap = new HashMap<>();
List<PtTeacherInfo> teachers = new ArrayList<>();
String code = String.format(PK.PTTEACHER, teacherDto.getCode());
try {
teachers = GroupUtil.getGroupId(teacherDto,new GroupUtil(env), request,url);
List<GpTeacherVo> teachersList = new ArrayList<>();
for (Map.Entry<String, Object> entry : teachers.entrySet()) {
// 假设 entry.getValue() 返回的是 List<Map<String, Object>>
List<Map<String, Object>> mapList = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> map : mapList) {
// 将 Map 转换为 GpTeacherVo 对象
GpTeacherVo teacher = convertToGpTeacherVo(map,teacherDto.getCode());
teachersList.add(teacher);
}
}
List<String> phones = new ArrayList<>();
// 进一步处理 teachersList
for (GpTeacherVo teacher : teachersList) {
phones.add(teacher.getPhone());
}
GpTeacherDto gpTeacherDto = new GpTeacherDto();
gpTeacherDto.setMobiles(phones);
Map<String, Object> tBase = getTeacherBase(gpTeacherDto, request);
List<GpTeacher> gpTeachers = new ArrayList<>();
for (Map.Entry<String, Object> entry : tBase.entrySet()) {
if (entry.getKey().equals("teachers")) {
List<Map<String, Object>> dataList = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> dataMap : dataList) {
GpTeacher gpTeacher = convertToGpTeacher(dataMap);
gpTeachers.add(gpTeacher);
}
}
}
//把对应年级的信息进行映射
List<TeacherGradeVo> gradeList = new ArrayList<>();
Map<String,Object> gradeInfo = getTeacherGradeCount(teacherDto, request);
for (Map.Entry<String, Object> entry : gradeInfo.entrySet()) {
if (entry.getKey().equals("teacher")) {
List<Map<String, Object>> dataList = (List<Map<String, Object>>) entry.getValue();
for (Map<String, Object> 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<TeacherGradeVo.IdAndName> 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<PtTeacherInfo> ptTeacherInfos = ptTeacherRepository.findAllTeacher(teacherDto.getCode(),code);
teachersList = teachersList.stream()
ptTeacherInfos = ptTeacherInfos.stream()
.filter(teacher -> teacherDto.periodId.equals(teacher.getPeriodId()))
.collect(Collectors.toList());
Map<String, Long> gradeCount = new HashMap<>();
Map<String, Long> degreeCount = new HashMap<>();
Map<String, Long> subjectCount = new HashMap<>();
Map<String, Long> GroupCount = new HashMap<>();
Map<String, Long> 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<String, Long> 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<String, Object> detailMap = getTeacherDetail(teacherDto, request);
List<GpTeacherVo> teachersList = new ArrayList<>();
teachersList = (List<GpTeacherVo>) detailMap.get("info");
//获取detailMap中的info 并计算其长度
List<PtTeacherInfo> teachersList = (List<PtTeacherInfo>) 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<String> ids = teachersList.stream()
.map(GpTeacherVo::getId)
.map(PtTeacherInfo::getId)
.collect(Collectors.toList());
gpTeacherDto.setOwnerIds(ids);
gpTeacherDto.setIds(ids);

Loading…
Cancel
Save