ExamPrintPlanController.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  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.MakeupExamTaskDto;
  6. import com.qmth.distributed.print.business.bean.dto.RelatePaperDto;
  7. import com.qmth.distributed.print.business.bean.params.DeleteParams;
  8. import com.qmth.distributed.print.business.bean.params.MakeupExamTaskTotalParam;
  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.enums.PrintPlanStatusEnum;
  12. import com.qmth.distributed.print.business.service.ExamPrintPlanService;
  13. import com.qmth.distributed.print.business.service.ExamTaskDetailService;
  14. import com.qmth.distributed.print.business.service.ExamTaskService;
  15. import com.qmth.teachcloud.common.annotation.OperationLogDetail;
  16. import com.qmth.teachcloud.common.contant.SystemConstant;
  17. import com.qmth.teachcloud.common.entity.SysUser;
  18. import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
  19. import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
  20. import com.qmth.teachcloud.common.util.Result;
  21. import com.qmth.teachcloud.common.util.ResultUtil;
  22. import com.qmth.teachcloud.common.util.ServletUtil;
  23. import io.swagger.annotations.*;
  24. import org.springframework.validation.BindingResult;
  25. import org.springframework.validation.annotation.Validated;
  26. import org.springframework.web.bind.annotation.*;
  27. import javax.annotation.Resource;
  28. import javax.validation.Valid;
  29. import javax.validation.constraints.Max;
  30. import javax.validation.constraints.Min;
  31. import java.io.IOException;
  32. import java.util.ArrayList;
  33. import java.util.List;
  34. import java.util.Map;
  35. import java.util.Objects;
  36. import java.util.stream.Collectors;
  37. /**
  38. * <p>
  39. * 印刷计划管理 前端控制器
  40. * </p>
  41. *
  42. * @author xf
  43. * @since 2021-03-23
  44. */
  45. @Api(tags = "印刷计划管理Controller")
  46. @RestController
  47. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_EXAM + "/print")
  48. @Validated
  49. public class ExamPrintPlanController {
  50. @Resource
  51. private ExamPrintPlanService examPrintPlanService;
  52. @Resource
  53. private ExamTaskService examTaskService;
  54. @Resource
  55. private ExamTaskDetailService examTaskDetailService;
  56. @ApiOperation(value = "印刷计划查询")
  57. @RequestMapping(value = "/list", method = RequestMethod.POST)
  58. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  59. public Result findPrintPlanPage(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  60. @ApiParam(value = "考试ID") @RequestParam(required = false) String examId,
  61. @ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
  62. @ApiParam(value = "印刷计划状态") @RequestParam(required = false) PrintPlanStatusEnum status,
  63. @ApiParam(value = "计划创建时间段开始时间") @RequestParam(required = false) Long startTime,
  64. @ApiParam(value = "计划创建时间段结束时间") @RequestParam(required = false) Long endTime,
  65. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  66. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  67. if (semesterId == null) {
  68. throw ExceptionResultEnum.SEMESTER_ID_IS_NULL.exception();
  69. }
  70. if (examId == null) {
  71. throw ExceptionResultEnum.EXAM_ID_IS_NULL.exception();
  72. }
  73. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  74. if (Objects.isNull(printPlanIdList)) {
  75. printPlanIdList = new ArrayList<>();
  76. }
  77. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  78. return ResultUtil.ok(examPrintPlanService.printPlanPage(schoolId, SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), idList, status, startTime, endTime, pageNumber, pageSize));
  79. }
  80. @ApiOperation(value = "印刷计划模糊查询")
  81. @RequestMapping(value = "/query", method = RequestMethod.POST)
  82. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  83. public Result findPrintPlanQuery(@RequestParam(value = "source", required = false) String source,
  84. @RequestParam(value = "module", required = false) String module) {
  85. return ResultUtil.ok(examPrintPlanService.printPlanBriefQuery(source, module));
  86. }
  87. @ApiOperation(value = "按类型查询模板")
  88. @RequestMapping(value = "/get_template", method = RequestMethod.POST)
  89. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  90. public Result findPrintPlanPage() {
  91. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  92. SysUser user = (SysUser) ServletUtil.getRequestUser();
  93. Long userId = user.getId();
  94. return ResultUtil.ok(examPrintPlanService.printPlanTemplateDatasource(schoolId, userId));
  95. }
  96. @ApiOperation(value = "印刷计划-新增/修改")
  97. @RequestMapping(value = "/save", method = RequestMethod.POST)
  98. @ApiResponses({@ApiResponse(code = 200, message = "更新成功", response = Result.class)})
  99. @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "新增/修改操作,考试ID:{{printPlanParams.examId}}、计划ID:{{printPlanParams.id}}、计划名称:{{printPlanParams.name}}")
  100. public Result savePrintPlan(@Valid @RequestBody PrintPlanParams printPlanParams, BindingResult bindingResult) {
  101. if (bindingResult.hasErrors()) {
  102. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  103. }
  104. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  105. printPlanParams.setSchoolId(schoolId);
  106. return ResultUtil.ok(examPrintPlanService.savePrintPlan(printPlanParams));
  107. }
  108. @ApiOperation(value = "印刷计划-删除")
  109. @RequestMapping(value = "/remove", method = RequestMethod.POST)
  110. @ApiResponses({@ApiResponse(code = 200, message = "删除成功", response = Result.class)})
  111. @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除操作,用户ID:{{deleteParams.id}}")
  112. public Result removePrintPlan(@Valid @RequestBody DeleteParams deleteParams, BindingResult bindingResult) {
  113. if (bindingResult.hasErrors()) {
  114. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  115. }
  116. return ResultUtil.ok(examPrintPlanService.removePrintPlan(deleteParams));
  117. }
  118. /**
  119. * 关联试卷管理-查询
  120. *
  121. * @param relateType
  122. * @param printPlanIdList 印刷计划id集合
  123. * @param courseCode
  124. * @param paperNumber
  125. * @param userName 命题老师
  126. * @return
  127. */
  128. @ApiOperation(value = "关联试卷管理-查询")
  129. @RequestMapping(value = "/relate_list", method = RequestMethod.POST)
  130. public Result relateList(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  131. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  132. @RequestParam(value = "relateType", required = false) String relateType,
  133. @RequestParam(value = "printPlanIdList", required = false) List<String> printPlanIdList,
  134. @RequestParam(value = "courseCode", required = false) String courseCode,
  135. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  136. @RequestParam(value = "userName", required = false) String userName,
  137. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId) {
  138. if (semesterId == null) {
  139. throw ExceptionResultEnum.ERROR.exception("请选择学期");
  140. }
  141. if (Objects.isNull(printPlanIdList)) {
  142. printPlanIdList = new ArrayList<>();
  143. }
  144. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  145. List<ExamTaskDetailDto> examTasks = examTaskDetailService.list(SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), relateType, idList, courseCode, paperNumber, userName, cardRuleId);
  146. return ResultUtil.ok(examTasks);
  147. }
  148. /**
  149. * 关联试卷管理-查询计划下命题任务共有的未曝光卷型
  150. *
  151. * @param relateType
  152. * @param printPlanIdList 印刷计划id集合
  153. * @param courseCode
  154. * @param paperNumber
  155. * @param userName 命题老师
  156. * @return
  157. */
  158. @ApiOperation(value = "关联试卷管理-查询计划下命题任务共有的未曝光卷型")
  159. @RequestMapping(value = "/list_relate_common_types", method = RequestMethod.POST)
  160. public Result relateCommonTypes(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  161. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  162. @RequestParam(value = "relateType", required = false) String relateType,
  163. @RequestParam(value = "printPlanIdList", required = false) List<String> printPlanIdList,
  164. @RequestParam(value = "courseCode", required = false) String courseCode,
  165. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  166. @RequestParam(value = "userName", required = false) String userName,
  167. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId) {
  168. if (Objects.isNull(printPlanIdList)) {
  169. printPlanIdList = new ArrayList<>();
  170. }
  171. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  172. List<String> examTasks = examTaskDetailService.listRelateCommonTypes(SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), relateType, idList, courseCode, paperNumber, userName, cardRuleId);
  173. return ResultUtil.ok(examTasks);
  174. }
  175. /**
  176. * 关联试卷管理-批量关联
  177. *
  178. * @param relateType
  179. * @param printPlanIdList 印刷计划id集合
  180. * @param courseCode
  181. * @param paperNumber
  182. * @param userName 命题老师
  183. * @return
  184. */
  185. @ApiOperation(value = "关联试卷管理-批量关联")
  186. @RequestMapping(value = "/relate_update_batch", method = RequestMethod.POST)
  187. @OperationLogDetail(operationType = OperationTypeEnum.UPDATE)
  188. public Result relateUpdateBatch(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  189. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  190. @RequestParam(value = "relateType", required = false) String relateType,
  191. @RequestParam(value = "printPlanIdList", required = false) List<String> printPlanIdList,
  192. @RequestParam(value = "courseCode", required = false) String courseCode,
  193. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  194. @RequestParam(value = "userName", required = false) String userName,
  195. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId) throws IOException {
  196. if (Objects.isNull(printPlanIdList)) {
  197. printPlanIdList = new ArrayList<>();
  198. }
  199. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  200. List<ExamTaskDetailDto> examTasks = examTaskDetailService.list(SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), relateType, idList, courseCode, paperNumber, userName, cardRuleId);
  201. for (ExamTaskDetailDto examTask : examTasks) {
  202. RelatePaperParam relatePaperParam = new RelatePaperParam();
  203. relatePaperParam.setExamDetailCourseIds(examTask.getExamDetailCourseIds());
  204. relatePaperParam.setExamTaskId(Long.valueOf(examTask.getId()));
  205. relatePaperParam.setPaperNumber(examTask.getPaperNumber());
  206. relatePaperParam.setPrintPlanId(Long.valueOf(examTask.getPrintPlanId()));
  207. relatePaperParam.setRelatePaperType(relateType);
  208. examTaskDetailService.updatePaper(relatePaperParam);
  209. }
  210. return ResultUtil.ok("true");
  211. }
  212. @ApiOperation(value = "关联试卷管理-查询-汇总数据")
  213. @RequestMapping(value = "/relate_total", method = RequestMethod.POST)
  214. public Result relateTotal(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  215. @ApiParam(value = "考试ID") @RequestParam(required = false) String examId,
  216. @RequestParam(value = "relateType", required = false) String relateType,
  217. @RequestParam(value = "printPlanIdList", required = false) List<String> printPlanIdList,
  218. @RequestParam(value = "courseCode", required = false) String courseCode,
  219. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  220. @RequestParam(value = "userName", required = false) String userName,
  221. @RequestParam(value = "cardRuleId", required = false) Long cardRuleId) {
  222. if (Objects.isNull(printPlanIdList)) {
  223. printPlanIdList = new ArrayList<>();
  224. }
  225. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  226. Map map = examTaskDetailService.listTotal(SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), relateType, idList, courseCode, paperNumber, userName, cardRuleId);
  227. return ResultUtil.ok(map);
  228. }
  229. /**
  230. * 关联/更换试卷
  231. *
  232. * @param paperParam
  233. * @return
  234. */
  235. @ApiOperation(value = "关联/更换试卷")
  236. @RequestMapping(value = "/relate_update", method = RequestMethod.POST)
  237. @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "关联试卷操作,考试ID:{{paperParam.examId}}、试卷编号:{{paperParam.paperNumber}}、关联卷型:{{paperParam.relatePaperType}}")
  238. public Result relateUpdate(@RequestBody RelatePaperParam paperParam) throws IOException {
  239. boolean isSuccess = examTaskDetailService.updatePaper(paperParam);
  240. return ResultUtil.ok(isSuccess);
  241. }
  242. /**
  243. * 查询所有试卷编号/关联卷型
  244. *
  245. * @param examTaskId
  246. * @return
  247. */
  248. @ApiOperation(value = "查询所有试卷编号/关联卷型")
  249. @RequestMapping(value = "/relate_get_paper_numbers", method = RequestMethod.POST)
  250. public Result relateGetPaperNumbers(@RequestParam(value = "examTaskId", required = true) Long examTaskId,
  251. @RequestParam(value = "printPlanId", required = true) Long printPlanId,
  252. @RequestParam(value = "courseCode", required = true) String courseCode) {
  253. List<RelatePaperDto> list = examTaskService.listPaperTypes(examTaskId, printPlanId, courseCode);
  254. return ResultUtil.ok(list);
  255. }
  256. /**
  257. * 补考任务查询
  258. */
  259. @ApiOperation(value = "补考任务查询")
  260. @RequestMapping(value = "/list_makeup_task", method = RequestMethod.POST)
  261. public Result listMakeupTask(@ApiParam(value = "印刷计划", required = true) @RequestParam(value = "printPlanId") Long printPlanId,
  262. @ApiParam(value = "学期") @RequestParam(value = "semesterId", required = false) Long semesterId,
  263. @ApiParam(value = "考试") @RequestParam(value = "examId", required = false) Long examId,
  264. @ApiParam(value = "开课学院") @RequestParam(value = "collegeId", required = false) Long collegeId,
  265. @ApiParam(value = "课程代码") @RequestParam(value = "courseCode", required = false) String courseCode,
  266. @ApiParam(value = "试卷编号") @RequestParam(value = "paperNumber", required = false) String paperNumber,
  267. @ApiParam(value = "命题老师") @RequestParam(value = "userName", required = false) String userName,
  268. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  269. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  270. IPage<MakeupExamTaskDto> list = examTaskService.listMakeupExamTask(printPlanId, semesterId, examId, collegeId, courseCode, paperNumber, userName, pageNumber, pageSize);
  271. return ResultUtil.ok(list);
  272. }
  273. /**
  274. * 补考任务保存
  275. *
  276. * @return
  277. */
  278. @ApiOperation(value = "补考任务保存")
  279. @RequestMapping(value = "/save_makeup_task", method = RequestMethod.POST)
  280. public Result saveMakeupTask(@ApiParam(value = "补考任务") @RequestBody MakeupExamTaskTotalParam makeupExamTaskTotalParam) {
  281. examTaskService.saveMakeupTask(makeupExamTaskTotalParam);
  282. return ResultUtil.ok(true, "");
  283. }
  284. }