ExamPrintPlanController.java 17 KB

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