xiaofei 1 vuosi sitten
vanhempi
commit
8def67a590

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -48,7 +48,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     void updateSubjectiveStatusAndScore(Long studentId, SubjectiveStatus status, Double score, String scoreList);
 
-    void updateSubjectiveStatusAndScore(Long examId, String paperNumber, SubjectiveStatus status, double score,
+    void updateSubjectiveStatusAndScore(Long examId, String paperNumber, SubjectiveStatus status, Double score,
             String scoreList);
 
     ScanExamInfoVo getScanExamInfo(BasicExam exam, String courseCode, String coursePaperId);

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -397,7 +397,7 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
         // 更新MarkPaper中groupStatus
         markService.updateMarkGroupStatus(examId, paperNumber);
 
-        boolean isClear = isEqual || !doubleEnable.equals(markGroupDto.getDoubleEnable()) || (markGroupDto.getDoubleEnable() && (doubleRate == null || markGroupDto.getDoubleRate().doubleValue() != markGroup.getDoubleRate().doubleValue()));
+        boolean isClear = !isEqual || !doubleEnable.equals(markGroupDto.getDoubleEnable()) || (markGroupDto.getDoubleEnable() && (doubleRate == null || markGroupDto.getDoubleRate().doubleValue() != markGroup.getDoubleRate().doubleValue()));
         updateMarkUserGroup(isClear, examId, paperNumber, markGroupDto);
 
         // 增加或减少分组内题目数量和题目变动、单双评切换、开启双评且双评比例值修改过。则删除任务

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -897,7 +897,7 @@ public class MarkServiceImpl implements MarkService {
                 markGroup.getPaperNumber());
         if (groupCount == 0 || unGroupQuestionCount > 0) {
             markStudentService.updateSubjectiveStatusAndScore(markGroup.getExamId(), markGroup.getPaperNumber(),
-                    SubjectiveStatus.UNMARK, 0D, null);
+                    SubjectiveStatus.UNMARK, null, null);
         } else {
             List<Long> studentList = markStudentService.findIdByExamIdAndPaperNumberAndSubjectiveStatus(
                     markGroup.getExamId(), markGroup.getPaperNumber(), SubjectiveStatus.UNMARK,

+ 16 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -153,7 +153,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public void updateSubjectiveStatusAndScore(Long examId, String paperNumber, SubjectiveStatus status, double score,
+    public void updateSubjectiveStatusAndScore(Long examId, String paperNumber, SubjectiveStatus status, Double score,
                                                String scoreList) {
         UpdateWrapper<MarkStudent> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(MarkStudent::getSubjectiveStatus, status).set(MarkStudent::getSubjectiveScore, score)
@@ -218,6 +218,11 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             scoreDetailDto.setSubjectiveCheckFlag(!scoreDetailDto.getAbsent() && !scoreDetailDto.getOmrAbsent() && scoreDetailDto.getUpload() && ScanStatus.SCANNED.equals(scoreDetailDto.getScanStatus()) && SubjectiveStatus.MARKED.equals(scoreDetailDto.getSubjectiveStatus()) && StringUtils.isNotBlank(scoreDetailDto.getSubjectiveScore()) && StringUtils.isNotBlank(scoreDetailDto.getSubjectiveScoreList()));
             // 客观题检查标记
             scoreDetailDto.setObjectiveCheckFlag(!scoreDetailDto.getAbsent() && !scoreDetailDto.getOmrAbsent() && scoreDetailDto.getUpload() && ScanStatus.SCANNED.equals(scoreDetailDto.getScanStatus()) && StringUtils.isNotBlank(scoreDetailDto.getObjectiveScore()) && StringUtils.isNotBlank(scoreDetailDto.getObjectiveScoreList()));
+
+            // 格式化分数
+            scoreDetailDto.setObjectiveScore(Calculator.round(scoreDetailDto.getObjectiveScore(), 1));
+            scoreDetailDto.setSubjectiveScore(Calculator.round(scoreDetailDto.getSubjectiveScore(), 1));
+            scoreDetailDto.setTotalScore(Calculator.round(scoreDetailDto.getTotalScore(), 1));
         }
         return studentScoreDetailDtoIPage;
     }
@@ -1065,9 +1070,16 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     @Override
     public void updateObjectiveScoreAndScoreList(MarkStudent markStudent) {
         UpdateWrapper<MarkStudent> objectiveUpdateWrapper = new UpdateWrapper<>();
-        objectiveUpdateWrapper.lambda().set(MarkStudent::getObjectiveScore, markStudent.getObjectiveScore())
-                .set(MarkStudent::getObjectiveScoreList, markStudent.getObjectiveScoreList())
-                .eq(MarkStudent::getId, markStudent.getId());
+        LambdaUpdateWrapper<MarkStudent> lambdaUpdateWrapper = objectiveUpdateWrapper.lambda();
+        lambdaUpdateWrapper.set(MarkStudent::getObjectiveScore, markStudent.getObjectiveScore())
+                .set(MarkStudent::getObjectiveScoreList, markStudent.getObjectiveScoreList());
+        if (markStudent.getCheckUserId() != null) {
+            lambdaUpdateWrapper.set(MarkStudent::getCheckUserId, markStudent.getCheckUserId());
+        }
+        if (markStudent.getCheckTime() != null) {
+            lambdaUpdateWrapper.set(MarkStudent::getCheckTime, markStudent.getCheckTime());
+        }
+        lambdaUpdateWrapper.eq(MarkStudent::getId, markStudent.getId());
         this.update(objectiveUpdateWrapper);
     }
 

+ 8 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/Calculator.java

@@ -7,6 +7,7 @@ import java.util.List;
 import org.apache.commons.collections4.CollectionUtils;
 
 import com.qmth.boot.core.exception.StatusException;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * 计算器
@@ -146,7 +147,6 @@ public class Calculator {
      *
      * @param v1
      * @param v2
-     * @param len
      * @return
      */
     public static double divide(double v1, double v2) {
@@ -182,4 +182,11 @@ public class Calculator {
         }
         return new BigDecimal(value).setScale(length, RoundingMode.HALF_UP).doubleValue();
     }
+
+    public static String round(String value, int length) {
+        if (StringUtils.isBlank(value)) {
+            return null;
+        }
+        return new BigDecimal(value).setScale(length, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString();
+    }
 }