|
|
@@ -4,13 +4,11 @@ import com.seecoder.dataanalysis.analysis.EvalDataAnalysisService;
|
|
|
import com.seecoder.dataanalysis.data.dao.competency.CompetencyTreeDao;
|
|
|
import com.seecoder.dataanalysis.data.dao.eval.EvalExamInfoDao;
|
|
|
import com.seecoder.dataanalysis.data.dao.eval.EvalExamRecordDao;
|
|
|
-import com.seecoder.dataanalysis.data.dao.eval.QuestionDao;
|
|
|
import com.seecoder.dataanalysis.data.entity.competency.*;
|
|
|
import com.seecoder.dataanalysis.data.entity.eval.EvalExamInfo;
|
|
|
import com.seecoder.dataanalysis.data.entity.eval.EvalExamRecord;
|
|
|
import com.seecoder.dataanalysis.data.entity.eval.Question;
|
|
|
import com.seecoder.dataanalysis.logic.question.QuestionService;
|
|
|
-import com.sun.xml.internal.bind.v2.TODO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -42,6 +40,7 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
Optional<CompetencyTree> result = competencyTreeDao.findById(userId);
|
|
|
if(!result.isPresent()){
|
|
|
System.out.println("该学生的能力树不存在");
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
CompetencyTree competencyTree = competencyTreeDao.findById(userId).get();
|
|
|
@@ -51,56 +50,47 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
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;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
+ dfsInit(tarKSD,modelKSD);
|
|
|
|
|
|
modelTree.setSubCompetencyTree(modelKSD);
|
|
|
|
|
|
return modelTree;
|
|
|
}
|
|
|
|
|
|
+ void dfsInit(List<KSDScore> tarKSD,List<KSDScore> modelKSD){
|
|
|
+ for(KSDScore ksdScore :tarKSD){
|
|
|
+ String tarCom1 = ksdScore.getCompetency();
|
|
|
+ //寻找在modelTree中对应的部分
|
|
|
+ for(KSDScore ksdModel : modelKSD){
|
|
|
+ if(ksdModel.getCompetency().equals(tarCom1)){
|
|
|
+ //修改总分数
|
|
|
+ ksdModel.setTotalScore(ksdScore.getTotalScore());
|
|
|
+ //修改skills分数
|
|
|
+ List<Double> after = ksdModel.getSkillsAndScores();
|
|
|
+ for(int i=0;i<ksdScore.getSkillsAndScores().size();i++){
|
|
|
+ after.set(i,ksdScore.getSkillsAndScores().get(i));
|
|
|
+ }
|
|
|
+ ksdModel.setSkillsAndScores(after);
|
|
|
+ //修改Disposition分数
|
|
|
+ if(ksdModel.getDScore()!=null && ksdModel.getDScore().size()>0){
|
|
|
+ for(DScore dScore :ksdScore.getDScore()){
|
|
|
+ for(DScore dModel : ksdModel.getDScore()){
|
|
|
+ if(dScore.getName().equals(dModel.getName())){
|
|
|
+ dModel.setScore(dScore.getScore());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断子树
|
|
|
+ if(ksdScore.getChildren()!=null&&ksdScore.getChildren().size()>0){
|
|
|
+ dfsInit(ksdScore.getChildren(),ksdModel.getChildren());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public CompetencyTree getTreeAfterExam(int recordId) {
|
|
|
|
|
|
@@ -128,7 +118,6 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
//难度由1-5,分别对应1.0, 1.25, 1.5, 1.75, 2.0的得分系数
|
|
|
Integer difficulty = evalExamInfo.getDifficulty();
|
|
|
String disposition = evalExamInfo.getDisposition();
|
|
|
-// System.out.println(competencyTree);
|
|
|
Double tree_Score = competencyTree.getTreeScore();
|
|
|
double[] difficulty_percent = new double[]{1.0, 1.25, 1.5, 1.75, 2.0};
|
|
|
//得到学生所有题目的得分
|
|
|
@@ -185,12 +174,12 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
return competencyTree;
|
|
|
}
|
|
|
|
|
|
- public void dfs(List<KSDScore> sub,String disposition,Integer weight,Double addScore,String pre,String com){
|
|
|
+ void dfs(List<KSDScore> sub,String disposition,Integer weight,Double addScore,String pre,String com){
|
|
|
// System.out.println("start: "+com);
|
|
|
boolean existCom = false;
|
|
|
KSDScore changeKSD = new KSDScore();
|
|
|
for (KSDScore ksdScore : sub) {
|
|
|
- System.out.println(ksdScore.getCompetency());
|
|
|
+// System.out.println(ksdScore.getCompetency());
|
|
|
if (ksdScore.getCompetency().equals(pre+com)) {
|
|
|
existCom = true;
|
|
|
changeKSD = ksdScore;
|