Kaynağa Gözat

更新识别对照生成规则

yin 8 ay önce
ebeveyn
işleme
6d18d4dbef

+ 2 - 0
src/main/java/cn/com/qmth/scancentral/service/OmrGroupService.java

@@ -33,4 +33,6 @@ public interface OmrGroupService extends IService<OmrGroupEntity> {
     void updateTotalCount(Long examId, String subjectCode);
 
     List<OmrGroupVo> listByExamIdAndSubjectCode(Long examId, String subjectCode);
+
+    List<OmrGroupEntity> findByExamIdAndSubjectCode(Long examId, String subjectCode);
 }

+ 2 - 0
src/main/java/cn/com/qmth/scancentral/service/OmrTaskService.java

@@ -11,6 +11,7 @@ import cn.com.qmth.scancentral.vo.task.TaskStatusVo;
 import cn.com.qmth.scancentral.vo.task.TaskVo;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Collection;
 import java.util.List;
 
 public interface OmrTaskService extends IService<OmrTaskEntity> {
@@ -65,4 +66,5 @@ public interface OmrTaskService extends IService<OmrTaskEntity> {
 
     OmrTaskOverview countByExamIdAndFixed(Long examId, Boolean fixed);
 
+    List<OmrTaskEntity> findByGroupIdAndStudentId(Long id, Long studentId);
 }

+ 5 - 1
src/main/java/cn/com/qmth/scancentral/service/impl/OmrGroupServiceImpl.java

@@ -109,6 +109,9 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         for (Long studentId : studentIds) {
             try {
                 concurrentService.getLock(LockType.STUDENT + "-" + studentId).lock();
+                if(CollectionUtils.isNotEmpty(taskService.findByGroupIdAndStudentId(group.getId(),studentId))){
+                    continue;
+                }
                 List<OmrTaskEntity> task = taskService.buildTask(group, studentId);
                 if (task != null && !task.isEmpty()) {
                     saveList.addAll(task);
@@ -270,7 +273,8 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         }
     }
 
-    private List<OmrGroupEntity> findByExamIdAndSubjectCode(Long examId, String subjectCode) {
+    @Override
+    public List<OmrGroupEntity> findByExamIdAndSubjectCode(Long examId, String subjectCode) {
         LambdaQueryWrapper<OmrGroupEntity> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(OmrGroupEntity::getExamId, examId);
         wrapper.eq(OmrGroupEntity::getSubjectCode, subjectCode);

+ 9 - 0
src/main/java/cn/com/qmth/scancentral/service/impl/OmrTaskServiceImpl.java

@@ -898,4 +898,13 @@ public class OmrTaskServiceImpl extends ServiceImpl<OmrTaskDao, OmrTaskEntity> i
         return baseMapper.countByExamIdAndFixed(examId, fixed);
     }
 
+    @Override
+    public List<OmrTaskEntity> findByGroupIdAndStudentId(Long groupId, Long studentId) {
+        QueryWrapper<OmrTaskEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<OmrTaskEntity> lw = wrapper.lambda();
+        lw.eq(OmrTaskEntity::getGroupId, groupId);
+        lw.eq(OmrTaskEntity::getStudentId, studentId);
+        return baseMapper.selectList(wrapper);
+    }
+
 }

+ 6 - 4
src/main/java/cn/com/qmth/scancentral/service/impl/StudentServiceImpl.java

@@ -351,14 +351,16 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, StudentEntity> i
         // }
         if (updateOmrTask) {
             // 遍历固定任务分组
-            List<OmrGroupEntity> gs = omrGroupService.findByExamIdAndSubjectCodeAndFixed(student.getExamId(),
-                    student.getSubjectCode(), true);
+            List<OmrGroupEntity> gs = omrGroupService.findByExamIdAndSubjectCode(student.getExamId(),
+                    student.getSubjectCode());
             if (CollectionUtils.isNotEmpty(gs)) {
                 for (OmrGroupEntity g : gs) {
                     concurrentService.getReadWriteLock(LockType.OMR_GROUP + "-" + g.getId()).readLock().lock();
                     omrTaskService.deleteByStudentIdAndGroupId(g.getId(), student.getId());
-                    // 重新生成识别对照任务
-                    omrTaskService.saveTask(g, student.getId());
+                    // 默认分组重新生成识别对照任务,其他任务不生成
+                    if(g.getFixed()){
+                        omrTaskService.saveTask(g, student.getId());
+                    }
                     concurrentService.getReadWriteLock(LockType.OMR_GROUP + "-" + g.getId()).readLock().unlock();
                 }
             }