caozixuan преди 1 година
родител
ревизия
9243d8f97e

+ 10 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/CourseWeightService.java

@@ -29,6 +29,16 @@ public interface CourseWeightService extends IService<CourseWeight> {
      */
     CourseWeightResult findCourseWeight(Long examId, String courseCode, Long userId);
 
+    /**
+     * 查询课程权重(report)
+     *
+     * @param examId     考试id
+     * @param courseCode 课程编号
+     * @param userId     教师id
+     * @return 课程权重信息
+     */
+    CourseWeightResult findCourseWeightReport(Long examId, String courseCode, Long userId);
+
     /**
      * 保存课程权重
      *

+ 88 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseWeightServiceImpl.java

@@ -143,6 +143,94 @@ public class CourseWeightServiceImpl extends ServiceImpl<CourseWeightMapper, Cou
         return result;
     }
 
+    @Override
+    public CourseWeightResult findCourseWeightReport(Long examId, String courseCode, Long userId) {
+        TeachCourse teachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, userId);
+        BigDecimal defaultRate = teachCourse.getDefaultRate();
+        BigDecimal customRate = teachCourse.getCustomRate();
+
+        Long teachCourseId = teachCourse.getId();
+
+        // 现有目标
+        List<CourseTargetResult> courseTargetList = courseTargetService.findCourseTargetList(examId, courseCode, userId);
+        // 现有评价方式
+        List<CourseEvaluationResult> courseEvaluationResultList = courseEvaluationService.findCourseEvaluationList(
+                examId, courseCode, userId).stream().sorted((o1, o2) -> {
+            if (o1.getType().getIndex() == o2.getType().getIndex()) {
+                return o1.getEvaluationId() < o2.getEvaluationId() ? -1 : 0;
+            } else {
+                return o2.getType().getIndex() - o1.getType().getIndex();
+            }
+        }).collect(Collectors.toList());
+        // 现有权重
+        List<CourseWeight> courseWeightList = this.list(
+                new QueryWrapper<CourseWeight>().lambda().eq(CourseWeight::getTeachCourseId, teachCourseId));
+        // 权重map
+        Map<String, CourseWeight> courseWeightMap = courseWeightList.stream()
+                .collect(Collectors.toMap(k -> k.getTargetId() + SystemConstant.HYPHEN + k.getEvaluationId(), v -> v));
+
+        List<CourseWeightDto> submitForm = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(courseTargetList)) {
+            for (CourseTargetResult courseTarget : courseTargetList) {
+                Long targetId = courseTarget.getId();
+                String targetName = courseTarget.getTargetName();
+                List<CourseDimensionDto> dimensionList = courseTarget.getDimensionList();
+                String degreeRequirement = courseTarget.getDegreeRequirement();
+                BigDecimal totalWeight = courseTarget.getTotalWeight();
+                BigDecimal totalScore = new BigDecimal(0);
+
+                List<CourseWeightDetailDto> courseWeightDetailDtoList = new ArrayList<>();
+                for (CourseEvaluationResult courseEvaluationResult : courseEvaluationResultList) {
+                    Long evaluationId = courseEvaluationResult.getEvaluationId();
+                    String evaluationName = courseEvaluationResult.getEvaluation();
+                    String key = targetId + SystemConstant.HYPHEN + evaluationId;
+                    Boolean enable;
+                    BigDecimal weight = BigDecimal.ZERO;
+                    BigDecimal targetScore = BigDecimal.ZERO;
+                    if (courseWeightMap.containsKey(key)) {
+                        // 权重表中包含该目标评价的设置 - 获取权重表的数据
+                        CourseWeight courseWeight = courseWeightMap.get(key);
+                        enable = courseWeight.getEnable();
+                        weight = courseWeight.getWeight();
+                        targetScore = courseWeight.getTargetScore();
+                    } else if (CourseEvaluationTypeEnum.DEFAULT.equals(courseEvaluationResult.getType())) {
+                        enable = true;
+                        weight = new BigDecimal(100);
+                    } else {
+                        continue;
+                    }
+                    CourseWeightDetailDto detail = new CourseWeightDetailDto();
+                    detail.setEvaluationId(evaluationId);
+                    detail.setEvaluationName(evaluationName);
+                    detail.setEvaluationDesc(courseEvaluationResult.getEvaluationDesc());
+                    detail.setEnable(enable);
+                    detail.setWeight(weight);
+                    detail.setTargetScore(targetScore);
+                    if (enable) {
+                        totalScore = totalScore.add(targetScore);
+                    }
+                    courseWeightDetailDtoList.add(detail);
+                }
+                CourseWeightDto courseWeightDto = new CourseWeightDto();
+                courseWeightDto.setCourseTargetId(targetId);
+                courseWeightDto.setCourseTargetName(targetName);
+                courseWeightDto.setDimensionList(dimensionList);
+                courseWeightDto.analyzeDimensionStr();
+                courseWeightDto.setDegreeRequirement(degreeRequirement);
+                courseWeightDto.setTotalWeight(totalWeight);
+                courseWeightDto.setTotalScore(totalScore);
+                courseWeightDto.setEvaluationList(courseWeightDetailDtoList);
+                courseWeightDto.analyzeDimensionStr();
+                submitForm.add(courseWeightDto);
+            }
+        }
+        CourseWeightResult result = new CourseWeightResult();
+        result.setDefaultRate(defaultRate);
+        result.setCustomRate(customRate);
+        result.setSubmitForm(submitForm);
+        return result;
+    }
+
     @Transactional
     @Override
     public void saveCourseWeight(CourseWeightParam courseWeightParam, SysUser requestUser) {