update 处理科研数据

develop
hhb@hotmail.com 2 weeks ago
parent f1d453b93f
commit 8f8df01299

@ -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<String, Object> entry : resMap.entrySet()) {
@ -1447,6 +1448,44 @@ public class TeacherServiceImpl implements TeacherService {
gpTeacherDto.setOwnerIds(tmdIds);
gpTeacherDto.setIds(tmdIds);
}*/
gpTeacherDto.setOwnerId(teacherDto.getCode());
Map<String, Object> statics = getTeacherStatis(gpTeacherDto, request);
//科研总次数
int totalResearcherCount = 0;
double staticScores = 0;
List<Map<String, Object>> researcherCounts = (List<Map<String, Object>>) statics.get("researcherCounts");
if (researcherCounts != null) {
for (Map<String, Object> 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<String, Object> 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<String,Double> honorScore = getHonorScore(gpTeacherDto, request, teacherIds);
//处理研修数据
Map<String,Double> trainingScore = extracted(request, gpTeacherDto, teacherIds);
//处理科研数据
Map<String,Double> staticScore = new HashMap<>();
Map<String, Object> statics = getTeacherStatis(gpTeacherDto, request);
Map<String,Integer> researcherCount = new HashMap<>();
//科研总次数
List<Map<String, Object>> researcherCounts = (List<Map<String, Object>>) statics.get("researcherCounts");
if (researcherCounts != null) {
for (Map<String, Object> 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<String, Object> getTeacherStatis(GpTeacherDto gpTeacherDto, HttpServletRequest request) {
Map<String, Object> 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<String, Object> getTeacherTraining(GpTeacherDto gpTeacherDto, HttpServletRequest request) {
Map<String, Object> gradeMap;

@ -14,4 +14,7 @@ public class GpTeacherDto {
private List<String> ids;
private String schoolId;
private List<String> gradeIds;
private String ownerId;
private Long startTime;
private Long endTime;
}

Loading…
Cancel
Save