Просмотр исходного кода

Merge remote-tracking branch 'origin/dev_v3.3.4' into dev_v3.3.4

wangliang 1 год назад
Родитель
Сommit
9d1aacd870

+ 13 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/studentRequirement/StudentCourseRequirementDetail.java

@@ -4,14 +4,17 @@ public class StudentCourseRequirementDetail {
 
     // 毕业要求名称
     private String requirementName;
+    // 排序
+    private Integer requirementSortNum;
     // 学生个人达成度
     private Double studentDegree;
 
     public StudentCourseRequirementDetail() {
     }
 
-    public StudentCourseRequirementDetail(String requirementName, Double studentDegree) {
-        this.requirementName = requirementName;
+    public StudentCourseRequirementDetail(String[] key, Double studentDegree) {
+        this.requirementName = key[1];
+        this.requirementSortNum = Integer.valueOf(key[0]);
         this.studentDegree = studentDegree;
     }
 
@@ -23,6 +26,14 @@ public class StudentCourseRequirementDetail {
         this.requirementName = requirementName;
     }
 
+    public Integer getRequirementSortNum() {
+        return requirementSortNum;
+    }
+
+    public void setRequirementSortNum(Integer requirementSortNum) {
+        this.requirementSortNum = requirementSortNum;
+    }
+
     public Double getStudentDegree() {
         return studentDegree;
     }

+ 19 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -208,7 +208,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                         if (courseTargetRequirement.getSubRequirementId().equals(obeCourseTarget.getObeCultureProgramRequirementId())) {
                             courseTargetRequirement.setCourseTargetDegree(reportExamStudentTargetDto.getMatrixDegree().doubleValue());
                         } else {
-                            courseTargetRequirement.setCourseTargetDegree(courseTargetRequirement.getCourseTargetDegree() != null ? courseTargetRequirement.getCourseTargetDegree() : 0.0d);
+                            courseTargetRequirement.setCourseTargetDegree(courseTargetRequirement.getCourseTargetDegree() != null ? courseTargetRequirement.getCourseTargetDegree() : null);
                         }
                     }
                 }
@@ -219,13 +219,24 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         // 各科目达成度
         List<StudentCourseRequirement> studentCourseRequirementList = new ArrayList<>();
         for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
+            System.out.println(JSON.toJSONString(studentCourseInfoDto.getCourseTargetRequirementList()));
             StudentCourseRequirement studentCourseRequirement = new StudentCourseRequirement();
             studentCourseRequirement.setCourseCode(studentCourseInfoDto.getCourseCode());
             studentCourseRequirement.setCourseName(studentCourseInfoDto.getCourseName());
             studentCourseRequirement.setSemesterName(studentCourseInfoDto.getSemesterName());
             studentCourseRequirement.setScore(studentCourseInfoDto.getScore());
-            LinkedHashMap<String, Double> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.toMap(CourseTargetRequirement::getRequirementName, CourseTargetRequirement::getCourseTargetDegree, (v1, v2) -> v1 != 0 && v2 != 0 ? v1.doubleValue() <= v2.doubleValue() ? v1 : v2 : v1 == 0 && v2 != 0 ? v2 : v1 != 0 && v2 == 0 ? v1 : null, LinkedHashMap::new));
-            List<StudentCourseRequirementDetail> requirementDetailList = map.entrySet().stream().map(entry -> new StudentCourseRequirementDetail(entry.getKey(), entry.getValue())).collect(Collectors.toList());
+            Map<String, Optional<CourseTargetRequirement>> map = studentCourseInfoDto.getCourseTargetRequirementList().stream().collect(Collectors.groupingBy(m -> m.getRequirementSortNum() + "##" + m.getRequirementName(), Collectors.minBy((o1, o2) -> {
+                if (o1.getCourseTargetDegree() != null && o2.getCourseTargetDegree() != null) {
+                    return o1.getCourseTargetDegree() - o2.getCourseTargetDegree() < 0 ? -1 : 1;
+                } else if (o1.getCourseTargetDegree() == null && o2.getCourseTargetDegree() != null) {
+                    return 1;
+                } else if (o1.getCourseTargetDegree() != null && o2.getCourseTargetDegree() == null) {
+                    return -1;
+                }
+                return 0;
+            })));
+            List<StudentCourseRequirementDetail> requirementDetailList = map.entrySet().stream().map(entry -> new StudentCourseRequirementDetail(entry.getKey().split("##"), entry.getValue().isPresent() ? entry.getValue().get().getCourseTargetDegree() : null)).collect(Collectors.toList());
+            requirementDetailList.sort(Comparator.comparingInt(StudentCourseRequirementDetail::getRequirementSortNum));
             studentCourseRequirement.setRequirementDetailList(requirementDetailList);
             studentCourseRequirementList.add(studentCourseRequirement);
         }
@@ -234,7 +245,10 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         // 汇总达成度
         List<CourseTargetRequirement> courseTargetRequirementListAll = new ArrayList<>();
         for (StudentCourseInfoDto studentCourseInfoDto : studentCourseInfoDtoList) {
-            courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().filter(m -> m.getCourseTargetDegree() != null).collect(Collectors.toList()));
+            courseTargetRequirementListAll.addAll(studentCourseInfoDto.getCourseTargetRequirementList().stream().map(m -> {
+                m.setCourseTargetDegree(m.getCourseTargetDegree() == null ? 0 : m.getCourseTargetDegree());
+                return m;
+            }).collect(Collectors.toList()));
         }
 
         Map<String, BigDecimal> requirementDegreeMap = new HashMap<>();
@@ -258,7 +272,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
             }
             studentTotalRequirementList.add(studentTotalRequirement);
         }
-        studentTotalRequirementList.sort(Comparator.comparing(StudentTotalRequirement::getRequirementSortNum));
+        studentTotalRequirementList.sort(Comparator.comparingInt(StudentTotalRequirement::getRequirementSortNum));
         studentRequirement.setStudentTotalRequirementList(studentTotalRequirementList);
         return studentRequirement;
     }