xiatian 3 ay önce
ebeveyn
işleme
c322f93815

+ 1 - 0
db/am_db.sql

@@ -16,6 +16,7 @@ CREATE TABLE `am_question` (
   `exam_id` bigint NOT NULL,
   `subject_code` varchar(255) COLLATE utf8mb4_bin NOT NULL,
   `subject_name` varchar(255) COLLATE utf8mb4_bin NOT NULL,
+  `title` varchar(255) COLLATE utf8mb4_bin NOT NULL,
   `main_number` int NOT NULL,
   `sub_number` int NOT NULL,
   `full_score` double NOT NULL,

BIN
file/question-import.xlsx


+ 107 - 76
src/main/java/cn/com/qmth/am/entity/QuestionEntity.java

@@ -14,81 +14,112 @@ import cn.com.qmth.am.handle.StandardAnswerListTypeHandler;
 @TableName(value = "am_question", autoResultMap = true)
 public class QuestionEntity extends IdEntity {
 
-	private static final long serialVersionUID = -6261302618070108336L;
-
-	private Long examId;
-
-	private String subjectCode;
-	private String subjectName;
-	private Integer mainNumber;
-	private String subNumber;
-
-	// 满分
-	private Double fullScore;
-	// 试题内容
-	private String content;
-	// 试题答案
-	@TableField(value = "answer", typeHandler = StandardAnswerListTypeHandler.class)
-	private List<StandardAnswer> answer;
-	
-	@TableField(value = "image_slice", typeHandler = ImageSliceListTypeHandler.class)
-	private List<ImageSlice> imageSlice;
-	
-	public Long getExamId() {
-		return examId;
-	}
-	public void setExamId(Long examId) {
-		this.examId = examId;
-	}
-	public String getSubjectCode() {
-		return subjectCode;
-	}
-	public void setSubjectCode(String subjectCode) {
-		this.subjectCode = subjectCode;
-	}
-	public Integer getMainNumber() {
-		return mainNumber;
-	}
-	public void setMainNumber(Integer mainNumber) {
-		this.mainNumber = mainNumber;
-	}
-	public String getSubNumber() {
-		return subNumber;
-	}
-	public void setSubNumber(String subNumber) {
-		this.subNumber = subNumber;
-	}
-	public Double getFullScore() {
-		return fullScore;
-	}
-	public void setFullScore(Double fullScore) {
-		this.fullScore = fullScore;
-	}
-	public String getContent() {
-		return content;
-	}
-	public void setContent(String content) {
-		this.content = content;
-	}
-	public List<StandardAnswer> getAnswer() {
-		return answer;
-	}
-	public void setAnswer(List<StandardAnswer> answer) {
-		this.answer = answer;
-	}
-	public List<ImageSlice> getImageSlice() {
-		return imageSlice;
-	}
-	public void setImageSlice(List<ImageSlice> imageSlice) {
-		this.imageSlice = imageSlice;
-	}
-	public String getSubjectName() {
-		return subjectName;
-	}
-
-
-	public void setSubjectName(String subjectName) {
-		this.subjectName = subjectName;
-	}
+    private static final long serialVersionUID = -6261302618070108336L;
+
+    private Long examId;
+
+    private String subjectCode;
+
+    private String subjectName;
+
+    private Integer mainNumber;
+
+    private String subNumber;
+
+    // 满分
+    private Double fullScore;
+
+    // 试题名称
+    private String title;
+
+    // 试题内容
+    private String content;
+
+    // 试题答案
+    @TableField(value = "answer", typeHandler = StandardAnswerListTypeHandler.class)
+    private List<StandardAnswer> answer;
+
+    @TableField(value = "image_slice", typeHandler = ImageSliceListTypeHandler.class)
+    private List<ImageSlice> imageSlice;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public Integer getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(Integer mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public Double getFullScore() {
+        return fullScore;
+    }
+
+    public void setFullScore(Double fullScore) {
+        this.fullScore = fullScore;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public List<StandardAnswer> getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(List<StandardAnswer> answer) {
+        this.answer = answer;
+    }
+
+    public List<ImageSlice> getImageSlice() {
+        return imageSlice;
+    }
+
+    public void setImageSlice(List<ImageSlice> imageSlice) {
+        this.imageSlice = imageSlice;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
 
 }

+ 21 - 8
src/main/java/cn/com/qmth/am/service/impl/QuestionServiceImpl.java

@@ -18,6 +18,8 @@ import java.util.regex.Pattern;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -42,10 +44,12 @@ import cn.com.qmth.am.service.QuestionService;
 @Service
 public class QuestionServiceImpl extends ServiceImpl<QuestionDao, QuestionEntity> implements QuestionService {
 
+    private static final Logger log = LoggerFactory.getLogger(QuestionService.class);
+
     private Pattern scoreRex = Pattern.compile("\\[\\[([0-9][0-9]*(.[0-9]+){0,1})分\\]\\]");
 
-    private static final String[] EXCEL_HEADER = new String[] { "考试ID", "科目代码", "科目名称", "大题号", "小题号", "满分", "试题内容",
-            "试题答案", "作答坐标" };
+    private static final String[] EXCEL_HEADER = new String[] { "考试ID", "科目代码", "科目名称", "题目名称", "大题号", "小题号", "满分",
+            "试题内容", "试题答案", "作答坐标" };
 
     @Autowired
     private SysProperty sysProperty;
@@ -75,6 +79,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionDao, QuestionEntity
                     errMsg = "未找到文件:" + file.getAbsolutePath();
                 } else {
                     errMsg = "系统错误:" + e.getMessage();
+                    log.error("系统错误", e);
                 }
                 ret = new ImportResult(errMsg);
             } finally {
@@ -204,7 +209,15 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionDao, QuestionEntity
             }
             imp.setSubjectName(subjectName);
 
-            String mainNum = trimAndNullIfBlank(line.get(EXCEL_HEADER[3]));
+            String title = trimAndNullIfBlank(line.get(EXCEL_HEADER[3]));
+            if (StringUtils.isBlank(title)) {
+                msg.append("  题目名称不能为空");
+            } else if (title.length() > 100) {
+                msg.append("  题目名称不能超过100个字符");
+            }
+            imp.setTitle(title);
+
+            String mainNum = trimAndNullIfBlank(line.get(EXCEL_HEADER[4]));
             if (StringUtils.isBlank(mainNum)) {
                 msg.append("  大题号不能为空");
             } else if (mainNum.length() > 10) {
@@ -221,7 +234,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionDao, QuestionEntity
                 }
             }
 
-            String subNum = trimAndNullIfBlank(line.get(EXCEL_HEADER[4]));
+            String subNum = trimAndNullIfBlank(line.get(EXCEL_HEADER[5]));
             if (StringUtils.isBlank(subNum)) {
                 msg.append("  小题号不能为空");
             } else if (subNum.length() > 10) {
@@ -229,7 +242,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionDao, QuestionEntity
             }
             imp.setSubNumber(subNum);
 
-            String fullScore = trimAndNullIfBlank(line.get(EXCEL_HEADER[5]));
+            String fullScore = trimAndNullIfBlank(line.get(EXCEL_HEADER[6]));
             if (StringUtils.isBlank(fullScore)) {
                 msg.append("  满分不能为空");
             } else if (fullScore.length() > 10) {
@@ -246,19 +259,19 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionDao, QuestionEntity
                 }
             }
 
-            String content = trimAndNullIfBlank(line.get(EXCEL_HEADER[6]));
+            String content = trimAndNullIfBlank(line.get(EXCEL_HEADER[7]));
             if (StringUtils.isBlank(content)) {
                 msg.append("  试题内容不能为空");
             }
             imp.setContent(content);
 
-            String answer = trimAndNullIfBlank(line.get(EXCEL_HEADER[7]));
+            String answer = trimAndNullIfBlank(line.get(EXCEL_HEADER[8]));
             // if (StringUtils.isBlank(answer)) {
             // msg.append(" 试题答案不能为空");
             // }
             imp.setAnswer(getStandardAnswer(answer));
 
-            String imageSlice = trimAndNullIfBlank(line.get(EXCEL_HEADER[8]));
+            String imageSlice = trimAndNullIfBlank(line.get(EXCEL_HEADER[9]));
             if (StringUtils.isBlank(imageSlice)) {
                 msg.append("  作答坐标不能为空");
             } else if (imageSlice.length() > 1000) {

+ 1 - 0
src/main/java/cn/com/qmth/am/service/impl/StudentScoreServiceImpl.java

@@ -124,6 +124,7 @@ public class StudentScoreServiceImpl extends ServiceImpl<StudentScoreDao, Studen
                     errMsg = "未找到文件:" + file.getAbsolutePath();
                 } else {
                     errMsg = "系统错误:" + e.getMessage();
+                    log.error("系统错误", e);
                 }
                 ret = new ImportResult(errMsg);
             } finally {

+ 1 - 0
src/main/java/cn/com/qmth/am/service/impl/StudentServiceImpl.java

@@ -81,6 +81,7 @@ public class StudentServiceImpl implements StudentService {
                     errMsg = "未找到文件:" + file.getAbsolutePath();
                 } else {
                     errMsg = "错误:" + e.getMessage();
+                    log.error("系统错误", e);
                 }
                 ret = new ImportResult(errMsg);
             } finally {

+ 3 - 3
src/main/resources/application.properties

@@ -13,7 +13,7 @@ com.qmth.mybatis.block-attack=false
 #
 db.host=localhost
 db.port=3306
-db.database=ai_marking_muti
+db.database=ai_marking_en
 com.qmth.datasource.username=root
 com.qmth.datasource.password=123456
 com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8&rewriteBatchedStatements=true
@@ -39,8 +39,8 @@ com.qmth.solar.access-key=7bbdc11570bc474dbf50e0d4a5dff328
 com.qmth.solar.access-secret=IOodRvbp2LspJTHOScgB7Yx8MRloMpyl
 
 am.marking-thread-count=4
-am.ocr-task.enable=true
-am.marking-task.enable=true
+am.ocr-task.enable=false
+am.marking-task.enable=false
 am.data-type=MARKING_CLOUD
 am.image-server=https://file.markingcloud.com
 am.data-dir=./data