ExamTaskController.java 16 KB

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