LearnTeacherController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package com.ruoyi.web.controller.learn;
  2. import cn.hutool.core.lang.Dict;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import com.google.common.collect.Lists;
  5. import com.ruoyi.common.annotation.Anonymous;
  6. import com.ruoyi.common.core.controller.BaseController;
  7. import com.ruoyi.common.core.domain.AjaxResult;
  8. import com.ruoyi.common.core.domain.AjaxResult2;
  9. import com.ruoyi.common.enums.ExamType;
  10. import com.ruoyi.common.utils.SecurityUtils;
  11. import com.ruoyi.dz.domain.DzControl;
  12. import com.ruoyi.dz.domain.DzSubject;
  13. import com.ruoyi.dz.service.IDzControlService;
  14. import com.ruoyi.dz.service.IDzSubjectService;
  15. import com.ruoyi.enums.PaperType;
  16. import com.ruoyi.learn.domain.LearnPaper;
  17. import com.ruoyi.learn.domain.LearnTestPaper;
  18. import com.ruoyi.learn.domain.TestPaperVO;
  19. import com.ruoyi.learn.service.ILearnPaperQuestionService;
  20. import com.ruoyi.learn.service.ILearnPaperService;
  21. import com.ruoyi.learn.service.ILearnTestPaperService;
  22. import com.ruoyi.web.service.LearnTeacherService;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import io.swagger.annotations.ApiParam;
  26. import org.apache.commons.lang3.StringUtils;
  27. import org.springframework.security.access.prepost.PreAuthorize;
  28. import org.springframework.util.CollectionUtils;
  29. import org.springframework.web.bind.annotation.*;
  30. import java.util.Arrays;
  31. import java.util.Collections;
  32. import java.util.List;
  33. import java.util.Set;
  34. import java.util.stream.Collectors;
  35. @RestController
  36. @RequestMapping("/learn/teaching")
  37. @Api(tags = "后台-学习 - 老师业务")
  38. public class LearnTeacherController extends BaseController {
  39. private final IDzControlService dzControlService;
  40. private final IDzSubjectService dzSubjectService;
  41. private final LearnTeacherService learnTeacherService;
  42. private final ILearnPaperService paperService;
  43. private final ILearnTestPaperService testPaperService;
  44. private final ILearnPaperQuestionService paperQuestionService;
  45. public LearnTeacherController(IDzControlService dzControlService, IDzSubjectService dzSubjectService, LearnTeacherService learnTeacherService, ILearnPaperService paperService, ILearnTestPaperService testPaperService, ILearnPaperQuestionService paperQuestionService) {
  46. this.dzControlService = dzControlService;
  47. this.dzSubjectService = dzSubjectService;
  48. this.learnTeacherService = learnTeacherService;
  49. this.paperService = paperService;
  50. this.testPaperService = testPaperService;
  51. this.paperQuestionService = paperQuestionService;
  52. }
  53. /**
  54. -- 1. 查询考试批次(假设每个老师自已控制)
  55. -- 2. 查询班老师班级列表
  56. -- 3. 查询定向院校列表
  57. -- 5. 查询定向院校专业组
  58. -- 6. 查询科目(分是否定向)
  59. -- 7. 查询知识点(分是否定向)
  60. -- 8. 查询单个定向时知识点树
  61. -- 9. 设置题型数量(预置题型要求,或人工指定,不指定时平均分配, 题型是针对院校的)
  62. */
  63. @GetMapping(value = "provinces")
  64. @Anonymous
  65. @ApiOperation("省份列表")
  66. public AjaxResult provinces()
  67. {
  68. DzControl cond = new DzControl();
  69. cond.setIsValid(1);
  70. return AjaxResult.success(dzControlService.selectDzControlList(cond).stream().map(t -> {
  71. JSONObject o = new JSONObject();
  72. o.put("dictValue", t.getLocation());
  73. o.put("dictLabel", t.getLocation());
  74. return o;
  75. }).collect(Collectors.toList()));
  76. }
  77. @GetMapping(value = "examTypes")
  78. @Anonymous
  79. @ApiOperation("考生类型列表")
  80. public AjaxResult examTypes(@RequestParam String location)
  81. {
  82. DzControl cond = new DzControl();
  83. cond.setIsValid(1);
  84. cond.setLocation(location);
  85. List<DzControl> list = dzControlService.selectDzControlList(cond);
  86. String examTypes;
  87. if(CollectionUtils.isEmpty(list) || StringUtils.isBlank(examTypes = list.get(0).getExamTypes())) {
  88. return AjaxResult.success(Collections.emptyList());
  89. }
  90. return AjaxResult.success(Arrays.stream(examTypes.split(",")).map(t -> {
  91. JSONObject o = new JSONObject();
  92. o.put("dictValue", t);
  93. o.put("dictLabel", ExamType.valueOf(t).title());
  94. return o;
  95. }).collect(Collectors.toList()));
  96. }
  97. @GetMapping("/classes")
  98. @ApiOperation("2. 班级列表")
  99. public AjaxResult classes()
  100. {
  101. return AjaxResult.success(learnTeacherService.getClasses(getUserId()));
  102. }
  103. @GetMapping("/students")
  104. @ApiOperation("学生列表")
  105. public AjaxResult students(@ApiParam("批次ID") Long batchId)
  106. {
  107. return AjaxResult.success(learnTeacherService.getStudents(batchId, getUserId()));
  108. }
  109. @GetMapping("/universities")
  110. @ApiOperation("院校列表")
  111. public AjaxResult universities(@ApiParam("批次ID") Long batchId)
  112. {
  113. return AjaxResult.success(learnTeacherService.selectUniversityList(getUserId(), batchId));
  114. }
  115. @GetMapping("/majors")
  116. @ApiOperation("专业列表")
  117. public AjaxResult majors(@ApiParam("省份") String location, @ApiParam("考生类型") ExamType examType, @ApiParam("批次ID") Long batchId, @RequestParam(required = false) @ApiParam("院校列表") Long universityId)
  118. {
  119. DzControl control = dzControlService.selectDzControl(location, examType);
  120. return AjaxResult.success(learnTeacherService.selectMajorList(universityId, control.getPlanYear(), batchId));
  121. }
  122. @GetMapping("/subjects")
  123. @ApiOperation("科目列表")
  124. public AjaxResult2<List<DzSubject>> subjects(@RequestParam(required = false) @ApiParam("院校列表") Long universityId)
  125. {
  126. DzSubject sCond = new DzSubject();
  127. List<DzSubject> list = dzSubjectService.selectDzSubjectList(sCond);
  128. return AjaxResult2.success(list);
  129. }
  130. @GetMapping("/knowledges")
  131. @ApiOperation("知识点列表")
  132. public AjaxResult knowledges(@ApiParam("科目ID") Long subjectId, @RequestParam(required = false) @ApiParam("专业计划ID") Long[] majorPlanIds)
  133. {
  134. Set<Long> knowledgeIdSet = learnTeacherService.getKnowledgeIdSet(majorPlanIds);
  135. return AjaxResult.success(learnTeacherService.getKnowledgeTree(subjectId, knowledgeIdSet, false));
  136. }
  137. @GetMapping("/questionTypes")
  138. @ApiOperation("题型列表")
  139. public AjaxResult questionTypes(@ApiParam("科目ID") Long subjectId, @RequestParam(required = false) @ApiParam("专业计划ID") Long[] knowledgeIds)
  140. {
  141. List<Dict> dictList = Lists.newArrayList();
  142. dictList.add(Dict.create().set("dictLabel", "单选题").set("dictValue", "1"));
  143. dictList.add(Dict.create().set("dictLabel", "多选题").set("dictValue", "2"));
  144. dictList.add(Dict.create().set("dictLabel", "判断题").set("dictValue", "3"));
  145. dictList.add(Dict.create().set("dictLabel", "分析题").set("dictValue", "4"));
  146. return AjaxResult.success(dictList);
  147. }
  148. @PreAuthorize("@ss.hasPermi('learn:test_paper:add')")
  149. @PostMapping("/build/auto")
  150. @ApiOperation("批量自动组卷")
  151. public AjaxResult batchBuildAuto(@RequestBody TestPaperVO.TestPapersBuildAutoReq req)
  152. {
  153. req.setBuildType(TestPaperVO.PaperBuildType.Auto);
  154. return AjaxResult.success(learnTeacherService.buildPapersAuto(req));
  155. }
  156. @PreAuthorize("@ss.hasPermi('learn:test_paper:add')")
  157. @PostMapping("/build/manual")
  158. @ApiOperation("批量手动组卷")
  159. public AjaxResult batchBuildManual(@RequestBody TestPaperVO.TestPapersBuildManualReq req)
  160. {
  161. req.setBuildType(TestPaperVO.PaperBuildType.Manual);
  162. return AjaxResult.success(learnTeacherService.buildPapersManual(req));
  163. }
  164. @PreAuthorize("@ss.hasPermi('learn:test_paper:query')")
  165. @GetMapping("/publish")
  166. @ApiOperation("批量发布查询")
  167. public AjaxResult batchQuery(@RequestBody TestPaperVO.TestPapersQueryReq req)
  168. {
  169. return AjaxResult.success(true);
  170. }
  171. @PreAuthorize("@ss.hasPermi('learn:test_paper:add')")
  172. @PostMapping("/publish/papers")
  173. @ApiOperation("批量发布生成")
  174. public AjaxResult publishBatch(@RequestBody TestPaperVO.TestPapersPublishReq req)
  175. {
  176. return toAjax(true);
  177. }
  178. @PreAuthorize("@ss.hasPermi('learn:test_paper:add')")
  179. @PostMapping("/publish/paper")
  180. @ApiOperation("批量发布生成")
  181. public AjaxResult publishSingle(@RequestBody TestPaperVO.TestPaperPublishReq req)
  182. {
  183. return toAjax(true);
  184. }
  185. @ApiOperation("04 取试卷列表")
  186. @GetMapping(value = "papers")
  187. public AjaxResult papers(@ApiParam("批次") @RequestParam(required = false) Integer batchId) {
  188. LearnTestPaper tpCond = new LearnTestPaper();
  189. tpCond.setCreatorId(SecurityUtils.getUserId());
  190. tpCond.setBatchId(batchId);
  191. List<LearnTestPaper> testPaperList = testPaperService.selectLearnTestPaperList(tpCond);
  192. List<LearnPaper> paperList = Lists.newArrayList();
  193. for(LearnTestPaper tp : testPaperList) {
  194. JSONObject root = JSONObject.from(tp);
  195. paperList.add(paperService.selectLearnPaperById(tp.getPaperId()));
  196. }
  197. return AjaxResult.success(paperList);
  198. }
  199. @PreAuthorize("@ss.hasPermi('learn:test_paper:add')")
  200. @ApiOperation("04 取试卷详情")
  201. @GetMapping(value = "paper")
  202. public AjaxResult loadPaper(@ApiParam("考卷类型PaperType") PaperType type, @ApiParam("考卷标识") Long id) {
  203. LearnPaper paper = paperService.selectLearnPaperById(id);
  204. JSONObject root = JSONObject.from(paper);
  205. root.put("questions", paperQuestionService.selectLearnPaperQuestionById(id));
  206. return AjaxResult.success(root);
  207. }
  208. }