Переглянути джерело

校验记录,中断记录,校验员校验和中断

ting.yin 3 роки тому
батько
коміт
69cf3b376a

+ 36 - 0
src/main/java/cn/com/qmth/print/manage/controller/BreakRecordController.java

@@ -0,0 +1,36 @@
+package cn.com.qmth.print.manage.controller;
+
+import javax.annotation.Resource;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.print.manage.service.BreakRecordService;
+import cn.com.qmth.print.manage.service.query.RecordQuery;
+
+import com.qmth.boot.api.constant.ApiConstant;
+
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/exam/break")
+public class BreakRecordController {
+
+    @Resource
+    private BreakRecordService breakRecordService;
+
+    @RequestMapping("/page")
+    public Object page(@Validated RecordQuery query) {
+        return breakRecordService.pageQuery(query);
+    }
+
+    @RequestMapping("/start")
+    public Object start(@RequestParam Long examId, @RequestParam String startNumber) {
+        return breakRecordService.list();
+    }
+
+    @RequestMapping("/end")
+    public Object end(@RequestParam Long id, @RequestParam Long examId, @RequestParam String endNumber) {
+        return breakRecordService.list();
+    }
+}

+ 37 - 0
src/main/java/cn/com/qmth/print/manage/controller/CheckRecordController.java

@@ -0,0 +1,37 @@
+package cn.com.qmth.print.manage.controller;
+
+import javax.annotation.Resource;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.print.manage.service.CheckRecordService;
+import cn.com.qmth.print.manage.service.query.RecordQuery;
+
+import com.qmth.boot.api.constant.ApiConstant;
+
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/exam/check")
+public class CheckRecordController {
+
+    @Resource
+    private CheckRecordService checkRecordService;
+
+    @RequestMapping("/page")
+    public Object page(@Validated RecordQuery query) {
+        return checkRecordService.pageQuery(query);
+    }
+
+    @RequestMapping("/start")
+    public Object start(@RequestParam Long examId, @RequestParam String startNumber) {
+        return checkRecordService.start(examId, startNumber);
+    }
+
+    @RequestMapping("/end")
+    public Object end(@RequestParam Long id, @RequestParam Long examId, @RequestParam String endNumber) {
+        return checkRecordService.end(id, examId, endNumber);
+    }
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/print/manage/dao/BreakRecordDao.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.print.manage.dao;
+
+import cn.com.qmth.print.manage.entity.BreakRecordEntity;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface BreakRecordDao extends BaseMapper<BreakRecordEntity> {
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/print/manage/dao/CheckRecordDao.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.print.manage.dao;
+
+import cn.com.qmth.print.manage.entity.CheckRecordEntity;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface CheckRecordDao extends BaseMapper<CheckRecordEntity> {
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/print/manage/dao/ExamDao.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.print.manage.dao;
+
+import cn.com.qmth.print.manage.entity.ExamEntity;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface ExamDao extends BaseMapper<ExamEntity> {
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/print/manage/dao/ExamStudentDao.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.print.manage.dao;
+
+import cn.com.qmth.print.manage.entity.ExamStudentEntity;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface ExamStudentDao extends BaseMapper<ExamStudentEntity> {
+
+}

+ 17 - 0
src/main/java/cn/com/qmth/print/manage/service/BreakRecordService.java

@@ -0,0 +1,17 @@
+package cn.com.qmth.print.manage.service;
+
+import cn.com.qmth.print.manage.entity.BreakRecordEntity;
+import cn.com.qmth.print.manage.service.query.RecordQuery;
+import cn.com.qmth.print.manage.vo.BreakRecordVo;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface BreakRecordService extends IService<BreakRecordEntity> {
+
+    BreakRecordVo start(Long examId, String startNumber);
+
+    BreakRecordVo end(Long id, Long examId, String endNumber);
+
+    IPage<BreakRecordEntity> pageQuery(RecordQuery query);
+}

+ 21 - 0
src/main/java/cn/com/qmth/print/manage/service/CheckRecordService.java

@@ -0,0 +1,21 @@
+package cn.com.qmth.print.manage.service;
+
+import cn.com.qmth.print.manage.entity.CheckRecordEntity;
+import cn.com.qmth.print.manage.enums.GroupType;
+import cn.com.qmth.print.manage.service.query.RecordQuery;
+import cn.com.qmth.print.manage.vo.CheckRecordVo;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface CheckRecordService extends IService<CheckRecordEntity> {
+
+    CheckRecordVo start(Long examId, String startNumber);
+
+    CheckRecordVo end(Long id, Long examId, String endNumber);
+
+    CheckRecordEntity findByGroupTypeAndGroupName(GroupType type, String groupName);
+
+    IPage<CheckRecordEntity> pageQuery(RecordQuery query);
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/print/manage/service/ExamService.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.print.manage.service;
+
+import cn.com.qmth.print.manage.entity.ExamEntity;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface ExamService extends IService<ExamEntity> {
+
+}

+ 14 - 0
src/main/java/cn/com/qmth/print/manage/service/ExamStudentService.java

@@ -0,0 +1,14 @@
+package cn.com.qmth.print.manage.service;
+
+import cn.com.qmth.print.manage.entity.ExamStudentEntity;
+import cn.com.qmth.print.manage.enums.GroupType;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface ExamStudentService extends IService<ExamStudentEntity> {
+
+    ExamStudentEntity findByExamIdAndExamNumber(Long examId, String startNumber);
+
+    Long findSortNoByExamIdAndGroupTypeAndSort(Long examId, GroupType type, String groupName, boolean isAse);
+
+}

+ 112 - 0
src/main/java/cn/com/qmth/print/manage/service/impl/BreakRecordServiceImpl.java

@@ -0,0 +1,112 @@
+package cn.com.qmth.print.manage.service.impl;
+
+import java.util.Date;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.print.manage.dao.BreakRecordDao;
+import cn.com.qmth.print.manage.entity.BreakRecordEntity;
+import cn.com.qmth.print.manage.entity.ExamEntity;
+import cn.com.qmth.print.manage.entity.ExamStudentEntity;
+import cn.com.qmth.print.manage.enums.GroupType;
+import cn.com.qmth.print.manage.enums.RecordStatus;
+import cn.com.qmth.print.manage.service.BreakRecordService;
+import cn.com.qmth.print.manage.service.ExamService;
+import cn.com.qmth.print.manage.service.ExamStudentService;
+import cn.com.qmth.print.manage.service.query.RecordQuery;
+import cn.com.qmth.print.manage.vo.BreakRecordVo;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.core.exception.StatusException;
+
+@Service
+public class BreakRecordServiceImpl extends ServiceImpl<BreakRecordDao, BreakRecordEntity> implements
+        BreakRecordService {
+
+    @Autowired
+    private BreakRecordDao breakRecordDao;
+
+    @Autowired
+    private ExamStudentService studentService;
+
+    @Autowired
+    private ExamService examService;
+
+    @Override
+    public BreakRecordVo start(Long examId, String startNumber) {
+        ExamEntity exam = examService.getById(examId);
+        if (exam == null) {
+            throw new StatusException("找不到考试");
+        }
+        ExamStudentEntity student = studentService.findByExamIdAndExamNumber(examId, startNumber);
+        if (student == null) {
+            throw new StatusException("找不到考生");
+        }
+        String groupName = null;
+        if (GroupType.COURSE.equals(exam.getGroupType())) {
+            groupName = student.getCourseCode();
+        } else if (GroupType.EXAM_SITE.equals(exam.getGroupType())) {
+            groupName = student.getExamSite();
+        } else if (GroupType.EXAM_ROOM.equals(exam.getGroupType())) {
+            groupName = student.getExamRoom();
+        }
+        BreakRecordEntity recordEntity = new BreakRecordEntity();
+        recordEntity.setOrgId(exam.getOrgId());
+        recordEntity.setExamId(examId);
+        recordEntity.setCreateTime(new Date());
+        recordEntity.setStartNumber(startNumber);
+        recordEntity.setGroupType(exam.getGroupType());
+        recordEntity.setGroupName(groupName);
+        recordEntity.setStatus(RecordStatus.ERROR);
+        saveOrUpdate(recordEntity);
+        return new BreakRecordVo(recordEntity, student);
+    }
+
+    @Override
+    public BreakRecordVo end(Long id, Long examId, String endNumber) {
+        ExamEntity exam = examService.getById(examId);
+        if (exam == null) {
+            throw new StatusException("找不到考试");
+        }
+        ExamStudentEntity student = studentService.findByExamIdAndExamNumber(examId, endNumber);
+        if (student == null) {
+            throw new StatusException("找不到考生");
+        }
+
+        BreakRecordEntity recordEntity = this.getById(id);
+        if (recordEntity == null) {
+            throw new StatusException("找不到中断记录");
+        }
+        ExamStudentEntity start = studentService.findByExamIdAndExamNumber(examId, recordEntity.getStartNumber());
+        if (student.getSortNo() != start.getSortNo() + 1) {
+            throw new StatusException("中断结束考生不正确");
+        }
+        recordEntity.setEndNumber(endNumber);
+        recordEntity.setStatus(RecordStatus.NORMAL);
+        recordEntity.setUpdateTime(new Date());
+        saveOrUpdate(recordEntity);
+        return new BreakRecordVo(recordEntity, student);
+    }
+
+    @Override
+    public IPage<BreakRecordEntity> pageQuery(RecordQuery query) {
+        QueryWrapper<BreakRecordEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<BreakRecordEntity> lw = wrapper.lambda();
+        if (query.getStatus() != null) {
+
+            lw.eq(BreakRecordEntity::getStatus, query.getStatus());
+        }
+        if (query.getGroupType() != null) {
+            lw.eq(BreakRecordEntity::getGroupType, query.getGroupType());
+        }
+        lw.eq(BreakRecordEntity::getExamId, query.getExamId());
+        lw.orderByAsc(BreakRecordEntity::getId);
+        Page<BreakRecordEntity> page = new Page<>(query.getPageNumber(), query.getPageSize());
+        return breakRecordDao.selectPage(page, wrapper);
+    }
+}

+ 136 - 0
src/main/java/cn/com/qmth/print/manage/service/impl/CheckRecordServiceImpl.java

@@ -0,0 +1,136 @@
+package cn.com.qmth.print.manage.service.impl;
+
+import java.util.Date;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.print.manage.dao.CheckRecordDao;
+import cn.com.qmth.print.manage.entity.CheckRecordEntity;
+import cn.com.qmth.print.manage.entity.ExamEntity;
+import cn.com.qmth.print.manage.entity.ExamStudentEntity;
+import cn.com.qmth.print.manage.enums.CheckSort;
+import cn.com.qmth.print.manage.enums.GroupType;
+import cn.com.qmth.print.manage.service.CheckRecordService;
+import cn.com.qmth.print.manage.service.ExamService;
+import cn.com.qmth.print.manage.service.ExamStudentService;
+import cn.com.qmth.print.manage.service.query.RecordQuery;
+import cn.com.qmth.print.manage.vo.CheckRecordVo;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.core.exception.StatusException;
+
+@Service
+public class CheckRecordServiceImpl extends ServiceImpl<CheckRecordDao, CheckRecordEntity> implements
+        CheckRecordService {
+
+    @Autowired
+    private CheckRecordDao checkRecordDao;
+
+    @Autowired
+    private ExamStudentService studentService;
+
+    @Autowired
+    private ExamService examService;
+
+    @Override
+    public CheckRecordVo start(Long examId, String startNumber) {
+        ExamEntity exam = examService.getById(examId);
+        if (exam == null) {
+            throw new StatusException("找不到考试");
+        }
+        ExamStudentEntity student = studentService.findByExamIdAndExamNumber(examId, startNumber);
+        if (student == null) {
+            throw new StatusException("找不到考生");
+        }
+        String groupName = null;
+        if (GroupType.COURSE.equals(exam.getGroupType())) {
+            groupName = student.getCourseCode();
+        } else if (GroupType.EXAM_SITE.equals(exam.getGroupType())) {
+            groupName = student.getExamSite();
+        } else if (GroupType.EXAM_ROOM.equals(exam.getGroupType())) {
+            groupName = student.getExamRoom();
+        }
+        boolean isAse = CheckSort.ASC.equals(exam.getCheckSort());
+        Long sortNo = studentService.findSortNoByExamIdAndGroupTypeAndSort(examId, exam.getGroupType(), groupName,
+                isAse);
+        if (student.getSortNo().longValue() != sortNo.longValue()) {
+            throw new StatusException("该分组开始考生不正确");
+        }
+        CheckRecordEntity checkRecord = findByGroupTypeAndGroupName(exam.getGroupType(), groupName);
+        checkRecord.setStartNumber(startNumber);
+        checkRecord.setUpdateTime(new Date());
+        saveOrUpdate(checkRecord);
+        return new CheckRecordVo(checkRecord, student);
+    }
+
+    @Override
+    public CheckRecordVo end(Long id, Long examId, String endNumber) {
+        ExamEntity exam = examService.getById(examId);
+        if (exam == null) {
+            throw new StatusException("找不到考试");
+        }
+        ExamStudentEntity student = studentService.findByExamIdAndExamNumber(examId, endNumber);
+        if (student == null) {
+            throw new StatusException("找不到考生");
+        }
+        String groupName = null;
+        if (GroupType.COURSE.equals(exam.getGroupType())) {
+            groupName = student.getCourseCode();
+        } else if (GroupType.EXAM_SITE.equals(exam.getGroupType())) {
+            groupName = student.getExamSite();
+        } else if (GroupType.EXAM_ROOM.equals(exam.getGroupType())) {
+            groupName = student.getExamRoom();
+        }
+        // 开始按考试排序取,结束按逆序取
+        boolean isAse = CheckSort.ASC.equals(exam.getCheckSort());
+        Long sortNo = studentService.findSortNoByExamIdAndGroupTypeAndSort(examId, exam.getGroupType(), groupName,
+                !isAse);
+        if (student.getSortNo().longValue() != sortNo.longValue()) {
+            throw new StatusException("该分组结束考生不正确");
+        }
+        CheckRecordEntity checkRecord = checkRecordDao.selectById(id);
+        checkRecord.setEndNumber(endNumber);
+        checkRecord.setUpdateTime(new Date());
+        saveOrUpdate(checkRecord);
+        return new CheckRecordVo(checkRecord, student);
+    }
+
+    @Override
+    public CheckRecordEntity findByGroupTypeAndGroupName(GroupType type, String groupName) {
+        if (type == null) {
+            throw new StatusException("分组类型不能为空");
+        }
+        if (StringUtils.isEmpty(groupName)) {
+            throw new StatusException("分组名不能为空");
+        }
+        QueryWrapper<CheckRecordEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<CheckRecordEntity> lw = wrapper.lambda();
+        lw.eq(CheckRecordEntity::getGroupType, type);
+        lw.eq(CheckRecordEntity::getGroupName, groupName);
+        CheckRecordEntity entity = this.getOne(wrapper);
+        return entity;
+    }
+
+    @Override
+    public IPage<CheckRecordEntity> pageQuery(RecordQuery query) {
+        QueryWrapper<CheckRecordEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<CheckRecordEntity> lw = wrapper.lambda();
+        if (query.getStatus() != null) {
+
+            lw.eq(CheckRecordEntity::getStatus, query.getStatus());
+        }
+        if (query.getGroupType() != null) {
+            lw.eq(CheckRecordEntity::getGroupType, query.getGroupType());
+        }
+        lw.eq(CheckRecordEntity::getExamId, query.getExamId());
+        lw.orderByAsc(CheckRecordEntity::getId);
+        Page<CheckRecordEntity> page = new Page<>(query.getPageNumber(), query.getPageSize());
+        return checkRecordDao.selectPage(page, wrapper);
+    }
+}

+ 14 - 0
src/main/java/cn/com/qmth/print/manage/service/impl/ExamServiceImpl.java

@@ -0,0 +1,14 @@
+package cn.com.qmth.print.manage.service.impl;
+
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.print.manage.dao.ExamDao;
+import cn.com.qmth.print.manage.entity.ExamEntity;
+import cn.com.qmth.print.manage.service.ExamService;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+@Service
+public class ExamServiceImpl extends ServiceImpl<ExamDao, ExamEntity> implements ExamService {
+
+}

+ 57 - 0
src/main/java/cn/com/qmth/print/manage/service/impl/ExamStudentServiceImpl.java

@@ -0,0 +1,57 @@
+package cn.com.qmth.print.manage.service.impl;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.print.manage.dao.ExamStudentDao;
+import cn.com.qmth.print.manage.entity.ExamStudentEntity;
+import cn.com.qmth.print.manage.enums.GroupType;
+import cn.com.qmth.print.manage.service.ExamStudentService;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.boot.core.exception.StatusException;
+
+@Service
+public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentDao, ExamStudentEntity> implements
+        ExamStudentService {
+
+    @Override
+    public ExamStudentEntity findByExamIdAndExamNumber(Long examId, String startNumber) {
+        if (examId == null) {
+            throw new StatusException("examId不能为空");
+        }
+        if (StringUtils.isEmpty(startNumber)) {
+            throw new StatusException("准考证号不能为空");
+        }
+        QueryWrapper<ExamStudentEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<ExamStudentEntity> lw = wrapper.lambda();
+        lw.eq(ExamStudentEntity::getExamId, examId);
+        lw.eq(ExamStudentEntity::getExamNumber, startNumber);
+        ExamStudentEntity entity = this.getOne(wrapper);
+        return entity;
+    }
+
+    @Override
+    public Long findSortNoByExamIdAndGroupTypeAndSort(Long examId, GroupType type, String groupName, boolean isAse) {
+        QueryWrapper<ExamStudentEntity> wrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<ExamStudentEntity> lw = wrapper.lambda();
+        lw.eq(ExamStudentEntity::getExamId, examId);
+        if (GroupType.COURSE.equals(type)) {
+            lw.eq(ExamStudentEntity::getCourseCode, groupName);
+        } else if (GroupType.EXAM_SITE.equals(type)) {
+            lw.eq(ExamStudentEntity::getExamSite, groupName);
+        } else if (GroupType.EXAM_ROOM.equals(type)) {
+            lw.eq(ExamStudentEntity::getExamRoom, groupName);
+        }
+        if (isAse) {
+            wrapper.orderByAsc("sort_no");
+        } else {
+            wrapper.orderByDesc("sort_no");
+        }
+        wrapper.last("LIMIT 1");
+        ExamStudentEntity entity = this.getOne(wrapper);
+        return entity.getSortNo();
+    }
+}

+ 62 - 0
src/main/java/cn/com/qmth/print/manage/service/query/RecordQuery.java

@@ -0,0 +1,62 @@
+package cn.com.qmth.print.manage.service.query;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.validation.annotation.Validated;
+
+import cn.com.qmth.print.manage.enums.GroupType;
+import cn.com.qmth.print.manage.enums.RecordStatus;
+
+import com.qmth.boot.mybatis.query.BaseQuery;
+
+@Validated
+public class RecordQuery extends BaseQuery<T> {
+
+    private static final long serialVersionUID = 7620438258556212381L;
+
+    @NotNull
+    private Long examId;
+
+    private GroupType groupType;
+
+    private RecordStatus status;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public RecordStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(RecordStatus status) {
+        this.status = status;
+    }
+
+    @Min(1)
+    public long getPageNumber() {
+        return super.getPageNumber();
+    }
+
+    @Min(1)
+    @Max(100)
+    public long getPageSize() {
+        return super.getPageSize();
+    }
+
+}

+ 178 - 0
src/main/java/cn/com/qmth/print/manage/vo/BreakRecordVo.java

@@ -0,0 +1,178 @@
+package cn.com.qmth.print.manage.vo;
+
+import cn.com.qmth.print.manage.entity.BreakRecordEntity;
+import cn.com.qmth.print.manage.entity.ExamStudentEntity;
+import cn.com.qmth.print.manage.enums.GroupType;
+import cn.com.qmth.print.manage.enums.RecordStatus;
+
+public class BreakRecordVo {
+
+    private Long id;
+
+    private Long orgId;
+
+    private Long examId;
+
+    private GroupType groupType;
+
+    private String groupName;
+
+    private String startNumber;
+
+    private String endNumber;
+
+    private RecordStatus status;
+
+    private String courseCode;
+
+    private String name;
+
+    private String studentCode;
+
+    private String examNumber;
+
+    private String examSite;
+
+    private String examRoom;
+
+    private Long sortNo;
+
+    public BreakRecordVo(BreakRecordEntity record, ExamStudentEntity student) {
+        this.id = record.getId();
+        this.orgId = record.getOrgId();
+        this.examId = record.getExamId();
+        this.groupType = record.getGroupType();
+        this.groupName = record.getGroupName();
+        this.startNumber = record.getStartNumber();
+        this.endNumber = record.getEndNumber();
+        this.status = record.getStatus();
+        this.courseCode = student.getCourseCode();
+        this.studentCode = student.getStudentCode();
+        this.name = student.getName();
+        this.examNumber = student.getExamNumber();
+        this.examSite = student.getExamSite();
+        this.examRoom = student.getExamRoom();
+        this.sortNo = student.getSortNo();
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getStartNumber() {
+        return startNumber;
+    }
+
+    public void setStartNumber(String startNumber) {
+        this.startNumber = startNumber;
+    }
+
+    public String getEndNumber() {
+        return endNumber;
+    }
+
+    public void setEndNumber(String endNumber) {
+        this.endNumber = endNumber;
+    }
+
+    public RecordStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(RecordStatus status) {
+        this.status = status;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getExamSite() {
+        return examSite;
+    }
+
+    public void setExamSite(String examSite) {
+        this.examSite = examSite;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSortNo() {
+        return sortNo;
+    }
+
+    public void setSortNo(Long sortNo) {
+        this.sortNo = sortNo;
+    }
+
+}

+ 178 - 0
src/main/java/cn/com/qmth/print/manage/vo/CheckRecordVo.java

@@ -0,0 +1,178 @@
+package cn.com.qmth.print.manage.vo;
+
+import cn.com.qmth.print.manage.entity.CheckRecordEntity;
+import cn.com.qmth.print.manage.entity.ExamStudentEntity;
+import cn.com.qmth.print.manage.enums.GroupType;
+import cn.com.qmth.print.manage.enums.RecordStatus;
+
+public class CheckRecordVo {
+
+    private Long id;
+
+    private Long orgId;
+
+    private Long examId;
+
+    private GroupType groupType;
+
+    private String groupName;
+
+    private String startNumber;
+
+    private String endNumber;
+
+    private RecordStatus status;
+
+    private String courseCode;
+
+    private String name;
+
+    private String studentCode;
+
+    private String examNumber;
+
+    private String examSite;
+
+    private String examRoom;
+
+    private Long sortNo;
+
+    public CheckRecordVo(CheckRecordEntity checkRecord, ExamStudentEntity student) {
+        this.id = checkRecord.getId();
+        this.orgId = checkRecord.getOrgId();
+        this.examId = checkRecord.getExamId();
+        this.groupType = checkRecord.getGroupType();
+        this.groupName = checkRecord.getGroupName();
+        this.startNumber = checkRecord.getStartNumber();
+        this.endNumber = checkRecord.getEndNumber();
+        this.status = checkRecord.getStatus();
+        this.courseCode = student.getCourseCode();
+        this.studentCode = student.getStudentCode();
+        this.name = student.getName();
+        this.examNumber = student.getExamNumber();
+        this.examSite = student.getExamSite();
+        this.examRoom = student.getExamRoom();
+        this.sortNo = student.getSortNo();
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public GroupType getGroupType() {
+        return groupType;
+    }
+
+    public void setGroupType(GroupType groupType) {
+        this.groupType = groupType;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    public String getStartNumber() {
+        return startNumber;
+    }
+
+    public void setStartNumber(String startNumber) {
+        this.startNumber = startNumber;
+    }
+
+    public String getEndNumber() {
+        return endNumber;
+    }
+
+    public void setEndNumber(String endNumber) {
+        this.endNumber = endNumber;
+    }
+
+    public RecordStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(RecordStatus status) {
+        this.status = status;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getExamSite() {
+        return examSite;
+    }
+
+    public void setExamSite(String examSite) {
+        this.examSite = examSite;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSortNo() {
+        return sortNo;
+    }
+
+    public void setSortNo(Long sortNo) {
+        this.sortNo = sortNo;
+    }
+
+}