|
@@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.obe.MatrixRequirementDto;
|
|
|
+import com.qmth.distributed.print.business.bean.dto.obe.MatrixSubRequirementDto;
|
|
|
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.report.studentRequirement.*;
|
|
@@ -12,12 +15,12 @@ import com.qmth.distributed.print.business.entity.*;
|
|
|
import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
|
|
|
import com.qmth.distributed.print.business.service.*;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
-import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
@@ -48,6 +51,8 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
@Resource
|
|
|
private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
|
|
|
@Resource
|
|
|
+ private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
|
|
|
+ @Resource
|
|
|
private ObeCourseRequirementReportService obeCourseRequirementReportService;
|
|
|
|
|
|
|
|
@@ -194,10 +199,11 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
|
|
|
@Override
|
|
|
public StudentRequirement getRequirementsStudentReport(Long cultureProgramId, String studentCode, Long semesterId) {
|
|
|
+ List<CourseRequirementMatrixDto> courseRequirementMatrixDtoList = obeCourseRequirementMatrixService.getMatrix(cultureProgramId);
|
|
|
|
|
|
List<StudentCourseInfoDto> studentCourseInfoDtoList = this.baseMapper.listStudentCourseByCultureProgramIdAndStudentCodeAndSemesterId(cultureProgramId, studentCode, semesterId);
|
|
|
for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
|
|
|
- studentCourseInfoDto.setCourseTargetRequirementList(getRequirementsStudentReport(cultureProgramId));
|
|
|
+ studentCourseInfoDto.setCourseTargetRequirementList(getRequirementsStudentReport(studentCourseInfoDto.getCourseId(), courseRequirementMatrixDtoList));
|
|
|
String resultDetail = studentCourseInfoDto.getResultDetail();
|
|
|
if (!StringUtils.isEmpty(resultDetail)) {
|
|
|
List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSON.parseArray(resultDetail, ReportExamStudentTargetDto.class);
|
|
@@ -206,7 +212,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
ObeCourseTarget obeCourseTarget = obeCourseTargetService.getById(reportExamStudentTargetDto.getTargetId());
|
|
|
for (CourseTargetRequirement courseTargetRequirement : studentCourseInfoDto.getCourseTargetRequirementList()) {
|
|
|
if (courseTargetRequirement.getSubRequirementId().equals(obeCourseTarget.getObeCultureProgramRequirementId())) {
|
|
|
- courseTargetRequirement.setCourseTargetDegree(reportExamStudentTargetDto.getMatrixDegree().doubleValue());
|
|
|
+ courseTargetRequirement.setCourseTargetDegree(reportExamStudentTargetDto.getMatrixDegree() != null && courseTargetRequirement.getScale() != null ? reportExamStudentTargetDto.getMatrixDegree().multiply(new BigDecimal(courseTargetRequirement.getScale())).setScale(2, RoundingMode.HALF_UP).doubleValue() : null);
|
|
|
} else {
|
|
|
courseTargetRequirement.setCourseTargetDegree(courseTargetRequirement.getCourseTargetDegree() != null ? courseTargetRequirement.getCourseTargetDegree() : null);
|
|
|
}
|
|
@@ -262,7 +268,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
List<StudentTotalRequirement> studentTotalRequirementList = new ArrayList<>();
|
|
|
for (Map.Entry<String, List<CourseTargetRequirement>> entry : stringDoubleMap.entrySet()) {
|
|
|
String[] keys = entry.getKey().split("##");
|
|
|
- Map<Long, Double> doubleMap = entry.getValue().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.averagingDouble(CourseTargetRequirement::getCourseTargetDegree)));
|
|
|
+ Map<Long, Double> doubleMap = entry.getValue().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.groupingBy(CourseTargetRequirement::getSubRequirementId, Collectors.summingDouble(CourseTargetRequirement::getCourseTargetDegree)));
|
|
|
StudentTotalRequirement studentTotalRequirement = new StudentTotalRequirement();
|
|
|
studentTotalRequirement.setRequirementName(keys[1]);
|
|
|
studentTotalRequirement.setRequirementSortNum(Integer.valueOf(keys[0]));
|
|
@@ -280,12 +286,14 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
|
return studentRequirement;
|
|
|
}
|
|
|
|
|
|
- private List<CourseTargetRequirement> getRequirementsStudentReport(Long cultureProgramId) {
|
|
|
+ private List<CourseTargetRequirement> getRequirementsStudentReport(Long courseId, List<CourseRequirementMatrixDto> courseRequirementMatrixDtoList) {
|
|
|
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()));
|
|
|
+ List<CourseRequirementMatrixDto> requirementMatrixDtoList = courseRequirementMatrixDtoList.stream().filter(m -> m.getCourseId().equals(courseId)).collect(Collectors.toList());
|
|
|
+ for (CourseRequirementMatrixDto courseRequirementMatrixDto : requirementMatrixDtoList) {
|
|
|
+ for (MatrixRequirementDto requirement : courseRequirementMatrixDto.getRequirements()) {
|
|
|
+ for (MatrixSubRequirementDto subRequirement : requirement.getSubRequirements()) {
|
|
|
+ courseTargetRequirementList.add(new CourseTargetRequirement(subRequirement.getSubRequirementId(), requirement.getId(), requirement.getName(), requirement.getSortNum(), subRequirement.getScale().doubleValue() != 0 ? subRequirement.getScale().doubleValue() : null));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return courseTargetRequirementList;
|