|
@@ -9,7 +9,7 @@ import com.qmth.distributed.print.business.entity.TRExamStudent;
|
|
import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
|
|
import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
|
|
import com.qmth.distributed.print.business.service.TRBasicInfoService;
|
|
import com.qmth.distributed.print.business.service.TRBasicInfoService;
|
|
import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
import com.qmth.distributed.print.business.service.TRExamStudentService;
|
|
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
|
|
|
+import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -51,59 +51,47 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
@Transactional
|
|
@Transactional
|
|
public List<ReportExamStudentDto> getExamStudentReportDetail(TRBasicInfo trBasicInfo, Map<String, Object> paramsMap) {
|
|
public List<ReportExamStudentDto> getExamStudentReportDetail(TRBasicInfo trBasicInfo, Map<String, Object> paramsMap) {
|
|
List<ReportExamStudentDto> examStudentList = (List<ReportExamStudentDto>) paramsMap.get("examStudentList");
|
|
List<ReportExamStudentDto> examStudentList = (List<ReportExamStudentDto>) paramsMap.get("examStudentList");
|
|
- Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = (Map<String, Map<Long, Map<Long, DimensionDto>>>) paramsMap.get("finalScoreExamStudentDimensionMap");
|
|
|
|
|
|
+// Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = (Map<String, Map<Long, Map<Long, DimensionDto>>>) paramsMap.get("finalScoreExamStudentDimensionMap");
|
|
Map<String, FinalScoreResult> finalScoreResultMap = (Map<String, FinalScoreResult>) paramsMap.get("finalScoreResultMap");
|
|
Map<String, FinalScoreResult> finalScoreResultMap = (Map<String, FinalScoreResult>) paramsMap.get("finalScoreResultMap");
|
|
|
|
+ Map<String, Map<Long, Double>> finalScoreExamStudentTargetMap = (Map<String, Map<Long, Double>>) paramsMap.get("finalScoreExamStudentTargetMap");
|
|
Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
|
|
Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
|
|
if (!CollectionUtils.isEmpty(examStudentList)) {
|
|
if (!CollectionUtils.isEmpty(examStudentList)) {
|
|
- BigDecimal bigDecimal = new BigDecimal(100);
|
|
|
|
List<TRExamStudent> trExamStudentList = new ArrayList<>(examStudentList.size());
|
|
List<TRExamStudent> trExamStudentList = new ArrayList<>(examStudentList.size());
|
|
Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap = new LinkedHashMap<>();
|
|
Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap = new LinkedHashMap<>();
|
|
for (ReportExamStudentDto reportExamStudentDto : examStudentList) {
|
|
for (ReportExamStudentDto reportExamStudentDto : examStudentList) {
|
|
- Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(reportExamStudentDto.getStudentCode());
|
|
|
|
|
|
+// Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(reportExamStudentDto.getStudentCode());
|
|
|
|
+ Map<Long, Double> map = finalScoreExamStudentTargetMap.get(reportExamStudentDto.getStudentCode());
|
|
FinalScoreResult finalScoreResult = finalScoreResultMap.get(reportExamStudentDto.getStudentCode());
|
|
FinalScoreResult finalScoreResult = finalScoreResultMap.get(reportExamStudentDto.getStudentCode());
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreSumDto = finalScoreResult.getUsualScoreDto();
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreSumDto = finalScoreResult.getUsualScoreDto();
|
|
- //课程目标循环
|
|
|
|
map.forEach((k, v) -> {
|
|
map.forEach((k, v) -> {
|
|
- List<DimensionDto> dimensionDtoList = new ArrayList<>(v.values());
|
|
|
|
- Collections.sort(dimensionDtoList);
|
|
|
|
List<ReportExamStudentTargetDto> targetList = CollectionUtils.isEmpty(reportExamStudentDto.getTargetList()) ? new ArrayList<>() : reportExamStudentDto.getTargetList();
|
|
List<ReportExamStudentTargetDto> targetList = CollectionUtils.isEmpty(reportExamStudentDto.getTargetList()) ? new ArrayList<>() : reportExamStudentDto.getTargetList();
|
|
if (targetWordMap.containsKey(k)) {
|
|
if (targetWordMap.containsKey(k)) {
|
|
List<ReportExamStudentUsualScoreObjDto> scoreObjDtoList = reportExamStudentUsualScoreSumDto.getScoreMap().get(k);
|
|
List<ReportExamStudentUsualScoreObjDto> scoreObjDtoList = reportExamStudentUsualScoreSumDto.getScoreMap().get(k);
|
|
CourseTargetWordDto courseTargetWordDto = targetWordMap.get(k);
|
|
CourseTargetWordDto courseTargetWordDto = targetWordMap.get(k);
|
|
- ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList, finalScoreResult.getFinalScore().get(k));
|
|
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), finalScoreResult.getFinalScoreTarget().get(k));
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList);
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList);
|
|
|
|
|
|
- BigDecimal dimensionMatrixSumScore = new BigDecimal(0);
|
|
|
|
|
|
+ BigDecimal targetMatrixSumScore = new BigDecimal(0);
|
|
if (!reportExamStudentTargetDtoMap.containsKey(k)) {
|
|
if (!reportExamStudentTargetDtoMap.containsKey(k)) {
|
|
- //各知识点转换分数
|
|
|
|
- for (DimensionDto dimensionDto : dimensionDtoList) {
|
|
|
|
- Double matrixScore = new BigDecimal(dimensionDto.getDimensionScore()).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
- dimensionDto.setDimensionMatrixScore(matrixScore);
|
|
|
|
- dimensionMatrixSumScore = dimensionMatrixSumScore.add(new BigDecimal(matrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- reportExamStudentDto.setScore(reportExamStudentDto.getScore() + matrixScore);
|
|
|
|
- }
|
|
|
|
|
|
+ Double targetMatrixScore = new BigDecimal(v).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
|
|
//平时作业总和+累加
|
|
//平时作业总和+累加
|
|
Double usualMatrixSumScore = scoreObjDtoList.stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixScore).sum();
|
|
Double usualMatrixSumScore = scoreObjDtoList.stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixScore).sum();
|
|
reportExamStudentDto.setScore(reportExamStudentDto.getScore() + usualMatrixSumScore);
|
|
reportExamStudentDto.setScore(reportExamStudentDto.getScore() + usualMatrixSumScore);
|
|
- reportExamStudentFinalScoreDto.setTargetMatrixSumScore(dimensionMatrixSumScore.doubleValue());
|
|
|
|
- ReportExamStudentFinalScoreDto reportExamStudentFinalScoreTempDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList.stream().map(DimensionDto::new).collect(Collectors.toList()), dimensionMatrixSumScore.doubleValue(), finalScoreResult.getFinalScore().get(k));
|
|
|
|
|
|
+ reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreTempDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), targetMatrixSumScore.doubleValue(), finalScoreResult.getFinalScoreTarget().get(k));
|
|
ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())));
|
|
ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())));
|
|
reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
} else {
|
|
} else {
|
|
ReportExamStudentTargetDto reportExamStudentTargetDto = reportExamStudentTargetDtoMap.get(k);
|
|
ReportExamStudentTargetDto reportExamStudentTargetDto = reportExamStudentTargetDtoMap.get(k);
|
|
ReportExamStudentFinalScoreDto reportExamStudentFinalScoreAvgDto = reportExamStudentTargetDto.getFinalScore();
|
|
ReportExamStudentFinalScoreDto reportExamStudentFinalScoreAvgDto = reportExamStudentTargetDto.getFinalScore();
|
|
- List<DimensionDto> dimensionDtos = reportExamStudentFinalScoreAvgDto.getDimensionList();
|
|
|
|
- //各知识点转换分数
|
|
|
|
- for (int i = 0; i < dimensionDtoList.size(); i++) {
|
|
|
|
- DimensionDto dimensionDto = dimensionDtoList.get(i);
|
|
|
|
- Double matrixScore = new BigDecimal(dimensionDto.getDimensionScore()).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
- dimensionDto.setDimensionMatrixScore(matrixScore);
|
|
|
|
- reportExamStudentDto.setScore(reportExamStudentDto.getScore() + matrixScore);
|
|
|
|
- dimensionDtos.get(i).setDimensionMatrixScore(dimensionDtos.get(i).getDimensionMatrixScore() + matrixScore);
|
|
|
|
- dimensionMatrixSumScore = dimensionMatrixSumScore.add(new BigDecimal(matrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
- }
|
|
|
|
- reportExamStudentFinalScoreDto.setTargetMatrixSumScore(dimensionMatrixSumScore.doubleValue());
|
|
|
|
- reportExamStudentFinalScoreAvgDto.setTargetMatrixSumScore(new BigDecimal(reportExamStudentFinalScoreAvgDto.getTargetMatrixSumScore()).add(dimensionMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
|
|
|
+ Double targetMatrixScore = new BigDecimal(v).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
|
|
|
|
+
|
|
|
|
+ reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
|
|
|
|
+ reportExamStudentFinalScoreAvgDto.setTargetMatrixSumScore(new BigDecimal(reportExamStudentFinalScoreAvgDto.getTargetMatrixSumScore()).add(targetMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreAvgDto = reportExamStudentTargetDto.getUsualScore();
|
|
ReportExamStudentUsualScoreDto reportExamStudentUsualScoreAvgDto = reportExamStudentTargetDto.getUsualScore();
|
|
|
|
|
|
//平时作业总和+累加
|
|
//平时作业总和+累加
|
|
@@ -127,13 +115,14 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
//加入目标分&平均分&各课程目标平均分
|
|
//加入目标分&平均分&各课程目标平均分
|
|
BigDecimal size = new BigDecimal(examStudentList.size());
|
|
BigDecimal size = new BigDecimal(examStudentList.size());
|
|
List<ReportExamStudentTargetDto> targetDtoList = this.targetDtoParams(reportExamStudentTargetDtoMap, size);
|
|
List<ReportExamStudentTargetDto> targetDtoList = this.targetDtoParams(reportExamStudentTargetDtoMap, size);
|
|
- AtomicReference<Double> dimensionScoreSum = new AtomicReference<>(0.0d);
|
|
|
|
|
|
+ AtomicReference<Double> targetScoreSum = new AtomicReference<>(0.0d);
|
|
AtomicReference<Double> usualScoreSum = new AtomicReference<>(0.0d);
|
|
AtomicReference<Double> usualScoreSum = new AtomicReference<>(0.0d);
|
|
targetDtoList.stream().peek(e -> {
|
|
targetDtoList.stream().peek(e -> {
|
|
- dimensionScoreSum.set(dimensionScoreSum.get() + e.getFinalScore().getDimensionList().stream().mapToDouble(DimensionDto::getDimensionMatrixAvgScore).sum());
|
|
|
|
|
|
+ targetScoreSum.set(targetScoreSum.get() + e.getFinalScore().getMatrixAvgScore());
|
|
usualScoreSum.set(usualScoreSum.get() + e.getUsualScore().getScoreList().stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixAvgScore).sum());
|
|
usualScoreSum.set(usualScoreSum.get() + e.getUsualScore().getScoreList().stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixAvgScore).sum());
|
|
}).collect(Collectors.toList());
|
|
}).collect(Collectors.toList());
|
|
- Double score = new BigDecimal(dimensionScoreSum.get()).add(new BigDecimal(usualScoreSum.get())).setScale(1, BigDecimal.ROUND_DOWN).doubleValue();
|
|
|
|
|
|
+
|
|
|
|
+ Double score = new BigDecimal(targetScoreSum.get()).add(new BigDecimal(usualScoreSum.get())).setScale(1, BigDecimal.ROUND_DOWN).doubleValue();
|
|
ReportExamStudentDto reportExamStudentTargetDto = new ReportExamStudentDto("目标分", "目标分", null, 100.d, targetDtoList);
|
|
ReportExamStudentDto reportExamStudentTargetDto = new ReportExamStudentDto("目标分", "目标分", null, 100.d, targetDtoList);
|
|
ReportExamStudentDto reportExamStudentAvgDto = new ReportExamStudentDto("平均分", "平均分", null, score, targetDtoList);
|
|
ReportExamStudentDto reportExamStudentAvgDto = new ReportExamStudentDto("平均分", "平均分", null, score, targetDtoList);
|
|
ReportExamStudentDto reportExamStudentTargetAvgDto = new ReportExamStudentDto("各课程目标平均分", "各课程目标平均分", null, null, targetDtoList);
|
|
ReportExamStudentDto reportExamStudentTargetAvgDto = new ReportExamStudentDto("各课程目标平均分", "各课程目标平均分", null, null, targetDtoList);
|
|
@@ -175,17 +164,90 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 处理目标分&平均分&各课程目标平均分参数
|
|
|
|
|
|
+ * 知识点纬度数据构建
|
|
|
|
+ *
|
|
|
|
+ * @param map
|
|
|
|
+ * @param targetWordMap
|
|
|
|
+ * @param reportExamStudentDto
|
|
|
|
+ * @param reportExamStudentUsualScoreSumDto
|
|
|
|
+ * @param reportExamStudentTargetDtoMap
|
|
|
|
+ * @param finalScoreResult
|
|
|
|
+ */
|
|
|
|
+ protected void dimensionDataBuild(Map<Long, Map<Long, DimensionDto>> map, Map<Long, CourseTargetWordDto> targetWordMap,
|
|
|
|
+ ReportExamStudentDto reportExamStudentDto, ReportExamStudentUsualScoreDto reportExamStudentUsualScoreSumDto,
|
|
|
|
+ Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap, FinalScoreResult finalScoreResult) {
|
|
|
|
+ //课程目标循环
|
|
|
|
+ map.forEach((k, v) -> {
|
|
|
|
+ List<DimensionDto> dimensionDtoList = new ArrayList<>(v.values());
|
|
|
|
+ Collections.sort(dimensionDtoList);
|
|
|
|
+ List<ReportExamStudentTargetDto> targetList = CollectionUtils.isEmpty(reportExamStudentDto.getTargetList()) ? new ArrayList<>() : reportExamStudentDto.getTargetList();
|
|
|
|
+ if (targetWordMap.containsKey(k)) {
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> scoreObjDtoList = reportExamStudentUsualScoreSumDto.getScoreMap().get(k);
|
|
|
|
+ CourseTargetWordDto courseTargetWordDto = targetWordMap.get(k);
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList, finalScoreResult.getFinalScoreDimension().get(k));
|
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList);
|
|
|
|
+
|
|
|
|
+ BigDecimal dimensionMatrixSumScore = new BigDecimal(0);
|
|
|
|
+ if (!reportExamStudentTargetDtoMap.containsKey(k)) {
|
|
|
|
+ //各知识点转换分数
|
|
|
|
+ for (DimensionDto dimensionDto : dimensionDtoList) {
|
|
|
|
+ Double matrixScore = new BigDecimal(dimensionDto.getDimensionScore()).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ dimensionDto.setDimensionMatrixScore(matrixScore);
|
|
|
|
+ dimensionMatrixSumScore = dimensionMatrixSumScore.add(new BigDecimal(matrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + matrixScore);
|
|
|
|
+ }
|
|
|
|
+ //平时作业总和+累加
|
|
|
|
+ Double usualMatrixSumScore = scoreObjDtoList.stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixScore).sum();
|
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + usualMatrixSumScore);
|
|
|
|
+ reportExamStudentFinalScoreDto.setTargetDimensionMatrixSumScore(dimensionMatrixSumScore.doubleValue());
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreTempDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList.stream().map(DimensionDto::new).collect(Collectors.toList()), dimensionMatrixSumScore.doubleValue(), finalScoreResult.getFinalScoreDimension().get(k));
|
|
|
|
+ ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())));
|
|
|
|
+ reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
|
|
+ } else {
|
|
|
|
+ ReportExamStudentTargetDto reportExamStudentTargetDto = reportExamStudentTargetDtoMap.get(k);
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreAvgDto = reportExamStudentTargetDto.getFinalScore();
|
|
|
|
+ List<DimensionDto> dimensionDtos = reportExamStudentFinalScoreAvgDto.getDimensionList();
|
|
|
|
+ //各知识点转换分数
|
|
|
|
+ for (int i = 0; i < dimensionDtoList.size(); i++) {
|
|
|
|
+ DimensionDto dimensionDto = dimensionDtoList.get(i);
|
|
|
|
+ Double matrixScore = new BigDecimal(dimensionDto.getDimensionScore()).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
+ dimensionDto.setDimensionMatrixScore(matrixScore);
|
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + matrixScore);
|
|
|
|
+ dimensionDtos.get(i).setDimensionMatrixScore(dimensionDtos.get(i).getDimensionMatrixScore() + matrixScore);
|
|
|
|
+ dimensionMatrixSumScore = dimensionMatrixSumScore.add(new BigDecimal(matrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ }
|
|
|
|
+ reportExamStudentFinalScoreDto.setTargetDimensionMatrixSumScore(dimensionMatrixSumScore.doubleValue());
|
|
|
|
+ reportExamStudentFinalScoreAvgDto.setTargetDimensionMatrixSumScore(new BigDecimal(reportExamStudentFinalScoreAvgDto.getTargetDimensionMatrixSumScore()).add(dimensionMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreAvgDto = reportExamStudentTargetDto.getUsualScore();
|
|
|
|
+
|
|
|
|
+ //平时作业总和+累加
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjAvgDtoList = reportExamStudentUsualScoreAvgDto.getScoreList();
|
|
|
|
+ for (int i = 0; i < reportExamStudentUsualScoreObjDtoList.size(); i++) {
|
|
|
|
+ ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto = reportExamStudentUsualScoreObjDtoList.get(i);
|
|
|
|
+ reportExamStudentDto.setScore(reportExamStudentDto.getScore() + reportExamStudentUsualScoreObjDto.getMatrixScore());
|
|
|
|
+ reportExamStudentUsualScoreObjAvgDtoList.get(i).setMatrixScore(new BigDecimal(reportExamStudentUsualScoreObjAvgDtoList.get(i).getMatrixScore()).add(new BigDecimal(reportExamStudentUsualScoreObjDto.getMatrixScore())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
|
+ }
|
|
|
|
+ reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
|
|
|
|
+ }
|
|
|
|
+ targetList.add(new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreDto, reportExamStudentUsualScoreDto));
|
|
|
|
+ }
|
|
|
|
+ reportExamStudentDto.setTargetList(targetList);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 处理目标分&平均分&各课程目标平均分参数-知识点纬度
|
|
*
|
|
*
|
|
* @param reportExamStudentTargetDtoMap
|
|
* @param reportExamStudentTargetDtoMap
|
|
* @param size
|
|
* @param size
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
- protected List<ReportExamStudentTargetDto> targetDtoParams(Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap, BigDecimal size) {
|
|
|
|
|
|
+ protected List<ReportExamStudentTargetDto> targetDimensionDtoParams(Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap, BigDecimal size) {
|
|
List<ReportExamStudentTargetDto> targetDtoList = new ArrayList<>();
|
|
List<ReportExamStudentTargetDto> targetDtoList = new ArrayList<>();
|
|
reportExamStudentTargetDtoMap.forEach((k, v) -> {
|
|
reportExamStudentTargetDtoMap.forEach((k, v) -> {
|
|
ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = v.getFinalScore();//课程目标考核要素的平均分
|
|
ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = v.getFinalScore();//课程目标考核要素的平均分
|
|
- BigDecimal matrixAvgScore = new BigDecimal(reportExamStudentFinalScoreDto.getTargetMatrixSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
+ BigDecimal matrixAvgScore = new BigDecimal(reportExamStudentFinalScoreDto.getTargetDimensionMatrixSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
// //如果换算出来的知识点总分超过了期末考试目标分,则
|
|
// //如果换算出来的知识点总分超过了期末考试目标分,则
|
|
// if (reportExamStudentFinalScoreDto.getTargetScore().compareTo(matrixAvgScore) == -1) {
|
|
// if (reportExamStudentFinalScoreDto.getTargetScore().compareTo(matrixAvgScore) == -1) {
|
|
// throw ExceptionResultEnum.ERROR.exception("[" + v.getTargetName() + "]知识点总平均分超过了期末考试目标分,请重新设置知识点");
|
|
// throw ExceptionResultEnum.ERROR.exception("[" + v.getTargetName() + "]知识点总平均分超过了期末考试目标分,请重新设置知识点");
|
|
@@ -210,4 +272,32 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
|
|
Collections.sort(targetDtoList);
|
|
Collections.sort(targetDtoList);
|
|
return targetDtoList;
|
|
return targetDtoList;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 处理目标分&平均分&各课程目标平均分参数-课程目标纬度
|
|
|
|
+ *
|
|
|
|
+ * @param reportExamStudentTargetDtoMap
|
|
|
|
+ * @param size
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ protected List<ReportExamStudentTargetDto> targetDtoParams(Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap, BigDecimal size) {
|
|
|
|
+ List<ReportExamStudentTargetDto> targetDtoList = new ArrayList<>();
|
|
|
|
+ reportExamStudentTargetDtoMap.forEach((k, v) -> {
|
|
|
|
+ ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = v.getFinalScore();//课程目标考核要素的平均分
|
|
|
|
+ BigDecimal matrixAvgScore = new BigDecimal(reportExamStudentFinalScoreDto.getTargetMatrixSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ reportExamStudentFinalScoreDto.setMatrixAvgScore(matrixAvgScore.doubleValue());
|
|
|
|
+
|
|
|
|
+ v.setTargetMatrixAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
|
|
|
|
+ ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = v.getUsualScore();
|
|
|
|
+ List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
|
|
|
|
+ for (ReportExamStudentUsualScoreObjDto r : reportExamStudentUsualScoreObjDtoList) {
|
|
|
|
+ r.setMatrixAvgScore(new BigDecimal(r.getMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
|
+ v.setTargetMatrixAvgScore(v.getTargetMatrixAvgScore() + r.getMatrixAvgScore());
|
|
|
|
+ }
|
|
|
|
+ v.setTargetMatrixAvgScore(new BigDecimal(v.getTargetMatrixAvgScore()).setScale(1, BigDecimal.ROUND_DOWN).doubleValue());
|
|
|
|
+ targetDtoList.add(v);
|
|
|
|
+ });
|
|
|
|
+ Collections.sort(targetDtoList);
|
|
|
|
+ return targetDtoList;
|
|
|
|
+ }
|
|
}
|
|
}
|