|
@@ -13,6 +13,7 @@ import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
|
|
import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
|
|
import com.qmth.distributed.print.business.entity.TCPaperStruct;
|
|
import com.qmth.distributed.print.business.entity.TCPaperStruct;
|
|
import com.qmth.distributed.print.business.entity.TRBasicInfo;
|
|
import com.qmth.distributed.print.business.entity.TRBasicInfo;
|
|
|
|
+import com.qmth.distributed.print.business.entity.TRExamStudent;
|
|
import com.qmth.distributed.print.business.mapper.TRBasicInfoMapper;
|
|
import com.qmth.distributed.print.business.mapper.TRBasicInfoMapper;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.distributed.print.business.service.*;
|
|
import com.qmth.teachcloud.common.entity.BasicSemester;
|
|
import com.qmth.teachcloud.common.entity.BasicSemester;
|
|
@@ -208,56 +209,15 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
List<DimensionDto> dimensionDtoList = courseTargetDto.getDimensionList();
|
|
List<DimensionDto> dimensionDtoList = courseTargetDto.getDimensionList();
|
|
for (DimensionDto dimensionDto : dimensionDtoList) {
|
|
for (DimensionDto dimensionDto : dimensionDtoList) {
|
|
//考生知识点
|
|
//考生知识点
|
|
- 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(courseTargetDto.getTargetId(), 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(courseTargetDto.getTargetId(), 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(courseTargetDto.getTargetId(), 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);
|
|
|
|
- }
|
|
|
|
|
|
+ this.calculateFinalScoreByExamStudent(finalScoreExamStudentDimensionMap,
|
|
|
|
+ finalScoreResult, courseTargetDto, dimensionDto, score);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//解析平时作业分数图
|
|
//解析平时作业分数图
|
|
- JSONArray usualScoreJsonArray = JSONArray.parseArray(finalScoreResult.getUsualScore());
|
|
|
|
- Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreListMap = new LinkedHashMap<>();
|
|
|
|
- ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreListMap);
|
|
|
|
- for (int i = 0; i < usualScoreJsonArray.size(); i++) {
|
|
|
|
- JSONObject jsonObject = usualScoreJsonArray.getJSONObject(i);
|
|
|
|
- if (usualScoreMap.containsKey(jsonObject.get("name"))) {
|
|
|
|
- ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(jsonObject.get("name").toString());
|
|
|
|
- List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
- //计算平时作业转换
|
|
|
|
- Double score = Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d;
|
|
|
|
- CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
- UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
|
|
- Double matrixScore = new BigDecimal(score).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
- reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumWeight(), usualScoreWordDto.getUsualScoreTargetSumScore()));
|
|
|
|
- scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- scoreListMap.forEach((k, v) -> {
|
|
|
|
- Collections.sort(v);
|
|
|
|
- });
|
|
|
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = this.calculateUsualScoreByExamStudent(finalScoreResult, usualScoreMap, targetWordMap);
|
|
finalScoreResult.setUsualScoreDto(reportExamStudentUsualScoreDto);
|
|
finalScoreResult.setUsualScoreDto(reportExamStudentUsualScoreDto);
|
|
examStudentList.add(new ReportExamStudentDto(finalScoreResult));
|
|
examStudentList.add(new ReportExamStudentDto(finalScoreResult));
|
|
}
|
|
}
|
|
@@ -283,65 +243,62 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 计算课程达成度考生明细
|
|
|
|
|
|
+ * 计算课程考核成绩评价结果
|
|
*
|
|
*
|
|
- * @param paramsMap
|
|
|
|
|
|
+ * @param trBasicInfo
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public ReportCourseEvaluationResultDto reportCalculateCourseEvaluationResult(Map<String, Object> paramsMap) {
|
|
|
|
|
|
+ public ReportCourseEvaluationResultDto reportCalculateCourseEvaluationResult(TRBasicInfo trBasicInfo, Map<String, Object> paramsMap) {
|
|
ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = null;
|
|
ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = null;
|
|
- List<PaperStructResult> paperStructResultList = (List<PaperStructResult>) paramsMap.get("paperStructResultList");
|
|
|
|
- Map<Long, CourseTargetWordDto> targetMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetMap");
|
|
|
|
- Map<String, ReportEvaluationDto> usualScoreOverviewDtoMap = (Map<String, ReportEvaluationDto>) paramsMap.get("usualScoreOverviewDtoMap");
|
|
|
|
- Map<Long, FinalScoreOverviewDto> finalScoreOverviewDtoMap = (Map<Long, FinalScoreOverviewDto>) paramsMap.get("finalScoreOverviewDtoMap");
|
|
|
|
-
|
|
|
|
- //TODO 课程考核成绩评价结果-待曹子轩补充目标/评价方式数据,有测试数据
|
|
|
|
- if (!CollectionUtils.isEmpty(paperStructResultList) && !CollectionUtils.isEmpty(targetMap)) {
|
|
|
|
- List<CourseTargetWebDto> targetList = new ArrayList<>(targetMap.size());
|
|
|
|
- BigDecimal targetValue = new BigDecimal(0);
|
|
|
|
- targetMap.forEach((k, v) -> {
|
|
|
|
- Double evaluationAvg = 0.0d, evaluationScore = 0.0d;
|
|
|
|
- BigDecimal evaluationWeight = new BigDecimal(0);
|
|
|
|
- List<ReportEvaluationDto> reportEvaluationDtoList = new ArrayList<>();
|
|
|
|
- if (!CollectionUtils.isEmpty(usualScoreOverviewDtoMap)) {
|
|
|
|
- ReportEvaluationDto reportEvaluationDto = usualScoreOverviewDtoMap.get("作业" + k);
|
|
|
|
-// ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(usualScoreOverviewDto.getEvaluationId(), usualScoreOverviewDto.getEvaluation(), usualScoreOverviewDto.getEvaluationDesc(), new BigDecimal(30), new BigDecimal(40), 0.0d);
|
|
|
|
-// reportEvaluationDtoList.add(reportEvaluationDto);
|
|
|
|
-
|
|
|
|
- //课程目标-平时作业达成度计算
|
|
|
|
-// if (Objects.nonNull(reportEvaluationDto.getWeight()) && reportEvaluationDto.getWeight().doubleValue() > 0d) {
|
|
|
|
-// evaluationAvg = evaluationAvg.doubleValue() + reportEvaluationDto.getAvg();
|
|
|
|
-// evaluationScore = evaluationScore.doubleValue() + reportEvaluationDto.getScore();
|
|
|
|
-// evaluationWeight = evaluationWeight.add(reportEvaluationDto.getWeight());
|
|
|
|
-// 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);
|
|
|
|
-// }
|
|
|
|
- }
|
|
|
|
- if (!CollectionUtils.isEmpty(finalScoreOverviewDtoMap)) {
|
|
|
|
- FinalScoreOverviewDto finalScoreOverviewDto = finalScoreOverviewDtoMap.get(k);
|
|
|
|
-// ReportEvaluationDto reportEvaluationDto1 = new ReportEvaluationDto(finalScoreOverviewDto.getEvaluationId(), finalScoreOverviewDto.getEvaluation(), finalScoreOverviewDto.getEvaluationDesc(), new BigDecimal(70), new BigDecimal(60), 0.0d);
|
|
|
|
-// reportEvaluationDtoList.add(reportEvaluationDto1);
|
|
|
|
-
|
|
|
|
- //课程目标-期末成绩达成度计算
|
|
|
|
-// if (Objects.nonNull(reportEvaluationDto1.getWeight()) && reportEvaluationDto1.getWeight().doubleValue() > 0d) {
|
|
|
|
-// evaluationAvg = evaluationAvg.doubleValue() + reportEvaluationDto1.getAvg();
|
|
|
|
-// evaluationScore = evaluationScore.doubleValue() + reportEvaluationDto1.getScore();
|
|
|
|
-// evaluationWeight = evaluationWeight.add(reportEvaluationDto1.getWeight());
|
|
|
|
-// v.setFinalScoreWeight(reportEvaluationDto1.getWeight().subtract(new BigDecimal(new Random().nextInt(10))));
|
|
|
|
-// }
|
|
|
|
|
|
+ List<TRExamStudent> trExamStudentList = trExamStudentService.list(new QueryWrapper<TRExamStudent>().lambda().eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()));
|
|
|
|
+ if (!CollectionUtils.isEmpty(trExamStudentList)) {
|
|
|
|
+ BigDecimal targetEvaluationSumValue = new BigDecimal(0);
|
|
|
|
+ Map<Long, CourseTargetWebDto> targetWebMap = (Map<Long, CourseTargetWebDto>) paramsMap.get("targetWebMap");
|
|
|
|
+ Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
|
|
|
|
+ TRExamStudent targetAvg = trExamStudentList.get(trExamStudentList.size() - 2);//平均分
|
|
|
|
+ if (Objects.nonNull(targetAvg) && Objects.equals(targetAvg.getName(), "平均分") && Objects.nonNull(targetAvg.getResultDetail())) {
|
|
|
|
+ List<ReportExamStudentTargetDto> reportExamStudentTargetAvgDtoList = GsonUtil.fromJson(targetAvg.getResultDetail(), new TypeToken<List<ReportExamStudentTargetDto>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ for (ReportExamStudentTargetDto r : reportExamStudentTargetAvgDtoList) {
|
|
|
|
+ Double targetAvgSumScore = 0.0d;//平均分总和
|
|
|
|
+ BigDecimal targetSumScore = new BigDecimal(0);//目标分总和
|
|
|
|
+ if (targetWebMap.containsKey(r.getTargetId())) {
|
|
|
|
+ CourseTargetWebDto courseTargetWebDto = targetWebMap.get(r.getTargetId());
|
|
|
|
+ CourseTargetWordDto courseTargetWordDto = targetWordMap.get(r.getTargetId());
|
|
|
|
+
|
|
|
|
+ List<ReportEvaluationDto> reportEvaluationDtoList = courseTargetWebDto.getEvaluationList();
|
|
|
|
+ Map<Long, ReportEvaluationDto> reportEvaluationDtoMap = reportEvaluationDtoList.stream().collect(Collectors.toMap(ReportEvaluationDto::getEvaluationId, Function.identity(), (dto1, dto2) -> dto1));
|
|
|
|
+
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = r.getFinalScore();
|
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = r.getUsualScore();
|
|
|
|
+
|
|
|
|
+ //期末成绩换算
|
|
|
|
+ ReportEvaluationDto reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentFinalScoreDto.getEvaluationId());
|
|
|
|
+ reportEvaluationDto.setTargetAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
|
|
|
|
+ targetAvgSumScore = targetAvgSumScore + reportEvaluationDto.getTargetAvgScore();
|
|
|
|
+ targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
|
|
|
|
+
|
|
|
|
+ //平时作业换算
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
|
+ for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
|
|
|
|
+ reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentUsualScoreObjDto.getEvaluationId());
|
|
|
|
+ reportEvaluationDto.setTargetAvgScore(reportExamStudentUsualScoreObjDto.getMatrixAvgScore());
|
|
|
|
+ targetAvgSumScore = targetAvgSumScore + reportEvaluationDto.getTargetAvgScore();
|
|
|
|
+ targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //计算目标达成度
|
|
|
|
+ BigDecimal targetEvaluationValue = new BigDecimal(targetAvgSumScore).divide(targetSumScore, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ courseTargetWebDto.setEvaluationValue(targetEvaluationValue);
|
|
|
|
+ targetEvaluationSumValue = targetEvaluationSumValue.add(targetEvaluationValue);
|
|
|
|
+
|
|
|
|
+ courseTargetWordDto.setEvaluationValue(targetEvaluationValue);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- Double evaluationValue = new BigDecimal(evaluationAvg).add(new BigDecimal(evaluationScore)).divide(evaluationWeight, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
-
|
|
|
|
-// CourseTargetDto courseTargetDto = new CourseTargetDto(k, v.getTargetName(), k, "评价方式" + k, "评价方式描述" + k, reportEvaluationDtoList, evaluationValue);
|
|
|
|
-// targetList.add(courseTargetDto);
|
|
|
|
-// v.updateInfo(courseTargetDto);
|
|
|
|
-// targetValue.set(new BigDecimal(targetValue.get()).add(new BigDecimal(courseTargetDto.getEvaluationValue())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
|
- });
|
|
|
|
- Collections.sort(targetList);
|
|
|
|
- reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto("测试课程总目标1", targetValue, targetList);
|
|
|
|
|
|
+ reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto(targetEvaluationSumValue, new ArrayList<>(targetWebMap.values()));
|
|
|
|
+ }
|
|
|
|
+ paramsMap.put("targetWebMap", targetWebMap);
|
|
}
|
|
}
|
|
return reportCourseEvaluationResultDto;
|
|
return reportCourseEvaluationResultDto;
|
|
}
|
|
}
|
|
@@ -378,26 +335,31 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
List<PaperStructResult> paperStructResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStruct(), new TypeToken<List<PaperStructResult>>() {
|
|
List<PaperStructResult> paperStructResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStruct(), new TypeToken<List<PaperStructResult>>() {
|
|
}.getType());
|
|
}.getType());
|
|
|
|
|
|
|
|
+ //课程目标考核分布
|
|
ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = new ReportCourseEvaluationSpreadDto(paperStructResultList);
|
|
ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = new ReportCourseEvaluationSpreadDto(paperStructResultList);
|
|
if (Objects.nonNull(reportCourseEvaluationSpreadDto)) {
|
|
if (Objects.nonNull(reportCourseEvaluationSpreadDto)) {
|
|
- //课程目标考核分布-分数图
|
|
|
|
reportCourseEvaluationSpreadDto.setScoreList(trBasicInfoService.getScoreList(trBasicInfo, markPaper));
|
|
reportCourseEvaluationSpreadDto.setScoreList(trBasicInfoService.getScoreList(trBasicInfo, markPaper));
|
|
trBasicInfo.setCourseEvaluationSpread(JacksonUtil.parseJson(reportCourseEvaluationSpreadDto));
|
|
trBasicInfo.setCourseEvaluationSpread(JacksonUtil.parseJson(reportCourseEvaluationSpreadDto));
|
|
trBasicInfo.getReportResult().setCourseEvaluationSpreadInfo(reportCourseEvaluationSpreadDto);
|
|
trBasicInfo.getReportResult().setCourseEvaluationSpreadInfo(reportCourseEvaluationSpreadDto);
|
|
}
|
|
}
|
|
|
|
|
|
Map<String, Object> paramsMap = trBasicInfoService.getReportCalculateParams(trBasicInfo, paperStructResultList);
|
|
Map<String, Object> paramsMap = trBasicInfoService.getReportCalculateParams(trBasicInfo, paperStructResultList);
|
|
-// ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = trBasicInfoService.reportCalculateCourseEvaluationResult(paramsMap);
|
|
|
|
-// if (Objects.nonNull(reportCourseEvaluationResultDto)) {
|
|
|
|
-// trBasicInfo.setCourseEvaluationResult(JacksonUtil.parseJson(reportCourseEvaluationResultDto));
|
|
|
|
-// trBasicInfo.getReportResult().setCourseEvaluationResultInfo(reportCourseEvaluationResultDto);
|
|
|
|
-// }
|
|
|
|
|
|
+
|
|
//课程目标达成评价明细结果-考生集合
|
|
//课程目标达成评价明细结果-考生集合
|
|
List<ReportExamStudentDto> examStudentNewList = trExamStudentService.getExamStudentReportDetail(trBasicInfo, paramsMap);
|
|
List<ReportExamStudentDto> examStudentNewList = trExamStudentService.getExamStudentReportDetail(trBasicInfo, paramsMap);
|
|
ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentNewList);
|
|
ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentNewList);
|
|
if (Objects.nonNull(reportCourseEvaluationResultDetailDto)) {
|
|
if (Objects.nonNull(reportCourseEvaluationResultDetailDto)) {
|
|
trBasicInfo.getReportResult().setCourseEvaluationResultDetailInfo(reportCourseEvaluationResultDetailDto);
|
|
trBasicInfo.getReportResult().setCourseEvaluationResultDetailInfo(reportCourseEvaluationResultDetailDto);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ //课程考核成绩评价结果
|
|
|
|
+ ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = trBasicInfoService.reportCalculateCourseEvaluationResult(trBasicInfo, paramsMap);
|
|
|
|
+ if (Objects.nonNull(reportCourseEvaluationResultDto)) {
|
|
|
|
+ trBasicInfo.setCourseEvaluationResult(JacksonUtil.parseJson(reportCourseEvaluationResultDto));
|
|
|
|
+ trBasicInfo.getReportResult().setCourseEvaluationResultInfo(reportCourseEvaluationResultDto);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //存储数据
|
|
if (Objects.nonNull(paramsMap.get("targetWordMap"))) {
|
|
if (Objects.nonNull(paramsMap.get("targetWordMap"))) {
|
|
Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
|
|
Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
|
|
List<CourseTargetWordDto> courseTargetWordDtoList = new ArrayList<>(targetWordMap.values());
|
|
List<CourseTargetWordDto> courseTargetWordDtoList = new ArrayList<>(targetWordMap.values());
|
|
@@ -457,6 +419,81 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 计算考生期末成绩知识点纬度
|
|
|
|
+ *
|
|
|
|
+ * @param finalScoreExamStudentDimensionMap
|
|
|
|
+ * @param finalScoreResult
|
|
|
|
+ * @param courseTargetDto
|
|
|
|
+ * @param dimensionDto
|
|
|
|
+ * @param score
|
|
|
|
+ */
|
|
|
|
+ protected void calculateFinalScoreByExamStudent(Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap,
|
|
|
|
+ FinalScoreResult finalScoreResult,
|
|
|
|
+ CourseTargetWebDto courseTargetDto,
|
|
|
|
+ DimensionDto dimensionDto,
|
|
|
|
+ Double score) {
|
|
|
|
+ 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(courseTargetDto.getTargetId(), 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(courseTargetDto.getTargetId(), 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(courseTargetDto.getTargetId(), 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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 计算考生平时成绩
|
|
|
|
+ *
|
|
|
|
+ * @param finalScoreResult
|
|
|
|
+ * @param usualScoreMap
|
|
|
|
+ * @param targetWordMap
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ protected ReportExamStudentUsualScoreDto calculateUsualScoreByExamStudent(FinalScoreResult finalScoreResult,
|
|
|
|
+ Map<String, ReportEvaluationDto> usualScoreMap,
|
|
|
|
+ Map<Long, CourseTargetWordDto> targetWordMap) {
|
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(100);
|
|
|
|
+ JSONArray usualScoreJsonArray = JSONArray.parseArray(finalScoreResult.getUsualScore());
|
|
|
|
+ Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreListMap = new LinkedHashMap<>();
|
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreListMap);
|
|
|
|
+ for (int i = 0; i < usualScoreJsonArray.size(); i++) {
|
|
|
|
+ JSONObject jsonObject = usualScoreJsonArray.getJSONObject(i);
|
|
|
|
+ if (usualScoreMap.containsKey(jsonObject.get("name"))) {
|
|
|
|
+ ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(jsonObject.get("name").toString());
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
+ //计算平时作业转换
|
|
|
|
+ Double score = Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d;
|
|
|
|
+ CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
|
|
|
|
+ UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
|
|
|
|
+ Double matrixScore = new BigDecimal(score).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumWeight(), usualScoreWordDto.getUsualScoreTargetSumScore()));
|
|
|
|
+ scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ scoreListMap.forEach((k, v) -> {
|
|
|
|
+ Collections.sort(v);
|
|
|
|
+ });
|
|
|
|
+ return reportExamStudentUsualScoreDto;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 计算分数比率
|
|
* 计算分数比率
|
|
*
|
|
*
|