RecomRestfulController.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. package com.seec.bok.recommend;
  2. import com.seec.bok.back.entity.ChoiceQuestion;
  3. import com.seec.bok.back.entity.Question;
  4. import com.seec.bok.back.repository.QuestionRepository;
  5. import com.seec.bok.back.repository.TQRepository;
  6. import com.seec.bok.back.utils.FileUtil;
  7. import com.seec.bok.recommend.dto.GetRecommend;
  8. import com.seec.bok.recommend.dto.GetRecommendAnswer;
  9. import com.seec.bok.recommend.vo.AnswerTQ;
  10. import com.seec.bok.recommend.vo.NoAnswerTQ;
  11. import com.seec.bok.recommend.vo.Res;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.beans.factory.annotation.Qualifier;
  14. import org.springframework.data.domain.Page;
  15. import org.springframework.data.domain.PageRequest;
  16. import org.springframework.data.domain.Pageable;
  17. import org.springframework.data.domain.Sort;
  18. import org.springframework.web.bind.annotation.*;
  19. import java.io.IOException;
  20. import java.util.*;
  21. import java.util.stream.Collectors;
  22. /**
  23. * @ClassName recomRestfulController
  24. * @PackageName com.es.demo
  25. * @Author sheen
  26. * @Date 2020/1/2
  27. * @Version 1.0
  28. * @Description //TODO
  29. **/
  30. @RestController
  31. @RequestMapping("/api/question")
  32. public class RecomRestfulController {
  33. private final TQRepository tqRepository;
  34. private final QuestionRepository questionRepository;
  35. @Autowired
  36. public RecomRestfulController(@Qualifier("TQRepositoryImp") TQRepository tqRepository,@Qualifier("QuestionRepositoryImp") QuestionRepository questionRepository) {
  37. this.tqRepository = tqRepository;
  38. this.questionRepository = questionRepository;
  39. }
  40. @PostMapping("/recommend")
  41. public Res<List<NoAnswerTQ>> getRecommend(
  42. @RequestBody GetRecommend body) {
  43. final Page<ChoiceQuestion> all = tqRepository.findAll(PageRequest.of(0, body.questionNum.intValue()));
  44. return new Res<List<NoAnswerTQ>>(
  45. all.getContent().stream()
  46. .map(NoAnswerTQ::new)
  47. .collect(Collectors.toList()));
  48. }
  49. @PostMapping("/answer")
  50. public Res<List<AnswerTQ>> getRecommendWithAnswer(
  51. @RequestBody GetRecommendAnswer body) {
  52. final Page<ChoiceQuestion> all = tqRepository.findByIdIn(body.getQuestionId(),PageRequest.of(0, body.questionId.size()));
  53. return new Res<List<AnswerTQ>>(
  54. all.getContent().stream()
  55. .map(AnswerTQ::new)
  56. .collect(Collectors.toList()));
  57. }
  58. @GetMapping("/test")
  59. public void testTQ() {
  60. int pageNumber=1;
  61. int pageSize=100;
  62. String sord="desc";
  63. String sort="id";
  64. //生成Sort变量
  65. Sort sort1 = Sort.by("id");
  66. //生成Pageable变量
  67. Pageable pageable = PageRequest.of(pageNumber - 1, pageSize,sort1);
  68. Page<ChoiceQuestion> all = tqRepository.findAll(pageable);
  69. while (all!=null&&all.getContent().size()!=0){
  70. for(ChoiceQuestion pq:all.getContent()){
  71. if(pq.getAnswer()!=null){
  72. pq.setAnswer(pq.getAnswer().replaceAll("【答案】",""));
  73. }
  74. if(pq.getAnalysis()!=null){
  75. pq.setAnalysis(pq.getAnalysis().replaceAll("【解析】",""));
  76. }
  77. if(pq.getKey_points()!=null){
  78. pq.setKey_points(pq.getKey_points().replaceAll("【考点】",""));
  79. }
  80. }
  81. questionRepository.saveAll(all.getContent().stream().map(Question::new).collect(Collectors.toList()));
  82. // tqRepository.saveAll(all.getContent());
  83. all = null;
  84. pageNumber++;
  85. pageable = PageRequest.of(pageNumber - 1, pageSize,sort1);
  86. all = tqRepository.findAll(pageable);
  87. }
  88. }
  89. @GetMapping("/outTagged")
  90. public void outTagged() {
  91. int pageNumber=1;
  92. int pageSize=100;
  93. String sord="desc";
  94. String sort="id";
  95. Sort sort1 = Sort.by("id");
  96. Pageable pageable = PageRequest.of(pageNumber - 1, pageSize,sort1);
  97. Page<Question> all = questionRepository.findAll(pageable);
  98. Map<String,List<Question>> files=new LinkedHashMap<>();
  99. while (all!=null&&all.getContent().size()!=0){
  100. for(Question question:all.getContent()){
  101. if(question.getKnowledgeIds()!=null&&question.getKnowledgeIds().size()>0){
  102. for(String s:question.getKnowledgeIds()){
  103. if(files.get(s)==null){
  104. files.put(s,new ArrayList<>());
  105. }
  106. files.get(s).add(question);
  107. }
  108. }
  109. }
  110. all = null;
  111. pageNumber++;
  112. pageable = PageRequest.of(pageNumber - 1, pageSize,sort1);
  113. all = questionRepository.findAll(pageable);
  114. }
  115. files.forEach((tag,list)->{
  116. FileUtil.mkdir(tag);
  117. list.forEach(q->{
  118. try {
  119. FileUtil.buildTxt(tag,q.getId(),q.toPlaitString());
  120. } catch (IOException e) {
  121. e.printStackTrace();
  122. }
  123. });
  124. });
  125. }
  126. @GetMapping("/check")
  127. public Integer check() {
  128. int pageNumber=1;
  129. int pageSize=100;
  130. String sord="desc";
  131. String sort="id";
  132. Sort sort1 = Sort.by("id");
  133. Pageable pageable = PageRequest.of(pageNumber - 1, pageSize,sort1);
  134. Page<Question> all = questionRepository.findAll(pageable);
  135. Map<Integer,Question> files=new LinkedHashMap<>();
  136. while (all!=null&&all.getContent().size()!=0){
  137. for(Question question:all.getContent()){
  138. try {
  139. final Integer id = Integer.valueOf(question.getId());
  140. files.put(id,question);
  141. }catch (Exception e){
  142. }
  143. }
  144. all = null;
  145. pageNumber++;
  146. pageable = PageRequest.of(pageNumber - 1, pageSize,sort1);
  147. all = questionRepository.findAll(pageable);
  148. }
  149. List<Integer> total=new ArrayList<>();
  150. int kids=0;
  151. final Iterable<ChoiceQuestion> choiceQuestions = tqRepository.findAll();
  152. List<Question> changed=new ArrayList<>();
  153. List<ChoiceQuestion> list=new ArrayList<>();
  154. choiceQuestions.forEach(list::add);
  155. for(ChoiceQuestion cq:list){
  156. if(files.get(cq.getId())!=null){
  157. if(files.get(cq.getId()).getKnowledgeIds()==null&&cq.getKnowledgeId()!=null){
  158. kids++;
  159. files.get(cq.getId()).setKnowledgeIds(cq.getKnowledgeId());
  160. changed.add(files.get(cq.getId()));
  161. continue;
  162. }
  163. if(files.get(cq.getId()).getKnowledgeIds()!=null&&cq.getKnowledgeId()==null){
  164. kids++;
  165. continue;
  166. }
  167. if(files.get(cq.getId()).getKnowledgeIds()==null&&cq.getKnowledgeId()==null){
  168. continue;
  169. }
  170. if(files.get(cq.getId()).getKnowledgeIds().size()!=cq.getKnowledgeId().size()){
  171. files.get(cq.getId()).getKnowledgeIds().addAll(cq.getKnowledgeId());
  172. changed.add(files.get(cq.getId()));
  173. kids++;
  174. }
  175. }
  176. }
  177. questionRepository.saveAll(changed);
  178. return kids;
  179. }
  180. }