update 完成研修数据结算

develop
hhb@hotmail.com 2 weeks ago
parent ccce75df4f
commit 9b4a5a668a

@ -1010,7 +1010,7 @@ public class TeacherServiceImpl implements TeacherService {
// 获取原始数据集合
Map<String, Object> resMap = getTeachingAndResearch(teacherDto, request);
Map<String, Object> detailMap = getTeacherDetail(teacherDto, request);
GpTeacherDto gpTeacherDto = new GpTeacherDto();
List<String> 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<GpTeacherVo> teachersList = new ArrayList<>();
teachersList = (List<GpTeacherVo>) detailMap.get("info");
// 遍历并提取八项数据
for (Map.Entry<String, Object> 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<String, Object> detailMap = getTeacherDetail(teacherDto, request);
List<GpTeacherVo> teachersList = new ArrayList<>();
teachersList = (List<GpTeacherVo>) 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<String, Object> gradeMap = getTeacherGradeCount(teacherDto,request);
Map<String, Object> gradeList = (Map<String, Object>) gradeMap.get("gradeCount");
int count = (int) gradeList.get(teacherDto.getGradeName());
List<Map<String, Object>> teachers = (List<Map<String, Object>>) gradeMap.get("teacher");
List<String> tmdIds = new ArrayList<>();
for (Map<String, Object> teacher : teachers) {
// 获取grade列表
Object gradeObj = teacher.get("grade");
if (!(gradeObj instanceof List)) {
continue;
}
List<Map<String, Object>> grades = (List<Map<String, Object>>) 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<String, Object> honor = getTeacherHonors(gpTeacherDto, request);
List<HonorInfo> 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<String, Object> training = getTeacherTraining(gpTeacherDto, request);
List<Map<String, Object>> trainings = (List<Map<String, Object>>) training.get("studyScores");
if (trainings != null) {
// 计算总分数
for (Map<String, Object> 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<String, Object> getTeacherTraining(GpTeacherDto gpTeacherDto, HttpServletRequest request) {
Map<String, Object> 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<String, Integer> getStringIntegerMap(List<School.Subject> subjects, List<SchoolTeacher> schoolTeachers) {
Map<String, String> subjectNameMap = new HashMap<>();

@ -11,4 +11,5 @@ public class GpTeacherDto {
private String itemClient = "7D340153-3B66-4BAF-8F1E-2EE02F7E1828";
private List<String> mobiles;
private List<String> ownerIds;
private List<String> ids;
}

Loading…
Cancel
Save