ExamTaskController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427
  1. package com.qmth.distributed.print.api;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.qmth.boot.api.annotation.Aac;
  4. import com.qmth.boot.api.annotation.BOOL;
  5. import com.qmth.boot.api.constant.ApiConstant;
  6. import com.qmth.boot.api.exception.ApiException;
  7. import com.qmth.distributed.print.business.bean.dto.*;
  8. import com.qmth.distributed.print.business.entity.BasicAttachment;
  9. import com.qmth.distributed.print.business.entity.ExamTask;
  10. import com.qmth.distributed.print.business.entity.ExamTaskDetail;
  11. import com.qmth.distributed.print.business.entity.ExamTaskReviewLog;
  12. import com.qmth.distributed.print.business.enums.UploadFileEnum;
  13. import com.qmth.distributed.print.business.service.BasicAttachmentService;
  14. import com.qmth.distributed.print.business.service.ExamTaskDetailService;
  15. import com.qmth.distributed.print.business.service.ExamTaskReviewLogService;
  16. import com.qmth.distributed.print.business.service.ExamTaskService;
  17. import com.qmth.distributed.print.business.util.ServletUtil;
  18. import com.qmth.distributed.print.common.contant.SystemConstant;
  19. import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
  20. import com.qmth.distributed.print.common.util.Result;
  21. import com.qmth.distributed.print.common.util.ResultUtil;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import io.swagger.annotations.ApiParam;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.web.bind.annotation.*;
  27. import org.springframework.web.multipart.MultipartFile;
  28. import javax.servlet.http.HttpServletRequest;
  29. import javax.servlet.http.HttpServletResponse;
  30. import java.io.IOException;
  31. import java.util.Collections;
  32. import java.util.List;
  33. import java.util.Objects;
  34. /**
  35. * <p>
  36. * 命题任务 前端控制器
  37. * </p>
  38. *
  39. * @author xf
  40. * @since 2021-03-23
  41. */
  42. @Api(tags = "命题任务Controller")
  43. @RestController
  44. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/task")
  45. @Aac(auth = BOOL.FALSE)
  46. public class ExamTaskController {
  47. @Autowired
  48. private ExamTaskService examTaskService;
  49. @Autowired
  50. private ExamTaskDetailService examTaskDetailService;
  51. @Autowired
  52. private ExamTaskReviewLogService examTaskReviewLogService;
  53. @Autowired
  54. private BasicAttachmentService basicAttachmentService;
  55. /**
  56. * 查询
  57. *
  58. * @param enable
  59. * @param status
  60. * @param cardRuleId
  61. * @param courseCode
  62. * @param paperNumber
  63. * @param startTime
  64. * @param endTime
  65. * @param pageNumber
  66. * @param pageSize
  67. * @return
  68. */
  69. @ApiOperation(value = "查询")
  70. @RequestMapping(value = "/list", method = RequestMethod.POST)
  71. public Result list(@RequestParam(required = false) Boolean enable,
  72. @RequestParam(required = false) String status,
  73. @RequestParam(required = false) Long cardRuleId,
  74. @RequestParam(required = false) String courseCode,
  75. @RequestParam(required = false) String paperNumber,
  76. @RequestParam(required = false) Long startTime,
  77. @RequestParam(required = false) Long endTime,
  78. @RequestParam Integer pageNumber,
  79. @RequestParam Integer pageSize) {
  80. IPage<ExamTaskDto> examTasks = examTaskService.list(enable, status, cardRuleId, courseCode, paperNumber, startTime, endTime, pageNumber, pageSize);
  81. return ResultUtil.ok(examTasks);
  82. }
  83. /**
  84. * 试卷编号模糊查询
  85. *
  86. * @param param
  87. * @return
  88. */
  89. @ApiOperation(value = "试卷编号模糊查询")
  90. @RequestMapping(value = "/paper_number_query", method = RequestMethod.POST)
  91. public Result paperNumberQuery(@RequestParam(value = "param", required = false) String param) {
  92. List<String> list = examTaskService.listPaperNumber(param);
  93. return ResultUtil.ok(list);
  94. }
  95. /**
  96. * 命题老师模糊查询
  97. *
  98. * @param param
  99. * @return
  100. */
  101. @ApiOperation(value = "命题老师模糊查询")
  102. @RequestMapping(value = "/user_query", method = RequestMethod.POST)
  103. public Result userQuery(@RequestParam(value = "param", required = false) String param) {
  104. List<BlurryUserDto> list = examTaskService.listUser(param);
  105. return ResultUtil.ok(list);
  106. }
  107. /**
  108. * 更改/指派命题老师
  109. *
  110. * @param examTask
  111. * @return
  112. */
  113. @ApiOperation(value = "更改/指派命题老师")
  114. @RequestMapping(value = "/assign_user", method = RequestMethod.POST)
  115. public Result assignUser(@RequestBody ExamTask examTask) {
  116. boolean isSuccess = examTaskService.assignUser(examTask);
  117. return ResultUtil.ok(isSuccess);
  118. }
  119. /**
  120. * 启用/禁用
  121. *
  122. * @param examTask
  123. * @return
  124. */
  125. @ApiOperation(value = "启用/禁用")
  126. @RequestMapping(value = "/enable", method = RequestMethod.POST)
  127. public Result enable(@RequestBody ExamTask examTask) {
  128. boolean isSuccess = examTaskService.enable(examTask);
  129. return ResultUtil.ok(isSuccess);
  130. }
  131. /**
  132. * 新建
  133. *
  134. * @param examTask
  135. * @return
  136. */
  137. @ApiOperation(value = "新建")
  138. @RequestMapping(value = "/save", method = RequestMethod.POST)
  139. public Result save(@RequestBody ExamTask examTask) {
  140. boolean isSuccess = examTaskService.saveExamTask(examTask);
  141. return ResultUtil.ok(isSuccess);
  142. }
  143. /**
  144. * 文件导入
  145. *
  146. * @param file
  147. * @return
  148. */
  149. @ApiOperation(value = "文件导入")
  150. @RequestMapping(value = "/import", method = RequestMethod.POST)
  151. public Result importFile(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) {
  152. BasicAttachment basicAttachment = null;
  153. try {
  154. basicAttachment = basicAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), UploadFileEnum.FILE);
  155. if (Objects.isNull(basicAttachment)) {
  156. throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
  157. } else {
  158. ExamTaskImportDto examTaskImportDto = examTaskService.importFile(file);
  159. return ResultUtil.ok(examTaskImportDto);
  160. }
  161. } catch (Exception e) {
  162. if (Objects.nonNull(basicAttachment)) {
  163. basicAttachmentService.deleteAttachment(basicAttachment);
  164. }
  165. if (e instanceof ApiException) {
  166. ResultUtil.error((ApiException) e, e.getMessage());
  167. } else {
  168. ResultUtil.error(e.getMessage());
  169. }
  170. }
  171. return null;
  172. }
  173. /**
  174. * 批量保存
  175. *
  176. * @param task
  177. * @return
  178. */
  179. @ApiOperation(value = "批量保存")
  180. @RequestMapping(value = "/save_batch", method = RequestMethod.POST)
  181. public Result saveBatch(@RequestBody ExamTask task) {
  182. boolean isSuccess = examTaskService.saveBatch(task);
  183. return ResultUtil.ok(isSuccess);
  184. }
  185. /**
  186. * 审核历史
  187. *
  188. * @param request
  189. * @param examTaskId
  190. * @return
  191. */
  192. @ApiOperation(value = "审核历史")
  193. @RequestMapping(value = "/review_list", method = RequestMethod.POST)
  194. public Result reviewList(HttpServletRequest request,
  195. @RequestParam("examTaskId") Long examTaskId) {
  196. List<ReviewLogDto> list = examTaskReviewLogService.list(examTaskId);
  197. return ResultUtil.ok(list);
  198. }
  199. /**
  200. * 入库申请查询
  201. *
  202. * @param auditStatus
  203. * @param reviewStatus
  204. * @param cardRuleId
  205. * @param courseCode
  206. * @param paperNumber
  207. * @param startTime
  208. * @param endTime
  209. * @param pageNumber
  210. * @param pageSize
  211. * @return
  212. */
  213. @ApiOperation(value = "入库申请查询")
  214. @RequestMapping(value = "/apply_list", method = RequestMethod.POST)
  215. public Result taskApplyList(@RequestParam(value = "auditStatus", required = false) String auditStatus,
  216. @RequestParam(value = "reviewStatus", required = false) String reviewStatus,
  217. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId,
  218. @RequestParam(value = "courseCode", required = false) String courseCode,
  219. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  220. @RequestParam(value = "startTime", required = false) Long startTime,
  221. @RequestParam(value = "endTime", required = false) Long endTime,
  222. @RequestParam("pageNumber") Integer pageNumber,
  223. @RequestParam("pageSize") Integer pageSize) {
  224. IPage<ExamTaskDto> list = examTaskService.listTaskApply(auditStatus, reviewStatus, cardRuleId, courseCode, paperNumber, startTime, endTime, pageNumber, pageSize);
  225. return ResultUtil.ok(list);
  226. }
  227. /**
  228. * 根据命题任务ID查询单个数据
  229. *
  230. * @param request
  231. * @param examTaskId
  232. * @return
  233. */
  234. @ApiOperation(value = "根据命题任务ID查询单个数据")
  235. @RequestMapping(value = "/apply_get_one", method = RequestMethod.POST)
  236. public Result applyGetOne(HttpServletRequest request,
  237. @RequestParam(value = "examTaskId", required = true) Long examTaskId) {
  238. ExamTaskDetailCardDto detail = examTaskService.applyGetOne(examTaskId);
  239. return ResultUtil.ok(detail);
  240. }
  241. /**
  242. * 暂存/提交
  243. *
  244. * @param examTaskDetail
  245. * @return
  246. */
  247. @ApiOperation(value = "暂存/提交")
  248. @RequestMapping(value = "/apply_save", method = RequestMethod.POST)
  249. public Result taskApplySave(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
  250. boolean isSuccess = examTaskService.saveExamTaskDetail(examTaskDetail);
  251. return ResultUtil.ok(isSuccess);
  252. }
  253. /**
  254. * 撤回/重新申请
  255. *
  256. * @param examTask
  257. * @return
  258. */
  259. @ApiOperation(value = "撤回")
  260. @RequestMapping(value = "/apply_status", method = RequestMethod.POST)
  261. public Result taskApplyStatus(@RequestBody ExamTask examTask) {
  262. boolean isSuccess = examTaskService.status(examTask);
  263. return ResultUtil.ok(isSuccess);
  264. }
  265. /**
  266. * 入库审核查询-未审核
  267. *
  268. * @param courseCode
  269. * @param paperNumber
  270. * @param userId
  271. * @param cardRuleId
  272. * @param startTime
  273. * @param endTime
  274. * @param pageNumber
  275. * @param pageSize
  276. * @return
  277. */
  278. @ApiOperation(value = "入库审核查询-未审核")
  279. @RequestMapping(value = "/review_list_unaudited", method = RequestMethod.POST)
  280. public Result taskReviewListUnaudited(@RequestParam(value = "courseCode", required = false) String courseCode,
  281. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  282. @RequestParam(value = "userId", required = false) Long userId,
  283. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId,
  284. @RequestParam(value = "startTime", required = false) Long startTime,
  285. @RequestParam(value = "endTime", required = false) Long endTime,
  286. @RequestParam("pageNumber") Integer pageNumber,
  287. @RequestParam("pageSize") Integer pageSize) {
  288. IPage<ExamTaskDto> examTaskDtoIPage = examTaskService.listTaskReviewUnaudited(courseCode, paperNumber, userId, cardRuleId, startTime, endTime, pageNumber, pageSize);
  289. return ResultUtil.ok(examTaskDtoIPage);
  290. }
  291. /**
  292. * 入库审核查询-未审核
  293. *
  294. * @param courseCode
  295. * @param paperNumber
  296. * @param userId
  297. * @param cardRuleId
  298. * @param startTime
  299. * @param endTime
  300. * @param pageNumber
  301. * @param pageSize
  302. * @return
  303. */
  304. @ApiOperation(value = "入库审核查询-已审核")
  305. @RequestMapping(value = "/review_list_audited", method = RequestMethod.POST)
  306. public Result taskReviewListAudited(@RequestParam(value = "reviewStatus", required = false) String reviewStatus,
  307. @RequestParam(value = "courseCode", required = false) String courseCode,
  308. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  309. @RequestParam(value = "userId", required = false) Long userId,
  310. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId,
  311. @RequestParam(value = "startTime", required = false) Long startTime,
  312. @RequestParam(value = "endTime", required = false) Long endTime,
  313. @RequestParam("pageNumber") Integer pageNumber,
  314. @RequestParam("pageSize") Integer pageSize) {
  315. IPage<ExamTaskDto> examTaskDtoIPage = examTaskService.listTaskReviewAudited(reviewStatus, courseCode, paperNumber, userId, cardRuleId, startTime, endTime, pageNumber, pageSize);
  316. return ResultUtil.ok(examTaskDtoIPage);
  317. }
  318. /**
  319. * 审核
  320. *
  321. * @param taskReviewLog
  322. * @return
  323. */
  324. @ApiOperation(value = "审核")
  325. @RequestMapping(value = "/review_save", method = RequestMethod.POST)
  326. public Result taskReviewSave(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
  327. boolean isSuccess = examTaskService.taskReviewSave(taskReviewLog);
  328. return ResultUtil.ok(isSuccess);
  329. }
  330. /**
  331. * 批量审核
  332. *
  333. * @param taskReviewLog
  334. * @return
  335. */
  336. @ApiOperation(value = "批量审核")
  337. @RequestMapping(value = "/review_save_batch", method = RequestMethod.POST)
  338. public Result taskReviewSaveBatch(@RequestBody ExamTaskReviewLog taskReviewLog) {
  339. boolean isSuccess = examTaskService.taskReviewSaveBatch(taskReviewLog);
  340. return ResultUtil.ok(isSuccess);
  341. }
  342. @ApiOperation(value = "导出审核样本")
  343. @RequestMapping(value = "/review_export", method = RequestMethod.POST)
  344. public Result taskReviewExport(HttpServletRequest request,
  345. @RequestBody ExamTaskReviewLog taskReviewLog) {
  346. // boolean isSuccess = examTaskService.taskReviewSaveBatch(taskReviewLog);
  347. // todo 导出
  348. return ResultUtil.ok(true);
  349. }
  350. /**
  351. * 卷库查询
  352. *
  353. * @param courseCode
  354. * @param paperNumber
  355. * @param startTime
  356. * @param endTime
  357. * @param pageNumber
  358. * @param pageSize
  359. * @return
  360. */
  361. @ApiOperation(value = "卷库查询")
  362. @RequestMapping(value = "/paper_list", method = RequestMethod.POST)
  363. public Result taskPaperList(@RequestParam(value = "courseCode", required = false) String courseCode,
  364. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  365. @RequestParam(value = "startTime", required = false) Long startTime,
  366. @RequestParam(value = "endTime", required = false) Long endTime,
  367. @RequestParam("pageNumber") Integer pageNumber,
  368. @RequestParam("pageSize") Integer pageSize) {
  369. IPage<ExamTaskDetailDto> examTaskDtoIPage = examTaskService.listTaskPaper(courseCode, paperNumber, startTime, endTime, pageNumber, pageSize);
  370. return ResultUtil.ok(examTaskDtoIPage);
  371. }
  372. /**
  373. * 下载
  374. * @param response
  375. * @param examTaskId
  376. */
  377. @ApiOperation(value = "下载")
  378. @RequestMapping(value = "/paper_download", method = RequestMethod.POST)
  379. public void taskPaperDownload(HttpServletResponse response, @RequestParam Long examTaskId) {
  380. examTaskService.paperDownload(response, examTaskId);
  381. }
  382. /**
  383. * 启用/禁用
  384. *
  385. * @param request
  386. * @param examTaskDetail
  387. * @return
  388. */
  389. @ApiOperation(value = "启用/禁用")
  390. @RequestMapping(value = "/paper_enable", method = RequestMethod.POST)
  391. public Result taskPaperEnable(HttpServletRequest request, @RequestBody ExamTaskDetail examTaskDetail) {
  392. boolean isSuccess = examTaskDetailService.enable(examTaskDetail);
  393. return ResultUtil.ok(isSuccess);
  394. }
  395. }