ExamPrintTaskController.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. package com.qmth.distributed.print.api;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.qmth.boot.api.constant.ApiConstant;
  5. import com.qmth.distributed.print.business.bean.dto.PrintTaskDto;
  6. import com.qmth.distributed.print.business.bean.dto.PrintTaskTotalDto;
  7. import com.qmth.distributed.print.business.bean.result.EditResult;
  8. import com.qmth.distributed.print.business.entity.ExamDetail;
  9. import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
  10. import com.qmth.distributed.print.business.service.ExamDetailService;
  11. import com.qmth.distributed.print.business.service.ExamPrintPlanService;
  12. import com.qmth.distributed.print.business.templete.execute.AsyncDownloadPdfTempleteService;
  13. import com.qmth.teachcloud.common.annotation.OperationLogDetail;
  14. import com.qmth.teachcloud.common.bean.params.ArraysParams;
  15. import com.qmth.teachcloud.common.contant.SystemConstant;
  16. import com.qmth.teachcloud.common.entity.SysUser;
  17. import com.qmth.teachcloud.common.entity.TBTask;
  18. import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
  19. import com.qmth.teachcloud.common.enums.TaskTypeEnum;
  20. import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
  21. import com.qmth.teachcloud.common.service.TBTaskService;
  22. import com.qmth.teachcloud.common.util.Result;
  23. import com.qmth.teachcloud.common.util.ResultUtil;
  24. import com.qmth.teachcloud.common.util.ServletUtil;
  25. import io.swagger.annotations.*;
  26. import org.springframework.validation.BindingResult;
  27. import org.springframework.validation.annotation.Validated;
  28. import org.springframework.web.bind.annotation.*;
  29. import javax.annotation.Resource;
  30. import javax.validation.Valid;
  31. import javax.validation.constraints.Max;
  32. import javax.validation.constraints.Min;
  33. import java.io.IOException;
  34. import java.util.Arrays;
  35. import java.util.List;
  36. import java.util.Map;
  37. import java.util.Objects;
  38. /**
  39. * <p>
  40. * 印刷任务管理 前端控制器
  41. * </p>
  42. */
  43. @Api(tags = "印刷任务管理Controller")
  44. @RestController
  45. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_EXAM + "/print")
  46. @Validated
  47. public class ExamPrintTaskController {
  48. @Resource
  49. private ExamPrintPlanService examPrintPlanService;
  50. @Resource
  51. private ExamDetailService examDetailService;
  52. @Resource
  53. private TBTaskService tbTaskService;
  54. @Resource
  55. private AsyncDownloadPdfTempleteService asyncDownloadPdfTempleteService;
  56. /**
  57. * 印刷任务管理-查询
  58. *
  59. * @param printPlanId
  60. * @param status
  61. * @param courseCode
  62. * @param paperNumber
  63. * @param examPlace
  64. * @param examStartTime
  65. * @param examEndTime
  66. * @param printHouseId 印刷室id
  67. * @param pageNumber
  68. * @param pageSize
  69. * @return
  70. */
  71. @ApiOperation(value = "印刷任务管理-查询")
  72. @RequestMapping(value = "/task_list", method = RequestMethod.POST)
  73. public Result taskList(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  74. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  75. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  76. @RequestParam(value = "status", required = false) String status,
  77. @RequestParam(value = "courseCode", required = false) String courseCode,
  78. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  79. @RequestParam(value = "examPlace", required = false) String examPlace,
  80. @RequestParam(value = "examRoom", required = false) String examRoom,
  81. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  82. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  83. @RequestParam(value = "printStartTime", required = false) Long printStartTime,
  84. @RequestParam(value = "printEndTime", required = false) Long printEndTime,
  85. @RequestParam(value = "printHouseId", required = false) String printHouseId,
  86. @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  87. @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  88. if (semesterId == null) {
  89. throw ExceptionResultEnum.ERROR.exception("请选择学期");
  90. }
  91. if (examId == null) {
  92. throw ExceptionResultEnum.ERROR.exception("请选择考试");
  93. }
  94. IPage<PrintTaskDto> examTasks = examDetailService.listPrintTask(SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, SystemConstant.convertIdToLong(printHouseId), pageNumber, pageSize);
  95. return ResultUtil.ok(examTasks);
  96. }
  97. /**
  98. * 印刷任务管理-汇总数据查询
  99. *
  100. * @param printPlanId
  101. * @param status
  102. * @param courseCode
  103. * @param paperNumber
  104. * @param examPlace
  105. * @param examRoom
  106. * @param examStartTime
  107. * @param examEndTime
  108. * @return
  109. */
  110. @ApiOperation(value = "印刷任务管理-汇总数据查询")
  111. @RequestMapping(value = "/task_total_data", method = RequestMethod.POST)
  112. public Result taskTotalData(@ApiParam(value = "学期ID") @RequestParam(required = false) Long semesterId,
  113. @ApiParam(value = "考试id") @RequestParam(required = false) Long examId,
  114. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  115. @RequestParam(value = "status", required = false) String status,
  116. @RequestParam(value = "courseCode", required = false) String courseCode,
  117. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  118. @RequestParam(value = "examPlace", required = false) String examPlace,
  119. @RequestParam(value = "examRoom", required = false) String examRoom,
  120. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  121. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  122. @RequestParam(value = "printStartTime", required = false) Long printStartTime,
  123. @RequestParam(value = "printEndTime", required = false) Long printEndTime,
  124. @RequestParam(value = "printHouseId", required = false) String printHouseId) {
  125. PrintTaskTotalDto printTaskTotalDto = examDetailService.taskTotalData(semesterId, examId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, SystemConstant.convertIdToLong(printHouseId));
  126. return ResultUtil.ok(printTaskTotalDto);
  127. }
  128. /**
  129. * 提交印刷
  130. *
  131. * @param examDetail
  132. * @return
  133. */
  134. @ApiOperation(value = "印刷任务管理-提交印刷")
  135. @RequestMapping(value = "/task_submit", method = RequestMethod.POST)
  136. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  137. public Result taskSubmit(@RequestBody ExamDetail examDetail) throws IOException {
  138. boolean isSuccess = examDetailService.taskSubmit(examDetail);
  139. return ResultUtil.ok(isSuccess);
  140. }
  141. /**
  142. * 撤回
  143. *
  144. * @param examDetail
  145. * @return
  146. */
  147. @ApiOperation(value = "印刷任务管理-撤回提交")
  148. @RequestMapping(value = "/task_cancel", method = RequestMethod.POST)
  149. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  150. public Result taskCancel(@RequestBody ExamDetail examDetail) {
  151. boolean isSuccess = examDetailService.taskCancel(examDetail.getId());
  152. return ResultUtil.ok(isSuccess);
  153. }
  154. /**
  155. * 批量撤回
  156. *
  157. * @param data id集合
  158. * @return
  159. */
  160. @ApiOperation(value = "印刷任务管理-撤回提交")
  161. @RequestMapping(value = "/task_batch_cancel", method = RequestMethod.POST)
  162. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  163. public Result taskCancel(@RequestBody Map data) {
  164. boolean isSuccess = examDetailService.taskBatchCancel(data);
  165. return ResultUtil.ok(isSuccess);
  166. }
  167. // /**
  168. // * 重新提交
  169. // *
  170. // * @param examDetail
  171. // * @return
  172. // */
  173. // @ApiOperation(value = "印刷任务管理-重新提交")
  174. // @RequestMapping(value = "/task_resubmit", method = RequestMethod.POST)
  175. // @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  176. // public Result taskResubmit(@RequestBody ExamDetail examDetail) throws IOException {
  177. // boolean isSuccess = examDetailService.resubmitTask(examDetail);
  178. // return ResultUtil.ok(isSuccess);
  179. // }
  180. /**
  181. * 印刷任务管理-查看印品
  182. *
  183. * @param map
  184. * @return
  185. */
  186. @ApiOperation(value = "印刷任务管理-查看印品")
  187. @RequestMapping(value = "/template_view", method = RequestMethod.POST)
  188. public Result templateViewPDF(@RequestBody Map<String, Long> map) {
  189. List<Map<String, String>> list = examPrintPlanService.tempalteView(map.get("printPlanId"));
  190. return ResultUtil.ok(list);
  191. }
  192. /**
  193. * 印刷任务管理-预览PDF
  194. *
  195. * @param map
  196. * @return
  197. */
  198. @ApiOperation(value = "印刷任务管理-预览")
  199. @RequestMapping(value = "/task_view_pdf", method = RequestMethod.POST)
  200. public Result taskViewPDF(@RequestBody Map<String, Long> map) {
  201. List<JSONObject> list = examDetailService.taskViewPDF(map.get("examDetailId"));
  202. return ResultUtil.ok(list);
  203. }
  204. @ApiOperation(value = "印刷任务管理-批量下载PDF")
  205. @RequestMapping(value = "/task_download_pdf", method = RequestMethod.POST)
  206. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  207. public Result taskDownloadPdf(@ApiParam(value = "id数组", required = true) @Valid @RequestBody ArraysParams arraysParams, BindingResult bindingResult) throws Exception {
  208. if (bindingResult.hasErrors()) {
  209. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  210. }
  211. List<ExamDetail> examDetailList = examDetailService.listByIds(Arrays.asList(arraysParams.getIds()));
  212. for (ExamDetail ExamDetail : examDetailList) {
  213. if (ExamDetail.getStatus() == ExamDetailStatusEnum.NEW) {
  214. throw ExceptionResultEnum.ERROR.exception("状态为新建不能下载");
  215. }
  216. }
  217. Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.PRINT_PDF_DOWNLOAD, arraysParams, (SysUser) ServletUtil.getRequestUser());
  218. asyncDownloadPdfTempleteService.exportTask(map);
  219. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  220. return Objects.nonNull(tbTask) ? ResultUtil.ok(new EditResult(tbTask.getId())) : ResultUtil.error("创建任务失败");
  221. }
  222. /**
  223. * 印刷任务做废、恢复
  224. */
  225. @ApiOperation(value = "印刷任务管理-作废/恢复")
  226. @RequestMapping(value = "/task_normal", method = RequestMethod.POST)
  227. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  228. public Result taskNormal(@RequestBody ExamDetail examDetail) {
  229. boolean isSuccess = examDetailService.taskNormal(examDetail);
  230. return ResultUtil.ok(isSuccess);
  231. }
  232. }