ExamDetailController.java 16 KB

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