|
@@ -1,14 +1,34 @@
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
+
|
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
+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.exception.ParameterException;
|
|
|
|
+import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
|
+import com.qmth.teachcloud.mark.bean.answerbatch.BatchCreateDomain;
|
|
|
|
+import com.qmth.teachcloud.mark.bean.answerbatch.BatchCreateVo;
|
|
|
|
+import com.qmth.teachcloud.mark.bean.answerbatch.Paper;
|
|
|
|
+import com.qmth.teachcloud.mark.bean.answerbatch.Rescan;
|
|
|
|
+import com.qmth.teachcloud.mark.bean.scanpaper.PaperVo;
|
|
|
|
+import com.qmth.teachcloud.mark.entity.MarkStudent;
|
|
import com.qmth.teachcloud.mark.entity.ScanBatch;
|
|
import com.qmth.teachcloud.mark.entity.ScanBatch;
|
|
|
|
+import com.qmth.teachcloud.mark.entity.ScanPaperPage;
|
|
|
|
+import com.qmth.teachcloud.mark.enums.BatchStatus;
|
|
import com.qmth.teachcloud.mark.mapper.ScanBatchMapper;
|
|
import com.qmth.teachcloud.mark.mapper.ScanBatchMapper;
|
|
|
|
+import com.qmth.teachcloud.mark.service.MarkStudentService;
|
|
import com.qmth.teachcloud.mark.service.ScanBatchService;
|
|
import com.qmth.teachcloud.mark.service.ScanBatchService;
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import com.qmth.teachcloud.mark.service.ScanPaperPageService;
|
|
|
|
+import com.qmth.teachcloud.mark.service.ScanPaperService;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
- * 服务实现类
|
|
|
|
|
|
+ * 服务实现类
|
|
* </p>
|
|
* </p>
|
|
*
|
|
*
|
|
* @author xf
|
|
* @author xf
|
|
@@ -17,4 +37,78 @@ import org.springframework.stereotype.Service;
|
|
@Service
|
|
@Service
|
|
public class ScanBatchServiceImpl extends ServiceImpl<ScanBatchMapper, ScanBatch> implements ScanBatchService {
|
|
public class ScanBatchServiceImpl extends ServiceImpl<ScanBatchMapper, ScanBatch> implements ScanBatchService {
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private MarkStudentService markStudentService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ScanPaperService scanPaperService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ScanPaperPageService scanPaperPageService;
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ @Override
|
|
|
|
+ public BatchCreateVo batchCreate(BatchCreateDomain domain,SysUser sysUser) {
|
|
|
|
+ List<Rescan> rescan = new ArrayList<>();
|
|
|
|
+ String packageCode = null;
|
|
|
|
+ for (String studentCode : domain.getStudentCodes()) {
|
|
|
|
+ MarkStudent student = markStudentService.findByExamIdAndCoursePaperIdAndStudentCode(domain.getExamId(),
|
|
|
|
+ domain.getCoursePaperId(), studentCode);
|
|
|
|
+ if (student == null) {
|
|
|
|
+ throw new ParameterException("未找到考生信息:" + studentCode);
|
|
|
|
+ }
|
|
|
|
+ Rescan rc = getRescan(student);
|
|
|
|
+ if (rc != null) {
|
|
|
|
+ rescan.add(rc);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ScanBatch b = new ScanBatch();
|
|
|
|
+ b.setExamId(domain.getExamId());
|
|
|
|
+ b.setUserId(sysUser.getId());
|
|
|
|
+ b.setPackageCode(packageCode);
|
|
|
|
+ b.setCoursePaperId(domain.getCoursePaperId());
|
|
|
|
+ b.setAssignedCount(0);
|
|
|
|
+ b.setScanCount(0);
|
|
|
|
+ b.setStatus(BatchStatus.INIT);
|
|
|
|
+ this.save(b);
|
|
|
|
+
|
|
|
|
+ BatchCreateVo vo = new BatchCreateVo();
|
|
|
|
+ vo.setRescan(rescan);
|
|
|
|
+ vo.setId(b.getId());
|
|
|
|
+ vo.setCreateTime(b.getCreateTime());
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Rescan getRescan(MarkStudent student) {
|
|
|
|
+ Rescan res = new Rescan();
|
|
|
|
+ res.setStudentCode(student.getStudentCode());
|
|
|
|
+ List<PaperVo> papers = scanPaperService.findStudentPaper(student.getId());
|
|
|
|
+ List<Paper> resPapers = new ArrayList<>();
|
|
|
|
+ res.setPapers(resPapers);
|
|
|
|
+ if (CollectionUtils.isEmpty(papers)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ PaperVo first = papers.get(0);
|
|
|
|
+ res.setBatchId(first.getBatchId());
|
|
|
|
+ res.setUser(first.getUserName());
|
|
|
|
+ res.setCreateTime(first.getCreateTime());
|
|
|
|
+ for (PaperVo paper : papers) {
|
|
|
|
+ Paper p = new Paper();
|
|
|
|
+ p.setId(paper.getId());
|
|
|
|
+ p.setNumber(paper.getNumber());
|
|
|
|
+ p.setMismatch(paper.getMismatch());
|
|
|
|
+ List<String> pages = new ArrayList<>();
|
|
|
|
+ p.setPages(pages);
|
|
|
|
+ List<ScanPaperPage> paperPages = scanPaperPageService.listByPaperId(paper.getId());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(paperPages)) {
|
|
|
|
+ for (ScanPaperPage pp : paperPages) {
|
|
|
|
+ pages.add(pp.getSheetPath());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ resPapers.add(p);
|
|
|
|
+ }
|
|
|
|
+ return res;
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|