ExamPrintPlanController.java 16 KB

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