Procházet zdrojové kódy

新增需求设置评卷点

yin před 8 měsíci
rodič
revize
4cb658f4e9

+ 2 - 2
install/mysql/init/scan_central_db.sql

@@ -553,8 +553,8 @@ CREATE TABLE IF NOT EXISTS `sc_mark_site`
     `exam_id`      bigint       NOT NULL,
     `subject_code` varchar(100) NOT NULL,
     `paper_type`   varchar(100) NOT NULL,
-    `odd_number`   varchar(100) NOT NULL,
-    `even_number`  varchar(100) NOT NULL,
+    `odd_number`   varchar(100) DEFAULT NULL,
+    `even_number`  varchar(100) DEFAULT NULL,
     `creator_id`   bigint DEFAULT NULL,
     `updater_id`   bigint DEFAULT NULL,
     `create_time`  bigint DEFAULT NULL,

+ 1 - 1
src/main/java/cn/com/qmth/scancentral/controller/admin/ExamController.java

@@ -134,7 +134,7 @@ public class ExamController extends BaseController {
     //
     // @ApiOperation(value = "修改考试科目参数")
     // @RequestMapping(value = "/subject/config", method = RequestMethod.POST)
-    // public SubjectConfigVo subjectConfig(@Validated SubjectConfigDomain
+    // public SubjectConfig subjectConfig(@Validated SubjectConfigDomain
     // domain) {
     // User user = getAccessUser();
     // return subjectService.config(user, domain);

+ 4 - 0
src/main/java/cn/com/qmth/scancentral/service/MarkSiteService.java

@@ -2,6 +2,7 @@ package cn.com.qmth.scancentral.service;
 
 import java.util.List;
 
+import cn.com.qmth.scancentral.vo.SubjectConfigVo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.boot.core.collection.PageResult;
 
@@ -19,4 +20,7 @@ public interface MarkSiteService extends IService<MarkSiteEntity> {
 
     List<MarkSiteEntity> findByExamAndSubject(Long examId, String subejctCode);
 
+    List<SubjectConfigVo> findByExam(Long examId);
+
+    void saveByExamIdAndSubjectCode(Long examId,List<SubjectConfigVo> paperTypeBarcodeContent);
 }

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

@@ -2,6 +2,7 @@ package cn.com.qmth.scancentral.service;
 
 import java.util.List;
 
+import cn.com.qmth.scancentral.vo.SubjectConfig;
 import cn.com.qmth.scancentral.vo.UpdateTimeVo;
 import com.github.jeffreyning.mybatisplus.service.IMppService;
 
@@ -9,8 +10,6 @@ import cn.com.qmth.scancentral.bean.ImportSubjectDomain;
 import cn.com.qmth.scancentral.bean.SubjectConfigDomain;
 import cn.com.qmth.scancentral.bean.User;
 import cn.com.qmth.scancentral.entity.SubjectEntity;
-import cn.com.qmth.scancentral.vo.SubjectConfigVo;
-import cn.com.qmth.scancentral.vo.examinfo.SubjectConfig;
 import cn.com.qmth.scancentral.vo.omr.OmrSubjectVo;
 import cn.com.qmth.scancentral.vo.subject.DataExportTaskVo;
 import cn.com.qmth.scancentral.vo.subject.ScanProgressVo;
@@ -28,9 +27,9 @@ public interface SubjectService extends IMppService<SubjectEntity> {
 
     int importSubject(List<ImportSubjectDomain> subjects);
 
-    SubjectConfigVo config(User user, SubjectConfigDomain domain);
+    SubjectConfig config(User user, SubjectConfigDomain domain);
 
-    List<SubjectConfig> listConfigByExamId(Long examId);
+    List<cn.com.qmth.scancentral.vo.examinfo.SubjectConfig> listConfigByExamId(Long examId);
 
     ScanProgressVo scanProgress(Long examId, String subjectCode);
 

+ 10 - 15
src/main/java/cn/com/qmth/scancentral/service/impl/ExamServiceImpl.java

@@ -2,6 +2,7 @@ package cn.com.qmth.scancentral.service.impl;
 
 import java.util.List;
 
+import cn.com.qmth.scancentral.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,16 +34,6 @@ import cn.com.qmth.scancentral.enums.OP;
 import cn.com.qmth.scancentral.enums.Role;
 import cn.com.qmth.scancentral.enums.TaskStatus;
 import cn.com.qmth.scancentral.exception.ParameterExceptions;
-import cn.com.qmth.scancentral.service.AnswerCardService;
-import cn.com.qmth.scancentral.service.BatchService;
-import cn.com.qmth.scancentral.service.ExamService;
-import cn.com.qmth.scancentral.service.ExamSummaryService;
-import cn.com.qmth.scancentral.service.OmrGroupService;
-import cn.com.qmth.scancentral.service.OmrTaskService;
-import cn.com.qmth.scancentral.service.PackageCardService;
-import cn.com.qmth.scancentral.service.PackageTaskService;
-import cn.com.qmth.scancentral.service.StudentService;
-import cn.com.qmth.scancentral.service.SubjectService;
 import cn.com.qmth.scancentral.util.JsonMapper;
 import cn.com.qmth.scancentral.util.MathUtil;
 import cn.com.qmth.scancentral.util.PageUtil;
@@ -91,6 +82,9 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
     @Autowired
     private ExamSummaryService examSummaryService;
 
+    @Autowired
+    private MarkSiteService markSiteService;
+
     @Override
     public PageResult<ExamVo> pageQuery(ExamQuery query, User user) {
         query.setEnable(true);
@@ -307,7 +301,7 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
 
         ExamConfigVo vo = new ExamConfigVo();
         vo.setExamId(exam.getId());
-        vo.setPaperTypeBarcodeContent(exam.getPaperTypeBarcodeContent());
+        vo.setPaperTypeBarcodeContent(markSiteService.findByExam(examId));
         vo.setImageCheckRatio(exam.getImageCheckRatio());
         vo.setImageCheckOrder(exam.getImageCheckOrder());
         vo.setEnableSyncVerify(exam.getEnableSyncVerify());
@@ -329,10 +323,6 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
         }
 
         LambdaUpdateWrapper<ExamEntity> updateWrapper = Wrappers.lambdaUpdate(ExamEntity.class);
-        if (config.getPaperTypeBarcodeContent() != null) {
-            updateWrapper.setSql("paper_type_barcode_content = '"
-                    + new JsonMapper().toJson(config.getPaperTypeBarcodeContent()) + "'");
-        }
         if (config.getImageCheckRatio() != null) {
             updateWrapper.set(ExamEntity::getImageCheckRatio, config.getImageCheckRatio());
         }
@@ -354,6 +344,11 @@ public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements
         updateWrapper.eq(ExamEntity::getId, config.getExamId());
         this.update(updateWrapper);
 
+
+        if (config.getPaperTypeBarcodeContent() != null &&!config.getPaperTypeBarcodeContent().isEmpty()) {
+            markSiteService.saveByExamIdAndSubjectCode(config.getExamId(),config.getPaperTypeBarcodeContent());
+        }
+
         if (config.getEnableSyncVerify() != null && !config.getEnableSyncVerify()) {
             // batchService.batchVerifyCancel(user, config.getExamId());
         }

+ 43 - 0
src/main/java/cn/com/qmth/scancentral/service/impl/MarkSiteServiceImpl.java

@@ -1,7 +1,11 @@
 package cn.com.qmth.scancentral.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
+import cn.com.qmth.scancentral.vo.SubjectConfigVo;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -90,4 +94,43 @@ public class MarkSiteServiceImpl extends ServiceImpl<MarkSiteDao, MarkSiteEntity
         return this.list(wrapper);
     }
 
+    @Override
+    public List<SubjectConfigVo> findByExam(Long examId) {
+        QueryWrapper<MarkSiteEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<MarkSiteEntity> lw = wrapper.lambda();
+        lw.eq(MarkSiteEntity::getExamId, examId);
+        List<MarkSiteEntity> list = this.list(wrapper);
+        List<SubjectConfigVo> result = new ArrayList<>();
+        Map<String, List<MarkSiteEntity>> map = list.stream().collect(Collectors.groupingBy(MarkSiteEntity::getSubjectCode));
+        for (String subjectCode: map.keySet()) {
+            SubjectConfigVo vo = new SubjectConfigVo();
+            vo.setCode(subjectCode);
+            vo.setPaperTypeBarcodeContent(map.get(subjectCode).stream().map(MarkSiteEntity::getPaperType).collect(Collectors.toList()));
+            result.add(vo);
+        }
+        return result;
+    }
+
+    @Override
+    @Transactional
+    public void saveByExamIdAndSubjectCode(Long examId, List<SubjectConfigVo> paperTypeBarcodeContent) {
+        List<MarkSiteEntity> saveList = new ArrayList<>();
+        for (SubjectConfigVo vo: paperTypeBarcodeContent) {
+            List<MarkSiteEntity> oldList = this.findByExamAndSubject(examId,vo.getCode());
+            List<MarkSiteEntity> deleteList = oldList.stream().filter(e->!vo.getPaperTypeBarcodeContent().contains(e.getPaperType())).collect(Collectors.toList());
+            this.removeByIds(deleteList);
+            List<String> existPaperTypeList = oldList.stream().filter(e->vo.getPaperTypeBarcodeContent().contains(e.getPaperType())).map(MarkSiteEntity::getPaperType).collect(Collectors.toList());
+            for (String paperType: vo.getPaperTypeBarcodeContent()) {
+                if(existPaperTypeList.contains(paperType)){
+                    continue;
+                }
+                MarkSiteEntity e = new MarkSiteEntity();
+                e.setExamId(examId);
+                e.setSubjectCode(vo.getCode());
+                e.setPaperType(paperType);
+                saveList.add(e);
+            }
+        }
+        this.saveBatch(saveList);
+    }
 }

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

@@ -487,7 +487,11 @@ public class OmrTaskServiceImpl extends ServiceImpl<OmrTaskDao, OmrTaskEntity> i
             }
         }
         if (task == null) {
-            throw NotFoundExceptions.NO_OMR_ARBITRATE_TASK;
+            if(isArbitrate){
+                throw NotFoundExceptions.NO_OMR_ARBITRATE_TASK;
+            }else{
+                throw NotFoundExceptions.NO_OMR_TASK;
+            }
         }
         return task;
     }

+ 5 - 6
src/main/java/cn/com/qmth/scancentral/service/impl/SubjectServiceImpl.java

@@ -62,7 +62,6 @@ import cn.com.qmth.scancentral.support.SpringContextHolder;
 import cn.com.qmth.scancentral.util.Calculator;
 import cn.com.qmth.scancentral.util.DateUtil;
 import cn.com.qmth.scancentral.util.FileUtil;
-import cn.com.qmth.scancentral.vo.examinfo.SubjectConfig;
 import cn.com.qmth.scancentral.vo.omr.OmrSubjectVo;
 import cn.com.qmth.scancentral.vo.subject.DataExportTaskVo;
 import cn.com.qmth.scancentral.vo.subject.ScanProgressVo;
@@ -182,25 +181,25 @@ public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity
 
     @Transactional
     @Override
-    public SubjectConfigVo config(User user, SubjectConfigDomain domain) {
+    public SubjectConfig config(User user, SubjectConfigDomain domain) {
         SubjectEntity s = this.findByExamIdAndCode(domain.getExamId(), domain.getSubjectCode());
         if (s == null) {
             throw new ParameterException("找不到对应的科目");
         }
         s.setPaperTypeBarcodeContent(domain.getPaperTypeBarcodeContent());
         this.saveOrUpdateByMultiId(s);
-        return new SubjectConfigVo(s);
+        return new SubjectConfig(s);
     }
 
     @Override
-    public List<SubjectConfig> listConfigByExamId(Long examId) {
+    public List<cn.com.qmth.scancentral.vo.examinfo.SubjectConfig> listConfigByExamId(Long examId) {
         QueryWrapper<SubjectEntity> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(SubjectEntity::getExamId, examId);
         queryWrapper.lambda().isNotNull(SubjectEntity::getPaperTypeBarcodeContent);
         List<SubjectEntity> list = this.list(queryWrapper);
-        List<SubjectConfig> result = new ArrayList<SubjectConfig>();
+        List<cn.com.qmth.scancentral.vo.examinfo.SubjectConfig> result = new ArrayList<cn.com.qmth.scancentral.vo.examinfo.SubjectConfig>();
         for (SubjectEntity subjectEntity : list) {
-            result.add(new SubjectConfig(subjectEntity));
+            result.add(new cn.com.qmth.scancentral.vo.examinfo.SubjectConfig(subjectEntity));
         }
         return result;
     }

+ 4 - 3
src/main/java/cn/com/qmth/scancentral/vo/ExamConfigVo.java

@@ -15,7 +15,8 @@ public class ExamConfigVo {
 
     @ApiModelProperty(value = "卷型条码内容")
     @NotNull(message = "卷型条码内容不能为空")
-    private List<String> paperTypeBarcodeContent;
+//    private List<String> paperTypeBarcodeContent;
+    private List<SubjectConfigVo> paperTypeBarcodeContent;
 
     @ApiModelProperty(value = "图片抽查比例")
     @NotNull(message = "图片抽查比例不能为空")
@@ -48,11 +49,11 @@ public class ExamConfigVo {
         this.examId = examId;
     }
 
-    public List<String> getPaperTypeBarcodeContent() {
+    public List<SubjectConfigVo> getPaperTypeBarcodeContent() {
         return paperTypeBarcodeContent;
     }
 
-    public void setPaperTypeBarcodeContent(List<String> paperTypeBarcodeContent) {
+    public void setPaperTypeBarcodeContent(List<SubjectConfigVo> paperTypeBarcodeContent) {
         this.paperTypeBarcodeContent = paperTypeBarcodeContent;
     }
 

+ 37 - 0
src/main/java/cn/com/qmth/scancentral/vo/SubjectConfig.java

@@ -0,0 +1,37 @@
+package cn.com.qmth.scancentral.vo;
+
+import cn.com.qmth.scancentral.entity.SubjectEntity;
+
+import java.util.List;
+
+public class SubjectConfig {
+
+    private List<String> paperTypeBarcodeContent;
+
+    private Long updateTime;
+
+    public SubjectConfig(SubjectEntity s) {
+        this.paperTypeBarcodeContent = s.getPaperTypeBarcodeContent();
+        this.updateTime = s.getUpdateTime();
+    }
+
+    public SubjectConfig() {
+    }
+
+    public List<String> getPaperTypeBarcodeContent() {
+        return paperTypeBarcodeContent;
+    }
+
+    public void setPaperTypeBarcodeContent(List<String> paperTypeBarcodeContent) {
+        this.paperTypeBarcodeContent = paperTypeBarcodeContent;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}

+ 15 - 11
src/main/java/cn/com/qmth/scancentral/vo/SubjectConfigVo.java

@@ -1,19 +1,16 @@
 package cn.com.qmth.scancentral.vo;
 
-import cn.com.qmth.scancentral.entity.SubjectEntity;
-
 import java.util.List;
 
+import cn.com.qmth.scancentral.entity.SubjectEntity;
+
 public class SubjectConfigVo {
 
     private List<String> paperTypeBarcodeContent;
 
-    private Long updateTime;
+    private String code;
 
-    public SubjectConfigVo(SubjectEntity s) {
-        this.paperTypeBarcodeContent = s.getPaperTypeBarcodeContent();
-        this.updateTime = s.getUpdateTime();
-    }
+//    private String name;
 
     public SubjectConfigVo() {
     }
@@ -26,12 +23,19 @@ public class SubjectConfigVo {
         this.paperTypeBarcodeContent = paperTypeBarcodeContent;
     }
 
-    public Long getUpdateTime() {
-        return updateTime;
+    public String getCode() {
+        return code;
     }
 
-    public void setUpdateTime(Long updateTime) {
-        this.updateTime = updateTime;
+    public void setCode(String code) {
+        this.code = code;
     }
 
+//    public String getName() {
+//        return name;
+//    }
+//
+//    public void setName(String name) {
+//        this.name = name;
+//    }
 }

+ 1 - 1
src/main/java/cn/com/qmth/scancentral/vo/card/CardEdit.java

@@ -22,7 +22,7 @@ public class CardEdit {
     @ApiModelProperty(value = "卡格式文件MD5", required = true)
     private String md5;
 
-    @ApiModelProperty(value = "DPI", hidden = true)
+    @ApiModelProperty(value = "DPI", hidden = false)
     private Integer dpi;
 
     @ApiModelProperty(value = "张数", required = true)