|
@@ -126,9 +126,11 @@ public class TRBasicInfoController {
|
|
//课程目标考核分布-题目信息
|
|
//课程目标考核分布-题目信息
|
|
TCPaperStruct tcPaperStruct = tcPaperStructService.getOne(new QueryWrapper<TCPaperStruct>().lambda().eq(TCPaperStruct::getExamId, examId).eq(TCPaperStruct::getCourseCode, courseCode).eq(TCPaperStruct::getPaperNumber, paperNumber));
|
|
TCPaperStruct tcPaperStruct = tcPaperStructService.getOne(new QueryWrapper<TCPaperStruct>().lambda().eq(TCPaperStruct::getExamId, examId).eq(TCPaperStruct::getCourseCode, courseCode).eq(TCPaperStruct::getPaperNumber, paperNumber));
|
|
Objects.requireNonNull(tcPaperStruct, "未找到试卷蓝图信息");
|
|
Objects.requireNonNull(tcPaperStruct, "未找到试卷蓝图信息");
|
|
|
|
+
|
|
List<PaperStructResult> paperStructResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStruct(), new TypeToken<List<PaperStructResult>>() {
|
|
List<PaperStructResult> paperStructResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStruct(), new TypeToken<List<PaperStructResult>>() {
|
|
}.getType());
|
|
}.getType());
|
|
|
|
|
|
|
|
+ Map<Long, CourseTargetWeightDto> targetMap = new LinkedHashMap<>();//课程目标map
|
|
ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = new ReportCourseEvaluationSpreadDto(paperStructResultList);
|
|
ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = new ReportCourseEvaluationSpreadDto(paperStructResultList);
|
|
|
|
|
|
//课程目标考核分布-分数图
|
|
//课程目标考核分布-分数图
|
|
@@ -150,35 +152,91 @@ public class TRBasicInfoController {
|
|
trBasicInfo.setCourseEvaluationSpread(JacksonUtil.parseJson(reportCourseEvaluationSpreadDto));
|
|
trBasicInfo.setCourseEvaluationSpread(JacksonUtil.parseJson(reportCourseEvaluationSpreadDto));
|
|
|
|
|
|
//查询考生数据
|
|
//查询考生数据
|
|
- List<FinalScoreResult> finalScoreResultList = tcFinalScoreService.examStudentOverview(examId, courseCode, paperNumber);
|
|
|
|
|
|
+ List<FinalScoreResult> finalScoreResultList = tcFinalScoreService.examStudentOverview(examId, courseCode, paperNumber);//考生成绩
|
|
Map<String, List<Double>> usualScoreMap = new LinkedHashMap<>();//汇总平常成绩分数(用来算最高分,最低分,平均分)
|
|
Map<String, List<Double>> usualScoreMap = new LinkedHashMap<>();//汇总平常成绩分数(用来算最高分,最低分,平均分)
|
|
|
|
+ Map<Long, List<Double>> finalScoreTargetMap = new LinkedHashMap<>();//汇总各课程目标期末考试分数(用来算最高分,最低分,平均分)
|
|
|
|
+// Map<Long, Map<Long, List<DimensionDto>>> finalScoreDimensionMap = new LinkedHashMap<>();//汇总知识点分数(用来算最高分,最低分,平均分)
|
|
|
|
+ Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = new LinkedHashMap<>();//汇总考生课程目标-知识点
|
|
|
|
+
|
|
Map<String, UsualScoreOverviewDto> usualScoreOverviewDtoMap = new LinkedHashMap<>();//整体平常成绩分数图
|
|
Map<String, UsualScoreOverviewDto> usualScoreOverviewDtoMap = new LinkedHashMap<>();//整体平常成绩分数图
|
|
-// Map<Long, Map<String, List<Double>>> finalScoreTargetMap = new LinkedHashMap<>();//汇总目标分数(用来算最高分,最低分,平均分)
|
|
|
|
- Map<Long, List<Double>> finalScoreTargetMap = new LinkedHashMap<>();//汇总目标期末考试分数(用来算最高分,最低分,平均分)
|
|
|
|
- Map<Long, Map<String, List<Double>>> finalScoreDimensionMap = new LinkedHashMap<>();//汇总知识点分数(用来算最高分,最低分,平均分)
|
|
|
|
-// LinkedMultiValueMap<Long, UsualScoreOverviewDto> oList = new LinkedMultiValueMap<>();
|
|
|
|
|
|
+ Map<Long, FinalScoreOverviewDto> finalScoreOverviewDtoMap = new LinkedHashMap<>();//各课程目标期末考试分数图
|
|
|
|
+ Map<Long, FinalScoreDimensionOverviewDto> finalScoreDimensionOverviewDtoMap = new LinkedHashMap<>();//各课程目标期末考试知识点分数图
|
|
|
|
+ List<ReportExamStudentDto> examStudentList = null;//考生集合
|
|
|
|
+ Map<String, FinalScoreResult> finalScoreResultMap = null;//考生成绩map
|
|
|
|
+ Map<String, PaperStructResult> paperStructResultMap = null;//试卷蓝图map
|
|
if (!CollectionUtils.isEmpty(finalScoreResultList)) {
|
|
if (!CollectionUtils.isEmpty(finalScoreResultList)) {
|
|
//期末成绩明细map
|
|
//期末成绩明细map
|
|
- Map<String, PaperStructResult> paperStructResultMap = paperStructResultList.stream().collect(Collectors.toMap(k -> k.getMainNumber() + "-" + k.getSubNumber(), Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
|
|
+ paperStructResultMap = paperStructResultList.stream().collect(Collectors.toMap(k -> k.getMainNumber() + "-" + k.getSubNumber(), Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
+ finalScoreResultMap = finalScoreResultList.stream().collect(Collectors.toMap(FinalScoreResult::getStudentCode, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
|
|
- List<ReportExamStudentDto> examStudentList = new ArrayList<>(finalScoreResultList.size());
|
|
|
|
|
|
+ examStudentList = new ArrayList<>(finalScoreResultList.size());
|
|
for (FinalScoreResult finalScoreResult : finalScoreResultList) {
|
|
for (FinalScoreResult finalScoreResult : finalScoreResultList) {
|
|
|
|
+
|
|
//解析期末成绩知识点
|
|
//解析期末成绩知识点
|
|
JSONArray finalScoreDetailJsonArray = JSONArray.parseArray(finalScoreResult.getFinalScoreDetail());
|
|
JSONArray finalScoreDetailJsonArray = JSONArray.parseArray(finalScoreResult.getFinalScoreDetail());
|
|
for (int i = 0; i < finalScoreDetailJsonArray.size(); i++) {
|
|
for (int i = 0; i < finalScoreDetailJsonArray.size(); i++) {
|
|
JSONObject jsonObject = finalScoreDetailJsonArray.getJSONObject(i);
|
|
JSONObject jsonObject = finalScoreDetailJsonArray.getJSONObject(i);
|
|
|
|
+ Double score = Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d;
|
|
PaperStructResult paperStructResult = paperStructResultMap.get(jsonObject.get("name").toString());
|
|
PaperStructResult paperStructResult = paperStructResultMap.get(jsonObject.get("name").toString());
|
|
if (Objects.nonNull(paperStructResult)) {
|
|
if (Objects.nonNull(paperStructResult)) {
|
|
List<CourseTargetDto> courseTargetDtoList = paperStructResult.getTargetList();
|
|
List<CourseTargetDto> courseTargetDtoList = paperStructResult.getTargetList();
|
|
|
|
+
|
|
for (CourseTargetDto courseTargetDto : courseTargetDtoList) {
|
|
for (CourseTargetDto courseTargetDto : courseTargetDtoList) {
|
|
|
|
+ targetMap.put(courseTargetDto.getTargetId(), new CourseTargetWeightDto(courseTargetDto.getTargetId(), courseTargetDto.getTargetName()));
|
|
|
|
+
|
|
|
|
+ //课程目标
|
|
if (!finalScoreTargetMap.containsKey(courseTargetDto.getTargetId())) {
|
|
if (!finalScoreTargetMap.containsKey(courseTargetDto.getTargetId())) {
|
|
- finalScoreTargetMap.put(courseTargetDto.getTargetId(), new ArrayList<>(Arrays.asList(Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d)));
|
|
|
|
|
|
+ finalScoreTargetMap.put(courseTargetDto.getTargetId(), new ArrayList<>(Arrays.asList(score)));
|
|
} else {
|
|
} else {
|
|
- List<Double> list = usualScoreMap.get(courseTargetDto.getTargetId());
|
|
|
|
- list.add(Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d);
|
|
|
|
|
|
+ List<Double> list = finalScoreTargetMap.get(courseTargetDto.getTargetId());
|
|
|
|
+ list.add(score);
|
|
finalScoreTargetMap.put(courseTargetDto.getTargetId(), list);
|
|
finalScoreTargetMap.put(courseTargetDto.getTargetId(), list);
|
|
}
|
|
}
|
|
|
|
+ //知识点
|
|
List<DimensionDto> dimensionDtoList = courseTargetDto.getDimensionList();
|
|
List<DimensionDto> dimensionDtoList = courseTargetDto.getDimensionList();
|
|
|
|
+ for (DimensionDto dimensionDto : dimensionDtoList) {
|
|
|
|
+// if (!finalScoreDimensionMap.containsKey(courseTargetDto.getTargetId())) {
|
|
|
|
+// Map<Long, List<DimensionDto>> map = new LinkedHashMap<>();
|
|
|
|
+// map.put(dimensionDto.getDimensionId(), new ArrayList<>(Arrays.asList(dimensionDto)));
|
|
|
|
+// finalScoreDimensionMap.put(courseTargetDto.getTargetId(), map);
|
|
|
|
+// } else {
|
|
|
|
+// Map<Long, List<DimensionDto>> map = finalScoreDimensionMap.get(courseTargetDto.getTargetId());
|
|
|
|
+// if (!map.containsKey(dimensionDto.getDimensionId())) {
|
|
|
|
+// map.put(dimensionDto.getDimensionId(), new ArrayList<>(Arrays.asList(dimensionDto)));
|
|
|
|
+// } else {
|
|
|
|
+// List<DimensionDto> list = map.get(dimensionDto.getDimensionId());
|
|
|
|
+// list.add(dimensionDto);
|
|
|
|
+// map.put(dimensionDto.getDimensionId(), list);
|
|
|
|
+// }
|
|
|
|
+// finalScoreDimensionMap.put(courseTargetDto.getTargetId(), map);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ //考生知识点
|
|
|
|
+ if (!finalScoreExamStudentDimensionMap.containsKey(finalScoreResult.getStudentCode())) {
|
|
|
|
+ Map<Long, Map<Long, DimensionDto>> map = new LinkedHashMap<>();
|
|
|
|
+ Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
|
|
|
|
+ dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
|
|
|
|
+ map.put(courseTargetDto.getTargetId(), dimensionMap);
|
|
|
|
+ finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
|
|
|
|
+ } else {
|
|
|
|
+ Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(finalScoreResult.getStudentCode());
|
|
|
|
+ if (!map.containsKey(courseTargetDto.getTargetId())) {
|
|
|
|
+ Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
|
|
|
|
+ dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
|
|
|
|
+ map.put(courseTargetDto.getTargetId(), dimensionMap);
|
|
|
|
+ } else {
|
|
|
|
+ Map<Long, DimensionDto> dimensionMap = map.get(courseTargetDto.getTargetId());
|
|
|
|
+ if (!dimensionMap.containsKey(dimensionDto.getDimensionId())) {
|
|
|
|
+ dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
|
|
|
|
+ } else {
|
|
|
|
+ DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
|
|
|
|
+ dimensionDtoTemp.setDimensionScore(dimensionDtoTemp.getDimensionScore().doubleValue() + score.doubleValue());
|
|
|
|
+ }
|
|
|
|
+ map.put(courseTargetDto.getTargetId(), dimensionMap);
|
|
|
|
+ }
|
|
|
|
+ finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -210,24 +268,61 @@ public class TRBasicInfoController {
|
|
usualScoreOverviewDtoMap.put(k, new UsualScoreOverviewDto(k, maxScore, minScore, avgScore));
|
|
usualScoreOverviewDtoMap.put(k, new UsualScoreOverviewDto(k, maxScore, minScore, avgScore));
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ //计算各课程目标期末考试最高分,最低分,平均分
|
|
|
|
+ finalScoreTargetMap.forEach((k, v) -> {
|
|
|
|
+ Double maxScore = v.stream().mapToDouble(Double::doubleValue).max().orElse(0d);
|
|
|
|
+ Double minScore = v.stream().mapToDouble(Double::doubleValue).min().orElse(0d);
|
|
|
|
+// Double avgScore = new BigDecimal(v.stream().mapToDouble(Double::doubleValue).average().orElse(0d)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ Double avgScore = new BigDecimal(v.stream().mapToDouble(Double::doubleValue).sum()).divide(new BigDecimal(finalScoreResultList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ finalScoreOverviewDtoMap.put(k, new FinalScoreOverviewDto(k, maxScore, minScore, avgScore));
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ //计算各课程目标下期末考试知识点最高分,最低分,平均分
|
|
|
|
+// finalScoreDimensionMap.forEach((k, v) -> {
|
|
|
|
+// v.forEach((k1, v1) -> {
|
|
|
|
+// Double maxScore = v1.stream().mapToDouble(DimensionDto::getDimensionScore).max().orElse(0d);
|
|
|
|
+// Double minScore = v1.stream().mapToDouble(DimensionDto::getDimensionScore).min().orElse(0d);
|
|
|
|
+// Double avgScore = new BigDecimal(v1.stream().mapToDouble(DimensionDto::getDimensionScore).average().orElse(0d)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+// finalScoreDimensionOverviewDtoMap.put(k, new FinalScoreDimensionOverviewDto(k1, maxScore, minScore, avgScore));
|
|
|
|
+// });
|
|
|
|
+// });
|
|
|
|
+
|
|
//TODO 课程考核成绩评价结果-待曹子轩补充目标/评价方式数据,有测试数据
|
|
//TODO 课程考核成绩评价结果-待曹子轩补充目标/评价方式数据,有测试数据
|
|
ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = null;
|
|
ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = null;
|
|
if (!CollectionUtils.isEmpty(paperStructResultList)) {
|
|
if (!CollectionUtils.isEmpty(paperStructResultList)) {
|
|
- Map<Long, String> targetMap = new LinkedHashMap<>();
|
|
|
|
- for (PaperStructResult paperStructResult : paperStructResultList) {
|
|
|
|
- List<CourseTargetDto> courseTargetDtoList = paperStructResult.getTargetList();
|
|
|
|
- for (CourseTargetDto courseTargetDto : courseTargetDtoList) {
|
|
|
|
- targetMap.put(courseTargetDto.getTargetId(), courseTargetDto.getTargetName());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
List<CourseTargetDto> targetList = new ArrayList<>(targetMap.size());
|
|
List<CourseTargetDto> targetList = new ArrayList<>(targetMap.size());
|
|
AtomicInteger sequenceId = new AtomicInteger(1);//流程连接id
|
|
AtomicInteger sequenceId = new AtomicInteger(1);//流程连接id
|
|
AtomicReference<Double> targetValue = new AtomicReference<>(0.0d);
|
|
AtomicReference<Double> targetValue = new AtomicReference<>(0.0d);
|
|
targetMap.forEach((k, v) -> {
|
|
targetMap.forEach((k, v) -> {
|
|
|
|
+ Double evaluationValue = 0.0d;
|
|
List<ReportEvaluationDto> reportEvaluationDtoList = new ArrayList<>();
|
|
List<ReportEvaluationDto> reportEvaluationDtoList = new ArrayList<>();
|
|
- reportEvaluationDtoList.add(new ReportEvaluationDto("平时作业" + sequenceId.get(), "30%", 40d, 25d));
|
|
|
|
- reportEvaluationDtoList.add(new ReportEvaluationDto("期末考试", "70%", 60d, 40d));
|
|
|
|
- CourseTargetDto courseTargetDto = new CourseTargetDto(k, v, Long.parseLong(String.valueOf(sequenceId.get())), "评价方式" + sequenceId.get(), "评价方式描述" + sequenceId.get(), reportEvaluationDtoList, 0.5d + sequenceId.get());
|
|
|
|
|
|
+ UsualScoreOverviewDto usualScoreOverviewDto = usualScoreOverviewDtoMap.get("作业" + sequenceId.get());
|
|
|
|
+ FinalScoreOverviewDto finalScoreOverviewDto = finalScoreOverviewDtoMap.get(k);
|
|
|
|
+
|
|
|
|
+ ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(usualScoreOverviewDto.getName(), new BigDecimal(30), 40d, usualScoreOverviewDto.getAvgScore());
|
|
|
|
+ reportEvaluationDtoList.add(reportEvaluationDto);
|
|
|
|
+
|
|
|
|
+ //课程目标-平时作业达成度计算
|
|
|
|
+ if (Objects.nonNull(reportEvaluationDto.getWeight()) && reportEvaluationDto.getWeight().doubleValue() > 0d) {
|
|
|
|
+ Double evaluationValueTemp = new BigDecimal(reportEvaluationDto.getAvg().doubleValue() + reportEvaluationDto.getScore().doubleValue()).divide(reportEvaluationDto.getWeight(), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ evaluationValue = evaluationValue.doubleValue() + evaluationValueTemp.doubleValue();
|
|
|
|
+ Map<String, BigDecimal> usualScoreWeight = v.getUsualScoreWeight();
|
|
|
|
+ usualScoreWeight = CollectionUtils.isEmpty(usualScoreWeight) ? new LinkedHashMap<>() : usualScoreWeight;
|
|
|
|
+ usualScoreWeight.put(reportEvaluationDto.getName(), reportEvaluationDto.getWeight().add(new BigDecimal(new Random().nextInt(10))));
|
|
|
|
+ v.setUsualScoreWeight(usualScoreWeight);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ReportEvaluationDto reportEvaluationDto1 = new ReportEvaluationDto("期末考试", new BigDecimal(70), 60d, finalScoreOverviewDto.getAvgScore());
|
|
|
|
+ reportEvaluationDtoList.add(reportEvaluationDto1);
|
|
|
|
+
|
|
|
|
+ //课程目标-期末成绩达成度计算
|
|
|
|
+ if (Objects.nonNull(reportEvaluationDto1.getWeight()) && reportEvaluationDto1.getWeight().doubleValue() > 0d) {
|
|
|
|
+ Double evaluationValueTemp = new BigDecimal(reportEvaluationDto1.getAvg().doubleValue() + reportEvaluationDto1.getScore().doubleValue()).divide(reportEvaluationDto1.getWeight(), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ evaluationValue = evaluationValue.doubleValue() + evaluationValueTemp.doubleValue();
|
|
|
|
+ v.setFinalScoreWeight(reportEvaluationDto1.getWeight().subtract(new BigDecimal(new Random().nextInt(10))));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ CourseTargetDto courseTargetDto = new CourseTargetDto(k, v.getTargetName(), Long.parseLong(String.valueOf(sequenceId.get())), "评价方式" + sequenceId.get(), "评价方式描述" + sequenceId.get(), reportEvaluationDtoList, evaluationValue);
|
|
targetList.add(courseTargetDto);
|
|
targetList.add(courseTargetDto);
|
|
targetValue.set(targetValue.get().doubleValue() + courseTargetDto.getEvaluationValue().doubleValue());
|
|
targetValue.set(targetValue.get().doubleValue() + courseTargetDto.getEvaluationValue().doubleValue());
|
|
sequenceId.incrementAndGet();
|
|
sequenceId.incrementAndGet();
|
|
@@ -237,12 +332,45 @@ public class TRBasicInfoController {
|
|
}
|
|
}
|
|
|
|
|
|
//课程目标达成评价明细结果-考生集合
|
|
//课程目标达成评价明细结果-考生集合
|
|
-
|
|
|
|
|
|
+ ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = null;
|
|
|
|
+ if (!CollectionUtils.isEmpty(examStudentList)) {
|
|
|
|
+ for (ReportExamStudentDto reportExamStudentDto : examStudentList) {
|
|
|
|
+ Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(reportExamStudentDto.getStudentCode());
|
|
|
|
+ FinalScoreResult finalScoreResult = finalScoreResultMap.get(reportExamStudentDto.getStudentCode());
|
|
|
|
+ JSONArray finalScoreDetailJsonArray = JSONArray.parseArray(finalScoreResult.getFinalScoreDetail());
|
|
|
|
+ //计算期末考试知识点分数
|
|
|
|
+ for (int i = 0; i < finalScoreDetailJsonArray.size(); i++) {
|
|
|
|
+ JSONObject jsonObject = finalScoreDetailJsonArray.getJSONObject(i);
|
|
|
|
+ PaperStructResult paperStructResult = paperStructResultMap.get(jsonObject.get("name").toString());
|
|
|
|
+ if (Objects.nonNull(paperStructResult)) {
|
|
|
|
+ List<CourseTargetDto> courseTargetDtoList = paperStructResult.getTargetList();
|
|
|
|
+ for (CourseTargetDto courseTargetDto : courseTargetDtoList) {
|
|
|
|
+ Map<Long, DimensionDto> dimensionDtoMap = map.get(courseTargetDto.getTargetId());
|
|
|
|
+ List<DimensionDto> dimensionDtoList = new ArrayList<>(dimensionDtoMap.values());
|
|
|
|
+ if (CollectionUtils.isEmpty(reportExamStudentDto.getTargetList())) {
|
|
|
|
+ List<ReportExamStudentTargetDto> targetList = new ArrayList<>();
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(targetMap.get(courseTargetDto.getTargetId()).getFinalScoreWeight(), dimensionDtoList);
|
|
|
|
+ targetList.add(new ReportExamStudentTargetDto(courseTargetDto.getTargetId(), courseTargetDto.getTargetName(), reportExamStudentFinalScoreDto));
|
|
|
|
+ reportExamStudentDto.setTargetList(targetList);
|
|
|
|
+ } else {
|
|
|
|
+ List<ReportExamStudentTargetDto> targetList = reportExamStudentDto.getTargetList();
|
|
|
|
+ Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap = targetList.stream().collect(Collectors.toMap(ReportExamStudentTargetDto::getTargetId, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
+ if (!reportExamStudentTargetDtoMap.containsKey(courseTargetDto.getTargetId())) {
|
|
|
|
+ targetList.add(new ReportExamStudentTargetDto(courseTargetDto.getTargetId(), courseTargetDto.getTargetName(), new ReportExamStudentFinalScoreDto(targetMap.get(courseTargetDto.getTargetId()).getFinalScoreWeight(), dimensionDtoList)));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentList);
|
|
|
|
+ trBasicInfo.setCourseEvaluationResultDetail(JacksonUtil.parseJson(reportCourseEvaluationResultDetailDto));
|
|
|
|
+ }
|
|
|
|
|
|
//课程目标达成评价明细结果-课程目标达成评价值图
|
|
//课程目标达成评价明细结果-课程目标达成评价值图
|
|
trBasicInfoService.saveOrUpdate(trBasicInfo);
|
|
trBasicInfoService.saveOrUpdate(trBasicInfo);
|
|
|
|
|
|
- trBasicInfo.setReportResult(new ReportResult(reportCommonDto, reportCourseBasicInfoDto, reportCourseEvaluationSpreadDto, reportCourseEvaluationResultDto, null));
|
|
|
|
|
|
+ trBasicInfo.setReportResult(new ReportResult(reportCommonDto, reportCourseBasicInfoDto, reportCourseEvaluationSpreadDto, reportCourseEvaluationResultDto, reportCourseEvaluationResultDetailDto));
|
|
return ResultUtil.ok(trBasicInfo.getReportResult());
|
|
return ResultUtil.ok(trBasicInfo.getReportResult());
|
|
}
|
|
}
|
|
|
|
|