ExamDetailController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package com.qmth.distributed.print.api;
  2. import com.qmth.boot.api.constant.ApiConstant;
  3. import com.qmth.distributed.print.business.bean.result.EditResult;
  4. import com.qmth.distributed.print.business.service.ExamDetailService;
  5. import com.qmth.distributed.print.business.service.ExamStudentService;
  6. import com.qmth.distributed.print.business.service.PrintCommonService;
  7. import com.qmth.distributed.print.business.templete.execute.AsyncExaminationExportTemplateService;
  8. import com.qmth.distributed.print.business.templete.execute.AsyncExaminationImportTemplateService;
  9. import com.qmth.teachcloud.common.annotation.OperationLogDetail;
  10. import com.qmth.teachcloud.common.contant.SystemConstant;
  11. import com.qmth.teachcloud.common.entity.TBTask;
  12. import com.qmth.teachcloud.common.enums.TaskTypeEnum;
  13. import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
  14. import com.qmth.teachcloud.common.service.TBTaskService;
  15. import com.qmth.teachcloud.common.service.TeachcloudCommonService;
  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.*;
  20. import org.springframework.validation.annotation.Validated;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RequestMethod;
  23. import org.springframework.web.bind.annotation.RequestParam;
  24. import org.springframework.web.bind.annotation.RestController;
  25. import org.springframework.web.multipart.MultipartFile;
  26. import javax.annotation.Resource;
  27. import javax.validation.constraints.Max;
  28. import javax.validation.constraints.Min;
  29. import java.io.IOException;
  30. import java.util.*;
  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 + "/print")
  43. @Validated
  44. public class ExamDetailController {
  45. @Resource
  46. private TBTaskService tbTaskService;
  47. @Resource
  48. private AsyncExaminationImportTemplateService asyncExaminationImportTemplateService;
  49. @Resource
  50. private AsyncExaminationExportTemplateService asyncExaminationExportTemplateService;
  51. @Resource
  52. private ExamDetailService examDetailService;
  53. @Resource
  54. private PrintCommonService printCommonService;
  55. @Resource
  56. private ExamStudentService examStudentService;
  57. @Resource
  58. TeachcloudCommonService teachcloudCommonService;
  59. @ApiOperation(value = "异步考务数据批量导入接口")
  60. @RequestMapping(value = "/data_import", method = RequestMethod.POST)
  61. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  62. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
  63. public Result examinationImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
  64. @ApiParam(value = "印刷计划id", required = true) @RequestParam String printPlanId) throws Exception {
  65. Map<String, Object> map = printCommonService.saveTask(SystemConstant.convertIdToLong(printPlanId), file, TaskTypeEnum.EXAMINATION_IMPORT);
  66. asyncExaminationImportTemplateService.importTask(map);
  67. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  68. return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
  69. }
  70. @ApiOperation(value = "考务数据导入-查询")
  71. @RequestMapping(value = "/data_list", method = RequestMethod.POST)
  72. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  73. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  74. public Result findExaminationBrief(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  75. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  76. @ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
  77. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  78. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  79. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  80. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  81. @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode,
  82. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  83. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate,
  84. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  85. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  86. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  87. if (Objects.isNull(printPlanIdList)) {
  88. printPlanIdList = new ArrayList<>();
  89. }
  90. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  91. Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
  92. return ResultUtil.ok(examDetailService.findExaminationBriefPage(schoolId, SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId),
  93. idList, courseCode, paperNumber, examPlace, examRoom, packageCode, startDate, endDate, pageNumber, pageSize, orgIds));
  94. }
  95. @ApiOperation(value = "考务数据导入-汇总数据查询")
  96. @RequestMapping(value = "/data_total", method = RequestMethod.POST)
  97. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  98. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  99. public Result findSummarizedData(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  100. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  101. @ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
  102. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  103. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  104. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  105. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  106. @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode,
  107. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  108. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate) {
  109. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  110. if (Objects.isNull(printPlanIdList)) {
  111. printPlanIdList = new ArrayList<>();
  112. }
  113. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  114. Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
  115. return ResultUtil.ok(examDetailService.findSummarizedData(schoolId, SystemConstant.convertIdToLong(semesterId), SystemConstant.convertIdToLong(examId), idList, courseCode, paperNumber, examPlace, examRoom, packageCode, startDate, endDate, orgIds));
  116. }
  117. @ApiOperation(value = "考务数据导入-查看明细")
  118. @RequestMapping(value = "/data_detail", method = RequestMethod.POST)
  119. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  120. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  121. public Result findExaminationDetail(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  122. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  123. @ApiParam(value = "印刷计划主键集合") @RequestParam(required = false) List<String> printPlanIdList,
  124. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  125. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  126. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  127. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  128. @ApiParam(value = "学生查询参数") @RequestParam(required = false) String studentParams,
  129. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  130. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate,
  131. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  132. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  133. if (Objects.isNull(printPlanIdList)) {
  134. printPlanIdList = new ArrayList<>();
  135. }
  136. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  137. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  138. return ResultUtil.ok(examDetailService.findExaminationDetail(schoolId,SystemConstant.convertIdToLong(semesterId),SystemConstant.convertIdToLong(examId), idList,
  139. courseCode, paperNumber, examPlace, examRoom, studentParams, startDate, endDate, pageNumber, pageSize));
  140. }
  141. @ApiOperation(value = "查看考生明细")
  142. @RequestMapping(value = "/get_student_detail", method = RequestMethod.POST)
  143. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  144. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  145. public Result getStudentDetail(@ApiParam(value = "考生表主键") @RequestParam(required = false) Long id) {
  146. Map<String, Object> map = examStudentService.getStudentDetail(id);
  147. return ResultUtil.ok(map);
  148. }
  149. @ApiOperation(value = "考务数据导入-查看明细弹窗")
  150. @RequestMapping(value = "/data_detail_list", method = RequestMethod.POST)
  151. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  152. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  153. public Result findExaminationDetailById(@ApiParam(value = "考务场次id", required = true) @RequestParam String examDetailId,
  154. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  155. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  156. return ResultUtil.ok(examDetailService.findExaminationDetail(SystemConstant.convertIdToLong(examDetailId), pageNumber, pageSize));
  157. }
  158. @ApiOperation(value = "考务数据导入-考点模糊查询")
  159. @RequestMapping(value = "/data_place_query", method = RequestMethod.POST)
  160. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  161. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  162. public Result findExamPlaceDatasource(@RequestParam(value = "param", required = false) String param,
  163. @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
  164. if (Objects.isNull(printPlanId)) {
  165. printPlanId = new ArrayList<>();
  166. }
  167. List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  168. return ResultUtil.ok(examDetailService.findExamPlaceDatasource(param, printPlanIdList));
  169. }
  170. @ApiOperation(value = "考务数据导入-考场模糊查询")
  171. @RequestMapping(value = "/data_room_query", method = RequestMethod.POST)
  172. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  173. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  174. public Result findExamRoomDatasource(@RequestParam(value = "param", required = false) String param,
  175. @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
  176. if (Objects.isNull(printPlanId)) {
  177. printPlanId = new ArrayList<>();
  178. }
  179. List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  180. return ResultUtil.ok(examDetailService.findExamRoomDatasource(param, printPlanIdList));
  181. }
  182. @ApiOperation(value = "考务数据导入-模板下载")
  183. @RequestMapping(value = "/template_download", method = RequestMethod.POST)
  184. @ApiResponses({@ApiResponse(code = 200, message = "下载成功", response = EditResult.class)})
  185. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.SEARCH)
  186. public void downLoadExaminationTemplate() throws IOException {
  187. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  188. examDetailService.downLoadExaminationTemplate(schoolId, ServletUtil.getResponse());
  189. }
  190. @ApiOperation(value = "考务数据导入-结果导出")
  191. @RequestMapping(value = "/data_export", method = RequestMethod.POST)
  192. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  193. @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.EXPORT)
  194. public Result dataExport(@ApiParam(value = "学期ID") @RequestParam(required = false) String semesterId,
  195. @ApiParam(value = "考试id") @RequestParam(required = false) String examId,
  196. @ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
  197. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  198. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  199. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  200. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  201. @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode,
  202. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  203. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate) {
  204. Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
  205. if (Objects.isNull(printPlanIdList)) {
  206. printPlanIdList = new ArrayList<>();
  207. }
  208. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  209. Long printId = null;
  210. if (idList.size() > 0) {
  211. printId = idList.get(0);
  212. }
  213. Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.EXAMINATION_EXPORT, printId);
  214. map.put("semesterId",semesterId);
  215. map.put("examId",examId);
  216. map.put("printPlanIdList", idList);
  217. map.put("courseCode", courseCode);
  218. map.put("paperNumber", paperNumber);
  219. map.put("examPlace", examPlace);
  220. map.put("examRoom", examRoom);
  221. map.put("packageCode", packageCode);
  222. map.put("startDate", startDate);
  223. map.put("endDate", endDate);
  224. map.put("orgIds", orgIds);
  225. asyncExaminationExportTemplateService.exportTask(map);
  226. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  227. return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
  228. }
  229. }