|
@@ -5,15 +5,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
|
import com.qmth.distributed.print.business.bean.dto.report.*;
|
|
import com.qmth.distributed.print.business.bean.dto.report.*;
|
|
import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
|
|
import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.studentRequirement.*;
|
|
import com.qmth.distributed.print.business.bean.result.report.studentRequirement.*;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
|
|
import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
|
|
-import com.qmth.distributed.print.business.service.ObeCourseTargetService;
|
|
|
|
-import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
|
|
|
|
-import com.qmth.distributed.print.business.service.TRBasicInfoService;
|
|
|
|
-import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
|
|
|
|
+import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -49,6 +47,8 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
private ObeCourseTargetService obeCourseTargetService;
|
|
private ObeCourseTargetService obeCourseTargetService;
|
|
@Resource
|
|
@Resource
|
|
private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
|
|
private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ObeCourseRequirementReportService obeCourseRequirementReportService;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 获取考生详细报告
|
|
* 获取考生详细报告
|
|
@@ -214,17 +214,10 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public StudentRequirement getRequirementsStudentReport(Long cultureProgramId, String studentCode, Long semesterId) {
|
|
public StudentRequirement getRequirementsStudentReport(Long cultureProgramId, String studentCode, Long semesterId) {
|
|
- List<CourseTargetRequirement> courseTargetRequirementList = new ArrayList<>();
|
|
|
|
- List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = obeCultureProgramRequirementService.listRequirement(cultureProgramId);
|
|
|
|
- for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
|
|
|
|
- for (ObeCultureProgramRequirement cultureProgramRequirement : obeCultureProgramRequirement.getSubRequirementList()) {
|
|
|
|
- courseTargetRequirementList.add(new CourseTargetRequirement(cultureProgramRequirement.getId(), obeCultureProgramRequirement.getId(), obeCultureProgramRequirement.getName()));
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
List<StudentCourseInfoDto> studentCourseInfoDtoList = this.baseMapper.listStudentCourseByCultureProgramIdAndStudentCodeAndSemesterId(cultureProgramId, studentCode, semesterId);
|
|
List<StudentCourseInfoDto> studentCourseInfoDtoList = this.baseMapper.listStudentCourseByCultureProgramIdAndStudentCodeAndSemesterId(cultureProgramId, studentCode, semesterId);
|
|
for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
- studentCourseInfoDto.setCourseTargetRequirementList(courseTargetRequirementList);
|
|
|
|
|
|
+ studentCourseInfoDto.setCourseTargetRequirementList(getRequirementsStudentReport(cultureProgramId));
|
|
String resultDetail = studentCourseInfoDto.getResultDetail();
|
|
String resultDetail = studentCourseInfoDto.getResultDetail();
|
|
if (!StringUtils.isEmpty(resultDetail)) {
|
|
if (!StringUtils.isEmpty(resultDetail)) {
|
|
List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSON.parseArray(resultDetail, ReportExamStudentTargetDto.class);
|
|
List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSON.parseArray(resultDetail, ReportExamStudentTargetDto.class);
|
|
@@ -263,22 +256,47 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.toList()));
|
|
courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.toList()));
|
|
}
|
|
}
|
|
- Map<String, List<CourseTargetRequirement>> stringDoubleMap = courseTargetRequirementListAll.stream().collect(Collectors.groupingBy(CourseTargetRequirement::getRequirementName));
|
|
|
|
|
|
+
|
|
|
|
+ Map<String, BigDecimal> requirementDegreeMap = new HashMap<>();
|
|
|
|
+ ObeCourseRequirementReport obeCourseRequirementReport = obeCourseRequirementReportService.findByCultureProgramId(cultureProgramId);
|
|
|
|
+ if (obeCourseRequirementReport != null) {
|
|
|
|
+ ObeCourseRequirementDto obeCourseRequirementDto = JSON.parseObject(obeCourseRequirementReport.getRequirementDetail(), ObeCourseRequirementDto.class);
|
|
|
|
+ requirementDegreeMap = obeCourseRequirementDto.getObeRequirements().stream().collect(Collectors.toMap(ObeRequirementDto::getName, ObeRequirementDto::getMatrixDegree));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Map<String, List<CourseTargetRequirement>> stringDoubleMap = courseTargetRequirementListAll.stream().collect(Collectors.groupingBy(m -> m.getRequirementSortNum() + "##" + m.getRequirementName()));
|
|
List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
|
|
List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
|
|
for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
|
|
for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
|
|
- Map<Long, Double> doubleMap = entry.getValue().stream().collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.summingDouble(CourseTargetRequirement::getCourseTargetDegree)));
|
|
|
|
|
|
+ String[] keys = entry.getKey().split("##");
|
|
|
|
+ Map<Long, Double> doubleMap = entry.getValue().stream().collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.averagingDouble(CourseTargetRequirement::getCourseTargetDegree)));
|
|
StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
|
|
StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
|
|
- studentTotalRequirement.setRequirementName(entry.getKey());
|
|
|
|
|
|
+ studentTotalRequirement.setRequirementName(keys[1]);
|
|
|
|
+ studentTotalRequirement.setRequirementSortNum(Integer.valueOf(keys[0]));
|
|
studentTotalRequirement.setStudentDegree(doubleMap.values().stream().min(Double::compare).get());
|
|
studentTotalRequirement.setStudentDegree(doubleMap.values().stream().min(Double::compare).get());
|
|
|
|
+ if (requirementDegreeMap.containsKey(keys[1])) {
|
|
|
|
+ studentTotalRequirement.setProfessionalDegree(requirementDegreeMap.get(keys[1]).doubleValue());
|
|
|
|
+ }
|
|
studentTotalRequirementList.add(studentTotalRequirement);
|
|
studentTotalRequirementList.add(studentTotalRequirement);
|
|
}
|
|
}
|
|
|
|
+ studentTotalRequirementList.sort(Comparator.comparing(StudentTotalRequirement::getRequirementSortNum));
|
|
studentRequirement.setStudentTotalRequirementList(studentTotalRequirementList);
|
|
studentRequirement.setStudentTotalRequirementList(studentTotalRequirementList);
|
|
return studentRequirement;
|
|
return studentRequirement;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private List<CourseTargetRequirement> getRequirementsStudentReport(Long cultureProgramId) {
|
|
|
|
+ List<CourseTargetRequirement> courseTargetRequirementList = new ArrayList<>();
|
|
|
|
+ List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = obeCultureProgramRequirementService.listRequirement(cultureProgramId);
|
|
|
|
+ for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
|
|
|
|
+ for (ObeCultureProgramRequirement cultureProgramRequirement : obeCultureProgramRequirement.getSubRequirementList()) {
|
|
|
|
+ courseTargetRequirementList.add(new CourseTargetRequirement(cultureProgramRequirement.getId(), obeCultureProgramRequirement.getId(), obeCultureProgramRequirement.getName(), obeCultureProgramRequirement.getSortNum()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return courseTargetRequirementList;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public IPage<StudentRequirementInfoDto> getRequirementsStudentPage(Long cultureProgramId, String studentCodeOrName, Integer pageNumber, Integer pageSize) {
|
|
public IPage<StudentRequirementInfoDto> getRequirementsStudentPage(Long cultureProgramId, String studentCodeOrName, Integer pageNumber, Integer pageSize) {
|
|
- return this.baseMapper.requirementStudentPage(new Page<StudentRequirementInfoDto>(pageNumber, pageSize), cultureProgramId, studentCodeOrName);
|
|
|
|
|
|
+ return this.baseMapper.requirementStudentPage(new Page<>(pageNumber, pageSize), cultureProgramId, studentCodeOrName);
|
|
}
|
|
}
|
|
|
|
|
|
// /**
|
|
// /**
|