ToolController.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package cn.com.qmth.scancentral.controller.admin;
  2. import java.util.List;
  3. import org.apache.commons.lang3.StringUtils;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.PostMapping;
  6. import org.springframework.web.bind.annotation.RequestBody;
  7. import org.springframework.web.bind.annotation.RequestMapping;
  8. import org.springframework.web.bind.annotation.RequestMethod;
  9. import org.springframework.web.bind.annotation.RequestParam;
  10. import org.springframework.web.bind.annotation.RestController;
  11. import com.qmth.boot.api.constant.ApiConstant;
  12. import com.qmth.boot.core.exception.ParameterException;
  13. import cn.com.qmth.scancentral.bean.ImportCetAbsentDomain;
  14. import cn.com.qmth.scancentral.bean.ImportExamDomain;
  15. import cn.com.qmth.scancentral.bean.ImportStudentDomain;
  16. import cn.com.qmth.scancentral.bean.ImportSubjectDomain;
  17. import cn.com.qmth.scancentral.bean.ImportUserDomain;
  18. import cn.com.qmth.scancentral.controller.BaseController;
  19. import cn.com.qmth.scancentral.entity.ExamEntity;
  20. import cn.com.qmth.scancentral.entity.QuestionEntity;
  21. import cn.com.qmth.scancentral.entity.SubjectEntity;
  22. import cn.com.qmth.scancentral.service.ExamService;
  23. import cn.com.qmth.scancentral.service.QuestionService;
  24. import cn.com.qmth.scancentral.service.StudentService;
  25. import cn.com.qmth.scancentral.service.SubjectService;
  26. import cn.com.qmth.scancentral.service.UserService;
  27. import cn.com.qmth.scancentral.vo.CountVo;
  28. import cn.com.qmth.scancentral.vo.ExportCetMarkingQueryVo;
  29. import cn.com.qmth.scancentral.vo.ExportCetVo;
  30. import cn.com.qmth.scancentral.vo.ImportExamVo;
  31. import cn.com.qmth.scancentral.vo.ImportStudentQueryVo;
  32. import cn.com.qmth.scancentral.vo.ImportStudentVo;
  33. import cn.com.qmth.scancentral.vo.SubjectCheckVo;
  34. import io.swagger.annotations.Api;
  35. import io.swagger.annotations.ApiOperation;
  36. @RestController
  37. @Api(tags = "本地工具接口")
  38. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/tool")
  39. public class ToolController extends BaseController {
  40. @Autowired
  41. private UserService userService;
  42. @Autowired
  43. private ExamService examService;
  44. @Autowired
  45. private StudentService studentService;
  46. @Autowired
  47. private SubjectService subjectService;
  48. @Autowired
  49. private QuestionService questionService;
  50. @ApiOperation(value = "批量创建管理员用户接口")
  51. @PostMapping("/import/user")
  52. public CountVo importUser(@RequestBody List<ImportUserDomain> users) {
  53. return new CountVo(userService.importUser(users));
  54. }
  55. @ApiOperation(value = "创建考试接口")
  56. @PostMapping("/import/exam")
  57. public ImportExamVo importExam(@RequestBody ImportExamDomain exam) {
  58. return new ImportExamVo(examService.save(exam).getId());
  59. }
  60. @ApiOperation(value = "批量创建科目接口")
  61. @PostMapping("/import/course")
  62. public CountVo importCourse(@RequestBody List<ImportSubjectDomain> subjects) {
  63. return new CountVo(subjectService.importSubject(subjects));
  64. }
  65. @ApiOperation(value = "批量新建考生接口")
  66. @PostMapping("/import/exam/student")
  67. public CountVo importStudent(@RequestBody List<ImportStudentDomain> students) {
  68. return new CountVo(studentService.importStudent(students));
  69. }
  70. @ApiOperation(value = "查询考生数量接口")
  71. @PostMapping("/exam/student/count")
  72. public CountVo countStudent(@RequestBody ImportStudentQueryVo query) {
  73. return new CountVo(studentService.countByQuery(query));
  74. }
  75. @ApiOperation(value = "分页查询考生接口")
  76. @PostMapping("/exam/student/find")
  77. public List<ImportStudentVo> findStudent(@RequestBody ImportStudentQueryVo query) {
  78. return studentService.findByQuery(query);
  79. }
  80. // @ApiOperation(value = "检查并修复考生导出图片接口")
  81. // @PostMapping("/exam/student/check")
  82. // public void studentCheck(@RequestParam Long studentId) {
  83. // toolExportService.studentCheck(studentId);
  84. // }
  85. @ApiOperation(value = "获取考试详情")
  86. @RequestMapping(value = "/exam/info", method = RequestMethod.POST)
  87. public ExamEntity examInfo(@RequestParam Long examId) {
  88. return examService.getById(examId);
  89. }
  90. @ApiOperation(value = "获取科目详情")
  91. @RequestMapping(value = "/exam/subject/info", method = RequestMethod.POST)
  92. public SubjectEntity subjectInfo(@RequestBody SubjectCheckVo query) {
  93. Long examId = query.getExamId();
  94. String code = query.getSubjectCode();
  95. if (examId == null) {
  96. throw new ParameterException("examId 不能为空");
  97. }
  98. if (StringUtils.isBlank(code)) {
  99. throw new ParameterException("subjectCode 不能为空");
  100. }
  101. return subjectService.findByExamIdAndCode(examId, code);
  102. }
  103. // @ApiOperation(value = "清空考生数据")
  104. // @RequestMapping(value = "/exam/student/clean", method =
  105. // RequestMethod.POST)
  106. // public void studentClean(@RequestParam Long examId) {
  107. // studentService.studentClean(examId);
  108. // }
  109. @ApiOperation(value = "cet导入违纪接口")
  110. @PostMapping("/import/cet/breach")
  111. public CountVo importCetAbsent(@RequestBody List<ImportCetAbsentDomain> students) {
  112. return new CountVo(studentService.importCetAbsent(students));
  113. }
  114. @ApiOperation(value = "cet导出扫描结果和评卷分配数据")
  115. @PostMapping("/export/cet/data")
  116. public List<ExportCetVo> exportCetData(@RequestBody ExportCetMarkingQueryVo query) {
  117. return studentService.exportCetData(query);
  118. }
  119. // @ApiOperation(value = "查询试卷结构")
  120. // @PostMapping("/import/question/query")
  121. // public List<QuestionEntity> questionQuery(@RequestParam Long examId,
  122. // @RequestParam String subjectCode) {
  123. // return questionService.findByExamIdAndSubjectCode(examId, subjectCode);
  124. // }
  125. @ApiOperation(value = "保存试卷结构")
  126. @PostMapping("/import/question/save")
  127. public CountVo importQuestion(@RequestBody List<QuestionEntity> questionList) {
  128. return new CountVo(questionService.importQuestion(questionList));
  129. }
  130. // @ApiOperation(value = "保存卡格式")
  131. // @PostMapping("/import/card/save")
  132. // public Integer importCard(@RequestParam Long examId, @RequestParam String
  133. // subjectCode,
  134. // @RequestParam Integer paperCount, @RequestParam Boolean singlePage,
  135. // @RequestParam String md5,
  136. // @RequestParam(required = false) Integer dpi, @RequestParam MultipartFile
  137. // file) {
  138. // if (!SystemMode.STANDALONE.equals(SystemMode.current())) {
  139. // throw new ParameterException("非独立模式不可调用");
  140. // }
  141. // if (concurrentService.getLock(LockType.CARD_SYNC + "-" +
  142. // examId).tryLock()) {
  143. // try {
  144. // AnswerCardEntity card = answerCardService.save(null, examId, null,
  145. // subjectCode, null, null, paperCount,
  146. // singlePage, md5, dpi, file);
  147. // return card.getNumber();
  148. // } finally {
  149. // concurrentService.getLock(LockType.CARD_SYNC + "-" + examId).unlock();
  150. // }
  151. // } else {
  152. // throw new ReentrantException("正在同步卡格式,请稍后再试");
  153. // }
  154. // }
  155. }