ting.yin 3 жил өмнө
commit
f16cc2f589
44 өөрчлөгдсөн 2562 нэмэгдсэн , 0 устгасан
  1. 49 0
      .gitignore
  2. 112 0
      pom.xml
  3. 17 0
      src/main/java/cn/com/qmth/scancloud/ApiApplication.java
  4. 138 0
      src/main/java/cn/com/qmth/scancloud/entity/AnswerCardEntity.java
  5. 101 0
      src/main/java/cn/com/qmth/scancloud/entity/BatchEntity.java
  6. 126 0
      src/main/java/cn/com/qmth/scancloud/entity/ExamEntity.java
  7. 70 0
      src/main/java/cn/com/qmth/scancloud/entity/OmrGroupEntity.java
  8. 77 0
      src/main/java/cn/com/qmth/scancloud/entity/OmrTaskEntity.java
  9. 55 0
      src/main/java/cn/com/qmth/scancloud/entity/OmrTaskPaperEntity.java
  10. 57 0
      src/main/java/cn/com/qmth/scancloud/entity/PackageCardEntity.java
  11. 77 0
      src/main/java/cn/com/qmth/scancloud/entity/PackageResultEntity.java
  12. 57 0
      src/main/java/cn/com/qmth/scancloud/entity/PackageTaskEntity.java
  13. 93 0
      src/main/java/cn/com/qmth/scancloud/entity/PaperEntity.java
  14. 107 0
      src/main/java/cn/com/qmth/scancloud/entity/PaperPageEntity.java
  15. 89 0
      src/main/java/cn/com/qmth/scancloud/entity/RefixBatchEntity.java
  16. 53 0
      src/main/java/cn/com/qmth/scancloud/entity/ScannerCardEntity.java
  17. 36 0
      src/main/java/cn/com/qmth/scancloud/entity/ScannerEntity.java
  18. 189 0
      src/main/java/cn/com/qmth/scancloud/entity/StudentEntity.java
  19. 46 0
      src/main/java/cn/com/qmth/scancloud/entity/StudentPaperEntity.java
  20. 46 0
      src/main/java/cn/com/qmth/scancloud/entity/SubjectEntity.java
  21. 76 0
      src/main/java/cn/com/qmth/scancloud/entity/SystemConfigEntity.java
  22. 138 0
      src/main/java/cn/com/qmth/scancloud/entity/UploadResultEntity.java
  23. 84 0
      src/main/java/cn/com/qmth/scancloud/entity/base/AuditingEntity.java
  24. 72 0
      src/main/java/cn/com/qmth/scancloud/entity/base/AuditingWithoutIdEntity.java
  25. 57 0
      src/main/java/cn/com/qmth/scancloud/entity/base/IdEntity.java
  26. 28 0
      src/main/java/cn/com/qmth/scancloud/enums/BatchStatus.java
  27. 28 0
      src/main/java/cn/com/qmth/scancloud/enums/CardSource.java
  28. 36 0
      src/main/java/cn/com/qmth/scancloud/enums/ConditionType.java
  29. 30 0
      src/main/java/cn/com/qmth/scancloud/enums/ExamMode.java
  30. 30 0
      src/main/java/cn/com/qmth/scancloud/enums/GroupType.java
  31. 34 0
      src/main/java/cn/com/qmth/scancloud/enums/OmrField.java
  32. 28 0
      src/main/java/cn/com/qmth/scancloud/enums/OmrStatus.java
  33. 25 0
      src/main/java/cn/com/qmth/scancloud/enums/QueryField.java
  34. 32 0
      src/main/java/cn/com/qmth/scancloud/enums/Role.java
  35. 28 0
      src/main/java/cn/com/qmth/scancloud/enums/ScanStatus.java
  36. 28 0
      src/main/java/cn/com/qmth/scancloud/enums/Stage.java
  37. 26 0
      src/main/java/cn/com/qmth/scancloud/enums/TaskStatus.java
  38. 30 0
      src/main/java/cn/com/qmth/scancloud/enums/VerifyStatus.java
  39. 37 0
      src/main/java/cn/com/qmth/scancloud/model/AnswerItem.java
  40. 20 0
      src/main/java/cn/com/qmth/scancloud/model/LoginSession.java
  41. 27 0
      src/main/java/cn/com/qmth/scancloud/model/OcrCondition.java
  42. 27 0
      src/main/java/cn/com/qmth/scancloud/model/OmrTaskPage.java
  43. 12 0
      src/main/java/cn/com/qmth/scancloud/model/QueryCondition.java
  44. 34 0
      src/main/resources/application.properties

+ 49 - 0
.gitignore

@@ -0,0 +1,49 @@
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+*.class
+*.log
+
+
+### Eclipse & STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+
+### VS Code ###
+.vscode
+node_modules
+package-lock.json
+yarn.lock
+
+
+### Package Files ###
+*.war
+*.ear
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+target/
+logs/
+
+.flattened-pom.xml
+.DS_Store
+

+ 112 - 0
pom.xml

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>cn.com.qmth</groupId>
+	<artifactId>scancloud</artifactId>
+	<version>1.0.0</version>
+	<packaging>jar</packaging>
+	<name>api-demo</name>
+
+	<properties>
+		<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
+		<qmth-boot-version>1.0.2</qmth-boot-version>
+		<maven-compiler-version>3.8.1</maven-compiler-version>
+		<maven-surefire-version>2.22.2</maven-surefire-version>
+		<maven.compiler.source>1.8</maven.compiler.source>
+		<maven.compiler.target>1.8</maven.compiler.target>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+	</properties>
+	<repositories>
+		<repository>
+			<id>nexus</id>
+			<name>nexus</name>
+			<url>http://192.168.10.201:8081/repository/maven-public/</url>
+		</repository>
+	</repositories>
+	<pluginRepositories>
+		<pluginRepository>
+			<id>nexus</id>
+			<name>nexus</name>
+			<url>http://192.168.10.201:8081/repository/maven-public/</url>
+		</pluginRepository>
+	</pluginRepositories>
+	<dependencies>
+		<dependency>
+			<groupId>com.qmth.boot</groupId>
+			<artifactId>starter-api</artifactId>
+			<version>${qmth-boot-version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.qmth.boot</groupId>
+			<artifactId>data-mybatis-plus</artifactId>
+			<version>${qmth-boot-version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.qmth.boot</groupId>
+			<artifactId>core-uid</artifactId>
+			<version>${qmth-boot-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>com.qmth.boot</groupId>
+			<artifactId>core-solar</artifactId>
+			<version>${qmth-boot-version}</version>
+		</dependency>
+
+	</dependencies>
+	<dependencyManagement>
+		<dependencies>
+			<dependency>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-dependencies</artifactId>
+				<version>${spring-boot.version}</version>
+				<type>pom</type>
+				<scope>import</scope>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
+	<build>
+		<finalName>${project.artifactId}</finalName>
+		<plugins>
+			<plugin>
+				<groupId>org.springframework.boot</groupId>
+				<artifactId>spring-boot-maven-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<version>${maven-surefire-version}</version>
+				<configuration>
+					<testFailureIgnore>true</testFailureIgnore>
+					<skipTests>true</skipTests>
+					<skip>true</skip>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-jar-plugin</artifactId>
+				<configuration>
+					<archive>
+						<manifest>
+							<mainClass>cn.com.qmth.print.manage.ApiApplication</mainClass>
+							<addClasspath>true</addClasspath>
+							<classpathPrefix>./</classpathPrefix>
+						</manifest>
+						<manifestEntries>
+							<Class-Path>../config/</Class-Path>
+						</manifestEntries>
+					</archive>
+					<excludes>
+						<exclude>*.properties</exclude>
+						<exclude>*.xml</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

+ 17 - 0
src/main/java/cn/com/qmth/scancloud/ApiApplication.java

@@ -0,0 +1,17 @@
+package cn.com.qmth.scancloud;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Configuration;
+
+@SpringBootApplication
+@Configuration
+@MapperScan("cn.com.qmth.scancloud.dao")
+public class ApiApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(ApiApplication.class, args);
+    }
+
+}

+ 138 - 0
src/main/java/cn/com/qmth/scancloud/entity/AnswerCardEntity.java

@@ -0,0 +1,138 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+import cn.com.qmth.scancloud.enums.CardSource;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 试卷卡格式
+@TableName("sc_answer_card")
+public class AnswerCardEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -7904338527706136352L;
+
+    private Long examId;
+
+    private Integer number;
+
+    // 可选
+    private String subjectCode;
+
+    private String subjectName;
+
+    private Integer paperCount;
+
+    private String path;
+
+    private String md5;
+
+    private CardSource source;
+
+    private Boolean needAdapte;
+
+    private Boolean singlePage;
+
+    private String parameter;
+
+    private String remark;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getPaperCount() {
+        return paperCount;
+    }
+
+    public void setPaperCount(Integer paperCount) {
+        this.paperCount = paperCount;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public String getMd5() {
+        return md5;
+    }
+
+    public void setMd5(String md5) {
+        this.md5 = md5;
+    }
+
+    public Boolean getSinglePage() {
+        return singlePage;
+    }
+
+    public void setSinglePage(Boolean singlePage) {
+        this.singlePage = singlePage;
+    }
+
+    public String getParameter() {
+        return parameter;
+    }
+
+    public void setParameter(String parameter) {
+        this.parameter = parameter;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public CardSource getSource() {
+        return source;
+    }
+
+    public void setSource(CardSource source) {
+        this.source = source;
+    }
+
+    public Boolean getNeedAdapte() {
+        return needAdapte;
+    }
+
+    public void setNeedAdapte(Boolean needAdapte) {
+        this.needAdapte = needAdapte;
+    }
+
+}

+ 101 - 0
src/main/java/cn/com/qmth/scancloud/entity/BatchEntity.java

@@ -0,0 +1,101 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+import cn.com.qmth.scancloud.enums.BatchStatus;
+import cn.com.qmth.scancloud.enums.VerifyStatus;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 扫描批次
+@TableName("sc_batch")
+public class BatchEntity extends AuditingEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 6630267744496706862L;
+
+    private String code;
+
+    private Long examId;
+
+    private String device;
+
+    // 可选
+    private String packageCode;
+
+    // 人数
+    private Integer scanCount;
+
+    // 人工绑定人数
+    private Integer assignedCount;
+
+    private BatchStatus status;
+
+    private VerifyStatus verifyStatus;
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public Integer getScanCount() {
+        return scanCount;
+    }
+
+    public void setScanCount(Integer scanCount) {
+        this.scanCount = scanCount;
+    }
+
+    public Integer getAssignedCount() {
+        return assignedCount;
+    }
+
+    public void setAssignedCount(Integer assignedCount) {
+        this.assignedCount = assignedCount;
+    }
+
+    public BatchStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(BatchStatus status) {
+        this.status = status;
+    }
+
+    public VerifyStatus getVerifyStatus() {
+        return verifyStatus;
+    }
+
+    public void setVerifyStatus(VerifyStatus verifyStatus) {
+        this.verifyStatus = verifyStatus;
+    }
+
+}

+ 126 - 0
src/main/java/cn/com/qmth/scancloud/entity/ExamEntity.java

@@ -0,0 +1,126 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+import cn.com.qmth.scancloud.enums.ExamMode;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 考试
+@TableName("sc_exam")
+public class ExamEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 2232451399940497087L;
+
+    private Long id;
+
+    private Long schoolId;
+
+    private String schoolName;
+
+    private String name;
+
+    private Boolean enable;
+
+    private ExamMode mode;
+
+    private Boolean scanByPackage;
+
+    private Boolean allowUnexistPaper;
+
+    private Integer answerFrontCardType;
+
+    private Boolean enableSinglePageAnswer;
+
+    private Boolean enableUpload;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getSchoolName() {
+        return schoolName;
+    }
+
+    public void setSchoolName(String schoolName) {
+        this.schoolName = schoolName;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public ExamMode getMode() {
+        return mode;
+    }
+
+    public void setMode(ExamMode mode) {
+        this.mode = mode;
+    }
+
+    public Boolean getScanByPackage() {
+        return scanByPackage;
+    }
+
+    public void setScanByPackage(Boolean scanByPackage) {
+        this.scanByPackage = scanByPackage;
+    }
+
+    public Boolean getAllowUnexistPaper() {
+        return allowUnexistPaper;
+    }
+
+    public void setAllowUnexistPaper(Boolean allowUnexistPaper) {
+        this.allowUnexistPaper = allowUnexistPaper;
+    }
+
+    public Integer getAnswerFrontCardType() {
+        return answerFrontCardType;
+    }
+
+    public void setAnswerFrontCardType(Integer answerFrontCardType) {
+        this.answerFrontCardType = answerFrontCardType;
+    }
+
+    public Boolean getEnableSinglePageAnswer() {
+        return enableSinglePageAnswer;
+    }
+
+    public void setEnableSinglePageAnswer(Boolean enableSinglePageAnswer) {
+        this.enableSinglePageAnswer = enableSinglePageAnswer;
+    }
+
+    public Boolean getEnableUpload() {
+        return enableUpload;
+    }
+
+    public void setEnableUpload(Boolean enableUpload) {
+        this.enableUpload = enableUpload;
+    }
+}

+ 70 - 0
src/main/java/cn/com/qmth/scancloud/entity/OmrGroupEntity.java

@@ -0,0 +1,70 @@
+package cn.com.qmth.scancloud.entity;
+
+import java.util.List;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+import cn.com.qmth.scancloud.enums.Stage;
+import cn.com.qmth.scancloud.model.OcrCondition;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 识别对照任务分组
+@TableName("sc_omr_group")
+public class OmrGroupEntity extends AuditingEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 3713052032605963927L;
+
+    private Long examId;
+
+    private Boolean fixed;
+
+    private Stage stage;
+
+    private List<OcrCondition> conditions;
+
+    private Integer totalCount;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Boolean getFixed() {
+        return fixed;
+    }
+
+    public void setFixed(Boolean fixed) {
+        this.fixed = fixed;
+    }
+
+    public Stage getStage() {
+        return stage;
+    }
+
+    public void setStage(Stage stage) {
+        this.stage = stage;
+    }
+
+    public List<OcrCondition> getConditions() {
+        return conditions;
+    }
+
+    public void setConditions(List<OcrCondition> conditions) {
+        this.conditions = conditions;
+    }
+
+    public Integer getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(Integer totalCount) {
+        this.totalCount = totalCount;
+    }
+
+}

+ 77 - 0
src/main/java/cn/com/qmth/scancloud/entity/OmrTaskEntity.java

@@ -0,0 +1,77 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+import cn.com.qmth.scancloud.enums.TaskStatus;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 识别对照任务
+@TableName("sc_omr_task")
+public class OmrTaskEntity extends AuditingEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1246294836247015804L;
+
+    private Long examId;
+
+    private Long groupId;
+
+    private Long studentId;
+
+    private Integer cardNumber;
+
+    private TaskStatus status;
+
+    private String device;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public Integer getCardNumber() {
+        return cardNumber;
+    }
+
+    public void setCardNumber(Integer cardNumber) {
+        this.cardNumber = cardNumber;
+    }
+
+    public TaskStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(TaskStatus status) {
+        this.status = status;
+    }
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+}

+ 55 - 0
src/main/java/cn/com/qmth/scancloud/entity/OmrTaskPaperEntity.java

@@ -0,0 +1,55 @@
+package cn.com.qmth.scancloud.entity;
+
+import java.util.List;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+import cn.com.qmth.scancloud.model.OmrTaskPage;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+@TableName("sc_omr_task_paper")
+public class OmrTaskPaperEntity extends AuditingEntity {
+
+    private static final long serialVersionUID = 2083448665203245516L;
+
+    private Long taskId;
+
+    private Integer number;
+
+    private Integer paperId;
+
+    private List<OmrTaskPage> pages;
+
+    public Long getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(Long taskId) {
+        this.taskId = taskId;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setPaperNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Integer getPaperId() {
+        return paperId;
+    }
+
+    public void setPaperId(Integer paperId) {
+        this.paperId = paperId;
+    }
+
+    public List<OmrTaskPage> getPages() {
+        return pages;
+    }
+
+    public void setPages(List<OmrTaskPage> pages) {
+        this.pages = pages;
+    }
+
+}

+ 57 - 0
src/main/java/cn/com/qmth/scancloud/entity/PackageCardEntity.java

@@ -0,0 +1,57 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+import cn.com.qmth.scancloud.enums.CardSource;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 签到表卡格式
+@TableName("sc_package_card")
+public class PackageCardEntity extends AuditingEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -2371423277121965045L;
+
+    private Long examId;
+
+    private String path;
+
+    private String md5;
+
+    private CardSource source;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public String getMd5() {
+        return md5;
+    }
+
+    public void setMd5(String md5) {
+        this.md5 = md5;
+    }
+
+    public CardSource getSource() {
+        return source;
+    }
+
+    public void setSource(CardSource source) {
+        this.source = source;
+    }
+
+}

+ 77 - 0
src/main/java/cn/com/qmth/scancloud/entity/PackageResultEntity.java

@@ -0,0 +1,77 @@
+package cn.com.qmth.scancloud.entity;
+
+import java.util.List;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 签到表
+@TableName("sc_package_result")
+public class PackageResultEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -2443714675814813665L;
+
+    private Long examId;
+
+    private String packageCode;
+
+    private String device;
+
+    private List<String> path;
+
+    private Boolean assigned;
+
+    private Long uploadTime;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+    public List<String> getPath() {
+        return path;
+    }
+
+    public void setPath(List<String> path) {
+        this.path = path;
+    }
+
+    public Boolean getAssigned() {
+        return assigned;
+    }
+
+    public void setAssigned(Boolean assigned) {
+        this.assigned = assigned;
+    }
+
+    public Long getUploadTime() {
+        return uploadTime;
+    }
+
+    public void setUploadTime(Long uploadTime) {
+        this.uploadTime = uploadTime;
+    }
+}

+ 57 - 0
src/main/java/cn/com/qmth/scancloud/entity/PackageTaskEntity.java

@@ -0,0 +1,57 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+import cn.com.qmth.scancloud.enums.TaskStatus;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 签到表任务
+@TableName("sc_package_task")
+public class PackageTaskEntity extends AuditingEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 1235085440470422100L;
+
+    private Long examId;
+
+    private String packageCode;
+
+    private TaskStatus status;
+
+    private String device;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public TaskStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(TaskStatus status) {
+        this.status = status;
+    }
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+}

+ 93 - 0
src/main/java/cn/com/qmth/scancloud/entity/PaperEntity.java

@@ -0,0 +1,93 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 题卡扫描结果
+@TableName("sc_paper")
+public class PaperEntity extends AuditingEntity {
+
+    private static final long serialVersionUID = -3895996803584214777L;
+
+    private Long examId;
+
+    private Long studentId;
+
+    private Long batchId;
+
+    private Integer cardNumber;
+
+    private String examNumber;
+
+    private Integer number;
+
+    private Integer pageCount;
+
+    private Boolean mismatch;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public Long getBatchId() {
+        return batchId;
+    }
+
+    public void setBatchId(Long batchId) {
+        this.batchId = batchId;
+    }
+
+    public Integer getCardNumber() {
+        return cardNumber;
+    }
+
+    public void setCardNumber(Integer cardNumber) {
+        this.cardNumber = cardNumber;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Integer getPageCount() {
+        return pageCount;
+    }
+
+    public void setPageCount(Integer pageCount) {
+        this.pageCount = pageCount;
+    }
+
+    public Boolean getMismatch() {
+        return mismatch;
+    }
+
+    public void setMismatch(Boolean mismatch) {
+        this.mismatch = mismatch;
+    }
+
+}

+ 107 - 0
src/main/java/cn/com/qmth/scancloud/entity/PaperPageEntity.java

@@ -0,0 +1,107 @@
+package cn.com.qmth.scancloud.entity;
+
+import java.util.List;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+@TableName("sc_paper_page")
+public class PaperPageEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -182520914017960004L;
+
+    private Long paperId;
+
+    private Integer index;
+
+    private Boolean absent;
+
+    private Boolean breach;
+
+    private String paperType;
+
+    private List<String> question;
+
+    private List<String> selective;
+
+    private String sheetPath;
+
+    private List<String> sliceParh;
+
+    public Long getPaperId() {
+        return paperId;
+    }
+
+    public void setPaperId(Long paperId) {
+        this.paperId = paperId;
+    }
+
+    public Integer getIndex() {
+        return index;
+    }
+
+    public void setIndex(Integer index) {
+        this.index = index;
+    }
+
+    public Boolean getAbsent() {
+        return absent;
+    }
+
+    public void setAbsent(Boolean absent) {
+        this.absent = absent;
+    }
+
+    public Boolean getBreach() {
+        return breach;
+    }
+
+    public void setBreach(Boolean breach) {
+        this.breach = breach;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public List<String> getQuestion() {
+        return question;
+    }
+
+    public void setQuestion(List<String> question) {
+        this.question = question;
+    }
+
+    public List<String> getSelective() {
+        return selective;
+    }
+
+    public void setSelective(List<String> selective) {
+        this.selective = selective;
+    }
+
+    public String getSheetPath() {
+        return sheetPath;
+    }
+
+    public void setSheetPath(String sheetPath) {
+        this.sheetPath = sheetPath;
+    }
+
+    public List<String> getSliceParh() {
+        return sliceParh;
+    }
+
+    public void setSliceParh(List<String> sliceParh) {
+        this.sliceParh = sliceParh;
+    }
+
+}

+ 89 - 0
src/main/java/cn/com/qmth/scancloud/entity/RefixBatchEntity.java

@@ -0,0 +1,89 @@
+package cn.com.qmth.scancloud.entity;
+
+import java.util.List;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+import cn.com.qmth.scancloud.model.QueryCondition;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 二次识别批次
+@TableName("sc_refix_batch")
+public class RefixBatchEntity extends AuditingEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -8508195043570297809L;
+
+    private Long examId;
+
+    private String cardNumber;
+
+    private List<QueryCondition> conditions;
+
+    private Integer totalCount;
+
+    private Integer sucessCount;
+
+    private Boolean finished;
+
+    private Boolean updateSlice;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCardNumber() {
+        return cardNumber;
+    }
+
+    public void setCardNumber(String cardNumber) {
+        this.cardNumber = cardNumber;
+    }
+
+    public List<QueryCondition> getConditions() {
+        return conditions;
+    }
+
+    public void setConditions(List<QueryCondition> conditions) {
+        this.conditions = conditions;
+    }
+
+    public Integer getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(Integer totalCount) {
+        this.totalCount = totalCount;
+    }
+
+    public Integer getSucessCount() {
+        return sucessCount;
+    }
+
+    public void setSucessCount(Integer sucessCount) {
+        this.sucessCount = sucessCount;
+    }
+
+    public Boolean getFinished() {
+        return finished;
+    }
+
+    public void setFinished(Boolean finished) {
+        this.finished = finished;
+    }
+
+    public Boolean getUpdateSlice() {
+        return updateSlice;
+    }
+
+    public void setUpdateSlice(Boolean updateSlice) {
+        this.updateSlice = updateSlice;
+    }
+
+}

+ 53 - 0
src/main/java/cn/com/qmth/scancloud/entity/ScannerCardEntity.java

@@ -0,0 +1,53 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+@TableName("sc_scanner_card")
+public class ScannerCardEntity extends AuditingWithoutIdEntity {
+
+    private static final long serialVersionUID = -1646735662906364735L;
+
+    private String device;
+
+    private Long examId;
+
+    private Integer cardNumber;
+
+    public ScannerCardEntity() {
+        super();
+    }
+
+    public ScannerCardEntity(String device, Long examId, Integer cardNumber) {
+        super();
+        this.device = device;
+        this.examId = examId;
+        this.cardNumber = cardNumber;
+    }
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Integer getCardNumber() {
+        return cardNumber;
+    }
+
+    public void setCardNumber(Integer cardNumber) {
+        this.cardNumber = cardNumber;
+    }
+
+}

+ 36 - 0
src/main/java/cn/com/qmth/scancloud/entity/ScannerEntity.java

@@ -0,0 +1,36 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 扫描员
+@TableName("sc_scanner")
+public class ScannerEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -9143484424269627675L;
+
+    private String device;
+
+    private Long lastLoginTime;
+
+    public String getDevice() {
+        return device;
+    }
+
+    public void setDevice(String device) {
+        this.device = device;
+    }
+
+    public Long getLastLoginTime() {
+        return lastLoginTime;
+    }
+
+    public void setLastLoginTime(Long lastLoginTime) {
+        this.lastLoginTime = lastLoginTime;
+    }
+
+}

+ 189 - 0
src/main/java/cn/com/qmth/scancloud/entity/StudentEntity.java

@@ -0,0 +1,189 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+import cn.com.qmth.scancloud.enums.ScanStatus;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 考生
+@TableName("sc_student")
+public class StudentEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = -7208399777465643821L;
+
+    private Long id;
+
+    private Integer examId;
+
+    private String examNumber;
+
+    private String studentCode;
+
+    private String name;
+
+    private String subjectCode;
+
+    private String subjectName;
+
+    private String packageCode;
+
+    private String examSite;
+
+    private String examRoom;
+
+    private String siteNumber;
+
+    private String campusName;
+
+    private ScanStatus status;
+
+    private Boolean omrAbsent;
+
+    private Boolean assigned;
+
+    // 是否标记异常
+    private Boolean absentSuspect;
+
+    // 是否有缺页
+    private Boolean incomplete;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Integer examId) {
+        this.examId = examId;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+
+    public String getExamSite() {
+        return examSite;
+    }
+
+    public void setExamSite(String examSite) {
+        this.examSite = examSite;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getSiteNumber() {
+        return siteNumber;
+    }
+
+    public void setSiteNumber(String siteNumber) {
+        this.siteNumber = siteNumber;
+    }
+
+    public String getCampusName() {
+        return campusName;
+    }
+
+    public void setCampusName(String campusName) {
+        this.campusName = campusName;
+    }
+
+    public ScanStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(ScanStatus status) {
+        this.status = status;
+    }
+
+    public Boolean getOmrAbsent() {
+        return omrAbsent;
+    }
+
+    public void setOmrAbsent(Boolean omrAbsent) {
+        this.omrAbsent = omrAbsent;
+    }
+
+    public Boolean getAssigned() {
+        return assigned;
+    }
+
+    public void setAssigned(Boolean assigned) {
+        this.assigned = assigned;
+    }
+
+    public Boolean getAbsentSuspect() {
+        return absentSuspect;
+    }
+
+    public void setAbsentSuspect(Boolean absentSuspect) {
+        this.absentSuspect = absentSuspect;
+    }
+
+    public Boolean getIncomplete() {
+        return incomplete;
+    }
+
+    public void setIncomplete(Boolean incomplete) {
+        this.incomplete = incomplete;
+    }
+
+}

+ 46 - 0
src/main/java/cn/com/qmth/scancloud/entity/StudentPaperEntity.java

@@ -0,0 +1,46 @@
+package cn.com.qmth.scancloud.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+
+// 考生和试卷绑定关系
+@TableName("sc_student_paper")
+public class StudentPaperEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 305711335687760851L;
+
+    private Long studentId;
+
+    private Long paperNumber;
+
+    private Long paperId;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public Long getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(Long paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public Long getPaperId() {
+        return paperId;
+    }
+
+    public void setPaperId(Long paperId) {
+        this.paperId = paperId;
+    }
+
+}

+ 46 - 0
src/main/java/cn/com/qmth/scancloud/entity/SubjectEntity.java

@@ -0,0 +1,46 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 科目
+@TableName("sc_subject")
+public class SubjectEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 8795800729334229171L;
+
+    private Integer examId;
+
+    private String code;
+
+    private String name;
+
+    public Integer getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Integer examId) {
+        this.examId = examId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}

+ 76 - 0
src/main/java/cn/com/qmth/scancloud/entity/SystemConfigEntity.java

@@ -0,0 +1,76 @@
+package cn.com.qmth.scancloud.entity;
+
+import cn.com.qmth.scancloud.entity.base.AuditingWithoutIdEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 系统配置
+@TableName("ss_system_config")
+public class SystemConfigEntity extends AuditingWithoutIdEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 6940554165427530335L;
+
+    private Boolean scannerEnableLogin;
+
+    private String scannerPassword;
+
+    private String clientVersion;
+
+    private String clientUri;
+
+    private String clientMd5;
+
+    private Long clientUpdateTime;
+
+    public Boolean getScannerEnableLogin() {
+        return scannerEnableLogin;
+    }
+
+    public void setScannerEnableLogin(Boolean scannerEnableLogin) {
+        this.scannerEnableLogin = scannerEnableLogin;
+    }
+
+    public String getScannerPassword() {
+        return scannerPassword;
+    }
+
+    public void setScannerPassword(String scannerPassword) {
+        this.scannerPassword = scannerPassword;
+    }
+
+    public String getClientVersion() {
+        return clientVersion;
+    }
+
+    public void setClientVersion(String clientVersion) {
+        this.clientVersion = clientVersion;
+    }
+
+    public String getClientUri() {
+        return clientUri;
+    }
+
+    public void setClientUri(String clientUri) {
+        this.clientUri = clientUri;
+    }
+
+    public String getClientMd5() {
+        return clientMd5;
+    }
+
+    public void setClientMd5(String clientMd5) {
+        this.clientMd5 = clientMd5;
+    }
+
+    public Long getClientUpdateTime() {
+        return clientUpdateTime;
+    }
+
+    public void setClientUpdateTime(Long clientUpdateTime) {
+        this.clientUpdateTime = clientUpdateTime;
+    }
+
+}

+ 138 - 0
src/main/java/cn/com/qmth/scancloud/entity/UploadResultEntity.java

@@ -0,0 +1,138 @@
+package cn.com.qmth.scancloud.entity;
+
+import java.util.Date;
+
+import cn.com.qmth.scancloud.entity.base.AuditingEntity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+
+// 扫描上传结果
+@TableName("sc_upload_result")
+public class UploadResultEntity extends AuditingEntity {
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 72469332078321329L;
+
+    private Long examId;
+
+    private Long studentId;
+
+    private String examNumber;
+
+    private String batchCode;
+
+    private Boolean manual;
+
+    private Boolean manualAbsent;
+
+    private Boolean absent;
+
+    private Boolean breach;
+
+    private String paperType;
+
+    private String question;
+
+    private Boolean upload;
+
+    private Date uploadTime;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getBatchCode() {
+        return batchCode;
+    }
+
+    public void setBatchCode(String batchCode) {
+        this.batchCode = batchCode;
+    }
+
+    public Boolean getManual() {
+        return manual;
+    }
+
+    public void setManual(Boolean manual) {
+        this.manual = manual;
+    }
+
+    public Boolean getManualAbsent() {
+        return manualAbsent;
+    }
+
+    public void setManualAbsent(Boolean manualAbsent) {
+        this.manualAbsent = manualAbsent;
+    }
+
+    public Boolean getAbsent() {
+        return absent;
+    }
+
+    public void setAbsent(Boolean absent) {
+        this.absent = absent;
+    }
+
+    public Boolean getBreach() {
+        return breach;
+    }
+
+    public void setBreach(Boolean breach) {
+        this.breach = breach;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getQuestion() {
+        return question;
+    }
+
+    public void setQuestion(String question) {
+        this.question = question;
+    }
+
+    public Boolean getUpload() {
+        return upload;
+    }
+
+    public void setUpload(Boolean upload) {
+        this.upload = upload;
+    }
+
+    public Date getUploadTime() {
+        return uploadTime;
+    }
+
+    public void setUploadTime(Date uploadTime) {
+        this.uploadTime = uploadTime;
+    }
+
+}

+ 84 - 0
src/main/java/cn/com/qmth/scancloud/entity/base/AuditingEntity.java

@@ -0,0 +1,84 @@
+package cn.com.qmth.scancloud.entity.base;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+/**
+ * 实体类基类
+ */
+public abstract class AuditingEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    protected Long id;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    protected Long createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    protected Long updateTime;
+
+    /**
+     * 创建人
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long creatorId;
+
+    /**
+     * 更新人
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updaterId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Long getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(Long creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public Long getUpdaterId() {
+        return updaterId;
+    }
+
+    public void setUpdaterId(Long updaterId) {
+        this.updaterId = updaterId;
+    }
+
+}

+ 72 - 0
src/main/java/cn/com/qmth/scancloud/entity/base/AuditingWithoutIdEntity.java

@@ -0,0 +1,72 @@
+package cn.com.qmth.scancloud.entity.base;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+
+/**
+ * 实体类基类
+ */
+public abstract class AuditingWithoutIdEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    protected Long createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    protected Long updateTime;
+
+    /**
+     * 创建人
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long creatorId;
+
+    /**
+     * 更新人
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updaterId;
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Long getCreatorId() {
+        return creatorId;
+    }
+
+    public void setCreatorId(Long creatorId) {
+        this.creatorId = creatorId;
+    }
+
+    public Long getUpdaterId() {
+        return updaterId;
+    }
+
+    public void setUpdaterId(Long updaterId) {
+        this.updaterId = updaterId;
+    }
+
+}

+ 57 - 0
src/main/java/cn/com/qmth/scancloud/entity/base/IdEntity.java

@@ -0,0 +1,57 @@
+package cn.com.qmth.scancloud.entity.base;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 实体类基类
+ */
+public abstract class IdEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    protected Long id;
+
+    /**
+     * 创建时间
+     */
+    @TableField(fill = FieldFill.INSERT)
+    protected Long createTime;
+
+    /**
+     * 修改时间
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    protected Long updateTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Long createTime) {
+        this.createTime = createTime;
+    }
+
+    public Long getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Long updateTime) {
+        this.updateTime = updateTime;
+    }
+
+}

+ 28 - 0
src/main/java/cn/com/qmth/scancloud/enums/BatchStatus.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum BatchStatus {
+
+    INIT("初始"),
+
+    FINISH("完成");
+
+    private String name;
+
+    BatchStatus(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static BatchStatus getByName(String name) {
+        for (BatchStatus r : BatchStatus.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 28 - 0
src/main/java/cn/com/qmth/scancloud/enums/CardSource.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum CardSource {
+
+    CLIENT("本地工具"),
+
+    WEB("在线工具");
+
+    private String name;
+
+    CardSource(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static CardSource getByName(String name) {
+        for (CardSource r : CardSource.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 36 - 0
src/main/java/cn/com/qmth/scancloud/enums/ConditionType.java

@@ -0,0 +1,36 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum ConditionType {
+
+    FILL_SUSPECT("填涂识别嫌疑"),
+    ABSENT_FILL("缺考已填涂"),
+    BREACH_FILL("违纪已填涂"), 
+    QUESTION_SINGLE_EXCEED("单选题多填涂"), 
+    QUESTION_SINGLE_BLANK("单选题空选题数大于"), 
+    QUESTION_MULTI_BLANK("多选题空选题数大于"), 
+    SELECTIVE_EXCEED("选做题填涂超过"), 
+    SELECTIVE_BLANK("选做题空选题数大于"), 
+    PAPER_TYPE_EXCEED( "卷型多填涂"), 
+    PAPER_TYPE_BLANK("卷型空选");
+
+    private String name;
+
+
+    ConditionType(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static ConditionType getByName(String name) {
+        for (ConditionType r : ConditionType.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 30 - 0
src/main/java/cn/com/qmth/scancloud/enums/ExamMode.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum ExamMode {
+
+    COMMON("普通"),
+
+    K12("K12"),
+
+    POSTGRADUATE("研究生");
+
+    private String name;
+
+    ExamMode(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static ExamMode getByName(String name) {
+        for (ExamMode r : ExamMode.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 30 - 0
src/main/java/cn/com/qmth/scancloud/enums/GroupType.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum GroupType {
+
+    SUBJECT("科目"),
+    PACKAGE("签到表"), 
+    CAMPUS("学习中心"), 
+    EXAM_SITE("考点"), 
+    EXAM_ROOM("考场");
+
+    private String name;
+
+    GroupType(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static GroupType getByName(String name) {
+        for (GroupType r : GroupType.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 34 - 0
src/main/java/cn/com/qmth/scancloud/enums/OmrField.java

@@ -0,0 +1,34 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum OmrField {
+
+    ABSENT("缺考"),
+
+    BREACH("违纪"),
+
+    PAPER_TYPE("试卷类型"),
+
+    SELECTIVE("选做题"),
+
+    QUESTION("题目");
+
+    private String name;
+
+    OmrField(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static OmrField getByName(String name) {
+        for (OmrField r : OmrField.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 28 - 0
src/main/java/cn/com/qmth/scancloud/enums/OmrStatus.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum OmrStatus {
+
+    SCANNED("已扫描"),
+
+    MANUAL_ABSEN("人工指定缺考");
+
+    private String name;
+
+    OmrStatus(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static OmrStatus getByName(String name) {
+        for (OmrStatus r : OmrStatus.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 25 - 0
src/main/java/cn/com/qmth/scancloud/enums/QueryField.java

@@ -0,0 +1,25 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum QueryField {
+
+    EXAM_NUMBER("准考证号"), SUBJECT("科目"), EXAM_SITE("考点"), CAMPUS("学习中心"), STUDENT_CODE("学号");
+
+    private String name;
+
+    QueryField(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static QueryField getByName(String name) {
+        for (QueryField r : QueryField.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+}

+ 32 - 0
src/main/java/cn/com/qmth/scancloud/enums/Role.java

@@ -0,0 +1,32 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum Role {
+
+    SCHOOL_ADMIN("学校管理员"),
+
+    SCAN_ADMIN("扫描管理员"),
+
+    SCANNER("扫描员"),
+
+    AUDITOR("审核员");
+
+    private String name;
+
+    Role(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static Role getByName(String name) {
+        for (Role r : Role.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 28 - 0
src/main/java/cn/com/qmth/scancloud/enums/ScanStatus.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum ScanStatus {
+
+    SCANNED("已扫描"),
+
+    UNEXIST("未扫描"), MANUAL_ABSENT("人工指定缺考");
+
+    private String name;
+
+    ScanStatus(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static ScanStatus getByName(String name) {
+        for (ScanStatus r : ScanStatus.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 28 - 0
src/main/java/cn/com/qmth/scancloud/enums/Stage.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum Stage {
+
+    FIRST("第一次"),
+
+    SECOND("第二次");
+
+    private String name;
+
+    Stage(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static Stage getByName(String name) {
+        for (Stage r : Stage.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 26 - 0
src/main/java/cn/com/qmth/scancloud/enums/TaskStatus.java

@@ -0,0 +1,26 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum TaskStatus {
+
+    WAITING("未处理"), PROCESSED("已处理"), WAIT_ARBITRATE("等待仲裁"), ARBITRATED("已仲裁");
+
+    private String name;
+
+    TaskStatus(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static TaskStatus getByName(String name) {
+        for (TaskStatus r : TaskStatus.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 30 - 0
src/main/java/cn/com/qmth/scancloud/enums/VerifyStatus.java

@@ -0,0 +1,30 @@
+package cn.com.qmth.scancloud.enums;
+
+public enum VerifyStatus {
+
+    WAIT_VERIFY("等待"),
+
+    REJECT("拒绝"),
+
+    CONFIRM("通过");
+
+    private String name;
+
+    VerifyStatus(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public static VerifyStatus getByName(String name) {
+        for (VerifyStatus r : VerifyStatus.values()) {
+            if (r.getName().equals(name)) {
+                return r;
+            }
+        }
+        return null;
+    }
+
+}

+ 37 - 0
src/main/java/cn/com/qmth/scancloud/model/AnswerItem.java

@@ -0,0 +1,37 @@
+package cn.com.qmth.scancloud.model;
+
+import cn.com.qmth.scancloud.enums.OmrField;
+
+public class AnswerItem {
+
+    private Integer index;
+
+    private OmrField field;
+
+    private String content;
+
+    public Integer getIndex() {
+        return index;
+    }
+
+    public void setIndex(Integer index) {
+        this.index = index;
+    }
+
+    public OmrField getField() {
+        return field;
+    }
+
+    public void setField(OmrField field) {
+        this.field = field;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+}

+ 20 - 0
src/main/java/cn/com/qmth/scancloud/model/LoginSession.java

@@ -0,0 +1,20 @@
+package cn.com.qmth.scancloud.model;
+
+import cn.com.qmth.scancloud.enums.Role;
+
+// 会话
+public class LoginSession {
+
+    private String uid;
+
+    private String account;
+
+    private Role role;
+
+    private String accessToken;
+
+    private Long activeTime;
+
+    private Long loginTime;
+
+}

+ 27 - 0
src/main/java/cn/com/qmth/scancloud/model/OcrCondition.java

@@ -0,0 +1,27 @@
+package cn.com.qmth.scancloud.model;
+
+import cn.com.qmth.scancloud.enums.ConditionType;
+
+public class OcrCondition {
+
+    private ConditionType type;
+
+    private Integer parameter;
+
+    public ConditionType getType() {
+        return type;
+    }
+
+    public void setType(ConditionType type) {
+        this.type = type;
+    }
+
+    public Integer getParameter() {
+        return parameter;
+    }
+
+    public void setParameter(Integer parameter) {
+        this.parameter = parameter;
+    }
+
+}

+ 27 - 0
src/main/java/cn/com/qmth/scancloud/model/OmrTaskPage.java

@@ -0,0 +1,27 @@
+package cn.com.qmth.scancloud.model;
+
+import java.util.List;
+
+public class OmrTaskPage {
+
+    private Integer index;
+
+    private List<AnswerItem> items;
+
+    public Integer getIndex() {
+        return index;
+    }
+
+    public void setIndex(Integer index) {
+        this.index = index;
+    }
+
+    public List<AnswerItem> getItems() {
+        return items;
+    }
+
+    public void setItems(List<AnswerItem> items) {
+        this.items = items;
+    }
+
+}

+ 12 - 0
src/main/java/cn/com/qmth/scancloud/model/QueryCondition.java

@@ -0,0 +1,12 @@
+package cn.com.qmth.scancloud.model;
+
+import java.util.Set;
+
+import cn.com.qmth.scancloud.enums.QueryField;
+
+public class QueryCondition {
+
+    private QueryField field;
+
+    private Set<String> value;
+}

+ 34 - 0
src/main/resources/application.properties

@@ -0,0 +1,34 @@
+#
+# ********** server config **********
+#
+server.port=8099
+server.servlet.session.timeout=PT2H
+server.servlet.context-path=/
+spring.servlet.multipart.max-request-size=100MB
+spring.servlet.multipart.max-file-size=100MB
+spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
+spring.jackson.time-zone=GMT+8
+#
+# ********** mybatis config **********
+#
+mybatis-plus.mapper-locations=classpath:mapper/*Dao.xml
+mybatis-plus.configuration.map-underscore-to-camel-case=true
+#
+# ********** db config **********
+#
+db.host=localhost
+db.port=3306
+db.database=scancloud
+com.qmth.datasource.username=root
+com.qmth.datasource.password=root
+com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.database}?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2b8&rewriteBatchedStatements=true
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.type=com.zaxxer.hikari.HikariDataSource
+spring.datasource.hikari.minimum-idle=5
+spring.datasource.hikari.maximum-pool-size=10
+#
+# ********** sys config **********
+#
+com.qmth.solar.server=https://solar.qmth.com.cn
+com.qmth.solar.accessKey=
+com.qmth.solar.accessSecret=