package com.seec.bok.recommend; import com.seec.bok.back.entity.ChoiceQuestion; import com.seec.bok.back.entity.Question; import com.seec.bok.back.repository.QuestionRepository; import com.seec.bok.back.repository.TQRepository; import com.seec.bok.back.utils.FileUtil; import com.seec.bok.recommend.dto.GetRecommend; import com.seec.bok.recommend.dto.GetRecommendAnswer; import com.seec.bok.recommend.vo.AnswerTQ; import com.seec.bok.recommend.vo.NoAnswerTQ; import com.seec.bok.recommend.vo.Res; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.*; import java.util.stream.Collectors; /** * @ClassName recomRestfulController * @PackageName com.es.demo * @Author sheen * @Date 2020/1/2 * @Version 1.0 * @Description //TODO **/ @RestController @RequestMapping("/api/question") public class RecomRestfulController { private final TQRepository tqRepository; private final QuestionRepository questionRepository; @Autowired public RecomRestfulController(@Qualifier("TQRepositoryImp") TQRepository tqRepository,@Qualifier("QuestionRepositoryImp") QuestionRepository questionRepository) { this.tqRepository = tqRepository; this.questionRepository = questionRepository; } @PostMapping("/recommend") public Res> getRecommend( @RequestBody GetRecommend body) { final Page all = tqRepository.findAll(PageRequest.of(0, body.questionNum.intValue())); return new Res>( all.getContent().stream() .map(NoAnswerTQ::new) .collect(Collectors.toList())); } @PostMapping("/answer") public Res> getRecommendWithAnswer( @RequestBody GetRecommendAnswer body) { final Page all = tqRepository.findByIdIn(body.getQuestionId(),PageRequest.of(0, body.questionId.size())); return new Res>( all.getContent().stream() .map(AnswerTQ::new) .collect(Collectors.toList())); } @GetMapping("/test") public void testTQ() { int pageNumber=1; int pageSize=100; String sord="desc"; String sort="id"; //生成Sort变量 Sort sort1 = Sort.by("id"); //生成Pageable变量 Pageable pageable = PageRequest.of(pageNumber - 1, pageSize,sort1); Page all = tqRepository.findAll(pageable); while (all!=null&&all.getContent().size()!=0){ for(ChoiceQuestion pq:all.getContent()){ if(pq.getAnswer()!=null){ pq.setAnswer(pq.getAnswer().replaceAll("【答案】","")); } if(pq.getAnalysis()!=null){ pq.setAnalysis(pq.getAnalysis().replaceAll("【解析】","")); } if(pq.getKey_points()!=null){ pq.setKey_points(pq.getKey_points().replaceAll("【考点】","")); } } questionRepository.saveAll(all.getContent().stream().map(Question::new).collect(Collectors.toList())); // tqRepository.saveAll(all.getContent()); all = null; pageNumber++; pageable = PageRequest.of(pageNumber - 1, pageSize,sort1); all = tqRepository.findAll(pageable); } } @GetMapping("/outTagged") public void outTagged() { int pageNumber=1; int pageSize=100; String sord="desc"; String sort="id"; Sort sort1 = Sort.by("id"); Pageable pageable = PageRequest.of(pageNumber - 1, pageSize,sort1); Page all = questionRepository.findAll(pageable); Map> files=new LinkedHashMap<>(); while (all!=null&&all.getContent().size()!=0){ for(Question question:all.getContent()){ if(question.getKnowledgeIds()!=null&&question.getKnowledgeIds().size()>0){ for(String s:question.getKnowledgeIds()){ if(files.get(s)==null){ files.put(s,new ArrayList<>()); } files.get(s).add(question); } } } all = null; pageNumber++; pageable = PageRequest.of(pageNumber - 1, pageSize,sort1); all = questionRepository.findAll(pageable); } files.forEach((tag,list)->{ FileUtil.mkdir(tag); list.forEach(q->{ try { FileUtil.buildTxt(tag,q.getId(),q.toPlaitString()); } catch (IOException e) { e.printStackTrace(); } }); }); } @GetMapping("/check") public Integer check() { int pageNumber=1; int pageSize=100; String sord="desc"; String sort="id"; Sort sort1 = Sort.by("id"); Pageable pageable = PageRequest.of(pageNumber - 1, pageSize,sort1); Page all = questionRepository.findAll(pageable); Map files=new LinkedHashMap<>(); while (all!=null&&all.getContent().size()!=0){ for(Question question:all.getContent()){ try { final Integer id = Integer.valueOf(question.getId()); files.put(id,question); }catch (Exception e){ } } all = null; pageNumber++; pageable = PageRequest.of(pageNumber - 1, pageSize,sort1); all = questionRepository.findAll(pageable); } List total=new ArrayList<>(); int kids=0; final Iterable choiceQuestions = tqRepository.findAll(); List changed=new ArrayList<>(); List list=new ArrayList<>(); choiceQuestions.forEach(list::add); for(ChoiceQuestion cq:list){ if(files.get(cq.getId())!=null){ if(files.get(cq.getId()).getKnowledgeIds()==null&&cq.getKnowledgeId()!=null){ kids++; files.get(cq.getId()).setKnowledgeIds(cq.getKnowledgeId()); changed.add(files.get(cq.getId())); continue; } if(files.get(cq.getId()).getKnowledgeIds()!=null&&cq.getKnowledgeId()==null){ kids++; continue; } if(files.get(cq.getId()).getKnowledgeIds()==null&&cq.getKnowledgeId()==null){ continue; } if(files.get(cq.getId()).getKnowledgeIds().size()!=cq.getKnowledgeId().size()){ files.get(cq.getId()).getKnowledgeIds().addAll(cq.getKnowledgeId()); changed.add(files.get(cq.getId())); kids++; } } } questionRepository.saveAll(changed); return kids; } }