Pārlūkot izejas kodu

feat: 增加KSD分析模块的分数部分

181250114 4 gadi atpakaļ
vecāks
revīzija
c3e40b6a1f

+ 11 - 5
src/main/java/com/seecoder/dataanalysis/analysis/impl/DataAnalysisServiceImpl.java

@@ -42,7 +42,7 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
 
     @Override
     public CompetencyTree getTreeAfterExam(int exam_id){
-        //TODO 能力树总分还未修改
+        //TODO 测试检查
         EvalExamRecord evalExamRecord = evalExamRecordDao.findById(""+exam_id).get();
         EvalExamInfo evalExamInfo = evalExamInfoDao.findById(""+exam_id).get();
         CompetencyTree competencyTree = competencyTreeDao.findByStudentId(evalExamRecord.getStudentId());
@@ -51,6 +51,7 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
         List<KSDScore> subTree = competencyTree.getSubCompetencyTree();
         Integer difficulty = evalExamInfo.getDifficulty();
         String disposition = evalExamInfo.getDisposition();
+        Double tree_Score = competencyTree.getTreeScore();
         //得到学生所有题目的得分
         Map<String, Double> studentScores = evalExamRecord.getErrorQuestions();
         Map<String,Double> questionAndScore = evalExamInfo.getQuestionAndScore();
@@ -59,13 +60,17 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
             Question question = questionDao.findById(questionId).get();
             //在能力树中加成的部分 = 学生得分 * 试卷难度
             Double percent = difficulty * studentScores.get(questionId);
+            tree_Score += percent;
             //根据competency找大分类
             for(KSDScore ksdScore : subTree){
-                if(ksdScore.getCompetency() == question.getCompetency()){
-//                    Double treeScore = competencyTree.getTreeScore();
-                    List<KSScore> subKS = ksdScore.getKSScore();
+                if(ksdScore.getCompetency().equals(question.getCompetency())){
+                    //增加该能力子树的分数
+                    Double total_score = ksdScore.getTotalScore();
+                    total_score += percent;
+                    ksdScore.setTotalScore(total_score);
                     //在对应的competency下进行下一步小分类
                     //修改K-S的分数
+                    List<KSScore> subKS = ksdScore.getKSScore();
                     for(KSScore ksScore : subKS){
                         if(ksScore.getKnowledge() == question.getKsScore().getKnowledge()){
                             List<Double> Skills = ksScore.getSkillsAndScore();
@@ -80,7 +85,7 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
                     List<DScore> subD = ksdScore.getDScore();
                     //修改Disposition的分数
                     for(DScore dScore : subD){
-                        if(dScore.getName() == disposition){
+                        if(dScore.getName().equals(disposition)){
                             Double score = percent + dScore.getScore();
                             dScore.setScore(score);
                             break;
@@ -90,6 +95,7 @@ public class DataAnalysisServiceImpl implements DataAnalysisService {
             }
         }
         //处理完考试中的每个问题后,更新能力树
+        competencyTree.setTreeScore(tree_Score);
         competencyTreeDao.save(competencyTree);
 
         return competencyTree;