ClientController.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. package com.qmth.distributed.print.api;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.qmth.boot.api.annotation.Aac;
  5. import com.qmth.boot.api.annotation.BOOL;
  6. import com.qmth.boot.api.constant.ApiConstant;
  7. import com.qmth.boot.core.enums.Platform;
  8. import com.qmth.boot.tools.signature.SignatureType;
  9. import com.qmth.distributed.print.business.bean.auth.AuthBean;
  10. import com.qmth.distributed.print.business.bean.auth.ExpireTimeBean;
  11. import com.qmth.distributed.print.business.bean.dto.ClientExamStudentDto;
  12. import com.qmth.distributed.print.business.bean.dto.ClientExamTaskDto;
  13. import com.qmth.distributed.print.business.bean.dto.ClientPrintTaskDto;
  14. import com.qmth.distributed.print.business.bean.params.ClientLoginParam;
  15. import com.qmth.distributed.print.business.bean.result.LoginResult;
  16. import com.qmth.distributed.print.business.entity.SysUser;
  17. import com.qmth.distributed.print.business.entity.TBSession;
  18. import com.qmth.distributed.print.business.enums.RoleTypeEnum;
  19. import com.qmth.distributed.print.business.service.*;
  20. import com.qmth.distributed.print.business.util.AuthUtil;
  21. import com.qmth.distributed.print.business.util.ExcelUtil;
  22. import com.qmth.distributed.print.business.util.RedisUtil;
  23. import com.qmth.distributed.print.business.util.ServletUtil;
  24. import com.qmth.distributed.print.common.SignatureEntityTest;
  25. import com.qmth.distributed.print.common.contant.SystemConstant;
  26. import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
  27. import com.qmth.distributed.print.common.util.Result;
  28. import com.qmth.distributed.print.common.util.ResultUtil;
  29. import com.qmth.distributed.print.common.util.SessionUtil;
  30. import io.swagger.annotations.*;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.validation.BindingResult;
  33. import org.springframework.web.bind.annotation.*;
  34. import javax.annotation.Resource;
  35. import javax.servlet.http.HttpServletResponse;
  36. import javax.validation.Valid;
  37. import java.security.NoSuchAlgorithmException;
  38. import java.util.List;
  39. import java.util.Map;
  40. import java.util.Objects;
  41. import java.util.Set;
  42. import java.util.stream.Collectors;
  43. /**
  44. * @Date: 2021/4/19.
  45. */
  46. @Api(tags = "客户端Controller")
  47. @RestController
  48. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.client}")
  49. @Aac(strict = BOOL.TRUE)
  50. public class ClientController {
  51. @Autowired
  52. private ClientService clientService;
  53. @Resource
  54. SysUserService sysUserService;
  55. @Resource
  56. CommonService commonService;
  57. /**
  58. * 登录
  59. *
  60. * @param login
  61. * @return
  62. */
  63. @ApiOperation(value = "登录")
  64. @RequestMapping(value = "/user/login", method = RequestMethod.POST)
  65. @ApiResponses({@ApiResponse(code = 200, message = "用户信息", response = LoginResult.class)})
  66. @Aac(auth = BOOL.FALSE)
  67. public Result login(@ApiParam(value = "用户信息", required = true) @Valid @RequestBody ClientLoginParam login, BindingResult bindingResult) throws NoSuchAlgorithmException {
  68. if (bindingResult.hasErrors()) {
  69. return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
  70. }
  71. QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
  72. wrapper.lambda().eq(SysUser::getLoginName, login.getLoginName());
  73. SysUser sysUser = sysUserService.getOne(wrapper);
  74. //用户不存在
  75. if (Objects.isNull(sysUser)) {
  76. throw ExceptionResultEnum.USER_NO_DATA.exception();
  77. }
  78. AuthBean authBean = commonService.getUserAuth(sysUser.getId());
  79. if (Objects.nonNull(authBean) && Objects.nonNull(authBean.getRoleList()) && authBean.getRoleList().size() > 0) {
  80. Set<RoleTypeEnum> roleType = authBean.getRoleList().stream().map(s -> s.getType()).collect(Collectors.toSet());
  81. if (!roleType.contains(RoleTypeEnum.PRINTER)) {
  82. throw ExceptionResultEnum.ERROR.exception("客户端只允许" + RoleTypeEnum.PRINTER.getDesc() + "登录");
  83. }
  84. }
  85. return ResultUtil.ok(commonService.login(login.getPassword(), sysUser));
  86. }
  87. /**
  88. * 试卷打样-列表
  89. *
  90. * @param schoolId 学校ID
  91. * @param machineCode 机器唯一码
  92. * @param orgId 机构ID
  93. * @param printPlanId 印刷计划ID
  94. * @param courseCode 课程代码
  95. * @param paperNumber 试卷编号
  96. * @param isTry 是否打样
  97. * @param isPass 是否合格
  98. * @param pageNumber
  99. * @param pageSize
  100. * @return
  101. */
  102. @ApiOperation(value = "试卷打样-列表")
  103. @RequestMapping(value = "/paper_try/list", method = RequestMethod.POST)
  104. public Result paperTryList(@RequestParam("schoolId") Long schoolId,
  105. @RequestParam("machineCode") String machineCode,
  106. @RequestParam("orgId") Long orgId,
  107. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  108. @RequestParam(value = "courseCode", required = false) String courseCode,
  109. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  110. @RequestParam(value = "isTry", required = false) Boolean isTry,
  111. @RequestParam(value = "isPass", required = false) Boolean isPass,
  112. @RequestParam("pageNumber") Integer pageNumber,
  113. @RequestParam("pageSize") Integer pageSize) {
  114. IPage<ClientExamTaskDto> examTasks = clientService.listTryTask(schoolId, machineCode, orgId, printPlanId, courseCode, paperNumber, isTry, isPass, pageNumber, pageSize);
  115. return ResultUtil.ok(examTasks);
  116. }
  117. /**
  118. * 试卷打样-查看/试印/重印
  119. *
  120. * @param schoolId
  121. * @param examTaskId
  122. * @return
  123. */
  124. @ApiOperation(value = "试卷打样-查看/试印/重印")
  125. @RequestMapping(value = "/paper_try/print", method = RequestMethod.POST)
  126. public Result paperTryPrint(@RequestParam("schoolId") Long schoolId,
  127. @RequestParam("examTaskId") Long examTaskId) {
  128. Map<String, String> map = clientService.getUrl(schoolId, examTaskId);
  129. return ResultUtil.ok(map);
  130. }
  131. /**
  132. * 试卷打样-批量试印
  133. *
  134. * @param schoolId
  135. * @param machineCode
  136. * @param orgId
  137. * @param printPlanId
  138. * @param courseCode
  139. * @param paperNumber
  140. * @param isTry
  141. * @param isPass
  142. * @return
  143. */
  144. @ApiOperation(value = "试卷打样-批量试印")
  145. @RequestMapping(value = "/paper_try/print_batch", method = RequestMethod.POST)
  146. public Result printBatch(@RequestParam("schoolId") Long schoolId,
  147. @RequestParam("machineCode") String machineCode,
  148. @RequestParam("orgId") Long orgId,
  149. @RequestParam(value = "printPlanId", required = false) Long printPlanId,
  150. @RequestParam(value = "courseCode", required = false) String courseCode,
  151. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  152. @RequestParam(value = "isTry", required = false) Boolean isTry,
  153. @RequestParam(value = "isPass", required = false) Boolean isPass) {
  154. List<Map<String, String>> urls = clientService.getBatchUrl(schoolId, machineCode, orgId, printPlanId, courseCode, paperNumber, isTry, isPass);
  155. return ResultUtil.ok(urls);
  156. }
  157. /**
  158. * 试卷打样-标记合格状态
  159. *
  160. * @param schoolId
  161. * @param machineCode
  162. * @param isPass
  163. * @param userId
  164. * @return
  165. */
  166. @ApiOperation(value = "试卷打样-标记合格状态")
  167. @RequestMapping(value = "/paper_try/tag_pass", method = RequestMethod.POST)
  168. public Result paperTryTagPass(@RequestParam("schoolId") Long schoolId,
  169. @RequestParam("courseCode") String courseCode,
  170. @RequestParam("courseName") String courseName,
  171. @RequestParam("paperNumber") String paperNumber,
  172. @RequestParam("machineCode") String machineCode,
  173. @RequestParam("isPass") Boolean isPass,
  174. @RequestParam("userId") Long userId) {
  175. Boolean isSuccess = clientService.tagPass(schoolId, courseCode, courseName, paperNumber, machineCode, isPass, userId);
  176. return ResultUtil.ok(isSuccess);
  177. }
  178. /**
  179. * 印刷管理-查询列表
  180. *
  181. * @param schoolId
  182. * @param machineCode
  183. * @param orgId
  184. * @param printPlanId
  185. * @param status
  186. * @param courseCode
  187. * @param paperNumber
  188. * @param examPlace
  189. * @param examRoom
  190. * @param examStartTime
  191. * @param examEndTime
  192. * @param isDownload
  193. * @param validate
  194. * @param pageNumber
  195. * @param pageSize
  196. * @return
  197. */
  198. @ApiOperation(value = "印刷管理-查询列表")
  199. @RequestMapping(value = "/print/task_list", method = RequestMethod.POST)
  200. public Result printTaskList(@RequestParam("schoolId") Long schoolId,
  201. @RequestParam("machineCode") Long machineCode,
  202. @RequestParam("orgId") String orgId,
  203. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  204. @RequestParam(value = "status", required = false) String status,
  205. @RequestParam(value = "courseCode", required = false) String courseCode,
  206. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  207. @RequestParam(value = "examPlace", required = false) String examPlace,
  208. @RequestParam(value = "examRoom", required = false) String examRoom,
  209. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  210. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  211. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  212. @RequestParam(value = "validate", required = false) Boolean validate,
  213. @RequestParam("pageNumber") Integer pageNumber,
  214. @RequestParam("pageSize") Integer pageSize) {
  215. IPage<ClientPrintTaskDto> printTaskDtoIPage = clientService.listClientPrintTask(schoolId, machineCode, orgId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate, pageNumber, pageSize);
  216. return ResultUtil.ok(printTaskDtoIPage);
  217. }
  218. /**
  219. * 印刷管理-导出
  220. * @param response
  221. * @param schoolId
  222. * @param machineCode
  223. * @param orgId
  224. * @param printPlanId
  225. * @param status
  226. * @param courseCode
  227. * @param paperNumber
  228. * @param examPlace
  229. * @param examRoom
  230. * @param examStartTime
  231. * @param examEndTime
  232. * @param isDownload
  233. * @param validate
  234. * @return
  235. */
  236. @ApiOperation(value = "印刷管理-导出")
  237. @RequestMapping(value = "/print/task_list_export", method = RequestMethod.POST)
  238. public void printTaskListExport(HttpServletResponse response,
  239. @RequestParam("schoolId") Long schoolId,
  240. @RequestParam("machineCode") Long machineCode,
  241. @RequestParam("orgId") String orgId,
  242. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  243. @RequestParam(value = "status", required = false) String status,
  244. @RequestParam(value = "courseCode", required = false) String courseCode,
  245. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  246. @RequestParam(value = "examPlace", required = false) String examPlace,
  247. @RequestParam(value = "examRoom", required = false) String examRoom,
  248. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  249. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  250. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  251. @RequestParam(value = "validate", required = false) Boolean validate) throws Exception {
  252. clientService.exportClientPrintTask(response, schoolId, machineCode, orgId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate);
  253. }
  254. /**
  255. * 印刷管理-汇总数据查询
  256. *
  257. * @param schoolId
  258. * @param machineCode
  259. * @param orgId
  260. * @param printPlanId
  261. * @param status
  262. * @param courseCode
  263. * @param paperNumber
  264. * @param examPlace
  265. * @param examRoom
  266. * @param examStartTime
  267. * @param examEndTime
  268. * @param isDownload
  269. * @param validate
  270. * @return
  271. */
  272. @ApiOperation(value = "印刷管理-汇总数据查询")
  273. @RequestMapping(value = "/print/task_total_data", method = RequestMethod.POST)
  274. public Result printTaskTotalData(@RequestParam("schoolId") Long schoolId,
  275. @RequestParam("machineCode") Long machineCode,
  276. @RequestParam("orgId") String orgId,
  277. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  278. @RequestParam(value = "status", required = false) String status,
  279. @RequestParam(value = "courseCode", required = false) String courseCode,
  280. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  281. @RequestParam(value = "examPlace", required = false) String examPlace,
  282. @RequestParam(value = "examRoom", required = false) String examRoom,
  283. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  284. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  285. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  286. @RequestParam(value = "validate", required = false) Boolean validate) {
  287. return null;
  288. }
  289. /**
  290. * 印刷管理-查看
  291. *
  292. * @param schoolId
  293. * @param examDetailId
  294. * @return
  295. */
  296. @ApiOperation(value = "印刷管理-查看")
  297. @RequestMapping(value = "/print/preview", method = RequestMethod.POST)
  298. public Result printPreview(@RequestParam("schoolId") Long schoolId,
  299. @RequestParam("examDetailId") Long examDetailId) {
  300. Map<String, String> map = clientService.getUrlByExamDetailId(schoolId, examDetailId);
  301. return ResultUtil.ok(map);
  302. }
  303. /**
  304. * 印刷管理-印刷/缓存数据
  305. *
  306. * @param schoolId
  307. * @param examDetailId
  308. * @param machineCode
  309. * @param printUser
  310. * @return
  311. */
  312. @ApiOperation(value = "印刷管理-印刷/缓存数据")
  313. @RequestMapping(value = "/print/get_print_data", method = RequestMethod.POST)
  314. public Result printGetPrintData(@RequestParam("schoolId") Long schoolId,
  315. @RequestParam("examDetailId") Long examDetailId,
  316. @RequestParam("machineCode") String machineCode,
  317. @RequestParam("isPrint") Boolean isPrint,
  318. @RequestParam(value = "printUser", required = false) String printUser) {
  319. Map<String, Object> map = clientService.getPrintData(schoolId, examDetailId, machineCode, isPrint, printUser);
  320. return ResultUtil.ok(map);
  321. }
  322. /**
  323. * 印刷管理-批量缓存数据
  324. *
  325. * @param schoolId
  326. * @param orgId
  327. * @param machineCode
  328. * @return
  329. */
  330. @ApiOperation(value = "印刷管理-批量缓存数据")
  331. @RequestMapping(value = "/print/get_print_data_batch", method = RequestMethod.POST)
  332. public Result printGetPrintDataBatch(@RequestParam("schoolId") Long schoolId,
  333. @RequestParam("machineCode") Long machineCode,
  334. @RequestParam("orgId") String orgId,
  335. @RequestParam(value = "printPlanId", required = false) String printPlanId,
  336. @RequestParam(value = "status", required = false) String status,
  337. @RequestParam(value = "courseCode", required = false) String courseCode,
  338. @RequestParam(value = "paperNumber", required = false) String paperNumber,
  339. @RequestParam(value = "examPlace", required = false) String examPlace,
  340. @RequestParam(value = "examRoom", required = false) String examRoom,
  341. @RequestParam(value = "examStartTime", required = false) Long examStartTime,
  342. @RequestParam(value = "examEndTime", required = false) Long examEndTime,
  343. @RequestParam(value = "isDownload", required = false) Boolean isDownload,
  344. @RequestParam(value = "validate", required = false) Boolean validate) {
  345. List<Map<String, Object>> list = clientService.getPrintDataBatch(schoolId, machineCode, orgId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, isDownload, validate);
  346. return ResultUtil.ok(list);
  347. }
  348. /**
  349. * @param schoolId
  350. * @param examDetailId
  351. * @param machineCode
  352. * @param isDownload
  353. * @return
  354. */
  355. @ApiOperation(value = "印刷管理-缓存后更新状态")
  356. @RequestMapping(value = "/print/update_download", method = RequestMethod.POST)
  357. public Result updateDownload(@RequestParam("schoolId") Long schoolId,
  358. @RequestParam("examDetailId") Long examDetailId,
  359. @RequestParam("machineCode") String machineCode,
  360. @RequestParam("isDownload") Boolean isDownload) {
  361. Boolean isSuccess = clientService.updateDownload(schoolId, examDetailId, machineCode, isDownload);
  362. return ResultUtil.ok(isSuccess);
  363. }
  364. /**
  365. * 印刷管理-校验
  366. *
  367. * @param schoolId
  368. * @param examDetailId
  369. * @param packageCode
  370. * @param lastCode
  371. * @return
  372. */
  373. @ApiOperation(value = "印刷管理-校验")
  374. @RequestMapping(value = "/print/validate_data", method = RequestMethod.POST)
  375. public Result dataCheck(@RequestParam("schoolId") Long schoolId,
  376. @RequestParam("examDetailId") Long examDetailId,
  377. @RequestParam("packageCode") String packageCode,
  378. @RequestParam("lastCode") String lastCode) {
  379. Boolean isSuccess = clientService.validateData(schoolId, examDetailId, packageCode, lastCode);
  380. return ResultUtil.ok(isSuccess);
  381. }
  382. /**
  383. * 印刷管理-更新打印进度
  384. *
  385. * @param schoolId
  386. * @param examDetailId
  387. * @param printProgress
  388. * @return
  389. */
  390. @ApiOperation(value = "印刷管理-更新打印进度")
  391. @RequestMapping(value = "/print/update_progress", method = RequestMethod.POST)
  392. public Result updateProgress(@RequestParam("schoolId") Long schoolId,
  393. @RequestParam("examDetailId") Long examDetailId,
  394. @RequestParam("printProgress") Integer printProgress) {
  395. Boolean isSuccess = clientService.updatePrintProgress(schoolId, examDetailId, printProgress);
  396. return ResultUtil.ok(isSuccess);
  397. }
  398. /**
  399. * 重打-查询考生列表
  400. *
  401. * @param schoolId
  402. * @param examDetailId
  403. * @param ticketNumber
  404. * @param studentName
  405. * @param courseCode
  406. * @return
  407. */
  408. @ApiOperation(value = "重打-查询考生列表")
  409. @RequestMapping(value = "/print/list_student", method = RequestMethod.POST)
  410. public Result listStudent(@RequestParam("schoolId") Long schoolId,
  411. @RequestParam("examDetailId") Long examDetailId,
  412. @RequestParam(value = "ticketNumber", required = false) String ticketNumber,
  413. @RequestParam(value = "studentName", required = false) String studentName,
  414. @RequestParam(value = "courseCode", required = false) String courseCode,
  415. @RequestParam("pageNumber") Integer pageNumber,
  416. @RequestParam("pageSize") Integer pageSize) {
  417. IPage<ClientExamStudentDto> examStudentDtoIPage = clientService.listStudent(schoolId, examDetailId, ticketNumber, studentName, courseCode, pageNumber, pageSize);
  418. return ResultUtil.ok(examStudentDtoIPage);
  419. }
  420. /**
  421. * 重打-内容查询
  422. *
  423. * @param schoolId
  424. * @param examDetailId
  425. * @param ticketNumber
  426. * @param type
  427. * @return
  428. */
  429. @ApiOperation(value = "重打-内容查询")
  430. @RequestMapping(value = "/print/get_reprint_data", method = RequestMethod.POST)
  431. public Result getReprintData(@RequestParam("schoolId") Long schoolId,
  432. @RequestParam("examDetailId") Long examDetailId,
  433. @RequestParam("ticketNumber") String ticketNumber,
  434. @RequestParam("type") String type) {
  435. Map<String, Object> map = clientService.getReprintData(schoolId, examDetailId, ticketNumber, type);
  436. return ResultUtil.ok(map);
  437. }
  438. }