|
|
@@ -9,6 +9,7 @@ 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;
|
|
|
@@ -30,7 +31,7 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
@Autowired
|
|
|
private CompetencyTreeDao competencyTreeDao;
|
|
|
@Autowired
|
|
|
- private QuestionDao questionDao;
|
|
|
+ private QuestionService questionService;
|
|
|
|
|
|
@Override
|
|
|
public CompetencyTree getTreeById(int userId){
|
|
|
@@ -50,50 +51,50 @@ 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;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+// 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);
|
|
|
|
|
|
@@ -101,13 +102,12 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public CompetencyTree getTreeAfterExam(int recordId){
|
|
|
- //TODO 测试检查
|
|
|
+ public CompetencyTree getTreeAfterExam(int recordId) {
|
|
|
|
|
|
EvalExamRecord evalExamRecord = evalExamRecordDao.findById(recordId).get();
|
|
|
|
|
|
Optional<EvalExamInfo> result1 = evalExamInfoDao.findById(evalExamRecord.getExamId());
|
|
|
- if(!result1.isPresent()){
|
|
|
+ if (!result1.isPresent()) {
|
|
|
System.out.println("考试信息不存在");
|
|
|
return null;
|
|
|
}
|
|
|
@@ -116,10 +116,11 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
CompetencyTree competencyTree;
|
|
|
|
|
|
Optional<CompetencyTree> result2 = competencyTreeDao.findById(evalExamRecord.getUserId());
|
|
|
- if(!result2.isPresent()){
|
|
|
+ if (!result2.isPresent()) {
|
|
|
+ //若查找不到能力树就新建一棵
|
|
|
competencyTree = new CompetencyTree(evalExamRecord.getUserId());
|
|
|
- }else {
|
|
|
- competencyTree = competencyTreeDao.findById(evalExamRecord.getUserId()).get();
|
|
|
+ } else {
|
|
|
+ competencyTree = competencyTreeDao.findById(evalExamRecord.getUserId()).get();
|
|
|
}
|
|
|
|
|
|
//数据取完,开始进行KSD分析和入库
|
|
|
@@ -129,109 +130,208 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
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};
|
|
|
+ double[] difficulty_percent = new double[]{1.0, 1.25, 1.5, 1.75, 2.0};
|
|
|
//得到学生所有题目的得分
|
|
|
Map<String, Double> studentScores = evalExamRecord.getErrorQuestions();
|
|
|
-// Map<String,Double> questionAndScore = evalExamInfo.getQuestionAndScore();
|
|
|
- //修改成不初始化,而是逐条添加的模式
|
|
|
- for(Map.Entry<String,Double> entry : studentScores.entrySet()){
|
|
|
+ Map<String, Double> questionAndScore = evalExamInfo.getQuestionAndScore();
|
|
|
+ //修改成不初始化,而是逐条添加的模式,对每一题进行分析入库
|
|
|
+ for (Map.Entry<String, Double> entry : studentScores.entrySet()) {
|
|
|
String questionId = entry.getKey();
|
|
|
- Question question = questionDao.findById(questionId).get();
|
|
|
+ Question question = questionService.getQuestionById(questionId);
|
|
|
+ List<String> knowledgeList = question.getCompetencies();
|
|
|
+ Integer weight = question.getWeight();
|
|
|
|
|
|
//能力树中的加分 = 学生得分 * 试卷难度
|
|
|
- Double addScore = difficulty_percent[difficulty-1] * studentScores.get(questionId);
|
|
|
+ Double addScore = difficulty_percent[difficulty - 1] * studentScores.get(questionId);
|
|
|
//增加能力树总分,注意,每个competency都会加分
|
|
|
- tree_Score += (addScore*question.getCompetencies().size());
|
|
|
-
|
|
|
- for(int i=0;i<question.getCompetencies().size();i++){
|
|
|
- String competency = question.getCompetencies().get(i);
|
|
|
- KSScore ksScoreMessage = question.getKsScores().get(i);
|
|
|
-
|
|
|
- //判定当前的subTree中是否添加过该分支,若添加过则直接修改,否则要新建分支
|
|
|
- boolean existCom = false;
|
|
|
- KSDScore changeKSDScore = new KSDScore();
|
|
|
- //根据competency找大分类
|
|
|
- for(KSDScore ksdScore : subTree){
|
|
|
- //competency大分支存在
|
|
|
- if(ksdScore.getCompetency().equals(competency)){
|
|
|
- existCom = true;
|
|
|
- changeKSDScore = ksdScore;
|
|
|
+ tree_Score += (addScore * knowledgeList.size());
|
|
|
+
|
|
|
+ //处理每一个知识点分支
|
|
|
+ for (int i = 0; i < knowledgeList.size(); i++) {
|
|
|
+ //知识点的形式一般为SR.RA.RC这种,需要用.分割并处理
|
|
|
+ String[] competencies = knowledgeList.get(i).split("\\.");
|
|
|
+ String com1 = competencies[0];
|
|
|
+ boolean existCom1 = false;
|
|
|
+ KSDScore changeKSD1 = new KSDScore();
|
|
|
+ for (KSDScore ksdScore : subTree) {
|
|
|
+ if (ksdScore.getCompetency().equals(com1)) {
|
|
|
+ existCom1 = true;
|
|
|
+ changeKSD1 = ksdScore;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- //competency大分支不存在,需要添加
|
|
|
- if(existCom == false){
|
|
|
- changeKSDScore.setCompetency(competency);
|
|
|
- changeKSDScore.setTotalScore(0.0);
|
|
|
- List<KSScore> addKs = new ArrayList<>();
|
|
|
+ if (!existCom1) {
|
|
|
List<DScore> addD = new ArrayList<>();
|
|
|
- changeKSDScore.setKSScore(addKs);
|
|
|
- changeKSDScore.setDScore(addD);
|
|
|
+ Double[] ds = new Double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
|
|
|
+ List<Double> addS = Arrays.asList(ds);
|
|
|
+ List<KSDScore> addChild = new ArrayList<>();
|
|
|
+
|
|
|
+ changeKSD1.setCompetency(com1);
|
|
|
+ changeKSD1.setTotalScore(0.0);
|
|
|
+ changeKSD1.setSkillsAndScores(addS);
|
|
|
+ changeKSD1.setDScore(addD);
|
|
|
+ changeKSD1.setChildren(addChild);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- //增加该KSD子树的分数
|
|
|
- Double total_score = changeKSDScore.getTotalScore();
|
|
|
- total_score += addScore;
|
|
|
- changeKSDScore.setTotalScore(total_score);
|
|
|
-
|
|
|
- //开始处理KSScore,记录子分支是否存在
|
|
|
- boolean existSubCom = false;
|
|
|
- //在对应的competency下进行下一步小分类
|
|
|
- List<KSScore> subKS = changeKSDScore.getKSScore();
|
|
|
- KSScore changeKSScore = new KSScore();
|
|
|
- for(KSScore ksScore : subKS){
|
|
|
- if(ksScore.getKnowledge().equals(ksScoreMessage.getKnowledge())){
|
|
|
- existSubCom = true;
|
|
|
- changeKSScore = ksScore;
|
|
|
- break;
|
|
|
+ //处理该层的KSD结果,增加总分
|
|
|
+ Double totalScore1 = changeKSD1.getTotalScore();
|
|
|
+ totalScore1 += addScore;
|
|
|
+ changeKSD1.setTotalScore(totalScore1);
|
|
|
+ //增加skills分数
|
|
|
+ List<Double> skillsAndScores1 = changeKSD1.getSkillsAndScores();
|
|
|
+ Double skillScore1 = skillsAndScores1.get(weight - 1);
|
|
|
+ skillScore1 += addScore;
|
|
|
+ skillsAndScores1.set(weight - 1, skillScore1);
|
|
|
+ changeKSD1.setSkillsAndScores(skillsAndScores1);
|
|
|
+ if(disposition!=null){
|
|
|
+ //增加disposition分数
|
|
|
+ boolean existD1 = false;
|
|
|
+ List<DScore> subD1 = changeKSD1.getDScore();
|
|
|
+ DScore changeD1 = new DScore();
|
|
|
+ for (DScore dScore : subD1) {
|
|
|
+ if (dScore.getName().equals(disposition)) {
|
|
|
+ existD1 = true;
|
|
|
+ changeD1 = dScore;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //sub小分支不存在,需要添加并对分支名称和分数进行初始化
|
|
|
- if(existSubCom == false){
|
|
|
- changeKSScore.setKnowledge(ksScoreMessage.getKnowledge());
|
|
|
- changeKSScore.setSkillsAndScore(Arrays.asList(new Double[]{0.0,0.0,0.0,0.0,0.0,0.0}));
|
|
|
- }
|
|
|
- List<Double> skills = changeKSScore.getSkillsAndScore();
|
|
|
- for(int j=0;j<skills.size();j++){
|
|
|
- Double score = ksScoreMessage.getSkillsAndScore().get(j) * addScore + skills.get(j);
|
|
|
- skills.set(j,score);
|
|
|
- }
|
|
|
- changeKSScore.setSkillsAndScore(skills);
|
|
|
- //需要增加新建的KS子分支
|
|
|
- if(existSubCom == false){
|
|
|
- subKS.add(changeKSScore);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- //开始处理DScore,记录该品质是否存在
|
|
|
- boolean existD = false;
|
|
|
- List<DScore> subD = changeKSDScore.getDScore();
|
|
|
- DScore changeDScore = new DScore();
|
|
|
- for(DScore dScore : subD){
|
|
|
- if(dScore.getName().equals(disposition)){
|
|
|
- existD = true;
|
|
|
- changeDScore = dScore;
|
|
|
- break;
|
|
|
+ if (!existD1) {
|
|
|
+ changeD1.setName(disposition);
|
|
|
+ changeD1.setScore(0.0);
|
|
|
}
|
|
|
+ Double addDScore1 = addScore + changeD1.getScore();
|
|
|
+ changeD1.setScore(addDScore1);
|
|
|
+ //需要增加新建的D子分支
|
|
|
+ if (!existD1) {
|
|
|
+ subD1.add(changeD1);
|
|
|
+ }
|
|
|
+ changeKSD1.setDScore(subD1);
|
|
|
+ }else {
|
|
|
+ System.out.println("disposition信息不存在");
|
|
|
}
|
|
|
- if(existD == false){
|
|
|
- changeDScore.setName(disposition);
|
|
|
- changeDScore.setScore(0.0);
|
|
|
- }
|
|
|
- Double addDScore = addScore + changeDScore.getScore();
|
|
|
- changeDScore.setScore(addDScore);
|
|
|
- //需要增加新建的D子分支
|
|
|
- if(existD == false){
|
|
|
- subD.add(changeDScore);
|
|
|
+
|
|
|
+ if (!existCom1) {
|
|
|
+ subTree.add(changeKSD1);
|
|
|
}
|
|
|
|
|
|
- //处理完KS分支和D分支
|
|
|
- changeKSDScore.setKSScore(subKS);
|
|
|
- changeKSDScore.setDScore(subD);
|
|
|
+ //如果有子层需要处理
|
|
|
+ List<KSDScore> subTree1 = changeKSD1.getChildren();
|
|
|
+ if (competencies.length > 1) {
|
|
|
+ String com2 = competencies[1];
|
|
|
+ boolean existCom2 = false;
|
|
|
+ KSDScore changeKSD2 = new KSDScore();
|
|
|
+ for (KSDScore ksdScore : subTree1) {
|
|
|
+ if (ksdScore.getCompetency().equals(com2)) {
|
|
|
+ existCom2 = true;
|
|
|
+ changeKSD2 = ksdScore;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!existCom2) {
|
|
|
+ List<DScore> addD = new ArrayList<>();
|
|
|
+ Double[] ds = new Double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
|
|
|
+ List<Double> addS = Arrays.asList(ds);
|
|
|
+ List<KSDScore> addChild = new ArrayList<>();
|
|
|
+
|
|
|
+ changeKSD2.setCompetency(com2);
|
|
|
+ changeKSD2.setTotalScore(0.0);
|
|
|
+ changeKSD2.setSkillsAndScores(addS);
|
|
|
+ changeKSD2.setDScore(addD);
|
|
|
+ changeKSD2.setChildren(addChild);
|
|
|
+ }
|
|
|
+ Double totalScore2 = changeKSD2.getTotalScore();
|
|
|
+ totalScore2 += addScore;
|
|
|
+ changeKSD2.setTotalScore(totalScore2);
|
|
|
+ List<Double> skillsAndScores2 = changeKSD2.getSkillsAndScores();
|
|
|
+ Double skillScore2 = skillsAndScores2.get(weight - 1);
|
|
|
+ skillScore2 += addScore;
|
|
|
+ skillsAndScores2.set(weight - 1, skillScore2);
|
|
|
+ changeKSD2.setSkillsAndScores(skillsAndScores2);
|
|
|
+ if(disposition!=null){
|
|
|
+ boolean existD2 = false;
|
|
|
+ List<DScore> subD2 = changeKSD2.getDScore();
|
|
|
+ DScore changeD2 = new DScore();
|
|
|
+ for (DScore dScore : subD2) {
|
|
|
+ if (dScore.getName().equals(disposition)) {
|
|
|
+ existD2 = true;
|
|
|
+ changeD2 = dScore;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!existD2) {
|
|
|
+ changeD2.setName(disposition);
|
|
|
+ changeD2.setScore(0.0);
|
|
|
+ }
|
|
|
+ Double addDScore2 = addScore + changeD2.getScore();
|
|
|
+ changeD2.setScore(addDScore2);
|
|
|
+ if (!existD2) {
|
|
|
+ subD2.add(changeD2);
|
|
|
+ }
|
|
|
+ changeKSD2.setDScore(subD2);
|
|
|
+ }
|
|
|
+ if (!existCom2) {
|
|
|
+ subTree1.add(changeKSD2);
|
|
|
+ }
|
|
|
|
|
|
- if(existCom == false){
|
|
|
- subTree.add(changeKSDScore);
|
|
|
+ //如果有子层需要处理
|
|
|
+ List<KSDScore> subTree2 = changeKSD2.getChildren();
|
|
|
+ if (competencies.length > 2) {
|
|
|
+ String com3 = competencies[2];
|
|
|
+ boolean existCom3 = false;
|
|
|
+ KSDScore changeKSD3 = new KSDScore();
|
|
|
+ for (KSDScore ksdScore : subTree2) {
|
|
|
+ if (ksdScore.getCompetency().equals(com3)) {
|
|
|
+ existCom3 = true;
|
|
|
+ changeKSD3 = ksdScore;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!existCom3) {
|
|
|
+ List<DScore> addD = new ArrayList<>();
|
|
|
+ Double[] ds = new Double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
|
|
|
+ List<Double> addS = Arrays.asList(ds);
|
|
|
+ List<KSDScore> addChild = new ArrayList<>();
|
|
|
+
|
|
|
+ changeKSD3.setCompetency(com3);
|
|
|
+ changeKSD3.setTotalScore(0.0);
|
|
|
+ changeKSD3.setSkillsAndScores(addS);
|
|
|
+ changeKSD3.setDScore(addD);
|
|
|
+ changeKSD3.setChildren(addChild);
|
|
|
+ }
|
|
|
+ Double totalScore3 = changeKSD3.getTotalScore();
|
|
|
+ totalScore3 += addScore;
|
|
|
+ changeKSD3.setTotalScore(totalScore3);
|
|
|
+ List<Double> skillsAndScores3 = changeKSD3.getSkillsAndScores();
|
|
|
+ Double skillScore3 = skillsAndScores3.get(weight - 1);
|
|
|
+ skillScore3 += addScore;
|
|
|
+ skillsAndScores3.set(weight - 1, skillScore3);
|
|
|
+ changeKSD3.setSkillsAndScores(skillsAndScores3);
|
|
|
+ if(disposition!=null){
|
|
|
+ boolean existD3 = false;
|
|
|
+ List<DScore> subD3 = changeKSD3.getDScore();
|
|
|
+ DScore changeD3 = new DScore();
|
|
|
+ for (DScore dScore : subD3) {
|
|
|
+ if (dScore.getName().equals(disposition)) {
|
|
|
+ existD3 = true;
|
|
|
+ changeD3 = dScore;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!existD3) {
|
|
|
+ changeD3.setName(disposition);
|
|
|
+ changeD3.setScore(0.0);
|
|
|
+ }
|
|
|
+ Double addDScore3 = addScore + changeD3.getScore();
|
|
|
+ changeD3.setScore(addDScore3);
|
|
|
+ if (!existD3) {
|
|
|
+ subD3.add(changeD3);
|
|
|
+ }
|
|
|
+ changeKSD3.setDScore(subD3);
|
|
|
+ }
|
|
|
+ if (!existCom3) {
|
|
|
+ subTree2.add(changeKSD3);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -249,24 +349,31 @@ public class EvalDataAnalysisServiceImpl implements EvalDataAnalysisService {
|
|
|
List<EvalExamRecord> evalExamRecordList = evalExamRecordDao.findByUserId(userId);
|
|
|
Map<String,Double> res = new HashMap<>();
|
|
|
for(EvalExamRecord evalExamRecord : evalExamRecordList){
|
|
|
-// System.out.println(evalExamRecord);
|
|
|
+ Optional<EvalExamInfo> result = evalExamInfoDao.findById(evalExamRecord.getExamId());
|
|
|
+ if(!result.isPresent()){
|
|
|
+ System.out.println("找不到对应考试信息");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ EvalExamInfo evalExamInfo = evalExamInfoDao.findById(evalExamRecord.getExamId()).get();
|
|
|
+ //获得题目ID和题目分数的对应关系
|
|
|
+ Map<String,Double> questionAndScore = evalExamInfo.getQuestionAndScore();
|
|
|
Map<String,Double> errorQuestions = evalExamRecord.getErrorQuestions();
|
|
|
for(String questionId : errorQuestions.keySet()){
|
|
|
- Optional<Question> result = questionDao.findById(questionId);
|
|
|
- if(!result.isPresent()){
|
|
|
- System.out.println("题号不存在");
|
|
|
- continue;
|
|
|
- }
|
|
|
- Question question = questionDao.findById(questionId).get();
|
|
|
+// Optional<Question> result = questionDao.findById(questionId);
|
|
|
+// if(!result.isPresent()){
|
|
|
+// System.out.println("题号不存在");
|
|
|
+// continue;
|
|
|
+// }
|
|
|
+ Question question = questionService.getQuestionById(questionId);
|
|
|
//如果题目分数为0,则跳过该题不做分析
|
|
|
- if(question.getQuestionScore() == 0){
|
|
|
+ if(questionAndScore.get(questionId) == 0){
|
|
|
continue;
|
|
|
}
|
|
|
// System.out.println(errorQuestions.get(questionId));
|
|
|
// System.out.println(question.getQuestionScore());
|
|
|
//如果做过相同的题目,则取最高分
|
|
|
DecimalFormat df = new DecimalFormat("#.00");
|
|
|
- Double scorePercent = errorQuestions.get(questionId)/question.getQuestionScore();
|
|
|
+ Double scorePercent = errorQuestions.get(questionId)/questionAndScore.get(questionId);
|
|
|
if(res.containsKey(questionId)){
|
|
|
scorePercent = Math.max(scorePercent,res.get(questionId));
|
|
|
}
|