ExamDetailController.java 14 KB

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