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 e2bed48..79c267f 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 @@ -1331,7 +1331,8 @@ public class TeacherServiceImpl implements TeacherService { gpTeacherDto.setOwnerIds(ownerIds); gpTeacherDto.setIds(ownerIds); gpTeacherDto.setSchoolId(teacherDto.getCode()); - + gpTeacherDto.setStartTime(teacherDto.getStartTime()); + gpTeacherDto.setEndTime(teacherDto.getEndTime()); // 遍历并提取八项数据 for (Map.Entry entry : resMap.entrySet()) { @@ -1447,6 +1448,44 @@ public class TeacherServiceImpl implements TeacherService { gpTeacherDto.setOwnerIds(tmdIds); gpTeacherDto.setIds(tmdIds); }*/ + gpTeacherDto.setOwnerId(teacherDto.getCode()); + Map statics = getTeacherStatis(gpTeacherDto, request); + //科研总次数 + int totalResearcherCount = 0; + double staticScores = 0; + List> researcherCounts = (List>) statics.get("researcherCounts"); + if (researcherCounts != null) { + for (Map map : researcherCounts) { + for (String id : gpTeacherDto.getOwnerIds()) { + if (map.get("id").equals(id)) { + totalResearcherCount += (int) map.get("count"); + } + } + } + } + double averageCount = totalResearcherCount > 0 ? (double) totalResearcherCount / gpTeacherDto.getOwnerIds().size() : 0; + if (averageCount <= 0) { + staticScores = 60; + } else if (averageCount <= 3) { + // 分段插值:0→60, 1→80, 2→90, 3→100 + int lower = (int) Math.floor(averageCount); + int upper = (int) Math.ceil(averageCount); + double ratio = averageCount - lower; + + // 定义各区间的基础分和增幅 + int[] baseScores = {60, 80, 90, 100}; + double score; + if (lower >= 3) { + score = 100; + } else { + score = baseScores[lower] + (baseScores[upper] - baseScores[lower]) * ratio; + } + staticScores = score; + } else { + staticScores = 100; // ≥3次满分 + } + //保留2位小数 + staticScores = Math.round(staticScores * 100) / 100.0; Map honor = getTeacherHonors(gpTeacherDto, request); @@ -1544,7 +1583,7 @@ public class TeacherServiceImpl implements TeacherService { result.put("researchScore", totalTeachingScore); result.put("honorScore", honorScore); result.put("trainingScore", TrainingScore); - result.put("scientificScore", 60); + result.put("scientificScore", staticScores); } catch (Exception ex) { @@ -2085,10 +2124,37 @@ public class TeacherServiceImpl implements TeacherService { gpTeacherDto.setOwnerIds(teacherIds); gpTeacherDto.setIds(teacherIds); gpTeacherDto.setSchoolId(teacherDto.getCode()); + gpTeacherDto.setStartTime(teacherDto.getStartTime()); + gpTeacherDto.setEndTime(teacherDto.getEndTime()); + gpTeacherDto.setOwnerId(teacherDto.getCode()); //获取所有老师对应的荣誉数量 Map honorScore = getHonorScore(gpTeacherDto, request, teacherIds); //处理研修数据 Map trainingScore = extracted(request, gpTeacherDto, teacherIds); + //处理科研数据 + Map staticScore = new HashMap<>(); + Map statics = getTeacherStatis(gpTeacherDto, request); + Map researcherCount = new HashMap<>(); + //科研总次数 + List> researcherCounts = (List>) statics.get("researcherCounts"); + if (researcherCounts != null) { + for (Map map : researcherCounts) { + for (String id : gpTeacherDto.getOwnerIds()) { + if (id.equals(map.get("id"))) { + researcherCount.put(id, (Integer) map.get("count")); + } + + } + } + } + for (String id : teacherIds) { + // 根据科研次数计算得分 + int[] scoreMap = {60, 80, 90, 100}; // 索引对应次数0、1、2、≥3 + int personalCount = researcherCount.getOrDefault(id, 0); + int index = Math.min(personalCount, 3); // 限制最大索引为3 + double staticScores = scoreMap[index]; + staticScore.put(id, staticScores); + } if (!ptTeacherInfos.isEmpty()) { for (PtTeacherInfo ptTeacherInfo : ptTeacherInfos) { @@ -2103,7 +2169,7 @@ public class TeacherServiceImpl implements TeacherService { ptTeacher.put("researchScore", researchScore.get(ptTeacherInfo.getId())); ptTeacher.put("honorScore", honorScore.get(ptTeacherInfo.getId())); ptTeacher.put("trainingScore", trainingScore.get(ptTeacherInfo.getId())); - ptTeacher.put("scientificScore", 60); + ptTeacher.put("scientificScore", staticScore.get(ptTeacherInfo.getId())); // ptTeacher.put("teachingScore", ptTeacherInfo.getTeachingScore()); // ptTeacher.put("researchScore", ptTeacherInfo.getResearchScore()); // ptTeacher.put("honorScore", ptTeacherInfo.getHonorScore()); @@ -2568,6 +2634,20 @@ public class TeacherServiceImpl implements TeacherService { } return gradeMap; } + + public Map getTeacherStatis(GpTeacherDto gpTeacherDto, HttpServletRequest request) { + + Map statisMap; + try { + String url = "open_statis/pt_winteach"; + gpTeacherDto.setGrant_type("home"); + statisMap = GroupUtil.getTeacherInfo(gpTeacherDto,new GroupUtil(env), request, url); + }catch (Exception e) { + throw new ServiceException(ErrorCode.SYSTEM_ERROR.getCode(), "国培数据转换错误"); + + } + return statisMap; + } public Map getTeacherTraining(GpTeacherDto gpTeacherDto, HttpServletRequest request) { Map gradeMap; 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 d596468..54e9dce 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 @@ -14,4 +14,7 @@ public class GpTeacherDto { private List ids; private String schoolId; private List gradeIds; + private String ownerId; + private Long startTime; + private Long endTime; }