ExamTaskController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. package com.qmth.distributed.print.api;
  2. import com.qmth.boot.api.constant.ApiConstant;
  3. import com.qmth.boot.api.exception.ApiException;
  4. import com.qmth.distributed.print.business.bean.dto.ExamTaskDto;
  5. import com.qmth.distributed.print.business.bean.dto.ExamTaskImportDto;
  6. import com.qmth.distributed.print.business.entity.ExamTask;
  7. import com.qmth.distributed.print.business.entity.ExamTaskApplyTemp;
  8. import com.qmth.distributed.print.business.service.*;
  9. import com.qmth.teachcloud.common.annotation.OperationLogDetail;
  10. import com.qmth.teachcloud.common.contant.SystemConstant;
  11. import com.qmth.teachcloud.common.entity.BasicAttachment;
  12. import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
  13. import com.qmth.teachcloud.common.enums.UploadFileEnum;
  14. import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
  15. import com.qmth.teachcloud.common.service.BasicAttachmentService;
  16. import com.qmth.teachcloud.common.util.Result;
  17. import com.qmth.teachcloud.common.util.ResultUtil;
  18. import com.qmth.teachcloud.common.util.ServletUtil;
  19. import io.swagger.annotations.Api;
  20. import io.swagger.annotations.ApiOperation;
  21. import io.swagger.annotations.ApiParam;
  22. import org.springframework.validation.annotation.Validated;
  23. import org.springframework.web.bind.annotation.*;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.annotation.Resource;
  26. import javax.validation.constraints.Max;
  27. import javax.validation.constraints.Min;
  28. import java.util.ArrayList;
  29. import java.util.List;
  30. import java.util.Objects;
  31. import java.util.stream.Collectors;
  32. /**
  33. * <p>
  34. * 命题任务管理 前端控制器
  35. * </p>
  36. *
  37. * @author xf
  38. * @since 2021-03-23
  39. */
  40. @Api(tags = "命题任务管理Controller")
  41. @RestController
  42. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_EXAM + "/task")
  43. @Validated
  44. public class ExamTaskController {
  45. @Resource
  46. private ExamTaskService examTaskService;
  47. @Resource
  48. private BasicAttachmentService basicAttachmentService;
  49. @Resource
  50. private PrintCommonService printCommonService;
  51. @Resource
  52. private ExamTaskPrintService examTaskPrintService;
  53. @Resource
  54. ActivitiService activitiService;
  55. @Resource
  56. ExamTaskApplyTempService examTaskApplyTempService;
  57. /**
  58. * 命题任务管理-查询
  59. *
  60. * @param enable 正常/禁用
  61. * @param status 状态
  62. * @param cardRuleId 题卡规则ID
  63. * @param courseCode 课程代码
  64. * @param paperNumber 试卷编号
  65. * @param startTime 开始时间
  66. * @param endTime 结束时间
  67. * @param userName 命题老师名称
  68. * @param createName 创建人名称
  69. * @param pageNumber 分页参数
  70. * @param pageSize 分页参数
  71. * @return Result
  72. */
  73. @ApiOperation(value = "命题任务管理-分页查询")
  74. @RequestMapping(value = "/list", method = RequestMethod.POST)
  75. public Result list(@RequestParam(required = false) String semesterId,
  76. @RequestParam(required = false) String examId,
  77. @RequestParam(required = false) Boolean enable,
  78. @RequestParam(required = false) String status,
  79. @RequestParam(required = false) String cardRuleId,
  80. @RequestParam(required = false) String courseCode,
  81. @RequestParam(required = false) String paperNumber,
  82. @RequestParam(required = false) Long startTime,
  83. @RequestParam(required = false) Long endTime,
  84. @RequestParam(required = false) String userName,
  85. @RequestParam(required = false) String createName,
  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. return ResultUtil.ok(examTaskService.list(SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), enable, status, SystemConstant.convertIdToLong(cardRuleId), courseCode, paperNumber, startTime, endTime, userName, createName, pageNumber, pageSize));
  92. }
  93. /**
  94. * 命题老师模糊查询
  95. */
  96. @ApiOperation(value = "命题老师模糊查询")
  97. @RequestMapping(value = "/user_query", method = RequestMethod.POST)
  98. public Result userQuery(@RequestParam(value = "param", required = false) String param) {
  99. return ResultUtil.ok(examTaskService.listUser(param));
  100. }
  101. /**
  102. * 命题任务管理-更改/指派命题老师
  103. */
  104. @ApiOperation(value = "命题任务管理-更改/指派命题老师")
  105. @RequestMapping(value = "/assign_user", method = RequestMethod.POST)
  106. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  107. public Result assignUser(@RequestBody ExamTask examTask) {
  108. examTask = examTaskService.assignUser(examTask);
  109. if (Objects.nonNull(examTask.getFlowId())) {
  110. activitiService.sendFlowStartMsg(examTask.getFlowId());
  111. }
  112. return ResultUtil.ok(true);
  113. }
  114. /**
  115. * 命题任务管理-启用/禁用
  116. */
  117. @ApiOperation(value = "命题任务管理-启用/禁用")
  118. @RequestMapping(value = "/enable", method = RequestMethod.POST)
  119. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UPDATE)
  120. public Result enable(@RequestBody ExamTask examTask) {
  121. return ResultUtil.ok(examTaskService.enable(examTask));
  122. }
  123. /**
  124. * 命题任务管理-新建命题任务
  125. */
  126. @ApiOperation(value = "命题任务管理-新建命题任务")
  127. @RequestMapping(value = "/save", method = RequestMethod.POST)
  128. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
  129. public Result save(@RequestBody ExamTask examTask) {
  130. examTaskService.saveExamTaskNew(examTask);
  131. if (Objects.nonNull(examTask.getFlowId())) {
  132. activitiService.sendFlowStartMsg(examTask.getFlowId());
  133. }
  134. return ResultUtil.ok(true);
  135. }
  136. /**
  137. * 命题任务管理-删除
  138. */
  139. @ApiOperation(value = "命题任务管理-删除")
  140. @RequestMapping(value = "/delete", method = RequestMethod.POST)
  141. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.DELETE)
  142. public Result delete(@RequestParam Long id) {
  143. examTaskService.delete(id);
  144. return ResultUtil.ok(true);
  145. }
  146. /**
  147. * 命题任务管理-文件导入
  148. */
  149. @ApiOperation(value = "命题任务管理-批量新建命题任务-文件导入")
  150. @RequestMapping(value = "/import", method = RequestMethod.POST)
  151. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
  152. public Result importFile(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) {
  153. BasicAttachment basicAttachment = null;
  154. try {
  155. basicAttachment = printCommonService.saveAttachment(file, ServletUtil.getRequestMd5(), UploadFileEnum.FILE);
  156. if (Objects.isNull(basicAttachment)) {
  157. throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
  158. } else {
  159. ExamTaskImportDto examTaskImportDto = examTaskService.importFile(file);
  160. return ResultUtil.ok(examTaskImportDto);
  161. }
  162. } catch (Exception e) {
  163. if (Objects.nonNull(basicAttachment)) {
  164. basicAttachmentService.deleteAttachment(basicAttachment);
  165. }
  166. if (e instanceof ApiException) {
  167. ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
  168. } else {
  169. ResultUtil.error(e.getMessage());
  170. }
  171. }
  172. return null;
  173. }
  174. /**
  175. * 命题任务管理-批量保存命题任务
  176. */
  177. @ApiOperation(value = "命题任务管理-批量新建命题任务-保存")
  178. @RequestMapping(value = "/save_batch", method = RequestMethod.POST)
  179. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.ADD)
  180. public Result saveBatch(@RequestBody ExamTask task) {
  181. examTaskService.saveBatch(task);
  182. return ResultUtil.ok(true);
  183. }
  184. /**
  185. * 根据命题任务ID查询单个数据
  186. *
  187. * @param examTaskId 命题任务ID
  188. * @return Result
  189. */
  190. @ApiOperation(value = "根据命题任务ID查询任务详情数据")
  191. @RequestMapping(value = "/exam_task_get_one", method = RequestMethod.POST)
  192. public Result applyGetOne(@RequestParam(value = "examTaskId") Long examTaskId) {
  193. ExamTaskDto examTaskDto = examTaskService.getByExamTaskId(examTaskId);
  194. return ResultUtil.ok(examTaskDto);
  195. }
  196. /**
  197. * 班级列表
  198. *
  199. * @param courseCode 课程代码
  200. * @return Result
  201. */
  202. @ApiOperation(value = "命题任务管理-命题申请-班级列表")
  203. @RequestMapping(value = "/list_task_apply_class", method = RequestMethod.POST)
  204. public Result listTaskApplyClass(@RequestParam(value = "courseCode") String courseCode) {
  205. return ResultUtil.ok(examTaskPrintService.listExamTaskClass(courseCode));
  206. }
  207. /**
  208. * 命题任务管理-命题申请-暂存
  209. *
  210. * @param examTaskApplyTemp
  211. * @return
  212. */
  213. @ApiOperation(value = "命题任务管理-命题申请-暂存")
  214. @RequestMapping(value = "/stage_task_apply", method = RequestMethod.POST)
  215. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EDIT)
  216. public Result stageTaskApply(@RequestBody ExamTaskApplyTemp examTaskApplyTemp) {
  217. ExamTaskApplyTemp task = examTaskApplyTempService.stageTaskApply(examTaskApplyTemp);
  218. return ResultUtil.ok(task);
  219. }
  220. /**
  221. * 试卷编号模糊查询
  222. */
  223. @ApiOperation(value = "试卷编号模糊查询")
  224. @RequestMapping(value = "/paper_number_query", method = RequestMethod.POST)
  225. public Result paperNumberQuery(@RequestParam(value = "param", required = false) String param,
  226. @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
  227. if (Objects.isNull(printPlanId)) {
  228. printPlanId = new ArrayList<>();
  229. }
  230. List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  231. return ResultUtil.ok(examTaskService.listPaperNumber(param, printPlanIdList));
  232. }
  233. }