浏览代码

Merge branch 'dev_1.0.0' of http://git.qmth.com.cn/scan-central/server.git into dev_1.0.0

xiatian 9 月之前
父节点
当前提交
c61a42c105

+ 6 - 8
src/main/java/cn/com/qmth/scancentral/controller/admin/OmrGroupController.java

@@ -12,6 +12,7 @@ import cn.com.qmth.scancentral.task.thread.OmrGroupResetThread;
 import cn.com.qmth.scancentral.vo.OmrConditionsVo;
 import cn.com.qmth.scancentral.vo.OmrGroupUpdateVo;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
+import cn.com.qmth.scancentral.vo.ResultVo;
 import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
@@ -59,14 +60,11 @@ public class OmrGroupController extends BaseController {
     }
 
     @ApiOperation(value = "创建修改识别对照任务组")
-    @RequestMapping(value = "/group/save", method = RequestMethod.POST)
-    public JSONObject save(@RequestBody OmrGroupUpdateVo omrGroupUpdateVo) {
-        OmrGroupEntity group = groupService.save(omrGroupUpdateVo.getId(), omrGroupUpdateVo.getExamId(),
-                omrGroupUpdateVo.getConditionList(), getAccessUser().getId());
-        JSONObject result = new JSONObject();
-        result.accumulate("id", group.getId());
-        result.accumulate("updateTime", System.currentTimeMillis());
-        return result;
+    @PostMapping(value = "/group/save")
+    public ResultVo save(@RequestBody OmrGroupUpdateVo vo) {
+        vo.setUserId(getAccessUser().getId());
+        groupService.save(vo);
+        return new ResultVo(System.currentTimeMillis());
     }
 
     @ApiOperation(value = "修改识别对照任务组阶段")

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

@@ -1,7 +1,7 @@
 package cn.com.qmth.scancentral.service;
 
 import cn.com.qmth.scancentral.entity.OmrGroupEntity;
-import cn.com.qmth.scancentral.model.OmrCondition;
+import cn.com.qmth.scancentral.vo.OmrGroupUpdateVo;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
 import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -21,7 +21,7 @@ public interface OmrGroupService extends IService<OmrGroupEntity> {
 
     void updateStage(Long id, Long userId);
 
-    OmrGroupEntity save(Long id, Long examId, List<OmrCondition> conditions, Long userId);
+    void save(OmrGroupUpdateVo vo);
 
     List<OmrGroupEntity> findByExamIdAndFixed(Long examId, Boolean fixed);
 
@@ -29,6 +29,6 @@ public interface OmrGroupService extends IService<OmrGroupEntity> {
 
     void addFixOmrCondition(Long userId, Long examId);
 
-    void updateTotalCountByExamId(Long examId);
+    void updateTotalCountByExamId(Long examId, String subjectCode);
 
 }

+ 38 - 25
src/main/java/cn/com/qmth/scancentral/service/impl/OmrGroupServiceImpl.java

@@ -15,6 +15,7 @@ import cn.com.qmth.scancentral.service.StudentPaperService;
 import cn.com.qmth.scancentral.service.SubjectService;
 import cn.com.qmth.scancentral.util.BatchSetDataUtil;
 import cn.com.qmth.scancentral.vo.OmrConditionVo;
+import cn.com.qmth.scancentral.vo.OmrGroupUpdateVo;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
 import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -206,17 +207,22 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
     }
 
     @Override
-    public OmrGroupEntity save(Long id, Long examId, List<OmrCondition> conditions, Long userId) {
-        if (examId == null) {
+    public void save(OmrGroupUpdateVo vo) {
+        if (vo.getExamId() == null) {
             throw new ParameterException("examId不能为空");
         }
-        if (conditions == null || conditions.isEmpty()) {
+        if (StringUtils.isBlank(vo.getSubjectCode())) {
+            throw new ParameterException("subjectCode不能为空");
+        }
+        List<OmrCondition> conditions = vo.getConditionList();
+        if (CollectionUtils.isEmpty(conditions)) {
             throw new ParameterException("识别对照条件不能为空");
         }
+
         for (OmrCondition omrCondition : conditions) {
-            if (ConditionType.FILL_SUSPECT.equals(omrCondition.getCode())) {
-                throw new ParameterException("识别对照条件不能重复");
-            }
+            // if (ConditionType.FILL_SUSPECT.equals(omrCondition.getCode())) {
+            //     throw new ParameterException("识别对照条件不能重复");
+            // }
             if (ConditionType.QUESTION_SINGLE_BLANK.equals(omrCondition.getCode())
                     || ConditionType.QUESTION_MULTI_BLANK.equals(omrCondition.getCode())
                     || ConditionType.SELECTIVE_EXCEED.equals(omrCondition.getCode())
@@ -229,37 +235,42 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
                 }
             }
         }
-        checkOmrCondition(id, examId, conditions);
-        if (id != null) {
-            OmrGroupEntity group = this.getById(id);
+
+        this.checkOmrCondition(vo.getId(), vo.getExamId(), vo.getSubjectCode(), conditions);
+
+        if (vo.getId() != null) {
+            OmrGroupEntity group = this.getById(vo.getId());
             if (group.getFixed()) {
                 throw new ParameterException("默认分组不能修改");
             }
             if (group.getTotalCount() != null && group.getTotalCount() > 0) {
                 throw new ParameterException("已生成任务的分组不能修改");
             }
-            if (concurrentService.getLock(LockType.OMR_GROUP + "-" + id).tryLock()) {
+
+            if (concurrentService.getLock(LockType.OMR_GROUP + "-" + vo.getId()).tryLock()) {
                 group.setConditions(conditions);
-                group.setUpdaterId(userId);
+                group.setUpdaterId(vo.getUserId());
                 group.setUpdateTime(System.currentTimeMillis());
                 this.saveOrUpdate(group);
-                concurrentService.getLock(LockType.OMR_GROUP + "-" + id).unlock();
-                return group;
+
+                log.info("修改识别对照任务分组!examId:{} subjectCode:{} id:{}", group.getExamId(), group.getSubjectCode(), group.getId());
+                concurrentService.getLock(LockType.OMR_GROUP + "-" + vo.getId()).unlock();
             } else {
                 throw new ReentrantException("该分组数据操作繁忙,请稍后重试");
             }
         } else {
             OmrGroupEntity group = new OmrGroupEntity();
-            group.setExamId(examId);
+            group.setExamId(vo.getExamId());
+            group.setSubjectCode(vo.getSubjectCode());
             group.setConditions(conditions);
-            group.setCreateTime(System.currentTimeMillis());
             group.setFixed(false);
             group.setStage(Stage.FIRST);
             group.setTotalCount(0);
-            group.setCreatorId(userId);
+            group.setCreatorId(vo.getUserId());
             group.setCreateTime(System.currentTimeMillis());
+            group.setUpdateTime(System.currentTimeMillis());
             this.save(group);
-            return group;
+            log.info("新增识别对照任务分组!examId:{} subjectCode:{} id:{}", group.getExamId(), group.getSubjectCode(), group.getId());
         }
     }
 
@@ -272,15 +283,17 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         return baseMapper.selectList(wrapper);
     }
 
-    private void checkOmrCondition(Long id, Long examId, List<OmrCondition> conditions) {
-        List<OmrGroupEntity> list = findByExamId(examId);
+    private void checkOmrCondition(Long id, Long examId, String subjectCode, List<OmrCondition> conditions) {
+        List<OmrGroupEntity> list = findByExamId(examId, subjectCode);
         if (CollectionUtils.isEmpty(list)) {
             return;
         }
+
         Set<String> codes = new HashSet<>();
         for (OmrCondition oc : conditions) {
             codes.add(oc.getCode().name());
         }
+
         for (OmrGroupEntity g : list) {
             for (OmrCondition oc : g.getConditions()) {
                 if (codes.contains(oc.getCode().name()) && (id == null || g.getId().longValue() != id.longValue())) {
@@ -290,10 +303,10 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         }
     }
 
-    private List<OmrGroupEntity> findByExamId(Long examId) {
-        QueryWrapper<OmrGroupEntity> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<OmrGroupEntity> lw = wrapper.lambda();
-        lw.eq(OmrGroupEntity::getExamId, examId);
+    private List<OmrGroupEntity> findByExamId(Long examId, String subjectCode) {
+        LambdaQueryWrapper<OmrGroupEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(OmrGroupEntity::getExamId, examId);
+        wrapper.eq(OmrGroupEntity::getSubjectCode, subjectCode);
         return baseMapper.selectList(wrapper);
     }
 
@@ -326,8 +339,8 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
 
     @Transactional
     @Override
-    public void updateTotalCountByExamId(Long examId) {
-        List<OmrGroupEntity> list = this.findByExamId(examId);
+    public void updateTotalCountByExamId(Long examId, String subjectCode) {
+        List<OmrGroupEntity> list = this.findByExamId(examId, subjectCode);
         for (OmrGroupEntity omrGroupEntity : list) {
             this.updateTotalCount(omrGroupEntity.getId());
         }

+ 28 - 5
src/main/java/cn/com/qmth/scancentral/vo/OmrGroupUpdateVo.java

@@ -2,24 +2,30 @@ package cn.com.qmth.scancentral.vo;
 
 import cn.com.qmth.scancentral.enums.ConditionType;
 import cn.com.qmth.scancentral.model.OmrCondition;
+import io.swagger.annotations.ApiModelProperty;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class OmrGroupUpdateVo {
 
+    private Long id;
+
     private Long examId;
 
-    private Long id;
+    private String subjectCode;
 
     private List<OmrConditionUpdateVo> conditions;
 
-    public Long getExamId() {
-        return examId;
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+
+    public Long getUserId() {
+        return userId;
     }
 
-    public void setExamId(Long examId) {
-        this.examId = examId;
+    public void setUserId(Long userId) {
+        this.userId = userId;
     }
 
     public Long getId() {
@@ -30,6 +36,22 @@ public class OmrGroupUpdateVo {
         this.id = id;
     }
 
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
     public List<OmrConditionUpdateVo> getConditions() {
         return conditions;
     }
@@ -53,4 +75,5 @@ public class OmrGroupUpdateVo {
         }
         return list;
     }
+
 }