浏览代码

修复统分bug

yin 3 月之前
父节点
当前提交
635ecd8e24

+ 18 - 26
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkQuestionController.java

@@ -1,43 +1,36 @@
 package com.qmth.distributed.print.api.mark;
 
+import java.util.List;
+import java.util.Objects;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.distributed.print.business.entity.ExamCard;
-import com.qmth.distributed.print.business.entity.ExamTaskDetail;
-import com.qmth.distributed.print.business.service.ExamCardService;
-import com.qmth.distributed.print.business.service.ExamTaskDetailService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
-import com.qmth.teachcloud.common.bean.params.mark.group.QuestionPictureConfigParams;
-import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.enums.CardCreateMethodEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
-import com.qmth.distributed.print.business.util.ExamTaskUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
-import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupTaskDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkQuestionDto;
-import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.MarkQuestionAnswer;
 import com.qmth.teachcloud.mark.params.MarkObjectiveQuestionParams;
 import com.qmth.teachcloud.mark.params.MarkQuestionParams;
-import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.MarkQuestionAnswerService;
 import com.qmth.teachcloud.mark.service.MarkQuestionService;
+import com.qmth.teachcloud.mark.service.MarkStudentService;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-import java.util.Objects;
 
 /**
  * <p>
@@ -58,11 +51,7 @@ public class MarkQuestionController extends BaseController {
     @Resource
     private MarkQuestionAnswerService markQuestionAnswerService;
     @Resource
-    private ExamTaskDetailService examTaskDetailService;
-    @Resource
-    private MarkPaperService markPaperService;
-    @Resource
-    private ExamCardService examCardService;
+    private MarkStudentService markStudentService;
 
     /**
      * 试卷结构查询
@@ -126,6 +115,9 @@ public class MarkQuestionController extends BaseController {
     @OperationLogDetail(operationType = OperationTypeEnum.ADD, detail = "客观题标答提交操作,考试ID:{{markObjectiveQuestionParams.examId}}、试卷编号:{{markObjectiveQuestionParams.paperNumber}}")
     public Result saveObjective(@RequestBody MarkObjectiveQuestionParams markObjectiveQuestionParams) {
         markQuestionService.saveObjectiveQuestions(markObjectiveQuestionParams);
+        // 统分
+        markStudentService.calcObjectiveScore(markObjectiveQuestionParams.getExamId(), markObjectiveQuestionParams.getPaperNumber());
+
         return ResultUtil.ok(true);
     }
 

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkStudentMapper.java

@@ -163,7 +163,7 @@ public interface MarkStudentMapper extends BaseMapper<MarkStudent> {
      * @param limit
      * @return
      */
-    List<MarkStudent> findNeedScoreCalculateStudent(@Param("limit") String limit);
+    IPage<MarkStudent> findNeedScoreCalculateStudent(@Param("page") Page<MarkStudent> page);
 
     BasicExam getBasicExamById(@Param("examId") Long examId);
 }

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

@@ -7,8 +7,6 @@ import java.util.Set;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotNull;
 
-import com.qmth.teachcloud.mark.dto.mark.manage.TaskArchive;
-import com.qmth.teachcloud.mark.dto.mark.score.StudentObjectiveAnswerDto;
 import org.springframework.web.multipart.MultipartFile;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -38,7 +36,9 @@ import com.qmth.teachcloud.mark.dto.ScanOmrTaskStatusDto;
 import com.qmth.teachcloud.mark.dto.mark.AbInfoVo;
 import com.qmth.teachcloud.mark.dto.mark.MarkStudentVo;
 import com.qmth.teachcloud.mark.dto.mark.manage.Task;
+import com.qmth.teachcloud.mark.dto.mark.manage.TaskArchive;
 import com.qmth.teachcloud.mark.dto.mark.score.SheetUrlDto;
+import com.qmth.teachcloud.mark.dto.mark.score.StudentObjectiveAnswerDto;
 import com.qmth.teachcloud.mark.dto.mark.score.StudentObjectiveDetailDto;
 import com.qmth.teachcloud.mark.dto.mark.score.StudentScoreDetailDto;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
@@ -291,7 +291,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
      *
      * @return
      */
-    List<MarkStudent> findNeedScoreCalculateStudent();
+    IPage<MarkStudent> findNeedScoreCalculateStudent(Page<MarkStudent> page);
 
     void historyExport(ArchiveStudentQuery query, HttpServletResponse response) throws IOException;
 

+ 0 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -412,10 +412,6 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
             updateWrapper.lambda().eq(MarkQuestionAnswer::getId, answer.getId());
             markQuestionAnswerService.update(updateWrapper);
         }
-
-        // 统分
-        markStudentService.calcObjectiveScore(markObjectiveQuestionParams.getExamId(), markObjectiveQuestionParams.getPaperNumber());
-
         //发送阅卷待办短信
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markObjectiveQuestionParams.getExamId(), markObjectiveQuestionParams.getPaperNumber());
         Objects.requireNonNull(markPaper, "未找到试卷信息");

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

@@ -18,7 +18,6 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotNull;
 
-import com.qmth.teachcloud.mark.dto.mark.manage.TaskArchive;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -76,6 +75,7 @@ import com.qmth.teachcloud.mark.dto.ScanOmrTaskStatusDto;
 import com.qmth.teachcloud.mark.dto.UnexistStudentDto;
 import com.qmth.teachcloud.mark.dto.mark.*;
 import com.qmth.teachcloud.mark.dto.mark.manage.Task;
+import com.qmth.teachcloud.mark.dto.mark.manage.TaskArchive;
 import com.qmth.teachcloud.mark.dto.mark.manage.TrackDTO;
 import com.qmth.teachcloud.mark.dto.mark.score.*;
 import com.qmth.teachcloud.mark.entity.*;
@@ -2501,9 +2501,10 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
      * @return
      */
     @Override
-    public List<MarkStudent> findNeedScoreCalculateStudent() {
-        SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.MARK_SCORE_CALCULATE_JOB_DB_LIMIT);
-        return this.baseMapper.findNeedScoreCalculateStudent(Objects.isNull(sysConfig) ? "limit 0,500" : sysConfig.getConfigValue());
+    public IPage<MarkStudent> findNeedScoreCalculateStudent(Page<MarkStudent> page) {
+//        SysConfig sysConfig = commonCacheService.addSysConfigCache(SystemConstant.MARK_SCORE_CALCULATE_JOB_DB_LIMIT);
+        return this.baseMapper.findNeedScoreCalculateStudent(page);
+
     }
 
     @Override

+ 0 - 3
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -1106,9 +1106,6 @@
                           ms.id = mt.student_id)
         </where>
         order by ms.id
-        <if test="limit != null and limit != ''">
-            ${limit}
-        </if>
     </select>
     <select id="getBasicExamById" resultType="com.qmth.teachcloud.common.entity.BasicExam">
         select * from basic_exam be where be.id = #{examId}

+ 23 - 14
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -1,5 +1,20 @@
 package com.qmth.teachcloud.task.job.service.impl;
 
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.redis.uid.RedisMachineService;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
 import com.qmth.distributed.print.business.entity.*;
@@ -28,18 +43,6 @@ import com.qmth.teachcloud.mark.lock.LockService;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.TaskLockUtil;
 import com.qmth.teachcloud.task.job.service.JobService;
-import org.apache.commons.collections4.CollectionUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
 
 /**
  * @Description: job service impl
@@ -249,8 +252,11 @@ public class JobServiceImpl implements JobService {
      */
     @Override
     public void markScoreCalculate() {
-        List<MarkStudent> markStudentList = markStudentService.findNeedScoreCalculateStudent();
-        if (CollectionUtils.isNotEmpty(markStudentList)) {
+        Integer pageNumber = 0;
+        Integer pageSize = 500;
+        Page<MarkStudent> page = new Page<>(pageNumber, pageSize);
+        List<MarkStudent> markStudentList = markStudentService.findNeedScoreCalculateStudent(page).getRecords();
+        while(CollectionUtils.isNotEmpty(markStudentList)){
             for (MarkStudent m : markStudentList) {
                 try {
                     markService.checkStudentSubjective(m.getId(), m.getExamId(), m.getPaperNumber(), m.getVersion());
@@ -258,6 +264,9 @@ public class JobServiceImpl implements JobService {
                     log.error(SystemConstant.LOG_ERROR, e);
                 }
             }
+            pageNumber++;
+            page =  new Page<>(pageNumber, pageSize);
+            markStudentList =markStudentService.findNeedScoreCalculateStudent(page).getRecords();
         }
     }