|
@@ -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) {
|