xiaofei hace 1 año
padre
commit
77e750bcc0

+ 11 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/CourseTargetRequirement.java

@@ -5,15 +5,17 @@ public class CourseTargetRequirement {
     private Long subRequirementId;
     private Long requirementId;
     private String requirementName;
+    private Integer requirementSortNum;
     private Double courseTargetDegree;
 
     public CourseTargetRequirement() {
     }
 
-    public CourseTargetRequirement(Long subRequirementId, Long requirementId, String requirementName) {
+    public CourseTargetRequirement(Long subRequirementId, Long requirementId, String requirementName, Integer requirementSortNum) {
         this.subRequirementId = subRequirementId;
         this.requirementId = requirementId;
         this.requirementName = requirementName;
+        this.requirementSortNum = requirementSortNum;
     }
 
     public Long getSubRequirementId() {
@@ -40,6 +42,14 @@ public class CourseTargetRequirement {
         this.requirementName = requirementName;
     }
 
+    public Integer getRequirementSortNum() {
+        return requirementSortNum;
+    }
+
+    public void setRequirementSortNum(Integer requirementSortNum) {
+        this.requirementSortNum = requirementSortNum;
+    }
+
     public Double getCourseTargetDegree() {
         return courseTargetDegree;
     }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentTotalRequirement.java

@@ -4,6 +4,7 @@ public class StudentTotalRequirement {
 
     // 毕业要求名称
     private String requirementName;
+    private Integer requirementSortNum;
     // 学生个人达成度
     private Double studentDegree;
     // 专业达成度
@@ -18,6 +19,14 @@ public class StudentTotalRequirement {
         this.requirementName = requirementName;
     }
 
+    public Integer getRequirementSortNum() {
+        return requirementSortNum;
+    }
+
+    public void setRequirementSortNum(Integer requirementSortNum) {
+        this.requirementSortNum = requirementSortNum;
+    }
+
     public Double getStudentDegree() {
         return studentDegree;
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java

@@ -255,7 +255,7 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
 
             List<MatrixSubRequirementDto> matrixSubRequirementDtoList = requirementList.stream().map(tpMatrix -> {
                 MatrixSubRequirementDto matrixSubRequirementDto = new MatrixSubRequirementDto();
-                matrixSubRequirementDto.setId(tpMatrix.getId());
+                matrixSubRequirementDto.setId(tpMatrix.getObeSubRequirementId());
                 matrixSubRequirementDto.setName(concatRequirementName(tpMatrix.getRequirementSortNum(), tpMatrix.getSubRequirementSortNum()));
                 matrixSubRequirementDto.setScale(tpMatrix.getScale());
                 matrixSubRequirementDto.setContent(tpMatrix.getRequirementContent());

+ 34 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -5,15 +5,13 @@ 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.fasterxml.jackson.databind.annotation.JsonSerialize;
 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.*;
 import com.qmth.distributed.print.business.entity.*;
 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 org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,6 +47,8 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
     private ObeCourseTargetService obeCourseTargetService;
     @Resource
     private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
+    @Resource
+    private ObeCourseRequirementReportService obeCourseRequirementReportService;
 
     /**
      * 获取考生详细报告
@@ -214,17 +214,10 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
 
     @Override
     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);
         for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
-            studentCourseInfoDto.setCourseTargetRequirementList(courseTargetRequirementList);
+            studentCourseInfoDto.setCourseTargetRequirementList(getRequirementsStudentReport(cultureProgramId));
             String resultDetail = studentCourseInfoDto.getResultDetail();
             if (!StringUtils.isEmpty(resultDetail)) {
                 List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSON.parseArray(resultDetail, ReportExamStudentTargetDto.class);
@@ -263,22 +256,47 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
             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<>();
         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.setRequirementName(entry.getKey());
+            studentTotalRequirement.setRequirementName(keys[1]);
+            studentTotalRequirement.setRequirementSortNum(Integer.valueOf(keys[0]));
             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.sort(Comparator.comparing(StudentTotalRequirement::getRequirementSortNum));
         studentRequirement.setStudentTotalRequirementList(studentTotalRequirementList);
         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
     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);
     }
 
 //    /**

+ 1 - 0
distributed-print-business/src/main/resources/mapper/TRExamStudentMapper.xml

@@ -29,6 +29,7 @@
     <select id="requirementStudentPage"
             resultType="com.qmth.distributed.print.business.bean.dto.report.StudentRequirementInfoDto">
         SELECT DISTINCT
+            rbi.culture_program_id cultureProgramId,
             res.name studentName,
             res.student_code studentCode,
             es.college_name collegeName,