|
|
@@ -2,6 +2,7 @@ package cn.seecoder.data.server.service.Impl;
|
|
|
|
|
|
import cn.seecoder.bok.client.SeecoderBokClient;
|
|
|
import cn.seecoder.bok.common.vo.QuestionVO;
|
|
|
+import cn.seecoder.data.server.domain.GeneralRecordDao;
|
|
|
import cn.seecoder.data.server.domain.knowledge.KnowledgeDao;
|
|
|
import cn.seecoder.data.server.domain.knowledge.KnowledgeOnPositionDao;
|
|
|
import cn.seecoder.data.server.domain.knowledge.PositionWeightDao;
|
|
|
@@ -12,16 +13,19 @@ import cn.seecoder.data.server.service.KnowledgeService;
|
|
|
import cn.seecoder.data.server.vo.knowledge.KnowledgePointVO;
|
|
|
import cn.seecoder.data.server.vo.knowledge.KnowledgeVO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class KnowledgeServiceImpl implements KnowledgeService {
|
|
|
|
|
|
+ @Value("${sys.bok.url}")
|
|
|
+ private String bokBaseUrl;
|
|
|
+
|
|
|
@Autowired
|
|
|
KnowledgeRepository knowledgeRepository;
|
|
|
|
|
|
@@ -115,7 +119,7 @@ public class KnowledgeServiceImpl implements KnowledgeService {
|
|
|
if(j+1==knowledgeLevel.length) {
|
|
|
ArrayList<String> knowledgeIds = new ArrayList<>();
|
|
|
knowledgeIds.add(tempLevel);
|
|
|
- long questionNum = seecoderBokClient.getQuestionList(null, null, knowledgeIds, null).getTotalElements();
|
|
|
+ long questionNum = seecoderBokClient.getQuestionList(null, null, null, null,knowledgeIds,null).getTotalElements();
|
|
|
nodeToAdd.setQuestionsNumTotal(questionNum);
|
|
|
}
|
|
|
if(knowledgeRepository.findByAbbreviation(tempLevel).getIsleaf()==1)
|
|
|
@@ -173,8 +177,26 @@ public class KnowledgeServiceImpl implements KnowledgeService {
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Integer> getKnowledgeWeekCount(int userId) {
|
|
|
-
|
|
|
- return null;
|
|
|
+ LocalDateTime endTime = LocalDateTime.now();
|
|
|
+ LocalDateTime startTime = endTime.minusDays(7);
|
|
|
+ List<GeneralRecordDao> questionRecords = generalRecordRepository.getByUserIdAndCreateTimeBetween(userId,startTime,endTime);
|
|
|
+ SeecoderBokClient seecoderBokClient = new SeecoderBokClient(bokBaseUrl);
|
|
|
+ HashMap<String, Integer> ans = new HashMap<>();
|
|
|
+ List<String> questionIds = questionRecords.stream().map(record->record.getQuestionId()).collect(Collectors.toList());
|
|
|
+ List<QuestionVO> questions = seecoderBokClient.getQuestionListByIds(questionIds);
|
|
|
+ questions.stream().map(question->question.getKnowledgeId()).forEach((List<String> knowledges)-> {
|
|
|
+ if(knowledges!=null && knowledges.size()>0)
|
|
|
+ knowledges.stream().forEach((String knowledge)->{
|
|
|
+ String name = knowledgeRepository.findByAbbreviation(knowledge).getName();
|
|
|
+ if(ans.containsKey(name))
|
|
|
+ ans.put(name,ans.get(name)+1);
|
|
|
+ else
|
|
|
+ ans.put(name,1);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ HashMap<String,Integer> ans2 = new LinkedHashMap<>();
|
|
|
+ ans.entrySet().stream().sorted((p1,p2)->p2.getValue().compareTo(p1.getValue())).collect(Collectors.toList()).forEach(ele -> ans2.put(ele.getKey(), ele.getValue()));
|
|
|
+ return ans2;
|
|
|
}
|
|
|
|
|
|
private KnowledgePointVO addScoreToNode(KnowledgePointVO root, Double score, Double scoreTotal, QuestionVO questionInfo,String knowledege,int deep) {
|