ExamPrintPlanController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  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.distributed.print.business.bean.dto.ExamTaskDetailDto;
  7. import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
  8. import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
  9. import com.qmth.distributed.print.business.bean.dto.RelatePaperDto;
  10. import com.qmth.distributed.print.business.bean.params.ArraysParams;
  11. import com.qmth.distributed.print.business.bean.params.DeleteParams;
  12. import com.qmth.distributed.print.business.bean.params.PrintPlanParams;
  13. import com.qmth.distributed.print.business.bean.params.RelatePaperParam;
  14. import com.qmth.distributed.print.business.bean.result.EditResult;
  15. import com.qmth.distributed.print.business.entity.ExamDetail;
  16. import com.qmth.distributed.print.business.entity.SysUser;
  17. import com.qmth.distributed.print.business.entity.TBTask;
  18. import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
  19. import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
  20. import com.qmth.distributed.print.business.enums.TaskTypeEnum;
  21. import com.qmth.distributed.print.business.service.*;
  22. import com.qmth.distributed.print.business.templete.execute.AsyncDownloadPdfTempleteService;
  23. import com.qmth.distributed.print.business.util.ServletUtil;
  24. import com.qmth.distributed.print.common.contant.SystemConstant;
  25. import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
  26. import com.qmth.distributed.print.common.util.Result;
  27. import com.qmth.distributed.print.common.util.ResultUtil;
  28. import io.swagger.annotations.*;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.validation.BindingResult;
  31. import org.springframework.web.bind.annotation.*;
  32. import javax.annotation.Resource;
  33. import javax.validation.Valid;
  34. import java.io.IOException;
  35. import java.util.Arrays;
  36. import java.util.List;
  37. import java.util.Map;
  38. import java.util.Objects;
  39. /**
  40. * <p>
  41. * 印刷计划管理 前端控制器
  42. * </p>
  43. *
  44. * @author xf
  45. * @since 2021-03-23
  46. */
  47. @Api(tags = "印刷计划管理Controller")
  48. @RestController
  49. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.exam}/print")
  50. @Aac(auth = BOOL.FALSE)
  51. public class ExamPrintPlanController {
  52. @Resource
  53. private ExamPrintPlanService examPrintPlanService;
  54. @Autowired
  55. private ExamTaskService examTaskService;
  56. @Autowired
  57. private ExamTaskDetailService examTaskDetailService;
  58. @Autowired
  59. private ExamDetailService examDetailService;
  60. @Resource
  61. TBTaskService tbTaskService;
  62. @Resource
  63. AsyncDownloadPdfTempleteService asyncDownloadPdfTempleteService;
  64. @ApiOperation(value = "印刷计划查询")
  65. @RequestMapping(value = "/list", method = RequestMethod.POST)
  66. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  67. public Result findPrintPlanPage(@ApiParam(value = "印刷计划id") @RequestParam(required = false) String printPlanId,
  68. @ApiParam(value = "印刷计划状态") @RequestParam(required = false) PrintPlanStatusEnum status,
  69. @ApiParam(value = "计划创建时间段开始时间") @RequestParam(required = false) Long startTime,
  70. @ApiParam(value = "计划创建时间段结束时间") @RequestParam(required = false) Long endTime,
  71. @ApiParam(value = "分页页码", required = true) @RequestParam int pageNumber,
  72. @ApiParam(value = "分页数", required = true) @RequestParam int pageSize) {
  73. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  74. return ResultUtil.ok(examPrintPlanService.printPlanPage(schoolId, SystemConstant.convertIdToLong(printPlanId), status, startTime, endTime, pageNumber, pageSize));
  75. }
  76. @ApiOperation(value = "印刷计划模糊查询")
  77. @RequestMapping(value = "/query", method = RequestMethod.POST)
  78. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  79. public Result findPrintPlanQuery() {
  80. return ResultUtil.ok(examPrintPlanService.printPlanBriefQuery());
  81. }
  82. @ApiOperation(value = "按类型查询模板")
  83. @RequestMapping(value = "/get_template", method = RequestMethod.POST)
  84. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  85. public Result findPrintPlanPage() {
  86. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  87. SysUser user = (SysUser) ServletUtil.getRequestUser();
  88. Long userId = user.getId();
  89. return ResultUtil.ok(examPrintPlanService.printPlanTemplateDatasource(schoolId, userId));
  90. }
  91. @ApiOperation(value = "印刷计划-新增/修改")
  92. @RequestMapping(value = "/save", method = RequestMethod.POST)
  93. @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
  94. public Result savePrintPlan(@Valid @RequestBody PrintPlanParams printPlanParams, BindingResult bindingResult) {
  95. if (bindingResult.hasErrors()) {
  96. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  97. }
  98. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  99. printPlanParams.setSchoolId(schoolId);
  100. return ResultUtil.ok(examPrintPlanService.savePrintPlan(printPlanParams));
  101. }
  102. @ApiOperation(value = "印刷计划-删除")
  103. @RequestMapping(value = "/remove", method = RequestMethod.POST)
  104. @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = Result.class)})
  105. public Result removePrintPlan(@Valid @RequestBody DeleteParams deleteParams, BindingResult bindingResult) {
  106. if (bindingResult.hasErrors()) {
  107. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  108. }
  109. return ResultUtil.ok(examPrintPlanService.removePrintPlan(deleteParams));
  110. }
  111. /**
  112. * 关联试卷管理-查询
  113. *
  114. * @param relateType
  115. * @param printPlanId
  116. * @param courseCode
  117. * @param paperNumber
  118. * @param pageNumber
  119. * @param pageSize
  120. * @return
  121. */
  122. @ApiOperation(value = "关联试卷管理-查询")
  123. @RequestMapping(value = "/relate_list", method = RequestMethod.POST)
  124. public Result relateList(@RequestParam(value = "relateType", required = false) String relateType,
  125. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  126. @RequestParam(value = "courseCode", required = false) String courseCode,
  127. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  128. @RequestParam Integer pageNumber,
  129. @RequestParam Integer pageSize) {
  130. IPage<ExamTaskDetailDto> examTasks = examTaskDetailService.list(relateType, printPlanId, courseCode, paperNumber, pageNumber, pageSize);
  131. return ResultUtil.ok(examTasks);
  132. }
  133. /**
  134. * 关联/更换试卷
  135. *
  136. * @param paperParam
  137. * @return
  138. */
  139. @ApiOperation(value = "关联/更换试卷")
  140. @RequestMapping(value = "/relate_update", method = RequestMethod.POST)
  141. public Result relateUpdate(@RequestBody RelatePaperParam paperParam) throws IOException {
  142. boolean isSuccess = examTaskDetailService.updatePaper(paperParam);
  143. return ResultUtil.ok(isSuccess);
  144. }
  145. /**
  146. * 查询所有试卷编号/关联卷型
  147. *
  148. * @param examTaskId
  149. * @return
  150. */
  151. @ApiOperation(value = "查询所有试卷编号/关联卷型")
  152. @RequestMapping(value = "/relate_get_paper_numbers", method = RequestMethod.POST)
  153. public Result relateGetPaperNumbers(@RequestParam(value = "examTaskId", required = true) Long examTaskId,
  154. @RequestParam(value = "printPlanId", required = true) Long printPlanId,
  155. @RequestParam(value = "courseCode", required = true) String courseCode) {
  156. List<RelatePaperDto> list = examTaskService.listPaperTypes(examTaskId, printPlanId, courseCode);
  157. return ResultUtil.ok(list);
  158. }
  159. /**
  160. * 印刷任务管理-查询
  161. *
  162. * @param printPlanId
  163. * @param status
  164. * @param courseCode
  165. * @param paperNumber
  166. * @param examPlace
  167. * @param examStartTime
  168. * @param examEndTime
  169. * @param pageNumber
  170. * @param pageSize
  171. * @return
  172. */
  173. @ApiOperation(value = "印刷任务管理-查询")
  174. @RequestMapping(value = "/task_list", method = RequestMethod.POST)
  175. public Result taskList(@RequestParam(value = "printPlanId", required = false) Long printPlanId,
  176. @RequestParam(value = "status", required = false) String status,
  177. @RequestParam(value = "courseCode", required = false) String courseCode,
  178. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  179. @RequestParam(value = "examPlace", required = false) String examPlace,
  180. @RequestParam(value = "examRoom", required = false) String examRoom,
  181. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  182. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  183. @RequestParam Integer pageNumber,
  184. @RequestParam Integer pageSize) {
  185. IPage<PrintTaskDto> examTasks = examDetailService.listPrintTask(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, pageNumber, pageSize);
  186. return ResultUtil.ok(examTasks);
  187. }
  188. /**
  189. * 提交印刷
  190. *
  191. * @param examDetail
  192. * @return
  193. */
  194. @ApiOperation(value = "印刷任务管理-提交印刷")
  195. @RequestMapping(value = "/task_submit", method = RequestMethod.POST)
  196. public Result taskSubmit(@RequestBody ExamDetail examDetail) throws IOException {
  197. boolean isSuccess = examDetailService.submitTask(examDetail);
  198. return ResultUtil.ok(isSuccess);
  199. }
  200. /**
  201. * 撤回
  202. *
  203. * @param examDetail
  204. * @return
  205. */
  206. @ApiOperation(value = "印刷任务管理-撤回提交")
  207. @RequestMapping(value = "/task_cancel", method = RequestMethod.POST)
  208. public Result taskCancel(@RequestBody ExamDetail examDetail) {
  209. boolean isSuccess = examDetailService.taskCancel(examDetail);
  210. return ResultUtil.ok(isSuccess);
  211. }
  212. /**
  213. * 重新提交
  214. *
  215. * @param examDetail
  216. * @return
  217. */
  218. @ApiOperation(value = "印刷任务管理-重新提交")
  219. @RequestMapping(value = "/task_resubmit", method = RequestMethod.POST)
  220. public Result taskResubmit(@RequestBody ExamDetail examDetail) throws IOException {
  221. boolean isSuccess = examDetailService.resubmitTask(examDetail);
  222. return ResultUtil.ok(isSuccess);
  223. }
  224. /**
  225. * 印刷任务管理-汇总数据查询
  226. *
  227. * @param printPlanId
  228. * @param status
  229. * @param courseCode
  230. * @param paperNumber
  231. * @param examPlace
  232. * @param examRoom
  233. * @param examStartTime
  234. * @param examEndTime
  235. * @return
  236. */
  237. @ApiOperation(value = "印刷任务管理-汇总数据查询")
  238. @RequestMapping(value = "/task_total_data", method = RequestMethod.POST)
  239. public Result taskTotalData(@RequestParam(value = "printPlanId", required = false) Long printPlanId,
  240. @RequestParam(value = "status", required = false) String status,
  241. @RequestParam(value = "courseCode", required = false) String courseCode,
  242. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  243. @RequestParam(value = "examPlace", required = false) String examPlace,
  244. @RequestParam(value = "examRoom", required = false) String examRoom,
  245. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  246. @RequestParam(value = "examEndTime", required = false) Long examEndTime) {
  247. PrintTaskTotalDto printTaskTotalDto = examDetailService.taskTotalData(printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime);
  248. return ResultUtil.ok(printTaskTotalDto);
  249. }
  250. /**
  251. * 印刷任务管理-查看印品
  252. *
  253. * @param map
  254. * @return
  255. */
  256. @ApiOperation(value = "印刷任务管理-查看印品")
  257. @RequestMapping(value = "/template_view", method = RequestMethod.POST)
  258. public Result tempalteViewPDF(@RequestBody Map<String, Long> map) {
  259. List<Map<String, String>> list = examPrintPlanService.tempalteView(map.get("printPlanId"));
  260. return ResultUtil.ok(list);
  261. }
  262. /**
  263. * 印刷任务管理-查看PDF
  264. *
  265. * @param map
  266. * @return
  267. */
  268. @ApiOperation(value = "印刷任务管理-查看PDF")
  269. @RequestMapping(value = "/task_view_pdf", method = RequestMethod.POST)
  270. public Result taskViewPDF(@RequestBody Map<String, Long> map) {
  271. String path = examDetailService.taskViewPDF(map.get("examDetailId"));
  272. return ResultUtil.ok(path);
  273. }
  274. @ApiOperation(value = "印刷任务管理-批量下载PDF")
  275. @RequestMapping(value = "/task_download_pdf", method = RequestMethod.POST)
  276. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  277. public Result taskDownloadPdf(@ApiParam(value = "id数组", required = true) @Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws Exception {
  278. if (bindingResult.hasErrors()) {
  279. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  280. }
  281. List<ExamDetail> examDetailList = examDetailService.listByIds(Arrays.asList(arraysParams.getIds()));
  282. for (ExamDetail ExamDetail : examDetailList) {
  283. if (ExamDetail.getStatus() != ExamDetailStatusEnum.READY && ExamDetail.getStatus() != ExamDetailStatusEnum.PRINTING) {
  284. throw ExceptionResultEnum.ERROR.exception("状态只能为就绪或印刷中才能下载");
  285. }
  286. }
  287. Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.PRINT_PDF_DOWNLOAD, arraysParams, (SysUser) ServletUtil.getRequestUser());
  288. asyncDownloadPdfTempleteService.exportTask(map);
  289. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  290. return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
  291. }
  292. }