ExamDetailController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  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 + "/${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) List<String> printPlanIdList,
  71. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  72. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  73. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  74. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  75. @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode,
  76. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  77. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate,
  78. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  79. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  80. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  81. if (Objects.isNull(printPlanIdList)) {
  82. printPlanIdList = new ArrayList<>();
  83. }
  84. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  85. Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
  86. return ResultUtil.ok(examDetailService.findExaminationBriefPage(schoolId,
  87. idList, courseCode, paperNumber, examPlace, examRoom, packageCode, startDate, endDate, pageNumber, pageSize, orgIds));
  88. }
  89. @ApiOperation(value = "考务数据导入-汇总数据查询")
  90. @RequestMapping(value = "/data_total", method = RequestMethod.POST)
  91. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  92. public Result findSummarizedData(@ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
  93. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  94. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  95. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  96. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  97. @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode,
  98. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  99. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate) {
  100. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  101. if (Objects.isNull(printPlanIdList)) {
  102. printPlanIdList = new ArrayList<>();
  103. }
  104. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  105. Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
  106. return ResultUtil.ok(examDetailService.findSummarizedData(schoolId, idList, courseCode, paperNumber, examPlace, examRoom, packageCode, startDate, endDate, orgIds));
  107. }
  108. @ApiOperation(value = "考务数据导入-查看明细")
  109. @RequestMapping(value = "/data_detail", method = RequestMethod.POST)
  110. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  111. public Result findExaminationDetail(@ApiParam(value = "印刷计划主键集合") @RequestParam(required = false) List<String> printPlanIdList,
  112. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  113. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  114. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  115. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  116. @ApiParam(value = "学生查询参数") @RequestParam(required = false) String studentParams,
  117. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  118. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate,
  119. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  120. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  121. if (Objects.isNull(printPlanIdList)) {
  122. printPlanIdList = new ArrayList<>();
  123. }
  124. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  125. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  126. return ResultUtil.ok(examDetailService.findExaminationDetail(schoolId, idList,
  127. courseCode, paperNumber, examPlace, examRoom, studentParams, startDate, endDate, pageNumber, pageSize));
  128. }
  129. @ApiOperation(value = "查看考生明细")
  130. @RequestMapping(value = "/get_student_detail", method = RequestMethod.POST)
  131. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  132. public Result getStudentDetail(@ApiParam(value = "考生表主键") @RequestParam(required = false) Long id) {
  133. Map<String, Object> map = examStudentService.getStudentDetail(id);
  134. return ResultUtil.ok(map);
  135. }
  136. @ApiOperation(value = "考务数据导入-查看明细弹窗")
  137. @RequestMapping(value = "/data_detail_list", method = RequestMethod.POST)
  138. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  139. public Result findExaminationDetailById(@ApiParam(value = "考务场次id", required = true) @RequestParam String examDetailId,
  140. @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
  141. @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
  142. return ResultUtil.ok(examDetailService.findExaminationDetail(SystemConstant.convertIdToLong(examDetailId), pageNumber, pageSize));
  143. }
  144. @ApiOperation(value = "考务数据导入-考点模糊查询")
  145. @RequestMapping(value = "/data_place_query", method = RequestMethod.POST)
  146. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  147. public Result findExamPlaceDatasource(@RequestParam(value = "param", required = false) String param,
  148. @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
  149. if (Objects.isNull(printPlanId)) {
  150. printPlanId = new ArrayList<>();
  151. }
  152. List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  153. return ResultUtil.ok(examDetailService.findExamPlaceDatasource(param, printPlanIdList));
  154. }
  155. @ApiOperation(value = "考务数据导入-考场模糊查询")
  156. @RequestMapping(value = "/data_room_query", method = RequestMethod.POST)
  157. @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
  158. public Result findExamRoomDatasource(@RequestParam(value = "param", required = false) String param,
  159. @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
  160. if (Objects.isNull(printPlanId)) {
  161. printPlanId = new ArrayList<>();
  162. }
  163. List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  164. return ResultUtil.ok(examDetailService.findExamRoomDatasource(param, printPlanIdList));
  165. }
  166. @ApiOperation(value = "考务数据导入-模板下载")
  167. @RequestMapping(value = "/template_download", method = RequestMethod.POST)
  168. @ApiResponses({@ApiResponse(code = 200, message = "下载成功", response = EditResult.class)})
  169. public void downLoadExaminationTemplate() throws IOException {
  170. Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
  171. examDetailService.downLoadExaminationTemplate(schoolId, ServletUtil.getResponse());
  172. }
  173. @ApiOperation(value = "考务数据导入-结果导出")
  174. @RequestMapping(value = "/data_export", method = RequestMethod.POST)
  175. @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
  176. public Result dataExport(@ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
  177. @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
  178. @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
  179. @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
  180. @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
  181. @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode,
  182. @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
  183. @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate) {
  184. Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
  185. if (Objects.isNull(printPlanIdList)) {
  186. printPlanIdList = new ArrayList<>();
  187. }
  188. List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
  189. Long printId = null;
  190. if (idList.size() > 0) {
  191. printId = idList.get(0);
  192. }
  193. Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.EXAMINATION_EXPORT, printId);
  194. map.put("printPlanIdList", idList);
  195. map.put("courseCode", courseCode);
  196. map.put("paperNumber", paperNumber);
  197. map.put("examPlace", examPlace);
  198. map.put("examRoom", examRoom);
  199. map.put("packageCode", packageCode);
  200. map.put("startDate", startDate);
  201. map.put("endDate", endDate);
  202. map.put("orgIds", orgIds);
  203. asyncExaminationExportTemplateService.exportTask(map);
  204. TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
  205. return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
  206. }
  207. }