Sfoglia il codice sorgente

3.3.0 二次识别

ting.yin 1 anno fa
parent
commit
86ef0a6823

+ 23 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/ScanAnswerController.java

@@ -1,11 +1,22 @@
 package com.qmth.distributed.print.api.mark;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
 
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.mark.dto.refix.AnswerRefixDomain;
+import com.qmth.teachcloud.mark.dto.refix.AnswerRefixVo;
+import com.qmth.teachcloud.mark.service.ScanRefixBatchService;
+
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
 
 /**
  * <p>
@@ -20,4 +31,14 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_SCAN + "/answer")
 public class ScanAnswerController {
 
+	@Autowired
+	private ScanRefixBatchService refixBatchService;
+
+	@ApiOperation(value = "答题卡二次识别")
+	@RequestMapping(value = "refix", method = RequestMethod.POST)
+	public AnswerRefixVo refix(@Validated @RequestBody AnswerRefixDomain query) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+		return refixBatchService.answerRefix(user, query);
+	}
+
 }

+ 67 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/refix/AnswerRefixDomain.java

@@ -0,0 +1,67 @@
+package com.qmth.teachcloud.mark.dto.refix;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+public class AnswerRefixDomain {
+
+    @NotNull(message = "考试Id不能为空")
+    private Long examId;
+
+    @NotBlank(message = "准考证号不能为空")
+    private String examNumber;
+
+    @NotNull(message = "卡格式编号不能为空")
+    @Min(value = 1, message = "卡格式编号不能小于1")
+    private Integer cardNumber;
+
+    @Valid
+    @NotNull(message = "paper不能为空")
+    @Size(min = 1, message = "paper不能为空")
+    private List<PaperRefixDomain> papers;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public Integer getCardNumber() {
+        return cardNumber;
+    }
+
+    public void setCardNumber(Integer cardNumber) {
+        this.cardNumber = cardNumber;
+    }
+
+    public List<PaperRefixDomain> getPapers() {
+        return papers;
+    }
+
+    public void setPapers(List<PaperRefixDomain> papers) {
+        this.papers = papers;
+    }
+
+    public PaperRefixDomain findPaperDomain(Integer paperNumber, Long paperId) {
+        for (PaperRefixDomain domain : papers) {
+            if (domain.getId().equals(paperId) && domain.getNumber().equals(paperNumber)) {
+                return domain;
+            }
+        }
+        return null;
+    }
+}

+ 21 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/refix/AnswerRefixVo.java

@@ -0,0 +1,21 @@
+package com.qmth.teachcloud.mark.dto.refix;
+
+public class AnswerRefixVo {
+
+    private Long updateTime;
+
+    public static AnswerRefixVo create() {
+        AnswerRefixVo vo = new AnswerRefixVo();
+        vo.setUpdateTime(System.currentTimeMillis());
+        return vo;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}

+ 106 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/refix/PageRefixDomain.java

@@ -0,0 +1,106 @@
+package com.qmth.teachcloud.mark.dto.refix;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+import com.qmth.teachcloud.mark.bean.ArrayResult;
+import com.qmth.teachcloud.mark.bean.BoolResult;
+import com.qmth.teachcloud.mark.bean.StringResult;
+import com.qmth.teachcloud.mark.entity.ScanPaperPage;
+
+public class PageRefixDomain {
+
+	@NotNull(message = "paper.page.index不能为空")
+	@Min(value = 1, message = "paper.page.index不能小于1")
+	private Integer index;
+
+	private String sheetUri;
+
+	private BoolResult absent;
+
+	private BoolResult breach;
+
+	private StringResult paperType;
+
+	private ArrayResult question;
+
+	private ArrayResult selective;
+
+	private String recogData;
+
+	public Integer getIndex() {
+		return index;
+	}
+
+	public void setIndex(Integer index) {
+		this.index = index;
+	}
+
+	public String getSheetUri() {
+		return sheetUri;
+	}
+
+	public void setSheetUri(String sheetUri) {
+		this.sheetUri = sheetUri;
+	}
+
+	public BoolResult getAbsent() {
+		return absent;
+	}
+
+	public void setAbsent(BoolResult absent) {
+		this.absent = absent;
+	}
+
+	public BoolResult getBreach() {
+		return breach;
+	}
+
+	public void setBreach(BoolResult breach) {
+		this.breach = breach;
+	}
+
+	public StringResult getPaperType() {
+		return paperType;
+	}
+
+	public void setPaperType(StringResult paperType) {
+		this.paperType = paperType;
+	}
+
+	public ArrayResult getQuestion() {
+		return question;
+	}
+
+	public void setQuestion(ArrayResult question) {
+		this.question = question;
+	}
+
+	public ArrayResult getSelective() {
+		return selective;
+	}
+
+	public void setSelective(ArrayResult selective) {
+		this.selective = selective;
+	}
+
+	public String getRecogData() {
+		return recogData;
+	}
+
+	public void setRecogData(String recogData) {
+		this.recogData = recogData;
+	}
+
+	public ScanPaperPage update(ScanPaperPage page) {
+		page.setSheetPath(sheetUri);
+		page.setAbsent(absent);
+		page.setBreach(breach);
+//		page.setPaperType(paperType);
+		page.setQuestion(question);
+		page.setSelective(selective);
+		page.setRecogData(recogData);
+//		page.checkPaperType(barcodeContents);
+		return page;
+	}
+}

+ 57 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/refix/PaperRefixDomain.java

@@ -0,0 +1,57 @@
+package com.qmth.teachcloud.mark.dto.refix;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+public class PaperRefixDomain {
+
+    @NotNull(message = "paper.id不能为空")
+    private Long id;
+
+    @NotNull(message = "paper.number不能为空")
+    @Min(value = 1, message = "paper.number不能小于1")
+    private Integer number;
+
+    @NotNull(message = "paper.mismatch不能为空")
+    private Boolean mismatch;
+
+    @Valid
+    @NotNull(message = "pages不能为空")
+    @Size(min = 1, message = "pages不能为空")
+    private List<PageRefixDomain> pages;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Boolean getMismatch() {
+        return mismatch;
+    }
+
+    public void setMismatch(Boolean mismatch) {
+        this.mismatch = mismatch;
+    }
+
+    public List<PageRefixDomain> getPages() {
+        return pages;
+    }
+
+    public void setPages(List<PageRefixDomain> pages) {
+        this.pages = pages;
+    }
+}

+ 5 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanRefixBatchService.java

@@ -1,5 +1,8 @@
 package com.qmth.teachcloud.mark.service;
 
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.mark.dto.refix.AnswerRefixDomain;
+import com.qmth.teachcloud.mark.dto.refix.AnswerRefixVo;
 import com.qmth.teachcloud.mark.entity.ScanRefixBatch;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -13,4 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ScanRefixBatchService extends IService<ScanRefixBatch> {
 
+	AnswerRefixVo answerRefix(SysUser user, AnswerRefixDomain query);
+
 }

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanOmrTaskServiceImpl.java

@@ -80,6 +80,7 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
 	private static final String OMR_BLANK = "#";
 
 	@Override
+	@Transactional
 	public ScanOmrTask buildTask(ConditionType c, Long studentId) {
 		List<ScanStudentPaper> paperIds = clearAndToDispose(c, studentId);
 		if (CollectionUtils.isEmpty(paperIds)) {
@@ -469,6 +470,7 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
 	}
 
 	@Override
+	@Transactional
 	public ScanOmrTaskSaveDto submitTask(@NotNull ScanOmrTaskResultDto result, @NotNull SysUser user) {
 		ScanOmrTask task = this.getById(result.getId());
 		if (task == null) {

+ 48 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanRefixBatchServiceImpl.java

@@ -1,20 +1,64 @@
 package com.qmth.teachcloud.mark.service.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.core.concurrent.service.ConcurrentService;
+import com.qmth.boot.core.exception.ParameterException;
+import com.qmth.teachcloud.common.entity.MarkStudent;
+import com.qmth.teachcloud.common.entity.ScanAnswerCard;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.service.MarkStudentService;
+import com.qmth.teachcloud.common.service.ScanAnswerCardService;
+import com.qmth.teachcloud.mark.dto.refix.AnswerRefixDomain;
+import com.qmth.teachcloud.mark.dto.refix.AnswerRefixVo;
+import com.qmth.teachcloud.mark.dto.refix.PageRefixDomain;
+import com.qmth.teachcloud.mark.dto.refix.PaperRefixDomain;
+import com.qmth.teachcloud.mark.entity.ScanPaper;
+import com.qmth.teachcloud.mark.entity.ScanPaperPage;
 import com.qmth.teachcloud.mark.entity.ScanRefixBatch;
+import com.qmth.teachcloud.mark.entity.ScanStudentPaper;
+import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.mark.mapper.ScanRefixBatchMapper;
+import com.qmth.teachcloud.mark.service.ScanPaperPageService;
+import com.qmth.teachcloud.mark.service.ScanPaperService;
 import com.qmth.teachcloud.mark.service.ScanRefixBatchService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
+import com.qmth.teachcloud.mark.service.ScanStudentPaperService;
+
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author xf
  * @since 2023-09-22
  */
 @Service
-public class ScanRefixBatchServiceImpl extends ServiceImpl<ScanRefixBatchMapper, ScanRefixBatch> implements ScanRefixBatchService {
+public class ScanRefixBatchServiceImpl extends ServiceImpl<ScanRefixBatchMapper, ScanRefixBatch>
+		implements ScanRefixBatchService {
+	@Autowired
+	private ScanStudentPaperService studentPaperService;
+	@Autowired
+	private MarkStudentService studentService;
+	@Autowired
+	private ScanPaperService paperService;
+	@Autowired
+	private ScanPaperPageService paperPageService;
+	@Autowired
+	private ConcurrentService concurrentService;
+	@Autowired
+	private ScanAnswerCardService answerCardService;
+
+	@Transactional
+	@Override
+	public AnswerRefixVo answerRefix(SysUser user, AnswerRefixDomain domain) {
+		return null;
+	}
 
 }