|
@@ -172,7 +172,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
Map<String, PaperStructDimensionResult> paperStructResultMap = null;//试卷蓝图map
|
|
Map<String, PaperStructDimensionResult> paperStructResultMap = null;//试卷蓝图map
|
|
Map<Long, CourseTargetWordDto> targetWordMap = null;//word目标集合
|
|
Map<Long, CourseTargetWordDto> targetWordMap = null;//word目标集合
|
|
Map<Long, CourseTargetWebDto> targetWebMap = null;//web目标集合
|
|
Map<Long, CourseTargetWebDto> targetWebMap = null;//web目标集合
|
|
- Map<String, ReportEvaluationDto> usualScoreMap = null;//平时作业集合
|
|
|
|
|
|
+ Map<String, List<ReportEvaluationDto>> usualScoreMap = null;//平时作业集合
|
|
Long weightSettingSign = null, dimensionSign = null;//权重变化id,知识点变化id
|
|
Long weightSettingSign = null, dimensionSign = null;//权重变化id,知识点变化id
|
|
if (!CollectionUtils.isEmpty(finalScoreResultList)) {
|
|
if (!CollectionUtils.isEmpty(finalScoreResultList)) {
|
|
targetWordMap = new LinkedHashMap<>();
|
|
targetWordMap = new LinkedHashMap<>();
|
|
@@ -210,7 +210,13 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
usualScoreTargetSumScore = usualScoreTargetSumScore.add(reportEvaluationDto.getTargetScore());
|
|
usualScoreTargetSumScore = usualScoreTargetSumScore.add(reportEvaluationDto.getTargetScore());
|
|
usualScoreDetailList.add(reportEvaluationDto);
|
|
usualScoreDetailList.add(reportEvaluationDto);
|
|
reportEvaluationDtoList.add(reportEvaluationDto);
|
|
reportEvaluationDtoList.add(reportEvaluationDto);
|
|
- usualScoreMap.put(courseWeightDetailDto.getEvaluationName(), reportEvaluationDto);
|
|
|
|
|
|
+ if (!usualScoreMap.containsKey(courseWeightDetailDto.getEvaluationName())) {
|
|
|
|
+ usualScoreMap.put(courseWeightDetailDto.getEvaluationName(), new ArrayList<>(Arrays.asList(reportEvaluationDto)));
|
|
|
|
+ } else {
|
|
|
|
+ List<ReportEvaluationDto> reportEvaluationDtos = usualScoreMap.get(courseWeightDetailDto.getEvaluationName());
|
|
|
|
+ reportEvaluationDtos.add(reportEvaluationDto);
|
|
|
|
+ usualScoreMap.put(courseWeightDetailDto.getEvaluationName(), reportEvaluationDtos);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
usualScoreWordDto.setUsualScoreTargetSumScore(usualScoreTargetSumScore);
|
|
usualScoreWordDto.setUsualScoreTargetSumScore(usualScoreTargetSumScore);
|
|
@@ -1371,7 +1377,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
protected ReportExamStudentUsualScoreDto calculateUsualScoreByExamStudent(FinalScoreResult finalScoreResult,
|
|
protected ReportExamStudentUsualScoreDto calculateUsualScoreByExamStudent(FinalScoreResult finalScoreResult,
|
|
- Map<String, ReportEvaluationDto> usualScoreMap,
|
|
|
|
|
|
+ Map<String, List<ReportEvaluationDto>> usualScoreMap,
|
|
Map<Long, CourseTargetWordDto> targetWordMap) {
|
|
Map<Long, CourseTargetWordDto> targetWordMap) {
|
|
List<TCUsualScoreDto> tcUsualScoreDtoList = GsonUtil.fromJson(finalScoreResult.getUsualScore(), new TypeToken<List<TCUsualScoreDto>>() {
|
|
List<TCUsualScoreDto> tcUsualScoreDtoList = GsonUtil.fromJson(finalScoreResult.getUsualScore(), new TypeToken<List<TCUsualScoreDto>>() {
|
|
}.getType());
|
|
}.getType());
|
|
@@ -1379,16 +1385,32 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreListMap);
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreListMap);
|
|
for (TCUsualScoreDto t : tcUsualScoreDtoList) {
|
|
for (TCUsualScoreDto t : tcUsualScoreDtoList) {
|
|
if (usualScoreMap.containsKey(t.getName())) {
|
|
if (usualScoreMap.containsKey(t.getName())) {
|
|
- ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(t.getName());
|
|
|
|
- List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
- //计算平时作业转换
|
|
|
|
- BigDecimal score = Objects.nonNull(t.getScore()) ? new BigDecimal(t.getScore()) : new BigDecimal(0);
|
|
|
|
- CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
- UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
|
|
- //卷面分/目标卷面总分*权重
|
|
|
|
- BigDecimal matrixScore = score.divide(reportEvaluationDto.getTargetScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
|
|
|
|
- scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
|
|
|
|
|
|
+ List<ReportEvaluationDto> reportEvaluationDtoList = usualScoreMap.get(t.getName());
|
|
|
|
+ if (!CollectionUtils.isEmpty(reportEvaluationDtoList)) {
|
|
|
|
+ if (reportEvaluationDtoList.size() == 1) {
|
|
|
|
+ ReportEvaluationDto reportEvaluationDto = reportEvaluationDtoList.get(0);
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
+ //计算平时作业转换
|
|
|
|
+ BigDecimal score = Objects.nonNull(t.getScore()) ? new BigDecimal(t.getScore()) : new BigDecimal(0);
|
|
|
|
+ CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
+ UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
|
|
+ //卷面分/目标卷面总分*权重
|
|
|
|
+ BigDecimal matrixScore = score.divide(reportEvaluationDto.getTargetScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
|
|
|
|
+ scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
|
|
|
|
+ } else {
|
|
|
|
+ BigDecimal score = Objects.nonNull(t.getScore()) ? new BigDecimal(t.getScore()) : new BigDecimal(0);
|
|
|
|
+ Double targetWeightSum = reportEvaluationDtoList.stream().mapToDouble(s -> s.getTargetWeight().doubleValue()).sum();
|
|
|
|
+ for (ReportEvaluationDto reportEvaluationDto : reportEvaluationDtoList) {
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
+ CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
+ UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
|
|
+ BigDecimal matrixScore = score.multiply(reportEvaluationDto.getTargetWeight()).divide(new BigDecimal(targetWeightSum), 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
|
|
|
|
+ scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
scoreListMap.forEach((k, v) -> {
|
|
scoreListMap.forEach((k, v) -> {
|