Browse Source

3.3.4 update

xiaofei 1 year ago
parent
commit
5b870e80e9

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/CourseRequirementMatrixDto.java

@@ -6,6 +6,7 @@ import java.util.List;
 
 public class CourseRequirementMatrixDto extends ObeCourseRequirementMatrix {
 
+    private Long courseId;
     private String courseCode;
     private String courseName;
     private int courseSortNum;
@@ -17,6 +18,14 @@ public class CourseRequirementMatrixDto extends ObeCourseRequirementMatrix {
     private Boolean canEdit;
     private List<MatrixRequirementDto> requirements;
 
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
     public String getCourseCode() {
         return courseCode;
     }

+ 24 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixRequirementDto.java

@@ -1,16 +1,32 @@
 package com.qmth.distributed.print.business.bean.dto.obe;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.entity.BasicProfessional;
+import io.swagger.models.auth.In;
 
 import java.util.List;
 
 public class MatrixRequirementDto extends BasicProfessional {
 
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
     private String name;
     private String content;
     private Double expectValue;
+    private Integer sortNum;
     private List<MatrixSubRequirementDto> subRequirements;
 
+    @Override
+    public Long getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Long id) {
+        this.id = id;
+    }
+
     @Override
     public String getName() {
         return name;
@@ -29,6 +45,14 @@ public class MatrixRequirementDto extends BasicProfessional {
         this.content = content;
     }
 
+    public Integer getSortNum() {
+        return sortNum;
+    }
+
+    public void setSortNum(Integer sortNum) {
+        this.sortNum = sortNum;
+    }
+
     public List<MatrixSubRequirementDto> getSubRequirements() {
         return subRequirements;
     }

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixSubRequirementDto.java

@@ -8,12 +8,14 @@ import java.math.BigDecimal;
 
 public class MatrixSubRequirementDto extends BasicProfessional {
 
+    // 矩阵ID
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     private String name;
     private BigDecimal scale = new BigDecimal(0);
     private String content;
 
+    // 毕业要求指标点ID
     @JsonSerialize(using = ToStringSerializer.class)
     private Long subRequirementId;
 

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/StudentCourseInfoDto.java

@@ -8,6 +8,7 @@ public class StudentCourseInfoDto {
 
     private Long cultureProgramId;
     private String semesterName;
+    private Long courseId;
     private String courseCode;
     private String courseName;
     private String resultDetail;
@@ -31,6 +32,14 @@ public class StudentCourseInfoDto {
         this.semesterName = semesterName;
     }
 
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
     public String getCourseCode() {
         return courseCode;
     }

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

@@ -3,6 +3,8 @@ package com.qmth.distributed.print.business.bean.result.report.studentRequiremen
 public class CourseTargetRequirement {
 
     private Long subRequirementId;
+    // 指标点权重
+    private Double scale;
     private Long requirementId;
     private String requirementName;
     private Integer requirementSortNum;
@@ -11,11 +13,12 @@ public class CourseTargetRequirement {
     public CourseTargetRequirement() {
     }
 
-    public CourseTargetRequirement(Long subRequirementId, Long requirementId, String requirementName, Integer requirementSortNum) {
+    public CourseTargetRequirement(Long subRequirementId, Long requirementId, String requirementName, Integer requirementSortNum, Double scale) {
         this.subRequirementId = subRequirementId;
         this.requirementId = requirementId;
         this.requirementName = requirementName;
         this.requirementSortNum = requirementSortNum;
+        this.scale = scale;
     }
 
     public Long getSubRequirementId() {
@@ -26,6 +29,14 @@ public class CourseTargetRequirement {
         this.subRequirementId = subRequirementId;
     }
 
+    public Double getScale() {
+        return scale;
+    }
+
+    public void setScale(Double scale) {
+        this.scale = scale;
+    }
+
     public Long getRequirementId() {
         return requirementId;
     }

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java

@@ -81,6 +81,7 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
                 ObeCultureProgramCourse obeCultureProgramCourse = obeCultureProgramCourseService.getById(entry.getKey());
                 BasicCourse basicCourse = basicCourseService.getById(obeCultureProgramCourse.getCourseId());
                 CourseRequirementMatrixDto matrixDto = new CourseRequirementMatrixDto();
+                matrixDto.setCourseId(basicCourse.getId());
                 matrixDto.setCourseCode(basicCourse.getCode());
                 matrixDto.setCourseName(basicCourse.getName());
                 matrixDto.setCanEdit(canEditCourse || finalCodeList.contains(basicCourse.getCode()));
@@ -93,8 +94,10 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
                 requirementMap.entrySet().stream().forEach(requirementEntry -> {
                     ObeCultureProgramRequirement tpRequirement = obeCultureProgramRequirementService.getById(requirementEntry.getKey());
                     MatrixRequirementDto matrixRequirementDto = new MatrixRequirementDto();
+                    matrixRequirementDto.setId(tpRequirement.getId());
                     matrixRequirementDto.setName(tpRequirement.getName());
                     matrixRequirementDto.setContent(tpRequirement.getContent());
+                    matrixRequirementDto.setSortNum(tpRequirement.getSortNum());
                     matrixRequirementDto.setExpectValue(tpRequirement.getExpectValue());
                     List<CourseRequirementMatrixDto> requirementList = requirementEntry.getValue();
                     // 排序,解决字符串1和10排序问题

+ 17 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -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;

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

@@ -7,6 +7,7 @@
         SELECT
             rbi.culture_program_id,
             bs.name semesterName,
+            rbi.course_id,
             rbi.course_code,
             rbi.course_name,
             res.result_detail,