From 9b4a5a668a28114a543a3f1de40c5f845050f5b5 Mon Sep 17 00:00:00 2001 From: "hhb@hotmail.com" Date: Fri, 18 Apr 2025 09:10:09 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=AE=8C=E6=88=90=E7=A0=94=E4=BF=AE?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=BB=93=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/TeacherServiceImpl.java | 88 +++++++++++++++++-- .../model/dto/admin/teacher/GpTeacherDto.java | 1 + 2 files changed, 84 insertions(+), 5 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 89f726f..a347eb6 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 @@ -1010,7 +1010,7 @@ public class TeacherServiceImpl implements TeacherService { // 获取原始数据集合 Map resMap = getTeachingAndResearch(teacherDto, request); - Map detailMap = getTeacherDetail(teacherDto, request); + GpTeacherDto gpTeacherDto = new GpTeacherDto(); List ownerIds = gpTeacherDto.getOwnerIds(); // 假设有一个 getOwnerIds 方法 if (ownerIds == null) { @@ -1018,9 +1018,9 @@ public class TeacherServiceImpl implements TeacherService { } ownerIds.add(teacherDto.getTmdId()); gpTeacherDto.setOwnerIds(ownerIds); + gpTeacherDto.setIds(ownerIds); + - List teachersList = new ArrayList<>(); - teachersList = (List) detailMap.get("info"); // 遍历并提取八项数据 for (Map.Entry entry : resMap.entrySet()) { String key = entry.getKey(); @@ -1038,7 +1038,10 @@ public class TeacherServiceImpl implements TeacherService { } } } - if (!StringUtils.isNotEmpty(teacherDto.getTmdId())) { + if (!StringUtils.isNotEmpty(teacherDto.getTmdId()) && !StringUtils.isNotEmpty(teacherDto.getGrade())) { + Map detailMap = getTeacherDetail(teacherDto, request); + List teachersList = new ArrayList<>(); + 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; @@ -1051,8 +1054,53 @@ public class TeacherServiceImpl implements TeacherService { .map(GpTeacherVo::getId) .collect(Collectors.toList()); gpTeacherDto.setOwnerIds(ids); + gpTeacherDto.setIds(ids); + } + if (StringUtils.isNotEmpty(teacherDto.getGradeName())) { + //调用年级相关接口数据 + Map gradeMap = getTeacherGradeCount(teacherDto,request); + Map gradeList = (Map) gradeMap.get("gradeCount"); + int count = (int) gradeList.get(teacherDto.getGradeName()); + List> teachers = (List>) gradeMap.get("teacher"); + List tmdIds = new ArrayList<>(); + + for (Map teacher : teachers) { + // 获取grade列表 + Object gradeObj = teacher.get("grade"); + if (!(gradeObj instanceof List)) { + continue; + } + List> grades = (List>) gradeObj; + + // 检查是否存在匹配的年级 + boolean isGradeMatch = grades.stream() + .anyMatch(grade -> + teacherDto.getGradeName().equals(grade.get("gradeName")) + ); + + // 如果匹配且tmdId存在,则收集 + if (isGradeMatch) { + Object tmdIdObj = teacher.get("tmdId"); + if (tmdIdObj instanceof String) { + tmdIds.add((String) tmdIdObj); + } + } + } + if(count > 0) { + TData = Math.round((TData / count) * 100.0) / 100.0; + TGreen = Math.round((TGreen / count) * 100.0) / 100.0; + Lessons = Math.round((Lessons / count) * 100.0) / 100.0; + paperCount = Math.round((paperCount / count) * 100.0) / 100.0; + LessonCount = Math.round((LessonCount / count) * 100.0) / 100.0; + DoubleGreenCount = Math.round((DoubleGreenCount / count) * 100.0) / 100.0; + MaterialCount = Math.round((MaterialCount / count) * 100.0) / 100.0; + PublicCount = Math.round((PublicCount / count) * 100.0) / 100.0; + } + gpTeacherDto.setOwnerIds(tmdIds); + gpTeacherDto.setIds(tmdIds); } + Map honor = getTeacherHonors(gpTeacherDto, request); List honors = new ArrayList<>(); Object honorsObj = honor.get("honors"); @@ -1079,6 +1127,23 @@ public class TeacherServiceImpl implements TeacherService { double score = honorInfo.getScore().doubleValue(); honorScores += score; } + //研修分数获取 + double TrainingScore = 0; + Map training = getTeacherTraining(gpTeacherDto, request); + List> trainings = (List>) training.get("studyScores"); + if (trainings != null) { + // 计算总分数 + for (Map trainingMap : trainings) { + Object scoreObj = trainingMap.get("score"); + if (scoreObj instanceof Integer) { + int score = (int) scoreObj; + TrainingScore += score; + } + } + } + if (TrainingScore > 0) { + TrainingScore = Math.round(TrainingScore / gpTeacherDto.getIds().size() * 100.0) / 100.0; + } // 基础分计算 double honorScore = (honorScores > 0) ? 100.0 - 20.0 / honorScores : 60; @@ -1115,7 +1180,7 @@ public class TeacherServiceImpl implements TeacherService { result.put("teachingScore", totalScore); result.put("researchScore", totalTeachingScore); result.put("honorScore", honorScore); - result.put("trainingScore", 0); + result.put("trainingScore", TrainingScore); result.put("scientificScore", 0); @@ -1242,6 +1307,19 @@ public class TeacherServiceImpl implements TeacherService { } return gradeMap; } + public Map getTeacherTraining(GpTeacherDto gpTeacherDto, HttpServletRequest request) { + + Map gradeMap; + try { + String url = "open_study/find"; + gpTeacherDto.setGrant_type("study_average_score"); + gradeMap = GroupUtil.getTeacherInfo(gpTeacherDto,new GroupUtil(env), request, url); + }catch (Exception e) { + throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "国培数据转换错误"); + + } + return gradeMap; + } private static @NotNull Map getStringIntegerMap(List subjects, List schoolTeachers) { Map subjectNameMap = new HashMap<>(); diff --git a/src/main/java/cn/teammodel/model/dto/admin/teacher/GpTeacherDto.java b/src/main/java/cn/teammodel/model/dto/admin/teacher/GpTeacherDto.java index 9ca1ab6..ed6b06b 100644 --- a/src/main/java/cn/teammodel/model/dto/admin/teacher/GpTeacherDto.java +++ b/src/main/java/cn/teammodel/model/dto/admin/teacher/GpTeacherDto.java @@ -11,4 +11,5 @@ public class GpTeacherDto { private String itemClient = "7D340153-3B66-4BAF-8F1E-2EE02F7E1828"; private List mobiles; private List ownerIds; + private List ids; }