wangliang 1 жил өмнө
parent
commit
e8a9216e84

+ 8 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreWordDto.java

@@ -58,6 +58,14 @@ public class FinalScoreWordDto implements Serializable {
         this.finalScoreTargetSumScore = courseWeightDetailDto.getTargetScore();
     }
 
+    public FinalScoreWordDto(Long targetId, CourseWeightDetailDto courseWeightDetailDto, BigDecimal finalScoreSumWeight) {
+        this.targetId = targetId;
+        this.evaluationId = courseWeightDetailDto.getEvaluationId();
+        this.evaluation = courseWeightDetailDto.getEvaluationName();
+        this.finalScoreSumWeight = finalScoreSumWeight;
+        this.finalScoreTargetSumScore = courseWeightDetailDto.getTargetScore();
+    }
+
     public Long getTargetId() {
         return targetId;
     }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportEvaluationDto.java

@@ -56,6 +56,15 @@ public class ReportEvaluationDto implements Serializable, Comparable<ReportEvalu
         this.targetScore = courseWeightDetailDto.getTargetScore();
     }
 
+    public ReportEvaluationDto(Long targetId, CourseWeightDetailDto courseWeightDetailDto, BigDecimal targetWeight) {
+        this.targetId = targetId;
+        this.evaluationId = courseWeightDetailDto.getEvaluationId();
+        this.evaluation = courseWeightDetailDto.getEvaluationName();
+        this.evaluationDesc = courseWeightDetailDto.getEvaluationDesc();
+        this.targetWeight = targetWeight;
+        this.targetScore = courseWeightDetailDto.getTargetScore();
+    }
+
     public Double getTargetAvgScore() {
         return targetAvgScore;
     }

+ 15 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentFinalScoreDto.java

@@ -44,30 +44,24 @@ public class ReportExamStudentFinalScoreDto implements Serializable {
     @ApiModelProperty(value = "课程目标考核要素的平均分")
     private Double matrixAvgScore;
 
-    public ReportExamStudentFinalScoreDto() {
+    @ApiModelProperty(value = "卷面分")
+    private Double score;
 
-    }
+    public ReportExamStudentFinalScoreDto() {
 
-    public ReportExamStudentFinalScoreDto(ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto) {
-        this.evaluationId = reportExamStudentFinalScoreDto.getEvaluationId();
-        this.evaluation = reportExamStudentFinalScoreDto.getEvaluation();
-        this.evaluationDesc = reportExamStudentFinalScoreDto.getEvaluationDesc();
-        this.targetWeight = reportExamStudentFinalScoreDto.getTargetWeight();
-        this.targetScore = reportExamStudentFinalScoreDto.getTargetScore();
-        this.dimensionList = reportExamStudentFinalScoreDto.getDimensionList();
     }
 
-
-    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, List<DimensionDto> dimensionList) {
+    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, List<DimensionDto> dimensionList, Double score) {
         this.evaluationId = finalScoreWordDto.getEvaluationId();
         this.evaluation = finalScoreWordDto.getEvaluation();
         this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
         this.targetWeight = finalScoreWordDto.getFinalScoreSumWeight();
         this.targetScore = finalScoreWordDto.getFinalScoreTargetSumScore();
         this.dimensionList = dimensionList;
+        this.score = score;
     }
 
-    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, List<DimensionDto> dimensionList, Double targetMatrixSumScore) {
+    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, List<DimensionDto> dimensionList, Double targetMatrixSumScore, Double score) {
         this.evaluationId = finalScoreWordDto.getEvaluationId();
         this.evaluation = finalScoreWordDto.getEvaluation();
         this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
@@ -75,6 +69,15 @@ public class ReportExamStudentFinalScoreDto implements Serializable {
         this.targetScore = finalScoreWordDto.getFinalScoreTargetSumScore();
         this.dimensionList = dimensionList;
         this.targetMatrixSumScore = targetMatrixSumScore;
+        this.score = score;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
     }
 
     public Double getTargetMatrixSumScore() {

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentUsualScoreObjDto.java

@@ -45,7 +45,7 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparab
     @ApiModelProperty(value = "作业整体分值")
     private BigDecimal targetSumScore;
 
-    @ApiModelProperty(value = "原始分数")
+    @ApiModelProperty(value = "卷面分数")
     private Double score;
 
     @ApiModelProperty(value = "换算分数")

+ 1 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/UsualScoreWordDto.java

@@ -29,13 +29,10 @@ public class UsualScoreWordDto implements Serializable {
     public UsualScoreWordDto() {
 
     }
+
     public UsualScoreWordDto(BigDecimal usualScoreTargetSumWeight) {
         this.usualScoreTargetSumWeight = usualScoreTargetSumWeight;
     }
-    public UsualScoreWordDto(BigDecimal usualScoreTargetSumWeight, List<ReportEvaluationDto> usualScoreDetailList) {
-        this.usualScoreTargetSumWeight = usualScoreTargetSumWeight;
-        this.usualScoreDetailList = usualScoreDetailList;
-    }
 
     public List<ReportEvaluationDto> getUsualScoreDetailList() {
         return usualScoreDetailList;

+ 12 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCFinalScoreServiceImpl.java

@@ -91,6 +91,10 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
         Map<String, String> messageMap = new LinkedHashMap<>();
         try {
             MarkPaper markPaper = printCommonService.scoreImportExcelVaild(file, examId, paperNumber);
+
+            Double totalScore = markPaper.getTotalScore();
+            Objects.requireNonNull(totalScore, "试卷满分为空");
+
             StringJoiner errorData = new StringJoiner("");
             StringJoiner successData = new StringJoiner("");
 
@@ -143,9 +147,14 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
                             }
                         }
                         if (jsonArray.size() > 0) {
-                            score = score.setScale(2, BigDecimal.ROUND_HALF_UP);
-                            tcFinalScore.setScore(score.doubleValue());
-                            tcFinalScore.setScoreDetail(jsonArray.toJSONString());
+                            if (score.doubleValue() > totalScore.doubleValue()) {
+                                errorData.add("excel第" + (i + 1) + "行[考生总分大于试卷总分]").add("\r\n");
+                                error = true;
+                            } else {
+                                score = score.setScale(2, BigDecimal.ROUND_HALF_UP);
+                                tcFinalScore.setScore(score.doubleValue());
+                                tcFinalScore.setScoreDetail(jsonArray.toJSONString());
+                            }
                         }
                         if (!error) {
                             tcFinalScoreList.add(tcFinalScore);

+ 13 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -13,6 +13,7 @@ import com.qmth.distributed.print.business.bean.dto.CourseWeightDetailDto;
 import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
 import com.qmth.distributed.print.business.bean.dto.FinalScoreDto;
 import com.qmth.distributed.print.business.bean.dto.report.*;
+import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
 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.word.CourseReportBean;
@@ -43,7 +44,6 @@ import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.text.DecimalFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
@@ -137,12 +137,17 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             targetWordMap = new LinkedHashMap<>();
             targetWebMap = new LinkedHashMap<>();
             usualScoreMap = new LinkedHashMap<>();
-            //TODO 获取曹子轩课程目标信息
-            List<CourseWeightDto> courseWeightDtoList = courseWeightService.findCourseWeight(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), sysUser.getId()).getSubmitForm();
+
+            CourseWeightResult courseWeightResult = courseWeightService.findCourseWeight(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), sysUser.getId());
+            if (Objects.isNull(courseWeightResult)) {
+                throw ExceptionResultEnum.ERROR.exception("未设置课程目标数据");
+            }
+            List<CourseWeightDto> courseWeightDtoList = courseWeightResult.getSubmitForm();
             if (CollectionUtils.isEmpty(courseWeightDtoList)) {
                 throw ExceptionResultEnum.ERROR.exception("未设置课程目标评价方式");
             }
 
+            BigDecimal bigDecimal = new BigDecimal(100);
             for (CourseWeightDto courseWeightDto : courseWeightDtoList) {
                 List<CourseWeightDetailDto> courseWeightDetailDtoList = courseWeightDto.getEvaluationList();
                 CourseTargetWordDto courseTargetWordDto = new CourseTargetWordDto(courseWeightDto);
@@ -154,19 +159,20 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 if (!CollectionUtils.isEmpty(courseWeightDetailDtoList)) {
                     List<ReportEvaluationDto> reportEvaluationDtoList = new ArrayList<>(courseWeightDetailDtoList.size());
                     List<ReportEvaluationDto> usualScoreDetailList = new ArrayList<>(courseWeightDetailDtoList.size());
-                    UsualScoreWordDto usualScoreWordDto = new UsualScoreWordDto(courseWeightDto.getTotalWeight());
+                    UsualScoreWordDto usualScoreWordDto = new UsualScoreWordDto(courseWeightResult.getCustomRate());
                     usualScoreWordDto.setUsualScoreDetailList(usualScoreDetailList);
                     BigDecimal usualScoreTargetSumScore = new BigDecimal(0);//平常作业目标总分
                     for (CourseWeightDetailDto courseWeightDetailDto : courseWeightDetailDtoList) {
                         //期末考试
                         if (courseWeightDetailDto.getEnable() && Objects.equals(courseWeightDetailDto.getEvaluationName(), SystemConstant.FINAL_SCORE_STR)) {
-                            FinalScoreWordDto finalScoreWordDto = new FinalScoreWordDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
+                            FinalScoreWordDto finalScoreWordDto = new FinalScoreWordDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto, courseWeightResult.getDefaultRate());
                             courseTargetWordDto.setFinalScoreDto(finalScoreWordDto);
-                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
+                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto, courseWeightResult.getDefaultRate());
                             reportEvaluationDtoList.add(reportEvaluationDto);
                         }//非期末考试
                         else if (courseWeightDetailDto.getEnable() && !Objects.equals(courseWeightDetailDto.getEvaluationName(), SystemConstant.FINAL_SCORE_STR)) {
-                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
+                            BigDecimal usualScoreRealityWeight = usualScoreWordDto.getUsualScoreTargetSumWeight().divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(courseWeightDetailDto.getWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto, usualScoreRealityWeight);
                             usualScoreTargetSumScore = usualScoreTargetSumScore.add(reportEvaluationDto.getTargetScore());
                             usualScoreDetailList.add(reportEvaluationDto);
                             reportEvaluationDtoList.add(reportEvaluationDto);

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -68,7 +68,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                     if (targetWordMap.containsKey(k)) {
                         List<ReportExamStudentUsualScoreObjDto> scoreObjDtoList = reportExamStudentUsualScoreSumDto.getScoreMap().get(k);
                         CourseTargetWordDto courseTargetWordDto = targetWordMap.get(k);
-                        ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList);
+                        ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList, finalScoreResult.getFinalScore());
                         ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList);
 
                         BigDecimal dimensionMatrixSumScore = new BigDecimal(0);
@@ -84,7 +84,7 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                             Double usualMatrixSumScore = scoreObjDtoList.stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixScore).sum();
                             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());
+                            ReportExamStudentFinalScoreDto reportExamStudentFinalScoreTempDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList.stream().map(DimensionDto::new).collect(Collectors.toList()), dimensionMatrixSumScore.doubleValue(), finalScoreResult.getFinalScore());
                             ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())));
                             reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
                         } else {

+ 6 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/TCUsualScoreController.java

@@ -5,9 +5,9 @@ import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.dto.CourseWeightDetailDto;
 import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
 import com.qmth.distributed.print.business.bean.excel.ExcelField;
+import com.qmth.distributed.print.business.bean.result.CourseWeightResult;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.bean.result.ScoreResult;
-import com.qmth.distributed.print.business.entity.TCFinalScore;
 import com.qmth.distributed.print.business.entity.TCUsualScore;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
@@ -86,7 +86,11 @@ public class TCUsualScoreController {
                                            @ApiParam(value = "科目编码", required = true) @RequestParam String courseCode,
                                            @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) throws IOException {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        List<CourseWeightDto> courseWeightDtoList = courseWeightService.findCourseWeightReport(examId, courseCode, sysUser.getId()).getSubmitForm();
+        CourseWeightResult courseWeightResult = courseWeightService.findCourseWeight(examId, courseCode, sysUser.getId());
+        if (Objects.isNull(courseWeightResult)) {
+            throw ExceptionResultEnum.ERROR.exception("未设置课程目标数据");
+        }
+        List<CourseWeightDto> courseWeightDtoList = courseWeightResult.getSubmitForm();
         if (CollectionUtils.isEmpty(courseWeightDtoList)) {
             throw ExceptionResultEnum.ERROR.exception("未设置课程目标评价方式");
         }