SubjectController.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package cn.com.qmth.scancentral.controller.admin;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.util.List;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.web.bind.annotation.PostMapping;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestParam;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import com.qmth.boot.api.annotation.Aac;
  12. import com.qmth.boot.api.constant.ApiConstant;
  13. import com.qmth.boot.core.exception.ParameterException;
  14. import cn.com.qmth.scancentral.controller.BaseController;
  15. import cn.com.qmth.scancentral.service.DataExportTaskService;
  16. import cn.com.qmth.scancentral.service.SubjectService;
  17. import cn.com.qmth.scancentral.util.Calculator;
  18. import cn.com.qmth.scancentral.vo.subject.DataExportProgressVo;
  19. import cn.com.qmth.scancentral.vo.subject.DataExportTaskVo;
  20. import cn.com.qmth.scancentral.vo.subject.ScanProgressVo;
  21. import cn.com.qmth.scancentral.vo.subject.SubjectBreachVo;
  22. import cn.com.qmth.scancentral.vo.subject.SubjectCustStatusVo;
  23. import cn.com.qmth.scancentral.vo.subject.TaskIdVo;
  24. import io.swagger.annotations.Api;
  25. import io.swagger.annotations.ApiOperation;
  26. @RestController
  27. @Api(tags = "科目接口")
  28. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/admin/subject")
  29. @Aac(strict = false, auth = true)
  30. public class SubjectController extends BaseController {
  31. @Autowired
  32. private SubjectService subjectService;
  33. @Autowired
  34. private DataExportTaskService dataExportTaskService;
  35. @ApiOperation(value = "科目扫描进度查询")
  36. @PostMapping("scan/progress")
  37. public ScanProgressVo scanProgress(@RequestParam Long examId, @RequestParam(required = false) String subjectCode) {
  38. return subjectService.scanProgress(examId, subjectCode);
  39. }
  40. @ApiOperation(value = "查询科目违纪导入")
  41. @PostMapping("breach/list")
  42. public List<SubjectBreachVo> breachList(@RequestParam Long examId) {
  43. return subjectService.breachList(examId);
  44. }
  45. @ApiOperation(value = "查询科目考生状态导入")
  46. @PostMapping("cust-status/list")
  47. public List<SubjectCustStatusVo> custStatusList(@RequestParam Long examId) {
  48. return subjectService.custStatusList(examId);
  49. }
  50. @ApiOperation(value = "导出扫描答案DBF")
  51. @PostMapping("answer-data/export")
  52. public TaskIdVo answerDataExport(@RequestParam Long examId, @RequestParam String subjectCode) {
  53. return subjectService.answerDataExport(examId, subjectCode);
  54. }
  55. @ApiOperation(value = "导出打包DBF")
  56. @PostMapping("slice-data/export")
  57. public TaskIdVo sliceDataExport(@RequestParam Long examId, @RequestParam String subjectCode) {
  58. return subjectService.sliceDataExport(examId, subjectCode);
  59. }
  60. @ApiOperation(value = "导出扫描答案DBF、打包DBF下载进度查询")
  61. @PostMapping("data/progress")
  62. public DataExportProgressVo dataProgress(@RequestParam String taskId) {
  63. DataExportTaskVo vo = dataExportTaskService.getTask(taskId);
  64. if (vo == null) {
  65. throw new ParameterException("未找到导出任务");
  66. }
  67. DataExportProgressVo ret = new DataExportProgressVo();
  68. ret.setSuccess(vo.getSuccess());
  69. ret.setErrMsg(vo.getErrMsg());
  70. ret.setProgress(Calculator.percentageDouble(vo.getProgressCount(), vo.getTotalCount()));
  71. return ret;
  72. }
  73. @ApiOperation(value = "扫描答案DBF、打包DBF下载")
  74. @PostMapping("data/down")
  75. public void dataDown(HttpServletResponse response, @RequestParam String taskId) throws Exception {
  76. DataExportTaskVo vo = dataExportTaskService.getTask(taskId);
  77. if (vo == null) {
  78. throw new ParameterException("未找到导出任务");
  79. }
  80. if (vo.getSuccess() == null || !vo.getSuccess()) {
  81. throw new ParameterException("导出任务失败");
  82. }
  83. if (vo.getTotalCount() != (vo.getProgressCount())) {
  84. throw new ParameterException("导出任务未结束");
  85. }
  86. exportFile(vo.getFileName(), new FileInputStream(new File(vo.getFilePath())));
  87. }
  88. }