zengxj 6 жил өмнө
parent
commit
53dfbc37a3

+ 9 - 0
src/main/java/edu/math/diagnosis/entity/PaperResult.java

@@ -48,6 +48,8 @@ public class PaperResult {
     @ApiModelProperty("试卷分数")
     private String jsonScore;
 
+    private Double totalScore;
+
     @Lob
     @Column(nullable = false)
     @ApiModelProperty("正确情况")
@@ -110,6 +112,13 @@ public class PaperResult {
         this.createtime = createtime;
     }
 
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
 //    public Double getScore1() {
 //        return score1;
 //    }

+ 8 - 3
src/main/java/edu/math/diagnosis/service/CommitService.java

@@ -104,6 +104,7 @@ public class CommitService {
 //        result.setScore6(scores.get(6));
     }
 
+    @Transactional(rollbackFor = Exception.class)
     public Result commit(PaperCommit paperCommit) {
         logger.info("uid={},name={},pid={} commit paper", paperCommit.getUid(), paperCommit.getName(), paperCommit.getPid());
         Paper paper = paperService.getOnePaper(paperCommit.getPid());
@@ -118,14 +119,18 @@ public class CommitService {
         if (CommonUtil.isEmpty(answers)) {
             return Result.fail("没有找到答案");
         }
-
+        answers.forEach(a -> {
+            if (a.getUseTime() == null) {
+                a.setUseTime(0L);
+            }
+        });
         String jsonAns = ObjectUtil.object2Json(answers);
         paperCommit.setJsonAns(jsonAns);
-        paperCommitRepo.saveAndFlush(paperCommit);
+        paperCommitRepo.save(paperCommit);
         logger.info("uid={},name={},pid={} commit paper success", paperCommit.getUid(), paperCommit.getName(), paperCommit.getPid());
         try {
             return paperResultService.parseResult(paperCommit, paper);
-        }catch (Exception e){
+        } catch (Exception e) {
             logger.error("考试结果解析失败");
             e.printStackTrace();
         }

+ 4 - 3
src/main/java/edu/math/diagnosis/service/PaperResultService.java

@@ -44,7 +44,7 @@ public class PaperResultService {
         Map<String,Double> pData = ObjectUtil.json2Object(paper.getJsonScore(),Map.class);
         //清空value为0
         pData.keySet().forEach(d->pData.put(d,0d));
-        int count = 0;
+        final Double[] score = {0d};
         for (Question q:questions){
             String ans = q.getAnswer();
             if(StringUtils.isBlank(ans)){
@@ -56,19 +56,20 @@ public class PaperResultService {
                 continue;
             }
             if(ans.equalsIgnoreCase(a.getOptions())){
-                count++;
                 collectQuestion.add(q.getNumber());
                 String jsonScore = q.getJsonScore();
                 Map<String,Double> qData = ObjectUtil.json2Object(jsonScore,Map.class);
                 pData.keySet().forEach(d->{
                     Double pData0 = qData.getOrDefault(d,0d) + pData.get(d);
+                    score[0] +=qData.getOrDefault(d,0d);
                     pData.put(d,pData0);
                 });
             }
         }
         result.setCollectQuestion(StringUtils.join(collectQuestion,","));
         result.setJsonScore(ObjectUtil.object2Json(pData));
-        result.setScore((double) count);
+        result.setScore(score[0]);
+        result.setTotalScore(Double.valueOf(paper.getTotalScore()));
         paperResultRepo.save(result);
         logger.info("答案分析保存成功");
         return Result.ok(result);

+ 4 - 2
src/main/java/edu/math/diagnosis/service/PaperService.java

@@ -149,8 +149,8 @@ public class PaperService {
         List<SubjectAbility> abilities = subjectAbilityService.list(String.valueOf(paper.getSubjectId()));
         //初始化数据
         abilities.forEach(a->data.put(a.getCode(),0d));
-        data.put("A0", (double) save.getQuestions().size());
-
+        data.put("A0", 0d);
+        double totalScore = 0;
         for (Question question : save.getQuestions()) {
             question.setPid(save.getId());
             //保存问题
@@ -158,6 +158,7 @@ public class PaperService {
             for (AbilityScore score:question.getScores()) {
                 Double d = data.getOrDefault(score.getAbilityCode(),0d);
                 d+=score.getScore();
+                totalScore +=score.getScore();
                 data.put(score.getAbilityCode(),d);
                 score.setGrade(paper.getGrade());
                 score.setPid(save.getId());
@@ -172,6 +173,7 @@ public class PaperService {
             sectionService.add(section);
         }
         String jsonScore = ObjectUtil.object2Json(data);
+        paper.setTotalScore((int) totalScore);
         paper.setJsonScore(jsonScore);
         paperRepo.saveAndFlush(paper);
         logger.info("试卷增加成功");