123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- package cn.com.qmth.scancentral.controller.admin;
- import java.io.IOException;
- import java.net.URLEncoder;
- import java.util.Collection;
- import java.util.List;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.PostMapping;
- 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.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import com.qmth.boot.api.annotation.Aac;
- import com.qmth.boot.api.constant.ApiConstant;
- import com.qmth.boot.core.collection.PageResult;
- import com.qmth.boot.tools.excel.ExcelWriter;
- import com.qmth.boot.tools.excel.enums.ExcelType;
- import com.qmth.boot.tools.iterator.PageListIterator;
- import cn.com.qmth.scancentral.bean.AnswerDeleteDomain;
- import cn.com.qmth.scancentral.bean.AnswerQueryDomain;
- import cn.com.qmth.scancentral.bean.BatchQueryDomain;
- import cn.com.qmth.scancentral.bean.MismatchQueryDomain;
- import cn.com.qmth.scancentral.bean.MismatchToggleDomain;
- import cn.com.qmth.scancentral.bean.PageDeleteDomain;
- import cn.com.qmth.scancentral.bean.omredit.OmrEditDomain;
- import cn.com.qmth.scancentral.bean.omredit.OmrFieldEditDomain;
- import cn.com.qmth.scancentral.bean.papermigrate.PaperMigrateDomain;
- import cn.com.qmth.scancentral.bean.refix.AnswerRefixDomain;
- import cn.com.qmth.scancentral.controller.BaseController;
- import cn.com.qmth.scancentral.entity.ExamEntity;
- import cn.com.qmth.scancentral.entity.ExamSummaryEntity;
- import cn.com.qmth.scancentral.enums.ExamMode;
- 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.PaperService;
- import cn.com.qmth.scancentral.service.StudentService;
- import cn.com.qmth.scancentral.vo.AnswerDeleteVo;
- import cn.com.qmth.scancentral.vo.AnswerExportK12Vo;
- import cn.com.qmth.scancentral.vo.AnswerExportVo;
- import cn.com.qmth.scancentral.vo.AnswerRefixVo;
- import cn.com.qmth.scancentral.vo.BatchQueryVo;
- import cn.com.qmth.scancentral.vo.MismatchToggleVo;
- import cn.com.qmth.scancentral.vo.PaperDeleteVo;
- import cn.com.qmth.scancentral.vo.PaperMigrateVo;
- import cn.com.qmth.scancentral.vo.ScanAnswerInfoVo;
- import cn.com.qmth.scancentral.vo.UpdateTimeVo;
- import cn.com.qmth.scancentral.vo.UriVo;
- import cn.com.qmth.scancentral.vo.answerquery.AnswerQueryVo;
- import cn.com.qmth.scancentral.vo.batchdetail.BatchDetailVo;
- import cn.com.qmth.scancentral.vo.mismatchquery.MismatchQueryVo;
- import cn.com.qmth.scancentral.vo.student.StudentExamRoomVo;
- import cn.com.qmth.scancentral.vo.student.StudentVo;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- @RestController
- @Api(tags = "扫描管理-答题卡接口")
- @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/scan/answer")
- @Aac(strict = false, auth = true)
- public class ScanAnswerController extends BaseController {
- @Autowired
- private BatchService batchService;
- @Autowired
- private PaperService paperService;
- @Autowired
- private ExamService examService;
- @Autowired
- private StudentService studentService;
- @Autowired
- private ExamSummaryService examSummaryService;
- @ApiOperation(value = "查询答题卡扫描批次所有关联的扫描员")
- @RequestMapping(value = "batch/scanner", method = RequestMethod.POST)
- public List<String> batchScanner(@RequestParam Long examId) {
- return batchService.batchScanner(examId);
- }
- @ApiOperation(value = "查询答题卡扫描批次信息")
- @RequestMapping(value = "batch/query", method = RequestMethod.POST)
- public PageResult<BatchQueryVo> batchQuery(@Validated BatchQueryDomain query) {
- return batchService.batchQuery(query);
- }
- @ApiOperation(value = "查询答题卡扫描批次概要")
- @RequestMapping(value = "batch/summary", method = RequestMethod.POST)
- public List<Long> batchSummary(@Validated BatchQueryDomain query) {
- return batchService.batchSummary(query);
- }
- @ApiOperation(value = "查询答题卡扫描批次详情")
- @RequestMapping(value = "batch/detail", method = RequestMethod.POST)
- public BatchDetailVo batchDetail(@RequestParam Long id) {
- return batchService.batchDetail(id);
- }
- @ApiOperation(value = "查询异常答题卡信息")
- @RequestMapping(value = "mismatch/query", method = RequestMethod.POST)
- public PageResult<MismatchQueryVo> mismatchQuery(@Validated MismatchQueryDomain query) {
- return paperService.mismatchQuery(query);
- }
- @ApiOperation(value = "修改异常答题卡标记")
- @RequestMapping(value = "mismatch/toggle", method = RequestMethod.POST)
- public MismatchToggleVo mismatchToggle(@Validated MismatchToggleDomain domain) {
- return paperService.mismatchToggle(domain);
- }
- @ApiOperation(value = "答题卡扫描汇总")
- @PostMapping("info")
- public ScanAnswerInfoVo scanAnswerInfo(@RequestParam Long examId) {
- ExamSummaryEntity es = examSummaryService.find(examId);
- ScanAnswerInfoVo vo = new ScanAnswerInfoVo();
- vo.setTotalCount(es.getStudentCount());
- vo.setScannedCount(es.getAnswerScannedCount());
- vo.setUnexistCount(es.getAnswerUnexistCount());
- vo.setManualAbsentCount(es.getAnswerManualAbsentCount());
- vo.setOmrAbsentCount(es.getAnswerOmrAbsentCount());
- vo.setAbsentSuspectCount(es.getAnswerAbsentSuspectCount());
- vo.setAssignedCount(es.getAnswerAssignedCount());
- vo.setIncompleteCount(es.getAnswerIncompleteCount());
- return vo;
- }
- @ApiOperation(value = "查询答题卡扫描详情")
- @RequestMapping(value = "query", method = RequestMethod.POST)
- public PageResult<AnswerQueryVo> query(@Validated AnswerQueryDomain query) {
- return studentService.query(query);
- }
- @ApiOperation(value = "查询答题卡扫描概要")
- @RequestMapping(value = "summary", method = RequestMethod.POST)
- public List<String> summary(@Validated AnswerQueryDomain query) {
- return studentService.summary(query);
- }
- @ApiOperation(value = "导出答题卡扫描详情")
- @RequestMapping(value = "export", method = RequestMethod.POST)
- public void export(@Validated AnswerQueryDomain query, HttpServletResponse response) throws IOException {
- String fileName = URLEncoder.encode("答题卡扫描详情", "UTF-8");
- response.setHeader("Content-Disposition", "inline; filename=" + fileName + ".xlsx");
- response.setContentType("application/vnd.ms-excel");
- ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
- ExamEntity exam = examService.getById(query.getExamId());
- if (ExamMode.K12.equals(exam.getMode())) {
- PageListIterator<AnswerExportK12Vo> iterator = new PageListIterator<AnswerExportK12Vo>(5000) {
- @Override
- public Collection<AnswerExportK12Vo> getPageList(int pageNumber, int pageSize) {
- query.setPageNumber(pageNumber);
- query.setPageSize(pageSize);
- return studentService.exportListK12(query);
- }
- };
- writer.writeObjects("扫描详情", null, AnswerExportK12Vo.class, iterator);
- writer.output(response.getOutputStream());
- } else {
- PageListIterator<AnswerExportVo> iterator = new PageListIterator<AnswerExportVo>(5000) {
- @Override
- public Collection<AnswerExportVo> getPageList(int pageNumber, int pageSize) {
- query.setPageNumber(pageNumber);
- query.setPageSize(pageSize);
- return studentService.exportList(query);
- }
- };
- writer.writeObjects("扫描详情", null, AnswerExportVo.class, iterator);
- writer.output(response.getOutputStream());
- }
- }
- @ApiOperation(value = "修改答题卡识别结果")
- @RequestMapping(value = "omr/edit", method = RequestMethod.POST)
- public UpdateTimeVo omrEdit(@Validated @RequestBody OmrEditDomain domain) {
- return studentService.omrEdit(getAccessUser(), domain);
- }
- @ApiOperation(value = "按类型修改卷型、识别结果等")
- @RequestMapping(value = "omr/field/edit", method = RequestMethod.POST)
- public UpdateTimeVo omrFieldEdit(@Validated @RequestBody OmrFieldEditDomain domain) {
- return studentService.omrFieldEdit(getAccessUser(), domain);
- }
- @ApiOperation(value = "更新答题卡裁切图")
- @RequestMapping(value = "slice/update", method = RequestMethod.POST)
- public UriVo sliceUpdate(@RequestParam Long paperId, @RequestParam Integer pageIndex, @RequestParam Integer index,
- @RequestParam MultipartFile file, @RequestParam String md5) {
- return paperService.adminSliceUpdate(paperId, pageIndex, index, file, md5);
- }
- @ApiOperation(value = "更新答题卡原图")
- @RequestMapping(value = "sheet/update", method = RequestMethod.POST)
- public UriVo sheetUpdate(@RequestParam Long paperId, @RequestParam Integer pageIndex,
- @RequestParam MultipartFile file, @RequestParam String md5) {
- return paperService.adminSheetUpdate(paperId, pageIndex, file, md5);
- }
- @ApiOperation(value = "上传答题卡裁切图")
- @RequestMapping(value = "slice/upload", method = RequestMethod.POST)
- public UriVo sliceUpload(@RequestParam Long paperId, @RequestParam Integer pageIndex, @RequestParam Integer index,
- @RequestParam MultipartFile file, @RequestParam String md5) {
- return paperService.adminSliceUpload(paperId, pageIndex, index, file, md5);
- }
- @ApiOperation(value = "修改答题卡扫描图片绑定考生")
- @RequestMapping(value = "paper/migrate", method = RequestMethod.POST)
- public PaperMigrateVo paperMigrate(@Validated @RequestBody PaperMigrateDomain domain) {
- return paperService.paperMigrate(getAccessUser(), domain);
- }
- @ApiOperation(value = "删除答题卡单页扫描结果")
- @RequestMapping(value = "paper/delete", method = RequestMethod.POST)
- public PaperDeleteVo paperDelete(@Validated PageDeleteDomain domain) {
- return studentService.paperDelete(getAccessUser(), domain);
- }
- @ApiOperation(value = "删除答题卡扫描结果")
- @RequestMapping(value = "delete", method = RequestMethod.POST)
- public AnswerDeleteVo answerDelete(@Validated AnswerDeleteDomain domain) {
- return studentService.answerDelete(getAccessUser(), domain);
- }
- @ApiOperation(value = "答题卡二次识别")
- @RequestMapping(value = "refix", method = RequestMethod.POST)
- public AnswerRefixVo refix(@Validated @RequestBody AnswerRefixDomain query) {
- return studentService.answerRefix(getAccessUser(), query);
- }
- @ApiOperation(value = "按考生导出答题卡扫描详情")
- @PostMapping(value = "student/export")
- public void studentExport(@Validated AnswerQueryDomain query, HttpServletResponse response) throws IOException {
- String fileName = URLEncoder.encode("按考生导出", "UTF-8");
- response.setHeader("Content-Disposition", "inline; filename=" + fileName + ".xlsx");
- response.setContentType("application/vnd.ms-excel");
- ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
- PageListIterator<StudentVo> iterator = new PageListIterator<StudentVo>(5000) {
- @Override
- public Collection<StudentVo> getPageList(int pageNumber, int pageSize) {
- query.setPageNumber(pageNumber);
- query.setPageSize(pageSize);
- return studentService.studentExportList(query);
- }
- };
- writer.writeObjects("按考生导出", null, StudentVo.class, iterator);
- writer.output(response.getOutputStream());
- }
- @ApiOperation(value = "按考场导出答题卡扫描详情")
- @PostMapping(value = "exam-room/export")
- public void studentExamRoomExport(@Validated AnswerQueryDomain query, HttpServletResponse response)
- throws IOException {
- String fileName = URLEncoder.encode("按考场导出", "UTF-8");
- response.setHeader("Content-Disposition", "inline; filename=" + fileName + ".xlsx");
- response.setContentType("application/vnd.ms-excel");
- ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);
- PageListIterator<StudentExamRoomVo> iterator = new PageListIterator<StudentExamRoomVo>(5000) {
- @Override
- public Collection<StudentExamRoomVo> getPageList(int pageNumber, int pageSize) {
- query.setPageNumber(pageNumber);
- query.setPageSize(pageSize);
- return studentService.studentExamRoomExportList(query);
- }
- };
- writer.writeObjects("按考场导出", null, StudentExamRoomVo.class, iterator);
- writer.output(response.getOutputStream());
- }
- }
|