|
@@ -5,10 +5,7 @@ import com.seecoder.dataanalysis.data.dao.competency.CompetencyTreeDao;
|
|
|
import com.seecoder.dataanalysis.data.dao.eval.EvalExamInfoDao;
|
|
import com.seecoder.dataanalysis.data.dao.eval.EvalExamInfoDao;
|
|
|
import com.seecoder.dataanalysis.data.dao.eval.EvalExamRecordDao;
|
|
import com.seecoder.dataanalysis.data.dao.eval.EvalExamRecordDao;
|
|
|
import com.seecoder.dataanalysis.data.dao.eval.QuestionDao;
|
|
import com.seecoder.dataanalysis.data.dao.eval.QuestionDao;
|
|
|
-import com.seecoder.dataanalysis.data.entity.competency.CompetencyTree;
|
|
|
|
|
-import com.seecoder.dataanalysis.data.entity.competency.DScore;
|
|
|
|
|
-import com.seecoder.dataanalysis.data.entity.competency.KSDScore;
|
|
|
|
|
-import com.seecoder.dataanalysis.data.entity.competency.KSScore;
|
|
|
|
|
|
|
+import com.seecoder.dataanalysis.data.entity.competency.*;
|
|
|
import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
|
|
import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
|
|
|
import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
|
|
import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
|
|
|
import com.seecoder.dataanalysis.data.entity.eval.Question;
|
|
import com.seecoder.dataanalysis.data.entity.eval.Question;
|
|
@@ -37,8 +34,68 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
@Override
|
|
@Override
|
|
|
public CompetencyTree getTreeById(int userId){
|
|
public CompetencyTree getTreeById(int userId){
|
|
|
//TODO 和ModelTree进行合并,空值补0,返回可以用于可视化的结果
|
|
//TODO 和ModelTree进行合并,空值补0,返回可以用于可视化的结果
|
|
|
|
|
+ Competencies competencies = new Competencies();
|
|
|
|
|
+ CompetencyTree modelTree = new CompetencyTree(competencies);
|
|
|
|
|
|
|
|
- return null;
|
|
|
|
|
|
|
+ Optional<CompetencyTree> result = competencyTreeDao.findById(userId);
|
|
|
|
|
+ if(!result.isPresent()){
|
|
|
|
|
+ System.out.println("该学生的能力树不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ CompetencyTree competencyTree = competencyTreeDao.findById(userId).get();
|
|
|
|
|
+ modelTree.setTreeScore(competencyTree.getTreeScore());
|
|
|
|
|
+
|
|
|
|
|
+ List<KSDScore> modelKSD = modelTree.getSubCompetencyTree();
|
|
|
|
|
+ List<KSDScore> tarKSD = competencyTree.getSubCompetencyTree();
|
|
|
|
|
+
|
|
|
|
|
+ for(KSDScore ksdScore : tarKSD){
|
|
|
|
|
+ String tarCom = ksdScore.getCompetency();
|
|
|
|
|
+ List<KSScore> tarKS = ksdScore.getKSScore();
|
|
|
|
|
+ List<DScore> tarD = ksdScore.getDScore();
|
|
|
|
|
+
|
|
|
|
|
+ //找到对应的KSD树,开始进行KS和D的匹配
|
|
|
|
|
+ for(KSDScore KSDModel : modelKSD){
|
|
|
|
|
+ if(KSDModel.getCompetency().equals(tarCom)){
|
|
|
|
|
+ KSDModel.setTotalScore(ksdScore.getTotalScore());
|
|
|
|
|
+ //进行KS的匹配
|
|
|
|
|
+ List<KSScore> modelKS = KSDModel.getKSScore();
|
|
|
|
|
+ for(KSScore ksScore : tarKS){
|
|
|
|
|
+ String tarSub = ksScore.getKnowledge();
|
|
|
|
|
+ List<Double> tarSkillScore = ksScore.getSkillsAndScore();
|
|
|
|
|
+
|
|
|
|
|
+ for(KSScore KSModel : modelKS){
|
|
|
|
|
+ if(KSModel.getKnowledge().equals(tarSub)){
|
|
|
|
|
+ List<Double> after = KSModel.getSkillsAndScore();
|
|
|
|
|
+ for(int i=0;i<tarSkillScore.size();i++){
|
|
|
|
|
+ after.set(i,tarSkillScore.get(i));
|
|
|
|
|
+ }
|
|
|
|
|
+ KSModel.setSkillsAndScore(after);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ KSDModel.setKSScore(modelKS);
|
|
|
|
|
+ //进行D的匹配
|
|
|
|
|
+ List<DScore> modelD = KSDModel.getDScore();
|
|
|
|
|
+ for(DScore dScore : tarD){
|
|
|
|
|
+ String tarName = dScore.getName();
|
|
|
|
|
+
|
|
|
|
|
+ for(DScore DModel : modelD){
|
|
|
|
|
+ if(DModel.getName().equals(tarName)){
|
|
|
|
|
+ DModel.setScore(dScore.getScore());
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ KSDModel.setDScore(modelD);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ modelTree.setSubCompetencyTree(modelKSD);
|
|
|
|
|
+
|
|
|
|
|
+ return modelTree;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|