Browse Source

FixPaperScore

deason 2 năm trước cách đây
mục cha
commit
49ae9c64ac

+ 94 - 0
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/fix_paper_score/FixPaperScore.java

@@ -0,0 +1,94 @@
+package cn.com.qmth.dp.examcloud.oe.modules.fix_paper_score;
+
+import cn.com.qmth.dp.examcloud.oe.modules.fix_paper_score.vo.ExamRecordDataVO;
+import cn.com.qmth.dp.examcloud.oe.modules.update_question_score.entity.DefaultPaperBean;
+import cn.com.qmth.dp.examcloud.oe.modules.update_question_score.entity.DefaultQuestionGroupBean;
+import cn.com.qmth.dp.examcloud.oe.modules.update_question_score.entity.ExamRecordPaperStructBean;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class FixPaperScore {
+
+    private final static Logger log = LoggerFactory.getLogger(FixPaperScore.class);
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    @Autowired
+    private MongoTemplate mongoTemplate;
+
+    private int curTotal = 0, noPaperStructCount = 0;
+
+    public void start() {
+        StringBuilder querySql = new StringBuilder()
+                .append(" select id,paper_struct_id,paper_score")
+                .append(" from ec_oe_exam_record_data ")
+                .append(" where id > %s ")
+                .append(" order by id asc limit 0,1000");
+
+        Long nextId = 0L;
+        while (true) {
+            log.info("nextId:{} curTotal:{} noPaperStructCount:{}", nextId, curTotal, noPaperStructCount);
+            List<ExamRecordDataVO> list = jdbcTemplate.query(String.format(querySql.toString(), nextId), new BeanPropertyRowMapper(ExamRecordDataVO.class));
+            if (CollectionUtils.isEmpty(list)) {
+                break;
+            }
+
+            nextId = list.get(list.size() - 1).getId();
+            curTotal += list.size();
+
+            this.fix(list);
+        }
+
+        log.info("finished! nextId:{} curTotal:{} noPaperStructCount:{}", nextId, curTotal, noPaperStructCount);
+    }
+
+    private void fix(List<ExamRecordDataVO> list) {
+        for (ExamRecordDataVO vo : list) {
+            if (StringUtils.isEmpty(vo.getPaperStructId()) || vo.getPaperScore() > 0) {
+                continue;
+            }
+
+            Query query = new Query();
+            query.addCriteria(Criteria.where("_id").is(vo.getPaperStructId()));
+            ExamRecordPaperStructBean paperStruct = mongoTemplate.findOne(query, ExamRecordPaperStructBean.class, "examRecordPaperStruct");
+            if (paperStruct == null) {
+                log.warn("paperStruct is not exist! examRecordDataId:{} paperStructId:{}", vo.getId(), vo.getPaperStructId());
+                noPaperStructCount++;
+                continue;
+            }
+
+            vo.setPaperScore(this.parsePaperScore(paperStruct.getDefaultPaper()));
+            log.info("examRecordDataId:{} paperScore:{}", vo.getId(), vo.getPaperScore());
+            this.updatePaperScore(vo.getId(), vo.getPaperScore());
+        }
+    }
+
+    private double parsePaperScore(DefaultPaperBean defaultPaper) {
+        double paperScore = 0d;
+        if (CollectionUtils.isNotEmpty(defaultPaper.getQuestionGroupList())) {
+            for (DefaultQuestionGroupBean group : defaultPaper.getQuestionGroupList()) {
+                paperScore += group.getGroupScore();
+            }
+        }
+        return paperScore;
+    }
+
+    private int updatePaperScore(Long examRecordDataId, Double paperScore) {
+        String sql = String.format("update ec_oe_exam_record_data set paper_score = %s where id = %s", paperScore, examRecordDataId);
+        return jdbcTemplate.update(sql);
+    }
+
+}

+ 39 - 0
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/fix_paper_score/vo/ExamRecordDataVO.java

@@ -0,0 +1,39 @@
+package cn.com.qmth.dp.examcloud.oe.modules.fix_paper_score.vo;
+
+import java.io.Serializable;
+
+public class ExamRecordDataVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    private String paperStructId;
+
+    private Double paperScore;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getPaperStructId() {
+        return paperStructId;
+    }
+
+    public void setPaperStructId(String paperStructId) {
+        this.paperStructId = paperStructId;
+    }
+
+    public Double getPaperScore() {
+        return paperScore;
+    }
+
+    public void setPaperScore(Double paperScore) {
+        this.paperScore = paperScore;
+    }
+
+}

+ 6 - 0
src/test/java/cn/com/qmth/dp/examcloud/oe/test/ExportTest.java

@@ -4,6 +4,7 @@ import cn.com.qmth.dp.examcloud.oe.OeToolApplication;
 import cn.com.qmth.dp.examcloud.oe.modules.exam_record_data.ExamRecordDataTool;
 import cn.com.qmth.dp.examcloud.oe.modules.export_exam_student_score.ExportExamStudentScore;
 import cn.com.qmth.dp.examcloud.oe.modules.fixExamStudentId.FixExamStudentId;
+import cn.com.qmth.dp.examcloud.oe.modules.fix_paper_score.FixPaperScore;
 import cn.com.qmth.dp.examcloud.oe.modules.get_student_answer_detail.GetStduentAnswerDetailService;
 import cn.com.qmth.dp.examcloud.oe.modules.get_student_one_question_answer.GetStduentOneAnswerService;
 import cn.com.qmth.dp.examcloud.oe.modules.update_correct_answer.FixCorrectAnswerAndResetScoreService;
@@ -39,9 +40,14 @@ public class ExportTest {
     @Autowired
     private ExamRecordDataTool examRecordDataTool;
 
+    @Autowired
+    private FixPaperScore fixPaperScore;
+
     @Test
     public void exportTest() throws Exception {
 
+        // fixPaperScore.start();
+
         // updateFillblankQuestionTypeService.start();
 
         // examRecordDataTool.start();