FrontExamController.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. package com.ruoyi.web.controller.front;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import com.google.common.collect.Lists;
  4. import com.google.common.collect.Sets;
  5. import com.ruoyi.common.core.domain.AjaxResult;
  6. import com.ruoyi.common.core.domain.entity.SysUser;
  7. import com.ruoyi.common.enums.ExamType;
  8. import com.ruoyi.common.utils.SecurityUtils;
  9. import com.ruoyi.dz.domain.DzSubject;
  10. import com.ruoyi.dz.service.IDzSubjectService;
  11. import com.ruoyi.enums.PaperType;
  12. import com.ruoyi.learn.domain.AnswerSheet;
  13. import com.ruoyi.learn.domain.LearnCultureKnowledge;
  14. import com.ruoyi.learn.domain.LearnStudent;
  15. import com.ruoyi.learn.service.ILearnCultureKnowledgeService;
  16. import com.ruoyi.learn.service.ILearnStudentService;
  17. import com.ruoyi.mxjb.domain.MxjbContants;
  18. import com.ruoyi.system.service.ISysUserService;
  19. import com.ruoyi.syzy.domain.BBusiWishUniversities;
  20. import com.ruoyi.syzy.service.IBBusiWishUniversitiesService;
  21. import com.ruoyi.web.domain.PaperDto;
  22. import com.ruoyi.web.service.*;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import io.swagger.annotations.ApiParam;
  26. import org.springframework.web.bind.annotation.*;
  27. import java.util.List;
  28. import java.util.Map;
  29. import java.util.Set;
  30. import java.util.stream.Collectors;
  31. @RestController
  32. @RequestMapping("/front/exam")
  33. @Api(tags = "前台-学习-考试练习")
  34. public class FrontExamController {
  35. private final ExamService examService;
  36. private final SyTestMajorService syTestMajorService;
  37. private final CacheService cacheService;
  38. private final IDzSubjectService dzSubjectService;
  39. private final StudentService studentService;
  40. private final ISysUserService sysUserService;
  41. private final ILearnStudentService learnStudentService;
  42. private final ILearnCultureKnowledgeService learnCultureKnowledgeService;
  43. private final IBBusiWishUniversitiesService wishUniversitiesService;
  44. public FrontExamController(ExamService examService, SyTestMajorService syTestMajorService, CacheService cacheService, IDzSubjectService dzSubjectService, IDzSubjectService dzSubjectService1, StudentService studentService, ISysUserService sysUserService, ILearnStudentService learnStudentService, ILearnCultureKnowledgeService learnCultureKnowledgeService, IBBusiWishUniversitiesService wishUniversitiesService) {
  45. this.examService = examService;
  46. this.syTestMajorService = syTestMajorService;
  47. this.cacheService = cacheService;
  48. this.dzSubjectService = dzSubjectService1;
  49. this.studentService = studentService;
  50. this.sysUserService = sysUserService;
  51. this.learnStudentService = learnStudentService;
  52. this.learnCultureKnowledgeService = learnCultureKnowledgeService;
  53. this.wishUniversitiesService = wishUniversitiesService;
  54. }
  55. @GetMapping("/subjects")
  56. @ApiOperation("科目列表")
  57. public AjaxResult subjects()
  58. {
  59. SysUser sysUser = SecurityUtils.getLoginUser().getUser();
  60. Long[] subjectIds;
  61. if(ExamType.SVS.equals(sysUser.getExamType())) {
  62. Set<Long> subjectIdSet;
  63. LearnStudent ls = learnStudentService.selectLearnStudentByStudentId(sysUser.getUserId());
  64. if(null != ls && null != ls.getUniversityId()) {
  65. LearnCultureKnowledge ckCond = new LearnCultureKnowledge();
  66. ckCond.setUniversityId(ls.getUniversityId());
  67. ckCond.setExamineeTypes(sysUser.getExamType().name());
  68. subjectIdSet = learnCultureKnowledgeService.selectLearnCultureKnowledgeList(ckCond).stream().map(t -> Long.parseLong(t.getSubjects())).collect(Collectors.toSet());
  69. if(subjectIdSet.isEmpty()) {
  70. BBusiWishUniversities u = wishUniversitiesService.selectBBusiWishUniversitiesById(ls.getUniversityId());
  71. if(null != u.getBxLevel() && u.getBxLevel().contains("民办")) {
  72. subjectIdSet.add(1L);
  73. subjectIdSet.add(2L);
  74. subjectIdSet.add(3L);
  75. }
  76. }
  77. } else {
  78. subjectIdSet = Sets.newHashSet();
  79. }
  80. subjectIdSet.add(11L);
  81. subjectIds = subjectIdSet.toArray(new Long[subjectIdSet.size()]);
  82. } else {
  83. subjectIds = new Long[] {11L};
  84. }
  85. List<DzSubject> list = dzSubjectService.selectDzSubjectBySubjectIds(subjectIds); // 中职暂停 1L, 2L, 3L,
  86. JSONObject evalCounts = JSONObject.parseObject(sysUserService.selectUserById(sysUser.getUserId()).getEvalCounts());
  87. return AjaxResult.success(list.stream().map(t -> {
  88. JSONObject o = new JSONObject();
  89. o.put("subjectId", t.getSubjectId());
  90. o.put("subject", t.getSubjectName());
  91. o.put("examTime", evalCounts.getIntValue(t.getSubjectId().toString()));
  92. return o;
  93. }).collect(Collectors.toList()));
  94. }
  95. // 试卷: 真题卷,批次测试卷,自组卷, 生成考试记录
  96. // 定向模拟卷: 根据用户选择生成记录
  97. // 组卷: 知识点 错题 必刷题 实时组卷后才生成记录
  98. @ApiOperation("01 开卷")
  99. @PostMapping(value = "openExaminee")
  100. public AjaxResult openExaminee(@ApiParam("0默认1价值2职业3知识") @RequestParam(required = false) Integer testType,
  101. @ApiParam("定向") @RequestParam(defaultValue = "false") boolean directed,
  102. @ApiParam("考卷类型PaperType") @RequestParam(required = false) PaperType paperType,
  103. @ApiParam("考卷类型关联ID") @RequestParam(required = false) Long relateId,
  104. @ApiParam("考卷类型关联ID") @RequestParam(required = false) Long subjectId,
  105. @ApiParam("考卷题类别0普通2必刷") @RequestParam(required = false) Integer questionType,
  106. @RequestBody JSONObject body) {
  107. if(null != testType && testType > 0) {
  108. PaperDto paperDto = syTestMajorService.loadPaperByTestMajorTypeId(testType);
  109. Map<String, String> stateMap = cacheService.selectDictDataMapByType(MxjbContants.StateTypeExaminee);
  110. paperDto.setStateStr(stateMap.get(String.valueOf(paperDto.getState())));
  111. paperDto.calculateAllow();
  112. return AjaxResult.success(paperDto);
  113. }
  114. if(null == subjectId && null == paperType) {
  115. subjectId = body.getLongValue("subjectId");
  116. paperType = PaperType.valueOf(body.getString("paperType"));
  117. questionType = body.getInteger("questionType");
  118. }
  119. return AjaxResult.success(examService.openExaminee(directed, paperType, relateId, subjectId, questionType));
  120. }
  121. @ApiOperation("04 开始考试")
  122. @GetMapping(value = "beginExaminee")
  123. public AjaxResult beginExaminee(@ApiParam("答卷ID") Long examineeId) {
  124. // 检查状态,以决定是否返回答案
  125. return AjaxResult.success(examService.loadExaminee(examineeId, true));
  126. }
  127. @ApiOperation("04 取答卷")
  128. @GetMapping(value = "loadExaminee")
  129. public AjaxResult loadExaminee(@ApiParam("答卷ID") @RequestParam(required = false) Long examineeId) {
  130. return AjaxResult.success(examService.loadExaminee(examineeId, false));
  131. }
  132. @ApiOperation("02 交卷")
  133. @PostMapping(value = "commitExamineePaper")
  134. public AjaxResult commitExamineePaper(@RequestBody AnswerSheet answerSheet) {
  135. if(null == answerSheet.getIsDone()) {
  136. answerSheet.setIsDone(false);
  137. }
  138. examService.commitAnswerSheet(answerSheet);
  139. return AjaxResult.success();
  140. }
  141. @ApiOperation("02 原交卷,测试")
  142. @PostMapping(value = "commitTestPaper")
  143. public AjaxResult commitExamineePaper(@RequestBody PaperDto paperDto) {
  144. return syTestMajorService.saveTestPaper(paperDto);
  145. }
  146. /*@ApiOperation("02 答题")
  147. @PostMapping(value = "commitExamineeQuestion")
  148. public AjaxResult commitExamineeQuestion(@RequestBody PaperDto paperDto) {
  149. return adminExaminationService.saveQuestion(paperDto);
  150. }
  151. @ApiOperation("04 阅卷打分")
  152. @PostMapping(value = "scoreExamineeQuestions")
  153. public AjaxResult scoreExamineeQuestions(@RequestBody PaperDto paperDto) {
  154. if (MxjbContants.ExamineeTypeIeValue.equals(paperDto.getExamineeType())) {
  155. return mxjbPaperExamService.scoreExamineeQuestion(paperDto, true);
  156. }
  157. return AjaxResult.error("不支持: " + paperDto.getExamineeType());
  158. }
  159. @ApiOperation("05 阅卷结束")
  160. @PostMapping(value = "scoreFinish")
  161. public AjaxResult scoreFinish(
  162. @ApiParam("考生答卷Id") @RequestParam Long examineeId,
  163. @ApiParam("考生类型 1是测评evaluation(default),2是竞赛competitor 3 ai 5 homework 6 ie") @RequestParam(required = false, defaultValue = "1") Integer examineeType) {
  164. if (MxjbContants.ExamineeTypeIeValue.equals(examineeType)) {
  165. return mxjbPaperExamService.scoreFinish(examineeId);
  166. }
  167. return AjaxResult.error("不支持: " + examineeType);
  168. }
  169. @ApiOperation("06 查看题")
  170. @GetMapping(value = "openQuestion")
  171. public QuestionDto openQuestion(@ApiParam("考生答卷Id") @RequestParam Long examineeId, @ApiParam("考生试题ID") @RequestParam Long questionId,
  172. @ApiParam("考生类型 1是测评evaluation(default),2是竞赛competitor 3 ai 5 homework 6 ie") @RequestParam(required = false, defaultValue = "1") Integer examineeType) {
  173. LoginUser loginUser = SecurityUtils.getLoginUser();
  174. if (MxjbContants.ExamineeTypeIeValue.equals(examineeType)) {
  175. return mxjbPaperExamService.openQuestion(examineeId, loginUser.getUser().getUserId(), questionId);
  176. }
  177. return new QuestionDto();
  178. }
  179. */
  180. }