ExamTaskController.java 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835
  1. package com.qmth.distributed.print.api;
  2. import com.qmth.boot.api.annotation.Aac;
  3. import com.qmth.boot.api.annotation.BOOL;
  4. import com.qmth.boot.api.constant.ApiConstant;
  5. import com.qmth.boot.api.exception.ApiException;
  6. import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailCardDto;
  7. import com.qmth.distributed.print.business.bean.dto.ExamTaskImportDto;
  8. import com.qmth.distributed.print.business.bean.dto.ExamTaskPrintDto;
  9. import com.qmth.distributed.print.business.bean.params.ApproveFormParams;
  10. import com.qmth.distributed.print.business.bean.params.ExamTaskApplyParam;
  11. import com.qmth.distributed.print.business.bean.params.ExamTaskPrintParams;
  12. import com.qmth.distributed.print.business.bean.params.PrintPlanParams;
  13. import com.qmth.distributed.print.business.bean.result.EditResult;
  14. import com.qmth.distributed.print.business.entity.*;
  15. import com.qmth.distributed.print.business.enums.ExamStatusEnum;
  16. import com.qmth.distributed.print.business.enums.MakeMethodEnum;
  17. import com.qmth.distributed.print.business.enums.MessageEnum;
  18. import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
  19. import com.qmth.distributed.print.business.service.*;
  20. import com.qmth.distributed.print.business.templete.execute.AsyncCreatePdfTempleteService;
  21. import com.qmth.distributed.print.business.templete.execute.AsyncTaskReviewSampleExportService;
  22. import com.qmth.teachcloud.common.bean.params.ArraysParams;
  23. import com.qmth.teachcloud.common.contant.SpringContextHolder;
  24. import com.qmth.teachcloud.common.contant.SystemConstant;
  25. import com.qmth.teachcloud.common.entity.BasicAttachment;
  26. import com.qmth.teachcloud.common.entity.SysUser;
  27. import com.qmth.teachcloud.common.entity.TBTask;
  28. import com.qmth.teachcloud.common.enums.*;
  29. import com.qmth.teachcloud.common.service.BasicAttachmentService;
  30. import com.qmth.teachcloud.common.service.BasicStudentService;
  31. import com.qmth.teachcloud.common.service.TBTaskService;
  32. import com.qmth.teachcloud.common.util.Result;
  33. import com.qmth.teachcloud.common.util.ResultUtil;
  34. import com.qmth.teachcloud.common.util.ServletUtil;
  35. import io.swagger.annotations.*;
  36. import org.activiti.engine.TaskService;
  37. import org.activiti.engine.task.Task;
  38. import org.springframework.beans.factory.annotation.Autowired;
  39. import org.springframework.util.CollectionUtils;
  40. import org.springframework.validation.BindingResult;
  41. import org.springframework.web.bind.annotation.*;
  42. import org.springframework.web.multipart.MultipartFile;
  43. import javax.annotation.Resource;
  44. import javax.servlet.http.HttpServletRequest;
  45. import javax.servlet.http.HttpServletResponse;
  46. import javax.validation.Valid;
  47. import java.io.IOException;
  48. import java.util.*;
  49. import java.util.stream.Collectors;
  50. /**
  51. * <p>
  52. * 命题任务 前端控制器
  53. * </p>
  54. *
  55. * @author xf
  56. * @since 2021-03-23
  57. */
  58. @Api(tags = "命题任务Controller")
  59. @RestController
  60. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/task")
  61. public class ExamTaskController {
  62. @Autowired
  63. private ExamTaskService examTaskService;
  64. @Autowired
  65. private ExamTaskDetailService examTaskDetailService;
  66. @Autowired
  67. private ExamTaskReviewLogService examTaskReviewLogService;
  68. @Autowired
  69. private BasicAttachmentService basicAttachmentService;
  70. @Resource
  71. private AsyncTaskReviewSampleExportService asyncTaskReviewSampleExportService;
  72. @Autowired
  73. private PrintCommonService printCommonService;
  74. @Resource
  75. private BasicMessageService basicMessageService;
  76. @Autowired
  77. private ExamTaskPrintService examTaskPrintService;
  78. @Resource
  79. TaskService taskService;
  80. @Resource
  81. private BasicStudentService basicStudentService;
  82. @Resource
  83. ActivitiService activitiService;
  84. @Autowired
  85. ExamTaskApplyTempService examTaskApplyTempService;
  86. /**
  87. * 命题任务管理-查询
  88. *
  89. * @param enable
  90. * @param status
  91. * @param cardRuleId
  92. * @param courseCode
  93. * @param paperNumber
  94. * @param startTime
  95. * @param endTime
  96. * @param userName 命题教师姓名
  97. * @param createName 创建人姓名
  98. * @param pageNumber
  99. * @param pageSize
  100. * @return
  101. */
  102. @ApiOperation(value = "命题任务管理-查询")
  103. @RequestMapping(value = "/list", method = RequestMethod.POST)
  104. public Result list(@RequestParam(required = false) Boolean enable,
  105. @RequestParam(required = false) String status,
  106. @RequestParam(required = false) String cardRuleId,
  107. @RequestParam(required = false) String courseCode,
  108. @RequestParam(required = false) String paperNumber,
  109. @RequestParam(required = false) Long startTime,
  110. @RequestParam(required = false) Long endTime,
  111. @RequestParam(required = false) String userName,
  112. @RequestParam(required = false) String createName,
  113. @RequestParam Integer pageNumber,
  114. @RequestParam Integer pageSize) {
  115. return ResultUtil.ok(examTaskService.list(enable, status, SystemConstant.convertIdToLong(cardRuleId), courseCode, paperNumber, startTime, endTime, userName, createName, pageNumber, pageSize));
  116. }
  117. /**
  118. * 试卷编号模糊查询
  119. *
  120. * @param param
  121. * @return
  122. */
  123. @ApiOperation(value = "试卷编号模糊查询")
  124. @RequestMapping(value = "/paper_number_query", method = RequestMethod.POST)
  125. public Result paperNumberQuery(@RequestParam(value = "param", required = false) String param,
  126. @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
  127. if (Objects.isNull(printPlanId)) {
  128. printPlanId = new ArrayList<>();
  129. }
  130. List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  131. return ResultUtil.ok(examTaskService.listPaperNumber(param, printPlanIdList));
  132. }
  133. /**
  134. * 命题老师模糊查询
  135. *
  136. * @param param
  137. * @return
  138. */
  139. @ApiOperation(value = "命题老师模糊查询")
  140. @RequestMapping(value = "/user_query", method = RequestMethod.POST)
  141. public Result userQuery(@RequestParam(value = "param", required = false) String param) {
  142. return ResultUtil.ok(examTaskService.listUser(param));
  143. }
  144. /**
  145. * 命题任务管理-更改/指派命题老师
  146. *
  147. * @param examTask
  148. * @return
  149. */
  150. @ApiOperation(value = "命题任务管理-更改/指派命题老师")
  151. @RequestMapping(value = "/assign_user", method = RequestMethod.POST)
  152. public Result assignUser(@RequestBody ExamTask examTask) {
  153. return ResultUtil.ok(examTaskService.assignUser(examTask));
  154. }
  155. /**
  156. * 命题任务管理-启用/禁用
  157. *
  158. * @param examTask
  159. * @return
  160. */
  161. @ApiOperation(value = "命题任务管理-启用/禁用")
  162. @RequestMapping(value = "/enable", method = RequestMethod.POST)
  163. public Result enable(@RequestBody ExamTask examTask) {
  164. return ResultUtil.ok(examTaskService.enable(examTask));
  165. }
  166. /**
  167. * 命题任务管理-新建命题任务
  168. *
  169. * @param examTask
  170. * @return
  171. */
  172. @ApiOperation(value = "命题任务管理-新建命题任务")
  173. @RequestMapping(value = "/save", method = RequestMethod.POST)
  174. public Result save(@RequestBody ExamTask examTask) {
  175. ExamTask task = examTaskService.saveExamTaskNew(examTask);
  176. //发送短信
  177. if (task.getId() != null) {
  178. basicMessageService.sendNoticeTaskCreate(task);
  179. }
  180. return ResultUtil.ok(true);
  181. }
  182. /**
  183. * 命题任务管理-文件导入
  184. *
  185. * @param file
  186. * @return
  187. */
  188. @ApiOperation(value = "命题任务管理-文件导入")
  189. @RequestMapping(value = "/import", method = RequestMethod.POST)
  190. public Result importFile(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) {
  191. BasicAttachment basicAttachment = null;
  192. try {
  193. basicAttachment = printCommonService.saveAttachment(file, ServletUtil.getRequestMd5(), UploadFileEnum.FILE);
  194. if (Objects.isNull(basicAttachment)) {
  195. throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
  196. } else {
  197. ExamTaskImportDto examTaskImportDto = examTaskService.importFile(file);
  198. return ResultUtil.ok(examTaskImportDto);
  199. }
  200. } catch (Exception e) {
  201. if (Objects.nonNull(basicAttachment)) {
  202. basicAttachmentService.deleteAttachment(basicAttachment);
  203. }
  204. if (e instanceof ApiException) {
  205. ResultUtil.error((ApiException) e, e.getMessage());
  206. } else {
  207. ResultUtil.error(e.getMessage());
  208. }
  209. }
  210. return null;
  211. }
  212. /**
  213. * 命题任务管理-批量保存命题任务
  214. *
  215. * @param task
  216. * @return
  217. */
  218. @ApiOperation(value = "命题任务管理-批量保存命题任务")
  219. @RequestMapping(value = "/save_batch", method = RequestMethod.POST)
  220. public Result saveBatch(@RequestBody ExamTask task) {
  221. List<ExamTask> examTasks = examTaskService.saveBatch(task);
  222. if (examTasks != null && examTasks.size() > 0) {
  223. // 发送短信
  224. ExamTask[] tasks = examTasks.toArray(new ExamTask[examTasks.size()]);
  225. basicMessageService.sendNoticeTaskCreate(tasks);
  226. }
  227. return ResultUtil.ok(true);
  228. }
  229. /**
  230. * 审核历史
  231. *
  232. * @param flowId
  233. * @return
  234. */
  235. @ApiOperation(value = "审核历史")
  236. @RequestMapping(value = "/review_list", method = RequestMethod.POST)
  237. public Result reviewList(@ApiParam(value = "流程id", required = true) @RequestParam String flowId) {
  238. return ResultUtil.ok(examTaskReviewLogService.list(SystemConstant.convertIdToLong(flowId)));
  239. }
  240. /**
  241. * 入库申请-查询
  242. *
  243. * @param auditStatus
  244. * @param cardRuleId
  245. * @param courseCode
  246. * @param paperNumber
  247. * @param startTime
  248. * @param endTime
  249. * @param userName 命题老师名称
  250. * @param pageNumber
  251. * @param pageSize
  252. * @return
  253. */
  254. @ApiOperation(value = "入库申请-查询")
  255. @RequestMapping(value = "/apply_list", method = RequestMethod.POST)
  256. public Result taskApplyList(@RequestParam(value = "auditStatus", required = false) String auditStatus,
  257. @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
  258. @RequestParam(value = "courseCode", required = false) String courseCode,
  259. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  260. @RequestParam(value = "startTime", required = false) Long startTime,
  261. @RequestParam(value = "endTime", required = false) Long endTime,
  262. @RequestParam(value = "userName", required = false) String userName,
  263. @RequestParam("pageNumber") Integer pageNumber,
  264. @RequestParam("pageSize") Integer pageSize) {
  265. return ResultUtil.ok(examTaskService.listTaskApply(auditStatus, SystemConstant.convertIdToLong(cardRuleId), courseCode, paperNumber, startTime, endTime, userName, pageNumber, pageSize));
  266. }
  267. /**
  268. * 根据命题任务ID查询单个数据
  269. *
  270. * @param examTaskId
  271. * @return
  272. */
  273. @ApiOperation(value = "根据命题任务ID查询单个数据")
  274. @RequestMapping(value = "/apply_get_one", method = RequestMethod.POST)
  275. public Result applyGetOne(@RequestParam(value = "examTaskId") Long examTaskId,
  276. @RequestParam(value = "source", required = false) String source) {
  277. ExamTaskDetailCardDto detail = examTaskService.applyGetOne(examTaskId, source);
  278. if (Objects.nonNull(detail) && Objects.nonNull(detail.getFlowId())) {
  279. Task task = taskService.createTaskQuery().processInstanceId(detail.getFlowId()).singleResult();
  280. if (Objects.nonNull(task)) {
  281. detail.setFlowTaskId(task.getId());
  282. }
  283. }
  284. return ResultUtil.ok(detail);
  285. }
  286. /**
  287. * 入库申请-暂存/提交
  288. *
  289. * @param examTaskDetail
  290. * @return
  291. */
  292. @ApiOperation(value = "入库申请-暂存/提交")
  293. @RequestMapping(value = "/apply_save", method = RequestMethod.POST)
  294. public Result taskApplySave(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
  295. boolean isSuccess = examTaskService.saveExamTaskDetail(examTaskDetail);
  296. ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
  297. if (examTaskDetail.getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && !examTask.getReview()) {
  298. // 校验是否可以提交打印状态
  299. printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
  300. }
  301. //待审核状态,发送短信
  302. if (ExamStatusEnum.SUBMIT.equals(examTask.getStatus())) {
  303. basicMessageService.sendNoticeTaskAuditCreateOrReview(examTask, MessageEnum.NOTICE_OF_AUDIT_CREATED);
  304. }
  305. return ResultUtil.ok(isSuccess);
  306. }
  307. /**
  308. * 入库申请-撤回
  309. *
  310. * @param examTask
  311. * @return
  312. */
  313. @ApiOperation(value = "入库申请-撤回")
  314. @RequestMapping(value = "/apply_status", method = RequestMethod.POST)
  315. public Result taskApplyStatus(@RequestBody ExamTask examTask) {
  316. return ResultUtil.ok(examTaskService.status(examTask));
  317. }
  318. /**
  319. * 入库审核-查询-未审核
  320. *
  321. * @param courseCode
  322. * @param paperNumber
  323. * @param userId
  324. * @param cardRuleId
  325. * @param startTime
  326. * @param endTime
  327. * @param startCreateTime 申请时间-起始
  328. * @param endCreateTime 申请时间-终止
  329. * @param createName 创建人
  330. * @param pageNumber
  331. * @param pageSize
  332. * @return
  333. */
  334. @ApiOperation(value = "入库审核-查询-未审核")
  335. @RequestMapping(value = "/review_list_unaudited", method = RequestMethod.POST)
  336. public Result taskReviewListUnaudited(@RequestParam(value = "courseCode", required = false) String courseCode,
  337. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  338. @RequestParam(value = "userId", required = false) Long userId,
  339. @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
  340. @RequestParam(value = "startTime", required = false) Long startTime,
  341. @RequestParam(value = "endTime", required = false) Long endTime,
  342. @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
  343. @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
  344. @RequestParam(value = "createName", required = false) String createName,
  345. @RequestParam("pageNumber") Integer pageNumber,
  346. @RequestParam("pageSize") Integer pageSize) {
  347. return ResultUtil.ok(examTaskService.listTaskReviewUnaudited(courseCode, paperNumber, userId, SystemConstant.convertIdToLong(cardRuleId), startTime, endTime, startCreateTime, endCreateTime, createName, pageNumber, pageSize));
  348. }
  349. /**
  350. * 入库审核-查询-未审核
  351. *
  352. * @param courseCode
  353. * @param paperNumber
  354. * @param userId
  355. * @param cardRuleId
  356. * @param startTime
  357. * @param endTime
  358. * @param startCreateTime 申请时间-起始
  359. * @param endCreateTime 申请时间-终止
  360. * @param createName 创建人
  361. * @param pageNumber
  362. * @param pageSize
  363. * @return
  364. */
  365. @ApiOperation(value = "入库审核-查询-已审核")
  366. @RequestMapping(value = "/review_list_audited", method = RequestMethod.POST)
  367. public Result taskReviewListAudited(@RequestParam(value = "reviewStatus", required = false) String
  368. reviewStatus,
  369. @RequestParam(value = "courseCode", required = false) String courseCode,
  370. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  371. @RequestParam(value = "userId", required = false) Long userId,
  372. @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
  373. @RequestParam(value = "startTime", required = false) Long startTime,
  374. @RequestParam(value = "endTime", required = false) Long endTime,
  375. @RequestParam(value = "startCreateTime", required = false) Long startCreateTime,
  376. @RequestParam(value = "endCreateTime", required = false) Long endCreateTime,
  377. @RequestParam(value = "createName", required = false) String createName,
  378. @RequestParam("pageNumber") Integer pageNumber,
  379. @RequestParam("pageSize") Integer pageSize) {
  380. return ResultUtil.ok(examTaskService.listTaskReviewAudited(reviewStatus, courseCode, paperNumber, userId, SystemConstant.convertIdToLong(cardRuleId), startTime, endTime, startCreateTime, endCreateTime, createName, pageNumber, pageSize));
  381. }
  382. /**
  383. * 审核
  384. *
  385. * @param taskReviewLog
  386. * @return
  387. */
  388. @ApiOperation(value = "审核")
  389. @RequestMapping(value = "/review_save", method = RequestMethod.POST)
  390. public Result taskReviewSave(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
  391. List<Long> examTaskIdList = new ArrayList<>();
  392. examTaskIdList.add(taskReviewLog.getExamTaskId());
  393. SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
  394. boolean isSuccess = examTaskService.taskReviewSave(taskReviewLog);
  395. if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
  396. ExamTask examTask = examTaskService.getById(taskReviewLog.getExamTaskId());
  397. // 校验是否可以提交打印状态
  398. printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
  399. // 发送审核通过短信通知
  400. basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS, sysUser);
  401. } else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())) {
  402. // 发送审核不通过短信通知
  403. basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS, sysUser);
  404. }
  405. return ResultUtil.ok(isSuccess);
  406. }
  407. /**
  408. * 入库审核-批量审核
  409. *
  410. * @param taskReviewLog
  411. * @return
  412. */
  413. @ApiOperation(value = "入库审核-批量审核")
  414. @RequestMapping(value = "/review_save_batch", method = RequestMethod.POST)
  415. public Result taskReviewSaveBatch(@RequestBody ExamTaskReviewLog taskReviewLog) throws IOException {
  416. List<Long> examTaskIdList = Arrays.asList(taskReviewLog.getExamTaskIds());
  417. if (!CollectionUtils.isEmpty(examTaskIdList)) {
  418. for (Long examTaskId : examTaskIdList) {
  419. ExamTask examTask = examTaskService.getById(examTaskId);
  420. Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(examTask.getFlowId())).singleResult();
  421. Map<String, Object> map = new HashMap<>();
  422. map.computeIfAbsent(SystemConstant.FLOW_TASK_ID, v -> task.getId());
  423. map.computeIfAbsent(SystemConstant.APPROVE_OPERATION, v -> FlowApprovePassEnum.PASS);
  424. Map<String, Object> objectMap = activitiService.taskApprove(map);
  425. if (Objects.nonNull(objectMap)) {
  426. TFFlowApprove tfFlowApprove = (TFFlowApprove) objectMap.get("tfFlowApprove");
  427. //审核通过,生成pdf
  428. if (Objects.nonNull(tfFlowApprove) && FlowGdykdxApproveSetupEnum.FINISH.getSetup() == tfFlowApprove.getSetup()) {
  429. // ExamTask examTask = (ExamTask) objectMap.get("examTask");
  430. SysUser sysUser = (SysUser) objectMap.get("sysUser");
  431. try {
  432. printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
  433. } catch (IOException e) {
  434. throw ExceptionResultEnum.ERROR.exception("生成pdf失败");
  435. }
  436. }
  437. }
  438. }
  439. }
  440. /*SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
  441. boolean isSuccess = examTaskService.taskReviewSaveBatch(taskReviewLog);
  442. if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.PASS.name())) {
  443. // 发送审核通过短信通知
  444. basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_PASS, sysUser);
  445. } else if (isSuccess && taskReviewLog.getReviewStatus().name().equals(ReviewStatusEnum.NOT_PASS.name())) {
  446. // 发送审核不通过短信通知
  447. basicMessageService.noticeOfExamTaskAudit(examTaskIdList, MessageEnum.NOTICE_OF_AUDIT_NOT_PASS, sysUser);
  448. }*/
  449. return ResultUtil.ok();
  450. }
  451. @ApiOperation(value = "导出审核样本")
  452. @RequestMapping(value = "/review_export", method = RequestMethod.POST)
  453. public Result taskReviewExport(@Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws
  454. Exception {
  455. if (bindingResult.hasErrors()) {
  456. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  457. }
  458. Long[] ids = arraysParams.getIds();
  459. Map<String, Object> map = printCommonService.saveTask(TaskTypeEnum.SAMPLE_EXPORT);
  460. map.put("ids", ids);
  461. asyncTaskReviewSampleExportService.exportTask(map);
  462. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  463. return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
  464. }
  465. /**
  466. * 卷库查询
  467. *
  468. * @param courseCode
  469. * @param paperNumber
  470. * @param startTime
  471. * @param endTime
  472. * @param pageNumber
  473. * @param pageSize
  474. * @return
  475. */
  476. @ApiOperation(value = "卷库查询")
  477. @RequestMapping(value = "/paper_list", method = RequestMethod.POST)
  478. public Result taskPaperList(@RequestParam(value = "courseCode", required = false) String courseCode,
  479. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  480. @RequestParam(value = "startTime", required = false) Long startTime,
  481. @RequestParam(value = "endTime", required = false) Long endTime,
  482. @RequestParam(value = "makeMethod", required = false) MakeMethodEnum makeMethod,
  483. @RequestParam(value = "cardRuleId", required = false) String cardRuleId,
  484. @RequestParam("pageNumber") Integer pageNumber,
  485. @RequestParam("pageSize") Integer pageSize) {
  486. return ResultUtil.ok(examTaskService.listTaskPaper(courseCode, paperNumber, startTime, endTime, makeMethod, SystemConstant.convertIdToLong(cardRuleId), pageNumber, pageSize));
  487. }
  488. /**
  489. * 下载
  490. *
  491. * @param response
  492. * @param examTaskId
  493. */
  494. @ApiOperation(value = "下载")
  495. @RequestMapping(value = "/paper_download", method = RequestMethod.POST)
  496. public void taskPaperDownload(HttpServletResponse response, @RequestParam Long examTaskId) throws Exception {
  497. examTaskService.paperDownload(response, examTaskId);
  498. }
  499. /**
  500. * 卷库查询-启用/禁用
  501. *
  502. * @param examTaskDetail
  503. * @return
  504. */
  505. @ApiOperation(value = "卷库查询-启用/禁用")
  506. @RequestMapping(value = "/paper_enable", method = RequestMethod.POST)
  507. public Result taskPaperEnable(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
  508. boolean isSuccess = examTaskDetailService.enable(examTaskDetail);
  509. // 启用,触发考场生成pdf
  510. if (examTaskDetail.getEnable()) {
  511. SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
  512. ExamTask examTask = examTaskService.getById(examTaskDetail.getId());
  513. // 校验课程关联考场,是否已经提交打印
  514. Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getCourseCode(), examTask.getPaperNumber());
  515. // 校验是否可以提交打印状态
  516. if (isCreate) {
  517. printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
  518. }
  519. }
  520. return ResultUtil.ok(isSuccess);
  521. }
  522. /**
  523. * 卷库查询-卷库修改
  524. *
  525. * @param examTaskDetail
  526. * @return
  527. */
  528. @ApiOperation(value = "卷库查询-卷库修改")
  529. @RequestMapping(value = "/paper_update", method = RequestMethod.POST)
  530. public Result taskPaperUpdate(@RequestBody ExamTaskDetail examTaskDetail) throws IOException {
  531. boolean isSuccess = examTaskDetailService.paperUpdate(examTaskDetail);
  532. if (isSuccess) {
  533. ExamTask examTask = examTaskService.getById(examTaskDetail.getExamTaskId());
  534. if (examTask.getReview()) {
  535. // 发送短信
  536. basicMessageService.sendNoticeTaskAuditCreateOrReview(examTask, MessageEnum.NOTICE_OF_AUDIT_REVIEW);
  537. } else {
  538. SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
  539. // 校验课程关联考场,是否已经提交打印
  540. Boolean isCreate = printCommonService.checkExamDetailStatus(examTask.getSchoolId(), null, examTask.getCourseCode(), examTask.getPaperNumber());
  541. // 校验是否可以提交打印状态
  542. if (isCreate) {
  543. printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), sysUser);
  544. }
  545. }
  546. }
  547. return ResultUtil.ok(isSuccess);
  548. }
  549. @ApiOperation(value = "卷库查询-批量下载试卷PDF、题卡")
  550. @RequestMapping(value = "/paper_card_download_pdf", method = RequestMethod.POST)
  551. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  552. public Result paperCardDownloadPdf(@RequestParam(value = "courseCode", required = false) String courseCode,
  553. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  554. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId,
  555. @RequestParam(value = "makeMethod", required = false) MakeMethodEnum makeMethod,
  556. @RequestParam(value = "startTime", required = false) Long startTime,
  557. @RequestParam(value = "endTime", required = false) Long endTime) {
  558. TBTask tbTask = examTaskService.taskDownloadPdf(courseCode, paperNumber, cardRuleId, makeMethod, startTime, endTime);
  559. return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
  560. }
  561. /**
  562. * 班级列表
  563. *
  564. * @param courseCode
  565. * @return
  566. */
  567. @ApiOperation(value = "命题任务管理-命题申请-班级列表")
  568. @RequestMapping(value = "/list_task_apply_class", method = RequestMethod.POST)
  569. public Result listTaskApplyClass(@RequestParam(value = "courseCode") String courseCode) {
  570. return ResultUtil.ok(examTaskPrintService.listExamTaskClass(courseCode));
  571. }
  572. /**
  573. * 命题任务管理-命题申请-暂存
  574. *
  575. * @param examTaskApplyTemp
  576. * @return
  577. */
  578. @ApiOperation(value = "命题任务管理-命题申请-暂存")
  579. @RequestMapping(value = "/stage_task_apply", method = RequestMethod.POST)
  580. public Result stageTaskApply(@RequestBody ExamTaskApplyTemp examTaskApplyTemp) {
  581. ExamTaskApplyTemp task = examTaskApplyTempService.stageTaskApply(examTaskApplyTemp);
  582. return ResultUtil.ok(task);
  583. }
  584. /**
  585. * 命题任务管理-命题申请-提交
  586. *
  587. * @param examTaskApplyTemp
  588. * @return
  589. */
  590. @ApiOperation(value = "命题任务管理-命题申请-提交")
  591. @RequestMapping(value = "/submit_task_apply", method = RequestMethod.POST)
  592. public Result submitTaskApply(@RequestBody ExamTaskApplyTemp examTaskApplyTemp) throws IOException {
  593. ExamTask examTask = examTaskService.submitTaskApply(examTaskApplyTemp);
  594. if (!examTask.getReview()) {
  595. // 校验是否可以提交打印状态
  596. printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
  597. }
  598. return ResultUtil.ok();
  599. }
  600. /**
  601. * 入库申请-新建命题任务
  602. *
  603. * @param examTaskApplyParam
  604. * @return
  605. */
  606. @ApiOperation(value = "入库申请-新建命题任务-暂存/提交")
  607. @RequestMapping(value = "/save_task_apply", method = RequestMethod.POST)
  608. public Result saveTaskApply(@RequestBody ExamTaskApplyParam examTaskApplyParam) throws IOException {
  609. ExamTask examTask = examTaskService.saveExamTaskAndExamTaskDetail(examTaskApplyParam);
  610. if (examTaskApplyParam.getExamTaskDetail().getOperateType().equals(ExamStatusEnum.SUBMIT.name()) && !examTask.getReview()) {
  611. // 校验是否可以提交打印状态
  612. printCommonService.checkData(examTask.getSchoolId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
  613. }
  614. return ResultUtil.ok(examTask);
  615. }
  616. /**
  617. * 入库申请-新建命题任务-取消/删除
  618. *
  619. * @param examTaskId
  620. * @return
  621. */
  622. @ApiOperation(value = "入库申请-新建命题任务-取消/删除")
  623. @RequestMapping(value = "/remove_task_apply", method = RequestMethod.POST)
  624. public Result removeTaskApply(@RequestParam(value = "examTaskId") Long examTaskId) {
  625. examTaskService.removeByExamTaskId(examTaskId);
  626. return ResultUtil.ok(true, "");
  627. }
  628. /**
  629. * 入库申请-新建命题任务-切换题卡
  630. *
  631. * @param examTaskId
  632. * @return
  633. */
  634. @ApiOperation(value = "切换题卡")
  635. @RequestMapping(value = "/switch_card", method = RequestMethod.POST)
  636. public Result switchCard(@RequestParam(value = "examTaskId") Long examTaskId) {
  637. examTaskService.switchCard(examTaskId);
  638. return ResultUtil.ok(true, "");
  639. }
  640. /**
  641. * 查看印刷任务发布
  642. *
  643. * @param printPlanId
  644. * @param courseCode
  645. * @param paperNumber
  646. * @return
  647. */
  648. @ApiOperation(value = "卷库查询-发布印刷任务-查看列表")
  649. @RequestMapping(value = "/list_task_print", method = RequestMethod.POST)
  650. public Result listTaskPrintStudent(@RequestParam(value = "printPlanId") Long printPlanId,
  651. @RequestParam(value = "courseCode") String courseCode,
  652. @RequestParam(value = "paperNumber") String paperNumber) {
  653. ExamTaskPrintDto examTaskPrintDto = examTaskPrintService.listTaskPrint(printPlanId, courseCode, paperNumber);
  654. return ResultUtil.ok(examTaskPrintDto);
  655. }
  656. /**
  657. * 扩展字段列表
  658. *
  659. * @return
  660. */
  661. @ApiOperation(value = "卷库查询-发布印刷任务-扩展字段列表")
  662. @RequestMapping(value = "/list_task_print_extend_fields", method = RequestMethod.POST)
  663. public Result listTaskPrintExtendFields() {
  664. return ResultUtil.ok(examTaskPrintService.listTaskPrintExtendFields());
  665. }
  666. /**
  667. * 班级列表
  668. *
  669. * @param printPlanId
  670. * @return
  671. */
  672. @ApiOperation(value = "卷库查询-发布印刷任务-班级列表")
  673. @RequestMapping(value = "/list_task_print_class", method = RequestMethod.POST)
  674. public Result listTaskPrintClass(@RequestParam(value = "printPlanId") String printPlanId,
  675. @RequestParam(value = "courseCode") String courseCode,
  676. @RequestParam(value = "paperNumber") String paperNumber,
  677. @RequestParam(value = "examTaskPrintId", required = false) Long examTaskPrintId) {
  678. return ResultUtil.ok(examTaskPrintService.listClass(printPlanId, courseCode, paperNumber, examTaskPrintId));
  679. }
  680. /**
  681. * 印刷室列表
  682. *
  683. * @return
  684. */
  685. @ApiOperation(value = "卷库查询-发布印刷任务-印刷室列表")
  686. @RequestMapping(value = "/list_task_print_house", method = RequestMethod.POST)
  687. public Result listTaskPrintHouse() {
  688. return ResultUtil.ok(examTaskPrintService.listHouse());
  689. }
  690. /**
  691. * 发布印刷任务
  692. *
  693. * @param examTaskPrint
  694. * @return
  695. */
  696. @ApiOperation(value = "卷库查询-发布印刷任务")
  697. @RequestMapping(value = "/save_task_print", method = RequestMethod.POST)
  698. public Result createTaskPrint(@RequestBody ExamTaskPrint examTaskPrint) {
  699. examTaskPrintService.createTaskPrint(examTaskPrint);
  700. return ResultUtil.ok(true, "");
  701. }
  702. /**
  703. * 提交印刷任务
  704. *
  705. * @param examTaskPrintParams
  706. * @return
  707. */
  708. @ApiOperation(value = "卷库查询-批量提交印刷任务")
  709. @RequestMapping(value = "/submit_task_print", method = RequestMethod.POST)
  710. public Result submitTaskPrint(@RequestBody ExamTaskPrintParams examTaskPrintParams) throws IOException {
  711. examTaskPrintService.submitTaskPrint(examTaskPrintParams);
  712. return ResultUtil.ok(true, "");
  713. }
  714. /**
  715. * 查看考生
  716. *
  717. * @param classId
  718. * @return
  719. */
  720. @ApiOperation(value = "卷库查询-发布印刷任务-查看考生")
  721. @RequestMapping(value = "/list_task_print_student", method = RequestMethod.POST)
  722. public Result listTaskPrintStudent(@RequestParam(value = "classId") String classId,
  723. @RequestParam Integer pageNumber,
  724. @RequestParam Integer pageSize) {
  725. Set<Long> classIds = Arrays.stream(classId.split(",")).map(SystemConstant::convertIdToLong).collect(Collectors.toSet());
  726. return ResultUtil.ok(basicStudentService.basicStudentPage(null, null, classIds, pageNumber, pageSize));
  727. }
  728. /**
  729. * 卷库查询-发布印刷任务-删除
  730. *
  731. * @param examTaskPrintId
  732. * @return
  733. */
  734. @ApiOperation(value = "卷库查询-发布印刷任务-删除")
  735. @RequestMapping(value = "/remove_task_print", method = RequestMethod.POST)
  736. public Result listTaskPrintStudent(@RequestParam(value = "examTaskPrintId") Long examTaskPrintId) {
  737. examTaskPrintService.remove(examTaskPrintId);
  738. return ResultUtil.ok(true, "");
  739. }
  740. @ApiOperation(value = "题卡标题查询")
  741. @RequestMapping(value = "/find_card_title", method = RequestMethod.POST)
  742. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  743. public Result findCardTitle(@ApiParam(value = "题卡规则id", required = true) @RequestParam String cardRuleId) {
  744. return ResultUtil.ok((Object) examTaskService.findCardTitle(SystemConstant.convertIdToLong(cardRuleId)));
  745. }
  746. @ApiOperation(value = "命题任务-审批-获取试卷审批表数据")
  747. @RequestMapping(value = "/find_approve_form_json", method = RequestMethod.POST)
  748. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  749. public Result findApproveFormJson(@ApiParam(value = "命题任务id", required = true) @RequestParam String examTaskId) {
  750. return ResultUtil.ok((Object) examTaskService.findExamTaskApprovalForm(SystemConstant.convertIdToLong(examTaskId)));
  751. }
  752. @ApiOperation(value = "命题任务-审批-获取试卷审批表pdf")
  753. @RequestMapping(value = "/find_approve_form_pdf", method = RequestMethod.POST)
  754. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  755. public void findApproveFormPdf(@Valid @RequestBody ApproveFormParams approveFormParams, BindingResult bindingResult) throws Exception {
  756. if (bindingResult.hasErrors()) {
  757. throw ExceptionResultEnum.ERROR.exception(bindingResult.getAllErrors().get(0).getDefaultMessage());
  758. }
  759. HttpServletResponse response = ServletUtil.getResponse();
  760. examTaskService.findExamTaskApprovalPdf(response,approveFormParams.getExamTaskId(), approveFormParams.getHtmlContent());
  761. }
  762. @ApiOperation(value = "命题任务-考试对象查询")
  763. @RequestMapping(value = "/find_exam_object", method = RequestMethod.POST)
  764. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  765. public Result findExamObject(@ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
  766. return ResultUtil.ok((Object) examTaskService.findExamObjectDtoByPaperNumber(paperNumber));
  767. }
  768. }