wangwei 7 lat temu
rodzic
commit
7b5c6020ed
57 zmienionych plików z 7272 dodań i 0 usunięć
  1. 108 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Course.java
  2. 74 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/CourseSpeciatly.java
  3. 92 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/CourseSync.java
  4. 60 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/ExamCourseDto.java
  5. 174 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Org.java
  6. 174 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/OrgSync.java
  7. 84 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Specialty.java
  8. 64 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/SpecialtySync.java
  9. 139 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Student.java
  10. 126 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/StudentFaceInfo.java
  11. 71 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/StudentSync.java
  12. 171 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/User.java
  13. 57 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/CourseLevel.java
  14. 8 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/Gender.java
  15. 8 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/UserScope.java
  16. 59 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/UserType.java
  17. 430 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/Exam.java
  18. 585 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamRecord.java
  19. 105 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamScore.java
  20. 409 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamStudent.java
  21. 517 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamSync.java
  22. 29 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/ExamRecordStatus.java
  23. 41 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/ExamType.java
  24. 19 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/GenerateStudentPaperStatus.java
  25. 46 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/IsSuccess.java
  26. 41 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/MarkingType.java
  27. 24 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/PracticeType.java
  28. 81 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/marking/ExamCourseDTO.java
  29. 125 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/examwork/CommonExamStudent.java
  30. 14 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/IdEntity.java
  31. 101 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkCourseDTO.java
  32. 186 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkItem.java
  33. 5 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkMode.java
  34. 83 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkRange.java
  35. 272 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkResultDTO.java
  36. 236 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkTaskDTO.java
  37. 176 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkWorkDTO.java
  38. 108 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkerDTO.java
  39. 50 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/ResultItem.java
  40. 138 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/StudentPaper.java
  41. 63 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/ExamPhotoVerifyData.java
  42. 96 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/ExamRecordDto.java
  43. 278 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/ExamStudentDomain.java
  44. 169 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/Paper.java
  45. 129 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/PaperQuestion.java
  46. 103 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/PaperStructureDTO.java
  47. 44 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/PushScoreActionEnum.java
  48. 109 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/SimpleStudentPaperDTO.java
  49. 179 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/StudentPaperOE.java
  50. 143 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/print/CoursePaperDto.java
  51. 76 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/PaperDetailDto.java
  52. 132 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/PaperDetailUnitDto.java
  53. 127 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/PaperDto.java
  54. 33 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/QuesOptionDto.java
  55. 122 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/QuestionDto.java
  56. 82 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/SubQuestionDto.java
  57. 97 0
      examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/enums/QuesStructType.java

+ 108 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Course.java

@@ -0,0 +1,108 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+
+import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
+
+/**
+ * 
+ * @Description: 课程
+ * @author ting.yin
+ * @date 2017年1月5日
+ */
+public class Course implements Serializable{
+
+	private static final long serialVersionUID = -6261302618070108336L;
+	
+    private Long id;
+
+	private String code;
+
+    private String name;
+
+	private Long orgId;
+	
+	private CourseLevel level;
+
+	private String createTime;
+
+	private String updateTime;
+
+	private Boolean enable;
+
+	public static long getSerialVersionUID() {
+		return serialVersionUID;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	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;
+	}
+
+    public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public CourseLevel getLevel() {
+		return level;
+	}
+
+	public void setLevel(CourseLevel level) {
+		this.level = level;
+	}
+
+	public Course() {
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+}

+ 74 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/CourseSpeciatly.java

@@ -0,0 +1,74 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+public class CourseSpeciatly implements Serializable{
+
+	private static final long serialVersionUID = -250814769612993025L;
+	
+	private Long id;
+	
+	private Long courseId;
+	
+	private Long specialtyId;
+	
+	private Long creator;
+	
+	private Date createTime;
+
+	private Date updateTime;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getCourseId() {
+		return courseId;
+	}
+
+	public void setCourseId(Long courseId) {
+		this.courseId = courseId;
+	}
+
+	public Long getSpecialtyId() {
+		return specialtyId;
+	}
+
+	public void setSpecialtyId(Long specialtyId) {
+		this.specialtyId = specialtyId;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public Long getCreator() {
+		return creator;
+	}
+
+	public void setCreator(Long creator) {
+		this.creator = creator;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+}

+ 92 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/CourseSync.java

@@ -0,0 +1,92 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+
+/**
+ * Created by songyue on 17/8/3.
+ */
+public class CourseSync implements Serializable {
+
+	private static final long serialVersionUID = 8986880538637117108L;
+
+	private Long id;
+
+	private String code;
+
+	private String name;
+
+	private Long orgId;
+
+	private String level;
+
+	private String createTime;
+
+	private String updateTime;
+
+	private Boolean enable;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	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;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public String getLevel() {
+		return level;
+	}
+
+	public void setLevel(String level) {
+		this.level = level;
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+}

+ 60 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/ExamCourseDto.java

@@ -0,0 +1,60 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
+
+/**
+ * @author  	chenken
+ * @date    	2017年7月20日 上午9:49:03
+ * @company 	QMTH
+ * @description ExamCourseDto.java
+ */
+public class ExamCourseDto {
+	private Long examId;
+    private String examName;
+    private ExamType examType;
+    private String courseName;
+    private String courseCode;
+	private Long orgId;
+    
+    public ExamCourseDto(){}
+    
+	public Long getExamId() {
+		return examId;
+	}
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+	public String getExamName() {
+		return examName;
+	}
+	public void setExamName(String examName) {
+		this.examName = examName;
+	}
+	public ExamType getExamType() {
+		return examType;
+	}
+	public void setExamType(ExamType examType) {
+		this.examType = examType;
+	}
+	public String getCourseName() {
+		return courseName;
+	}
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+	public String getCourseCode() {
+		return courseCode;
+	}
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+}
+

+ 174 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Org.java

@@ -0,0 +1,174 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+
+public class Org implements Serializable{
+
+    private static final long serialVersionUID = -592353272256492483L;
+
+    private Long id;
+    /**
+     * 顶级机构id,无上级时为0;eg.学校即是顶级
+     */
+    private Long rootId;
+    /**
+     * 父级机构id,无上级时为0;eg.学习中心的父级为学校
+     */
+    private Long parentId;
+
+    private Integer level;
+    
+    private String name;
+    
+    /**
+     * 学习中心代码
+     */
+    private String code;
+
+    private String logo;
+
+    private String address;
+
+    /**
+     * 可使用的应用模块
+     */
+    private String apps;
+
+    private Boolean enable;
+    
+    /**
+     * 联系电话
+     */
+    private String telphone;
+    /**
+     * 联系人
+     */
+    private String contacts;
+
+    private String createTime;
+
+    private String updateTime;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getRootId() {
+        return rootId;
+    }
+
+    public void setRootId(Long rootId) {
+        this.rootId = rootId;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLogo() {
+        return logo;
+    }
+
+    public void setLogo(String logo) {
+        this.logo = logo;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getApps() {
+        return apps;
+    }
+
+    public void setApps(String apps) {
+        this.apps = apps;
+    }
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+    public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getTelphone() {
+		return telphone;
+	}
+
+	public void setTelphone(String telphone) {
+		this.telphone = telphone;
+	}
+
+	public String getContacts() {
+		return contacts;
+	}
+
+	public void setContacts(String contacts) {
+		this.contacts = contacts;
+	}
+
+	public Org() {
+    }
+}

+ 174 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/OrgSync.java

@@ -0,0 +1,174 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+
+public class OrgSync implements Serializable{
+
+    private static final long serialVersionUID = -592353272256492483L;
+
+    private Long id;
+    /**
+     * 顶级机构id,无上级时为0;eg.学校即是顶级
+     */
+    private Long rootId;
+    /**
+     * 父级机构id,无上级时为0;eg.学习中心的父级为学校
+     */
+    private Long parentId;
+
+    private Integer level;
+
+    private String name;
+
+    /**
+     * 学习中心代码
+     */
+    private String code;
+
+    private String logo;
+
+    private String address;
+
+    /**
+     * 可使用的应用模块
+     */
+    private String apps;
+
+    private Boolean enable;
+
+    /**
+     * 联系电话
+     */
+    private String telphone;
+    /**
+     * 联系人
+     */
+    private String contacts;
+
+    private String createTime;
+
+    private String updateTime;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getRootId() {
+        return rootId;
+    }
+
+    public void setRootId(Long rootId) {
+        this.rootId = rootId;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public Integer getLevel() {
+        return level;
+    }
+
+    public void setLevel(Integer level) {
+        this.level = level;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLogo() {
+        return logo;
+    }
+
+    public void setLogo(String logo) {
+        this.logo = logo;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getApps() {
+        return apps;
+    }
+
+    public void setApps(String apps) {
+        this.apps = apps;
+    }
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+    public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getTelphone() {
+		return telphone;
+	}
+
+	public void setTelphone(String telphone) {
+		this.telphone = telphone;
+	}
+
+	public String getContacts() {
+		return contacts;
+	}
+
+	public void setContacts(String contacts) {
+		this.contacts = contacts;
+	}
+
+	public OrgSync() {
+    }
+}

+ 84 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Specialty.java

@@ -0,0 +1,84 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+public class Specialty implements Serializable{
+
+	private static final long serialVersionUID = 239263456816448160L;
+	
+	private Long id;
+	
+	private String code;
+
+	private String name;
+	
+	private Long orgId;
+	
+	private Date createTime;
+	
+	private Date updateTime;
+	
+	private Boolean enable;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	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;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Date getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+}

+ 64 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/SpecialtySync.java

@@ -0,0 +1,64 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+public class SpecialtySync implements Serializable{
+
+	private static final long serialVersionUID = 239263456816448160L;
+	
+	private Long id;
+	
+	private String code;
+
+	private String name;
+	
+	private Long orgId;
+
+	private Boolean enable;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	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;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+}

+ 139 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/Student.java

@@ -0,0 +1,139 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+
+public class Student implements Serializable {
+
+	private static final long serialVersionUID = 757531976286006550L;
+
+	private Long id;
+	
+	private User user;
+
+	private String name;
+
+	private String studentCode;
+
+	private String identityNumber;
+	
+	private String phoneNumber;
+
+	private String photoPath;
+
+	private String remark;
+
+	private String createTime;
+
+	private String updateTime;
+
+	private Long orgId;
+
+	private Long rootOrgId;
+
+	public static long getSerialVersionUID() {
+		return serialVersionUID;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public User getUser() {
+		return user;
+	}
+
+	public void setUser(User user) {
+		this.user = user;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+	public String getPhotoPath() {
+		return photoPath;
+	}
+
+	public void setPhotoPath(String photoPath) {
+		this.photoPath = photoPath;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public String getPhoneNumber() {
+		return phoneNumber;
+	}
+
+	public void setPhoneNumber(String phoneNumber) {
+		this.phoneNumber = phoneNumber;
+	}
+
+	public Student() {
+	}
+}

+ 126 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/StudentFaceInfo.java

@@ -0,0 +1,126 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class StudentFaceInfo implements Serializable {
+
+	private static final long serialVersionUID = -4192537584889662390L;
+
+	private Long id;
+	
+	private Student student;
+
+	private String faceToken;
+
+	private String faceSetToken;
+	
+	private String photoMD5;
+	/**
+	 * 创建时间
+	 */
+	private String createTime;
+	/**
+	 * 创建人
+	 */
+	private String createUser;
+	/**
+	 * 更新时间
+	 */
+	private String updateTime;
+	/**
+	 * 更新人
+	 */
+	private String updateUser;
+	/**
+	 * 创建方式
+	 * 接口-单个
+	 * 接口-ZIP批量
+	 * 照片上传工具
+	 */
+	private String createType;
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Student getStudent() {
+		return student;
+	}
+
+	public void setStudent(Student student) {
+		this.student = student;
+	}
+
+	public String getFaceToken() {
+		return faceToken;
+	}
+
+	public void setFaceToken(String faceToken) {
+		this.faceToken = faceToken;
+	}
+
+	public String getFaceSetToken() {
+		return faceSetToken;
+	}
+
+	public void setFaceSetToken(String faceSetToken) {
+		this.faceSetToken = faceSetToken;
+	}
+
+	public String getPhotoMD5() {
+		return photoMD5;
+	}
+
+	public void setPhotoMD5(String photoMD5) {
+		this.photoMD5 = photoMD5;
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public StudentFaceInfo() {}
+
+	public String getCreateUser() {
+		return createUser;
+	}
+
+	public void setCreateUser(String createUser) {
+		this.createUser = createUser;
+	}
+
+	public String getUpdateUser() {
+		return updateUser;
+	}
+
+	public void setUpdateUser(String updateUser) {
+		this.updateUser = updateUser;
+	}
+
+	public String getCreateType() {
+		return createType;
+	}
+
+	public void setCreateType(String createType) {
+		this.createType = createType;
+	}
+	
+	
+}

+ 71 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/StudentSync.java

@@ -0,0 +1,71 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+
+public class StudentSync implements Serializable {
+
+	private static final long serialVersionUID = -8870159040911053529L;
+
+	private Long id;
+
+	private String name;
+
+	private String studentCode;
+
+	private String identityNumber;
+
+	private Long orgId;
+
+	private Long rootOrgId;
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public StudentSync() {
+	}
+}

+ 171 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/User.java

@@ -0,0 +1,171 @@
+package cn.com.qmth.examcloud.common.dto.core;
+
+import java.io.Serializable;
+
+import cn.com.qmth.examcloud.common.dto.core.enums.Gender;
+import cn.com.qmth.examcloud.common.dto.core.enums.UserScope;
+import cn.com.qmth.examcloud.common.dto.core.enums.UserType;
+
+public class User implements Serializable{
+
+    private static final long serialVersionUID = 9190180279768027647L;
+
+    private Long id;
+
+    private Long rootOrgId;
+
+    private Long orgId;
+
+    private String name;
+
+    private String loginName;
+
+    private String password;
+
+    private String mobile;
+
+    private Gender gender;
+
+    private UserScope scope;
+
+    private String avatar;
+
+    private UserType type;
+
+    private boolean enable;
+
+    private String createTime;
+
+    private String updateTime;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getRootOrgId() {
+        return rootOrgId;
+    }
+
+    public void setRootOrgId(Long rootOrgId) {
+        this.rootOrgId = rootOrgId;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getMobile() {
+        return mobile;
+    }
+
+    public void setMobile(String mobile) {
+        this.mobile = mobile;
+    }
+
+    public Gender getGender() {
+        return gender;
+    }
+
+    public void setGender(Gender gender) {
+        this.gender = gender;
+    }
+
+    public UserScope getScope() {
+        return scope;
+    }
+
+    public void setScope(UserScope scope) {
+        this.scope = scope;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public UserType getType() {
+        return type;
+    }
+
+    public void setType(UserType type) {
+        this.type = type;
+    }
+
+    public boolean isEnable() {
+        return enable;
+    }
+
+    public void setEnable(boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+
+	public User() {
+    }
+    
+    public User(String name,UserScope scope,Long rootOrgId,Long orgId,UserType type) {
+    	this.name = name;
+    	this.scope = scope;
+    	this.rootOrgId = rootOrgId;
+    	this.orgId = orgId;
+    	this.type = type;
+    }
+}

+ 57 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/CourseLevel.java

@@ -0,0 +1,57 @@
+package cn.com.qmth.examcloud.common.dto.core.enums;
+
+public enum CourseLevel {
+
+	ZSB("专升本", "Z"),
+
+	GQZ("高起专", "Q"),
+
+	GQB("高起本", "S"),
+
+	ALL("不限", "");
+
+	/**
+	 * 名称
+	 */
+	private String name;
+
+	/**
+	 * 简写
+	 */
+	private String abbreviate;
+
+	private CourseLevel(String name, String abbreviate) {
+		this.name = name;
+		this.abbreviate = abbreviate;
+	}
+
+	public String getName() {
+		return this.name;
+	}
+
+	public String getAbbreviate() {
+		return abbreviate;
+	}
+
+	/**
+	 * 混合查询
+	 *
+	 * @author WANGWEI
+	 * @param name
+	 * @return
+	 */
+	public static CourseLevel getCourseLevel(String name) {
+		if (null == name) {
+			return CourseLevel.ALL;
+		}
+		for (CourseLevel cur : CourseLevel.values()) {
+			if (name.equals(cur.getName())) {
+				return cur;
+			}
+			if (name.equals(cur.name())) {
+				return cur;
+			}
+		}
+		return CourseLevel.ALL;
+	}
+}

+ 8 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/Gender.java

@@ -0,0 +1,8 @@
+package cn.com.qmth.examcloud.common.dto.core.enums;
+
+/**
+ * Created by songyue on 17/2/22.
+ */
+public enum Gender {
+    MAN,WOMAN
+}

+ 8 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/UserScope.java

@@ -0,0 +1,8 @@
+package cn.com.qmth.examcloud.common.dto.core.enums;
+
+/**
+ * Created by songyue on 17/2/22.
+ */
+public enum UserScope {
+    ALL,ORG
+}

+ 59 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/core/enums/UserType.java

@@ -0,0 +1,59 @@
+package cn.com.qmth.examcloud.common.dto.core.enums;
+
+/**
+ * 用户类型
+ *
+ * @author WANGWEI
+ * @date 2018年5月25日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public enum UserType {
+
+	/**
+	 * 学生
+	 */
+	STUDENT("S", "学生"),
+
+	/**
+	 * 常规用户
+	 */
+	COMMON("C", "常规用户");
+
+	// ===========================================================================
+
+	/**
+	 * 码
+	 */
+	private String code;
+
+	/**
+	 * 描述
+	 */
+	private String desc;
+
+	/**
+	 * 构造函数
+	 *
+	 * @param code
+	 * @param desc
+	 */
+	private UserType(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	/**
+	 * @return the code
+	 */
+	public String getCode() {
+		return code;
+	}
+
+	/**
+	 * @return the desc
+	 */
+	public String getDesc() {
+		return desc;
+	}
+
+}

+ 430 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/Exam.java

@@ -0,0 +1,430 @@
+package cn.com.qmth.examcloud.common.dto.em;
+
+import java.io.Serializable;
+
+import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
+import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
+import cn.com.qmth.examcloud.common.dto.em.enums.PracticeType;
+
+public class Exam implements Serializable {
+
+	private static final long serialVersionUID = 4009839764353162256L;
+
+	private long id;
+
+	/**
+	 * 顶级机构Id
+	 */
+	private Long rootOrgId;
+
+	private String beginTime;
+
+	private String endTime;
+
+	private String name;
+
+	private ExamType examType;
+
+	private Boolean isEntranceExam;
+
+	/**
+	 * 考试时长
+	 */
+	private Integer duration;
+
+	/**
+	 * 冻结时间
+	 */
+	private Integer freezeTime;
+
+	private String status;
+
+	private String remark;
+
+	private String createTime;
+
+	/**
+	 * 考试次数
+	 */
+	private Long examTimes;
+
+	/**
+	 * 断点续考时间(秒)
+	 */
+	private Long examReconnectTime;
+
+	/**
+	 * 考前说明
+	 */
+	private String beforeExamRemark;
+
+	/**
+	 * 考后说明
+	 */
+	private String afterExamRemark;
+
+	/**
+	 * 是否显示客观题分数
+	 */
+	private String isObjScoreView;
+
+	/**
+	 * 练习模式
+	 */
+	private PracticeType practiceType;
+
+	/**
+	 * 单选题补充说明
+	 */
+	private String singleAnswerRemark;
+
+	/**
+	 * 多选题补充说明
+	 */
+	private String mutipleAnswerRemark;
+
+	/**
+	 * 判断题补充说明
+	 */
+	private String boolAnswerRemark;
+
+	/**
+	 * 填空题补充说明
+	 */
+	private String fillBlankRemark;
+
+	/**
+	 * 问答题补充说明
+	 */
+	private String textAnswerRemark;
+
+	/**
+	 * 套题补充说明
+	 */
+	private String nestedAnswerRemark;
+
+	/**
+	 * 是否启用人脸识别
+	 */
+	private String isFaceEnable;
+
+	/**
+	 * 进入考试是否验证人脸识别(强制、非强制)
+	 */
+	private String isFaceCheck;
+
+	/**
+	 * 抓拍间隔
+	 */
+	private Double snapshotInterval;
+
+	/**
+	 * 预警阈值
+	 */
+	private Double warnThreshold;
+
+	/**
+	 * 阅卷方式
+	 */
+	private MarkingType markingType;
+
+	private Boolean enable;
+
+	/**
+	 * 是否开启人脸活体检测
+	 */
+	private Boolean isFaceVerify;
+
+	/**
+	 * 活体检测开始分钟数
+	 */
+	private Integer faceVerifyStartMinute;
+
+	/**
+	 * 活体检测结束分钟数
+	 */
+	private Integer faceVerifyEndMinute;
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public static long getSerialVersionUID() {
+		return serialVersionUID;
+	}
+
+	public ExamType getExamType() {
+		return examType;
+	}
+
+	public void setExamType(ExamType examType) {
+		this.examType = examType;
+	}
+
+	public Integer getDuration() {
+		return duration;
+	}
+
+	public void setDuration(Integer duration) {
+		this.duration = duration;
+	}
+
+	public Integer getFreezeTime() {
+		return freezeTime;
+	}
+
+	public void setFreezeTime(Integer freezeTime) {
+		this.freezeTime = freezeTime;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getBeginTime() {
+		return beginTime;
+	}
+
+	public void setBeginTime(String beginTime) {
+		this.beginTime = beginTime;
+	}
+
+	public String getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(String endTime) {
+		this.endTime = endTime;
+	}
+
+	public String getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(String createTime) {
+		this.createTime = createTime;
+	}
+
+	public static long getSerialversionuid() {
+		return serialVersionUID;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getExamTimes() {
+		return examTimes;
+	}
+
+	public void setExamTimes(Long examTimes) {
+		this.examTimes = examTimes;
+	}
+
+	public Long getExamReconnectTime() {
+		return examReconnectTime;
+	}
+
+	public void setExamReconnectTime(Long examReconnectTime) {
+		this.examReconnectTime = examReconnectTime;
+	}
+
+	public String getBeforeExamRemark() {
+		return beforeExamRemark;
+	}
+
+	public void setBeforeExamRemark(String beforeExamRemark) {
+		this.beforeExamRemark = beforeExamRemark;
+	}
+
+	public String getAfterExamRemark() {
+		return afterExamRemark;
+	}
+
+	public void setAfterExamRemark(String afterExamRemark) {
+		this.afterExamRemark = afterExamRemark;
+	}
+
+	public PracticeType getPracticeType() {
+		return practiceType;
+	}
+
+	public void setPracticeType(PracticeType practiceType) {
+		this.practiceType = practiceType;
+	}
+
+	public String getSingleAnswerRemark() {
+		return singleAnswerRemark;
+	}
+
+	public void setSingleAnswerRemark(String singleAnswerRemark) {
+		this.singleAnswerRemark = singleAnswerRemark;
+	}
+
+	public String getMutipleAnswerRemark() {
+		return mutipleAnswerRemark;
+	}
+
+	public void setMutipleAnswerRemark(String mutipleAnswerRemark) {
+		this.mutipleAnswerRemark = mutipleAnswerRemark;
+	}
+
+	public String getBoolAnswerRemark() {
+		return boolAnswerRemark;
+	}
+
+	public void setBoolAnswerRemark(String boolAnswerRemark) {
+		this.boolAnswerRemark = boolAnswerRemark;
+	}
+
+	public String getFillBlankRemark() {
+		return fillBlankRemark;
+	}
+
+	public void setFillBlankRemark(String fillBlankRemark) {
+		this.fillBlankRemark = fillBlankRemark;
+	}
+
+	public String getTextAnswerRemark() {
+		return textAnswerRemark;
+	}
+
+	public void setTextAnswerRemark(String textAnswerRemark) {
+		this.textAnswerRemark = textAnswerRemark;
+	}
+
+	public String getNestedAnswerRemark() {
+		return nestedAnswerRemark;
+	}
+
+	public void setNestedAnswerRemark(String nestedAnswerRemark) {
+		this.nestedAnswerRemark = nestedAnswerRemark;
+	}
+
+	public String getIsFaceEnable() {
+		return isFaceEnable;
+	}
+
+	public void setIsFaceEnable(String isFaceEnable) {
+		this.isFaceEnable = isFaceEnable;
+	}
+
+	public String getIsFaceCheck() {
+		return isFaceCheck;
+	}
+
+	public void setIsFaceCheck(String isFaceCheck) {
+		this.isFaceCheck = isFaceCheck;
+	}
+
+	public Double getSnapshotInterval() {
+		return snapshotInterval;
+	}
+
+	public void setSnapshotInterval(Double snapshotInterval) {
+		this.snapshotInterval = snapshotInterval;
+	}
+
+	public Double getWarnThreshold() {
+		return warnThreshold;
+	}
+
+	public void setWarnThreshold(Double warnThreshold) {
+		this.warnThreshold = warnThreshold;
+	}
+
+	public MarkingType getMarkingType() {
+		return markingType;
+	}
+
+	public void setMarkingType(MarkingType markingType) {
+		this.markingType = markingType;
+	}
+
+	public String getIsObjScoreView() {
+		return isObjScoreView;
+	}
+
+	public void setIsObjScoreView(String isObjScoreView) {
+		this.isObjScoreView = isObjScoreView;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public Boolean getEntranceExam() {
+		return isEntranceExam;
+	}
+
+	public void setEntranceExam(Boolean entranceExam) {
+		isEntranceExam = entranceExam;
+	}
+
+	public Boolean getIsEntranceExam() {
+		return isEntranceExam;
+	}
+
+	public void setIsEntranceExam(Boolean isEntranceExam) {
+		this.isEntranceExam = isEntranceExam;
+	}
+
+	public Boolean getIsFaceVerify() {
+		return isFaceVerify;
+	}
+
+	public void setIsFaceVerify(Boolean isFaceVerify) {
+		this.isFaceVerify = isFaceVerify;
+	}
+
+	public Integer getFaceVerifyStartMinute() {
+		return faceVerifyStartMinute;
+	}
+
+	public void setFaceVerifyStartMinute(Integer faceVerifyStartMinute) {
+		this.faceVerifyStartMinute = faceVerifyStartMinute;
+	}
+
+	public Integer getFaceVerifyEndMinute() {
+		return faceVerifyEndMinute;
+	}
+
+	public void setFaceVerifyEndMinute(Integer faceVerifyEndMinute) {
+		this.faceVerifyEndMinute = faceVerifyEndMinute;
+	}
+
+	public Exam() {
+	}
+}

+ 585 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamRecord.java

@@ -0,0 +1,585 @@
+package cn.com.qmth.examcloud.common.dto.em;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import cn.com.qmth.examcloud.common.dto.em.Exam;
+import cn.com.qmth.examcloud.common.dto.em.ExamStudent;
+import cn.com.qmth.examcloud.common.dto.em.enums.ExamRecordStatus;
+import cn.com.qmth.examcloud.common.dto.em.enums.GenerateStudentPaperStatus;
+import cn.com.qmth.examcloud.common.dto.em.enums.IsSuccess;
+import cn.com.qmth.examcloud.common.dto.question.PaperDto;
+
+/**
+ * 考试记录
+ *
+ * @author xudengqi
+ *         2016年8月16日
+ */
+public class ExamRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    
+    private Long id;
+    /**
+     * 学生报考信息
+     */
+    private Long examStudentId;
+    /**
+     * 专业层次
+     */
+    private String specialtyLevel;
+    /**
+     * 专业code
+     */
+    private String specialtyCode;
+    /**
+     * 专业名称
+     */
+    private String specialtyName;
+    /**
+     * 考生学号
+     */
+    private String studentCode;
+    /**
+     * 身份证号
+     */
+    private String identityNumber;
+    /**
+     * 考生姓名
+     */
+    private String studentName;
+    /**
+     * 课程code
+     */
+    private String courseCode;
+    /**
+     * 课程层次
+     */
+    private String courseLevel;
+    /**
+     * 学习中心ID
+     */
+    private Long campusId;
+
+    /**
+     * 学校信息
+     */
+    private Long orgId;
+
+    /**
+     * 关联批次
+     */
+    private Long batchId;
+
+    /**
+     * 考生用户ID
+     */
+    private Long stuUserId;
+
+    /**
+     * 考试状态
+     */
+    private ExamRecordStatus status;
+
+    private GenerateStudentPaperStatus genStuPaper;
+    /**
+     * 开始答卷时间
+     */
+    private Date startTime;
+    /**
+     * 交卷时间
+     */
+    private Date endTime;
+    /**
+     * 系统清理时间
+     */
+    private Date cleanTime;
+
+    /**
+     * 监督操作  1违纪   2重考  3正常
+     */
+    private int invigilatorOperation;
+
+    /**
+     * 重考类型ID
+     */
+    private Long retakeTypeId;
+    /**
+     * 重考详情
+     */
+    private String retakeDetail;
+
+    /**
+     * 监考是否已审核
+     */
+    private Boolean isAudit;
+    /**
+     * 抓拍总次数
+     */
+    private Integer totalCount;
+    /**
+     * 成功次数
+     */
+    private Integer succCount;
+    /**
+     * 失败次数
+     */
+    private Integer falseCount;
+    /**
+     * 陌生人次数
+     */
+    private Integer strangerCount;
+    /**
+     * 成功率
+     */
+    private Double succPercent;
+    /**
+     * 是否预警数据
+     */
+    private Boolean isWarn;
+    /**
+     * 是否断点续考
+     */
+    private Boolean isContinued;
+    /**
+     * 续考次数
+     */
+    private Integer continuedCount;
+    /**
+     * 考试次数(第几次)
+     */
+    private Integer examOrder;
+    /**
+     * 试卷编号
+     */
+    private String paperNumber;
+    /**
+     * 考试类型
+     */
+    private String examType;
+    /**
+     * 考生考试使用的考试时长
+     */
+    private long usedExamTime;
+
+    private String paperType;
+
+    private String infoCollector;
+    
+    /**
+	 * 是否为重考
+	 */
+	private Boolean isReexamine;
+	/**
+	 * 考试人脸检测启动分钟数
+	 */
+	private Integer faceVerifyMinute;
+	/**
+	 * 人脸检测结果
+	 */
+	private IsSuccess faceVerifyResult;
+	/**
+	 * 考生试卷id
+	 */
+    private String paperId;
+    
+    private Double landmarkVal;
+    
+    public ExamRecord() {
+        super();
+    }
+    
+    public ExamRecord(ExamStudent examStudent,Long studentId,Long rootOrgId,PaperDto paperDto,Exam batch,int examOrder){
+    	this.paperNumber = paperDto.getName();
+    	this.examStudentId = examStudent.getId();
+    	this.batchId = examStudent.getExam().getId();
+    	this.stuUserId = studentId; 
+		this.orgId = rootOrgId;	//父机构ID
+		this.campusId = examStudent.getOrgId();//学习中心ID
+        this.studentCode = examStudent.getStudentCode();
+        this.studentName = examStudent.getName();
+        this.courseCode = examStudent.getCourseCode();
+        this.identityNumber = examStudent.getIdentityNumber();
+        this.infoCollector = examStudent.getInfoCollector();
+        this.specialtyCode = examStudent.getSpecialtyCode();
+        this.specialtyName = examStudent.getSpecialtyName();
+        this.paperType = examStudent.getPaperType();
+        this.examType = batch.getExamType().toString();
+        this.examOrder = examOrder;
+        this.paperId = paperDto.getId();
+        
+        this.startTime = new Date();
+        this.status = ExamRecordStatus.EXAM_ING;
+        this.invigilatorOperation = 3;		 //默认为正常
+        this.isWarn = false;		 		 //默认无警告
+        this.isAudit = false;		  		 //默认未审核
+        this.isContinued = false;	  		 //默认不是断点续考
+        this.continuedCount = 0;
+        this.usedExamTime = 0L;
+        
+        Integer normalExamTimes = examStudent.getNormalExamTimes();
+    	if(normalExamTimes==null){
+    		normalExamTimes = 0;
+    	}
+        /**
+         * 如果考生表记录中已经被设置为重考,且考试中的考试次数不大于正常考试的次数
+         * 将该条考试记录设置为重考
+         */
+        if(examStudent.getIsReexamine()!=null 
+        		&& examStudent.getIsReexamine() 
+        			&& batch.getExamTimes()<=normalExamTimes){
+        	this.isReexamine = true;
+        }
+        /**
+         * 确定人脸活体检测开始分钟数
+         * 开始分钟数跟结束分钟数中的随机值
+         */
+        if(batch.getIsFaceVerify()!=null&&batch.getIsFaceVerify()){
+        	Integer faceVerifyStartMinute = batch.getFaceVerifyStartMinute();
+        	Integer faceVerifyEndMinute = batch.getFaceVerifyEndMinute();
+        	if(faceVerifyStartMinute!=null&&faceVerifyEndMinute!=null){
+        		//(数据类型)(最小值+Math.random()*(最大值-最小值+1)) 
+        		int verifyMinute = (int)(faceVerifyStartMinute+Math.random()*(faceVerifyEndMinute-faceVerifyStartMinute+1));
+        		this.faceVerifyMinute = verifyMinute;
+        	}
+        }
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getExamStudentId() {
+        return examStudentId;
+    }
+
+    public void setExamStudentId(Long examStudentId) {
+        this.examStudentId = examStudentId;
+    }
+
+    public Long getBatchId() {
+        return batchId;
+    }
+
+    public void setBatchId(Long batchId) {
+        this.batchId = batchId;
+    }
+
+    public Long getStuUserId() {
+        return stuUserId;
+    }
+
+    public void setStuUserId(Long stuUserId) {
+        this.stuUserId = stuUserId;
+    }
+
+    public ExamRecordStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(ExamRecordStatus status) {
+        this.status = status;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public int getInvigilatorOperation() {
+        return invigilatorOperation;
+    }
+
+    public void setInvigilatorOperation(int invigilatorOperation) {
+        this.invigilatorOperation = invigilatorOperation;
+    }
+
+    public Long getRetakeTypeId() {
+        return retakeTypeId;
+    }
+
+    public void setRetakeTypeId(Long retakeTypeId) {
+        this.retakeTypeId = retakeTypeId;
+    }
+
+    public String getRetakeDetail() {
+        return retakeDetail;
+    }
+
+    public void setRetakeDetail(String retakeDetail) {
+        this.retakeDetail = retakeDetail;
+    }
+
+    public Boolean getIsAudit() {
+        return isAudit;
+    }
+
+    public void setIsAudit(Boolean isAudit) {
+        this.isAudit = isAudit;
+    }
+
+    public Integer getTotalCount() {
+        return totalCount;
+    }
+
+    public void setTotalCount(Integer totalCount) {
+        this.totalCount = totalCount;
+    }
+
+    public Integer getSuccCount() {
+        return succCount;
+    }
+
+    public void setSuccCount(Integer succCount) {
+        this.succCount = succCount;
+    }
+
+    public Integer getFalseCount() {
+        return falseCount;
+    }
+
+    public void setFalseCount(Integer falseCount) {
+        this.falseCount = falseCount;
+    }
+
+    public Integer getStrangerCount() {
+        return strangerCount;
+    }
+
+    public void setStrangerCount(Integer strangerCount) {
+        this.strangerCount = strangerCount;
+    }
+
+    public Double getSuccPercent() {
+        return succPercent;
+    }
+
+    public void setSuccPercent(Double succPercent) {
+        this.succPercent = succPercent;
+    }
+
+    public Boolean getIsWarn() {
+        return isWarn;
+    }
+
+    public void setIsWarn(Boolean isWarn) {
+        this.isWarn = isWarn;
+    }
+
+    public Boolean getIsContinued() {
+        return isContinued;
+    }
+
+    public void setIsContinued(Boolean isContinued) {
+        this.isContinued = isContinued;
+    }
+
+    public Integer getContinuedCount() {
+        return continuedCount;
+    }
+
+    public void setContinuedCount(Integer continuedCount) {
+        this.continuedCount = continuedCount;
+    }
+
+    public Integer getExamOrder() {
+        return examOrder;
+    }
+
+    public void setExamOrder(Integer examOrder) {
+        this.examOrder = examOrder;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getExamType() {
+        return examType;
+    }
+
+    public void setExamType(String examType) {
+        this.examType = examType;
+    }
+
+    public long getUsedExamTime() {
+        return usedExamTime;
+    }
+
+    public void setUsedExamTime(long usedExamTime) {
+        this.usedExamTime = usedExamTime;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getSpecialtyLevel() {
+        return specialtyLevel;
+    }
+
+    public void setSpecialtyLevel(String specialtyLevel) {
+        this.specialtyLevel = specialtyLevel;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public Long getCampusId() {
+        return campusId;
+    }
+
+    public void setCampusId(Long campusId) {
+        this.campusId = campusId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getIdentityNumber() {
+        return identityNumber;
+    }
+
+    public void setIdentityNumber(String identityNumber) {
+        this.identityNumber = identityNumber;
+    }
+
+    public Date getCleanTime() {
+        return cleanTime;
+    }
+
+    public void setCleanTime(Date cleanTime) {
+        this.cleanTime = cleanTime;
+    }
+
+    public GenerateStudentPaperStatus getGenStuPaper() {
+        return genStuPaper;
+    }
+
+    public void setGenStuPaper(GenerateStudentPaperStatus genStuPaper) {
+        this.genStuPaper = genStuPaper;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getInfoCollector() {
+        return infoCollector;
+    }
+
+    public void setInfoCollector(String infoCollector) {
+        this.infoCollector = infoCollector;
+    }
+
+	public String getSpecialtyCode() {
+		return specialtyCode;
+	}
+
+	public void setSpecialtyCode(String specialtyCode) {
+		this.specialtyCode = specialtyCode;
+	}
+
+	public String getSpecialtyName() {
+		return specialtyName;
+	}
+
+	public void setSpecialtyName(String specialtyName) {
+		this.specialtyName = specialtyName;
+	}
+
+	public String getCourseLevel() {
+		return courseLevel;
+	}
+
+	public void setCourseLevel(String courseLevel) {
+		this.courseLevel = courseLevel;
+	}
+
+	public Boolean getIsReexamine() {
+		return isReexamine;
+	}
+
+	public void setIsReexamine(Boolean isReexamine) {
+		this.isReexamine = isReexamine;
+	}
+
+	public Integer getFaceVerifyMinute() {
+		return faceVerifyMinute;
+	}
+
+	public void setFaceVerifyMinute(Integer faceVerifyMinute) {
+		this.faceVerifyMinute = faceVerifyMinute;
+	}
+	
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public IsSuccess getFaceVerifyResult() {
+		return faceVerifyResult;
+	}
+
+	public void setFaceVerifyResult(IsSuccess faceVerifyResult) {
+		this.faceVerifyResult = faceVerifyResult;
+	}
+
+	public Double getLandmarkVal() {
+		return landmarkVal;
+	}
+
+	public void setLandmarkVal(Double landmarkVal) {
+		this.landmarkVal = landmarkVal;
+	}
+	
+}

+ 105 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamScore.java

@@ -0,0 +1,105 @@
+package cn.com.qmth.examcloud.common.dto.em;
+
+import java.io.Serializable;
+
+
+/**
+ * 考试成绩表
+ *
+ * @author xudengqi
+ *         2016年9月2日
+ */
+public class ExamScore implements Serializable {
+
+    private static final long serialVersionUID = 5980724505064662051L;
+
+    private Long id;
+    /**
+     * 考试记录
+     */
+    private ExamRecord examRecord;
+
+    /**
+     * 总分
+     */
+    private Double totalScore;
+
+    /**
+     * 客观题得分
+     */
+    private Double objectiveScore;
+    
+    /**
+     * 客观题答对的比率
+     * (客观题答对的题数/总题数)*100  取2位小数
+     */
+    private Double objectiveAccuracy;
+
+    /**
+     * 主观题得分
+     */
+    private Double subjectiveScore;
+
+    /**
+     * 答题正确率
+     */
+    private Double succPercent;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+
+    public ExamRecord getExamRecord() {
+        return examRecord;
+    }
+
+    public void setExamRecord(ExamRecord examRecord) {
+        this.examRecord = examRecord;
+    }
+
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public Double getSuccPercent() {
+        return succPercent;
+    }
+
+    public void setSuccPercent(Double succPercent) {
+        this.succPercent = succPercent;
+    }
+
+    public Double getObjectiveScore() {
+        return objectiveScore;
+    }
+
+    public void setObjectiveScore(Double objectiveScore) {
+        this.objectiveScore = objectiveScore;
+    }
+
+    public Double getSubjectiveScore() {
+        return subjectiveScore;
+    }
+
+    public void setSubjectiveScore(Double subjectiveScore) {
+        this.subjectiveScore = subjectiveScore;
+    }
+
+    public Double getObjectiveAccuracy() {
+        return objectiveAccuracy;
+    }
+
+    public void setObjectiveAccuracy(Double objectiveAccuracy) {
+        this.objectiveAccuracy = objectiveAccuracy;
+    }
+}

+ 409 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamStudent.java

@@ -0,0 +1,409 @@
+package cn.com.qmth.examcloud.common.dto.em;
+
+import java.io.Serializable;
+
+public class ExamStudent implements Serializable {
+
+    private static final long serialVersionUID = 757531976286006550L;
+
+    private long id;
+
+    private String name;
+
+    private Exam exam;
+    /**
+     * 学校id
+     */
+    private Long rootOrgId;
+    /**
+     * 学习中心id
+     */
+    private Long orgId;
+    /**
+     * 学习中心code
+     */
+    private String orgCode;
+    private String orgName;
+
+    private String studentCode;
+
+    private String identityNumber;
+
+    private String examNumber;
+
+    private String courseCode;
+
+    private String courseName;
+
+    private String courseLevel;
+
+    /**
+     * 试卷类型
+     */
+    private String paperType;
+    /**
+     * 学位
+     */
+    private Boolean degree;
+
+    private String specialtyName;
+    /**
+	 * 专业code
+	 */
+	private String specialtyCode;
+
+    /**
+     * 是否重修
+     */
+    private Boolean repair;
+
+    /**
+     * 年级
+     */
+    private String grade;
+    /**
+     * 是否毕业
+     */
+    private Boolean graduated;
+    
+    /**
+     * 入学考试:recruit
+     * 毕业:graduated
+     * 非毕业:studying
+     */
+    private String remark;
+
+    /**
+     * 是否缺考
+     * 1:不缺考
+     * 0:缺考
+     */
+    private Boolean finished;
+
+    /**
+     * 学生id
+     */
+    private Long studentId;
+
+    private String phone;
+    private String infoCollector;
+    
+    /**
+	 * 正常考试次数  不含重考
+	 */
+	private Integer normalExamTimes;
+	/**
+	 * 是否为重考
+	 */
+	private Boolean isReexamine;
+	
+	/**
+	 * 重考原因类型
+	 */
+	private String reexamineType;
+	/**
+	 * 重考原因详情
+	 */
+	private String reexamineDetail;
+	/**
+	 * 重考已完成  true:是 false:否
+	 */
+	private Boolean reexamineCompleted;
+
+    /**
+     * 考试开始时间(针对学生,网考使用)
+     */
+    private String examBeginTime;
+
+    /**
+     * 考试结束时间(针对学生,网考使用)
+     */
+    private String examEndTime;
+
+    /**
+     * 是否可上传
+     */
+    private Boolean canUpload;
+
+	public ExamStudent() {}
+	
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public long getId() {
+        return id;
+    }
+
+    public void setId(long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Exam getExam() {
+        return exam;
+    }
+
+    public void setExam(Exam exam) {
+        this.exam = exam;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getIdentityNumber() {
+        return identityNumber;
+    }
+
+    public void setIdentityNumber(String identityNumber) {
+        this.identityNumber = identityNumber;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getSpecialtyName() {
+        return specialtyName;
+    }
+
+    public void setSpecialtyName(String specialtyName) {
+        this.specialtyName = specialtyName;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getGrade() {
+        return grade;
+    }
+
+    public void setGrade(String grade) {
+        this.grade = grade;
+    }
+
+    public static long getSerialversionuid() {
+        return serialVersionUID;
+    }
+
+    public Long getRootOrgId() {
+        return rootOrgId;
+    }
+
+    public void setRootOrgId(Long rootOrgId) {
+        this.rootOrgId = rootOrgId;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getOrgCode() {
+        return orgCode;
+    }
+
+    public void setOrgCode(String orgCode) {
+        this.orgCode = orgCode;
+    }
+
+    public String getPaperType() {
+        return paperType;
+    }
+
+    public void setPaperType(String paperType) {
+        this.paperType = paperType;
+    }
+
+    public String getCourseLevel() {
+        return courseLevel;
+    }
+
+    public void setCourseLevel(String courseLevel) {
+        this.courseLevel = courseLevel;
+    }
+
+    public Boolean getDegree() {
+        return degree;
+    }
+
+    public void setDegree(Boolean degree) {
+        this.degree = degree;
+    }
+
+    public Boolean getRepair() {
+        return repair;
+    }
+
+    public void setRepair(Boolean repair) {
+        this.repair = repair;
+    }
+
+    public Boolean getGraduated() {
+        return graduated;
+    }
+
+    public void setGraduated(Boolean graduated) {
+        this.graduated = graduated;
+    }
+
+    public Boolean getFinished() {
+        return finished;
+    }
+
+    public void setFinished(Boolean finished) {
+        this.finished = finished;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public String getInfoCollector() {
+        return infoCollector;
+    }
+
+    public void setInfoCollector(String infoCollector) {
+        this.infoCollector = infoCollector;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public String getSpecialtyCode() {
+		return specialtyCode;
+	}
+
+	public void setSpecialtyCode(String specialtyCode) {
+		this.specialtyCode = specialtyCode;
+	}
+	
+	public Integer getNormalExamTimes() {
+		return normalExamTimes;
+	}
+
+	public void setNormalExamTimes(Integer normalExamTimes) {
+		this.normalExamTimes = normalExamTimes;
+	}
+
+	public Boolean getIsReexamine() {
+		return isReexamine;
+	}
+
+	public void setIsReexamine(Boolean isReexamine) {
+		this.isReexamine = isReexamine;
+	}
+
+	public String getReexamineType() {
+		return reexamineType;
+	}
+
+	public void setReexamineType(String reexamineType) {
+		this.reexamineType = reexamineType;
+	}
+
+	public String getReexamineDetail() {
+		return reexamineDetail;
+	}
+
+	public void setReexamineDetail(String reexamineDetail) {
+		this.reexamineDetail = reexamineDetail;
+	}
+
+	public Boolean getReexamineCompleted() {
+		return reexamineCompleted;
+	}
+
+	public void setReexamineCompleted(Boolean reexamineCompleted) {
+		this.reexamineCompleted = reexamineCompleted;
+	}
+
+    public Boolean getReexamine() {
+        return isReexamine;
+    }
+
+    public void setReexamine(Boolean reexamine) {
+        isReexamine = reexamine;
+    }
+
+    public String getExamBeginTime() {
+        return examBeginTime;
+    }
+
+    public void setExamBeginTime(String examBeginTime) {
+        this.examBeginTime = examBeginTime;
+    }
+
+    public String getExamEndTime() {
+        return examEndTime;
+    }
+
+    public void setExamEndTime(String examEndTime) {
+        this.examEndTime = examEndTime;
+    }
+
+    public Boolean getCanUpload() {
+        return canUpload;
+    }
+
+    public void setCanUpload(Boolean canUpload) {
+        this.canUpload = canUpload;
+    }
+}

+ 517 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/ExamSync.java

@@ -0,0 +1,517 @@
+package cn.com.qmth.examcloud.common.dto.em;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
+import cn.com.qmth.examcloud.common.dto.em.enums.MarkingType;
+import cn.com.qmth.examcloud.common.dto.em.enums.PracticeType;
+
+public class ExamSync implements Serializable {
+
+    private static final long serialVersionUID = 4009839764353162256L;
+
+	private Long id;
+
+	/**
+	 * 机构Id
+	 */
+	private Long orgId;
+
+	/**
+	 * 顶级机构Id
+	 */
+	private Long rootOrgId;
+
+	/**
+	 * 考试批次开始时间
+     */
+	private Date beginTime;
+
+	/**
+	 * 考试批次结束时间
+     */
+	private Date endTime;
+
+	/**
+	 * 考试名称
+     */
+	private String name;
+
+	/**
+	 * 考试类型
+     */
+	private ExamType examType;
+
+	/**
+	 * 是否入学考试
+     */
+	private Boolean isEntranceExam;
+
+	/**
+	 * 考试时长
+	 */
+	private Integer duration;
+	/**
+	 * 冻结时间
+	 */
+	private Integer freezeTime;
+
+	/**
+	 * 考试状态
+     */
+	private String status;
+
+
+	private Boolean enable;
+
+	/**
+	 * 考试备注
+     */
+	private String remark;
+
+	/**
+	 * 创建时间
+     */
+	private Date createTime;
+
+	/**
+	 * 考试次数
+     */
+	private Long examTimes;
+
+	/**
+	 * 断点续考时间(秒)
+     */
+	private Long examReconnectTime;
+
+	/**
+	 * 考前说明
+     */
+	private String beforeExamRemark;
+
+	/**
+	 * 考后说明
+     */
+	private String afterExamRemark;
+
+	/**
+	 * 是否显示成绩
+     */
+	private String isObjScoreView;
+
+	/**
+	 * 练习模式
+     */
+	private PracticeType practiceType;
+
+	/**
+	 * 单选题补充说明是否可填
+	 */
+	private Boolean singleEdit;
+
+	/**
+	 * 多选题补充说明是否可填
+	 */
+	private Boolean mutipleEdit;
+
+	/**
+	 * 判断题补充说明是否可填
+	 */
+	private Boolean boolEdit;
+
+	/**
+	 * 填空题补充说明是否可填
+	 */
+	private Boolean fillBlankEdit;
+
+	/**
+	 * 单选题补充说明
+     */
+	private String singleAnswerRemark;
+
+	/**
+	 * 多选题补充说明
+     */
+	private String mutipleAnswerRemark;
+
+	/**
+	 * 判断题补充说明
+     */
+	private String boolAnswerRemark;
+
+	/**
+	 * 填空题补充说明
+     */
+	private String fillBlankRemark;
+
+	/**
+	 * 问答题补充说明
+     */
+	private String textAnswerRemark;
+
+	/**
+	 * 套题补充说明
+	 */
+	private String nestedAnswerRemark;
+
+	/**
+	 * 是否启用人脸识别
+     */
+	private String isFaceEnable;
+
+	/**
+	 * 进入考试是否验证人脸识别(强制、非强制)
+     */
+	private String isFaceCheck;
+
+	/**
+	 * 抓拍间隔
+     */
+	private Double snapshotInterval;
+
+	/**
+	 * 预警阈值
+     */
+	private Double warnThreshold;
+
+	/**
+	 * 阅卷方式
+     */
+	private MarkingType markingType;
+
+	/**
+	 * 学生是否可以删除
+     */
+	private Boolean canStuDel;
+	
+	/**
+	 * 是否开启人脸活体检测
+	 */
+	private Boolean isFaceVerify;
+	/**
+	 * 活体检测开始分钟数
+	 */
+	private Integer faceVerifyStartMinute;
+	/**
+	 * 活体检测结束分钟数
+	 */
+	private Integer faceVerifyEndMinute;
+
+	public ExamSync() {
+    }
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Date getBeginTime() {
+		return beginTime;
+	}
+
+	public void setBeginTime(Date beginTime) {
+		this.beginTime = beginTime;
+	}
+
+	public Date getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(Date endTime) {
+		this.endTime = endTime;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public ExamType getExamType() {
+		return examType;
+	}
+
+	public void setExamType(ExamType examType) {
+		this.examType = examType;
+	}
+
+	public Boolean getIsEntranceExam() {
+		return isEntranceExam;
+	}
+
+	public void setIsEntranceExam(Boolean isEntranceExam) {
+		this.isEntranceExam = isEntranceExam;
+	}
+
+	public Integer getDuration() {
+		return duration;
+	}
+
+	public void setDuration(Integer duration) {
+		this.duration = duration;
+	}
+
+	public Integer getFreezeTime() {
+		return freezeTime;
+	}
+
+	public void setFreezeTime(Integer freezeTime) {
+		this.freezeTime = freezeTime;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public Boolean getEnable() {
+		return enable;
+	}
+
+	public void setEnable(Boolean enable) {
+		this.enable = enable;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Long getExamTimes() {
+		return examTimes;
+	}
+
+	public void setExamTimes(Long examTimes) {
+		this.examTimes = examTimes;
+	}
+
+	public Long getExamReconnectTime() {
+		return examReconnectTime;
+	}
+
+	public void setExamReconnectTime(Long examReconnectTime) {
+		this.examReconnectTime = examReconnectTime;
+	}
+
+	public String getBeforeExamRemark() {
+		return beforeExamRemark;
+	}
+
+	public void setBeforeExamRemark(String beforeExamRemark) {
+		this.beforeExamRemark = beforeExamRemark;
+	}
+
+	public String getAfterExamRemark() {
+		return afterExamRemark;
+	}
+
+	public void setAfterExamRemark(String afterExamRemark) {
+		this.afterExamRemark = afterExamRemark;
+	}
+
+	public String getIsObjScoreView() {
+		return isObjScoreView;
+	}
+
+	public void setIsObjScoreView(String isObjScoreView) {
+		this.isObjScoreView = isObjScoreView;
+	}
+
+	public PracticeType getPracticeType() {
+		return practiceType;
+	}
+
+	public void setPracticeType(PracticeType practiceType) {
+		this.practiceType = practiceType;
+	}
+
+	public Boolean getSingleEdit() {
+		return singleEdit;
+	}
+
+	public void setSingleEdit(Boolean singleEdit) {
+		this.singleEdit = singleEdit;
+	}
+
+	public Boolean getMutipleEdit() {
+		return mutipleEdit;
+	}
+
+	public void setMutipleEdit(Boolean mutipleEdit) {
+		this.mutipleEdit = mutipleEdit;
+	}
+
+	public Boolean getBoolEdit() {
+		return boolEdit;
+	}
+
+	public void setBoolEdit(Boolean boolEdit) {
+		this.boolEdit = boolEdit;
+	}
+
+	public Boolean getFillBlankEdit() {
+		return fillBlankEdit;
+	}
+
+	public void setFillBlankEdit(Boolean fillBlankEdit) {
+		this.fillBlankEdit = fillBlankEdit;
+	}
+
+	public String getSingleAnswerRemark() {
+		return singleAnswerRemark;
+	}
+
+	public void setSingleAnswerRemark(String singleAnswerRemark) {
+		this.singleAnswerRemark = singleAnswerRemark;
+	}
+
+	public String getMutipleAnswerRemark() {
+		return mutipleAnswerRemark;
+	}
+
+	public void setMutipleAnswerRemark(String mutipleAnswerRemark) {
+		this.mutipleAnswerRemark = mutipleAnswerRemark;
+	}
+
+	public String getBoolAnswerRemark() {
+		return boolAnswerRemark;
+	}
+
+	public void setBoolAnswerRemark(String boolAnswerRemark) {
+		this.boolAnswerRemark = boolAnswerRemark;
+	}
+
+	public String getFillBlankRemark() {
+		return fillBlankRemark;
+	}
+
+	public void setFillBlankRemark(String fillBlankRemark) {
+		this.fillBlankRemark = fillBlankRemark;
+	}
+
+	public String getTextAnswerRemark() {
+		return textAnswerRemark;
+	}
+
+	public void setTextAnswerRemark(String textAnswerRemark) {
+		this.textAnswerRemark = textAnswerRemark;
+	}
+
+	public String getNestedAnswerRemark() {
+		return nestedAnswerRemark;
+	}
+
+	public void setNestedAnswerRemark(String nestedAnswerRemark) {
+		this.nestedAnswerRemark = nestedAnswerRemark;
+	}
+
+	public String getIsFaceEnable() {
+		return isFaceEnable;
+	}
+
+	public void setIsFaceEnable(String isFaceEnable) {
+		this.isFaceEnable = isFaceEnable;
+	}
+
+	public String getIsFaceCheck() {
+		return isFaceCheck;
+	}
+
+	public void setIsFaceCheck(String isFaceCheck) {
+		this.isFaceCheck = isFaceCheck;
+	}
+
+	public Double getSnapshotInterval() {
+		return snapshotInterval;
+	}
+
+	public void setSnapshotInterval(Double snapshotInterval) {
+		this.snapshotInterval = snapshotInterval;
+	}
+
+	public Double getWarnThreshold() {
+		return warnThreshold;
+	}
+
+	public void setWarnThreshold(Double warnThreshold) {
+		this.warnThreshold = warnThreshold;
+	}
+
+	public MarkingType getMarkingType() {
+		return markingType;
+	}
+
+	public void setMarkingType(MarkingType markingType) {
+		this.markingType = markingType;
+	}
+
+	public Boolean getCanStuDel() {
+		return canStuDel;
+	}
+
+	public void setCanStuDel(Boolean canStuDel) {
+		this.canStuDel = canStuDel;
+	}
+
+	public Boolean getIsFaceVerify() {
+		return isFaceVerify;
+	}
+
+	public void setIsFaceVerify(Boolean isFaceVerify) {
+		this.isFaceVerify = isFaceVerify;
+	}
+
+	public Integer getFaceVerifyStartMinute() {
+		return faceVerifyStartMinute;
+	}
+
+	public void setFaceVerifyStartMinute(Integer faceVerifyStartMinute) {
+		this.faceVerifyStartMinute = faceVerifyStartMinute;
+	}
+
+	public Integer getFaceVerifyEndMinute() {
+		return faceVerifyEndMinute;
+	}
+
+	public void setFaceVerifyEndMinute(Integer faceVerifyEndMinute) {
+		this.faceVerifyEndMinute = faceVerifyEndMinute;
+	}
+	
+	
+}

+ 29 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/ExamRecordStatus.java

@@ -0,0 +1,29 @@
+package cn.com.qmth.examcloud.common.dto.em.enums;
+
+/**
+ * 考试记录状态
+ * @author xudengqi
+ * 2016年8月23日
+ */
+public enum ExamRecordStatus {
+	/**
+	 * 考试中
+	 */
+	EXAM_ING,
+	
+	/**
+	 * 考试结束
+	 */
+	EXAM_END,
+	
+	/**
+	 * 考试过期
+	 */
+	EXAM_OVERDUE,
+	
+	/**
+	 * 考试无效/作废
+	 */
+	EXAM_INVALID;
+
+}

+ 41 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/ExamType.java

@@ -0,0 +1,41 @@
+package cn.com.qmth.examcloud.common.dto.em.enums;
+
+/**
+ * @author ting.yin
+ * @Description: 考试类型
+ * @date 2017年1月5日
+ */
+public enum ExamType {
+    /**
+     * 传统考试
+     */
+    TRADITION,
+    /**
+     * 在线考试
+     */
+    ONLINE,
+    /**
+     * 在线练习
+     */
+    PRACTICE,
+
+    /**
+     * 离线考试
+     */
+    OFFLINE,
+
+    /**
+     * 分布式印刷考试
+     */
+    PRINT_EXAM;
+
+    public static ExamType strToEnum(String str) {
+        for (ExamType examType : ExamType.values()) {
+            if (examType.name().equals(str)) {
+                return examType;
+            }
+        }
+        return null;
+    }
+
+}

+ 19 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/GenerateStudentPaperStatus.java

@@ -0,0 +1,19 @@
+package cn.com.qmth.examcloud.common.dto.em.enums;
+
+/**
+ * Created by yuanpan on 2017/8/8.
+ */
+public enum GenerateStudentPaperStatus {
+	/**
+	 * 成功
+	 */
+    SUCCEEDED,
+    /**
+     * 失败
+     */
+    FAILED,
+    /**
+     * 不需要
+     */
+    NONEED
+}

+ 46 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/IsSuccess.java

@@ -0,0 +1,46 @@
+package cn.com.qmth.examcloud.common.dto.em.enums;
+
+/**
+ * @author  	chenken
+ * @date    	2018年2月26日 下午3:13:05
+ * @company 	QMTH
+ * @description 成功或失败
+ */
+public enum IsSuccess {
+	/**
+	 * 成功
+	 */
+	SUCCESS("成功"),
+	/**
+	 * 失败
+	 */
+	FAILED("失败");
+	
+	private String desc;
+	
+	public static IsSuccess strToEnum(String name){
+		if(name==null || "".equals(name)){
+			return null;
+		}
+		for(IsSuccess isSuccess:IsSuccess.values()){
+			if(name.equals(isSuccess.name())){
+				return isSuccess;
+			}
+		}
+		
+		return null;
+	}
+	
+	private IsSuccess(String desc){
+		this.desc = desc;
+	}
+	
+	public String getDesc() {
+		return desc;
+	}
+
+	public void setDesc(String desc) {
+		this.desc = desc;
+	}
+}
+

+ 41 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/MarkingType.java

@@ -0,0 +1,41 @@
+package cn.com.qmth.examcloud.common.dto.em.enums;
+
+/**
+ * Created by songyue on 17/6/22.
+ */
+public enum MarkingType {
+
+    ALL("全部评阅"),
+    OBJECT_SCORE_MAX("客观分最高"),
+    LAST_SUBMIT("最后一次提交");
+    
+    public static void main(String[] args) {
+		System.out.println(MarkingType.toMarkingType("XXX"));
+	}
+    
+    public static MarkingType toMarkingType(String str){
+    	if(str==null || "".equals(str)){
+    		return null;
+    	}
+    	for(MarkingType type:MarkingType.values()){
+    		if(str.equals(type.name())){
+    			return type;
+    		}
+    	}
+    	return null;
+    }
+
+    private String name;
+
+    private MarkingType(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 24 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/enums/PracticeType.java

@@ -0,0 +1,24 @@
+package cn.com.qmth.examcloud.common.dto.em.enums;
+
+/**
+ * Created by songyue on 17/6/22.
+ */
+public enum PracticeType {
+
+    AFTER_PRACTICE("结束统一显示答案"),
+    IN_PRACTICE("边答边显示答案");
+
+    private String name;
+
+    private PracticeType(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

+ 81 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/em/marking/ExamCourseDTO.java

@@ -0,0 +1,81 @@
+package cn.com.qmth.examcloud.common.dto.em.marking;
+
+import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
+
+/**
+ * Created by yuanpan on 2017/4/12.
+ */
+public class ExamCourseDTO {
+
+    private Long examId;
+    private String examName;
+    private ExamType examType;
+    private String courseName;
+    private String courseCode;
+    /**
+     * 答卷数量
+     */
+    private long studentPaperCount;
+    
+    /**
+     * 分配的评卷员数量
+     */
+    private long markerCount;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
+    public ExamType getExamType() {
+        return examType;
+    }
+
+    public void setExamType(ExamType examType) {
+        this.examType = examType;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+	public Long getStudentPaperCount() {
+		return studentPaperCount;
+	}
+
+	public void setStudentPaperCount(long studentPaperCount) {
+		this.studentPaperCount = studentPaperCount;
+	}
+
+	public Long getMarkerCount() {
+		return markerCount;
+	}
+
+	public void setMarkerCount(long markerCount) {
+		this.markerCount = markerCount;
+	}
+    
+}

+ 125 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/examwork/CommonExamStudent.java

@@ -0,0 +1,125 @@
+package cn.com.qmth.examcloud.common.dto.examwork;
+
+import java.io.Serializable;
+
+/**
+ * @author  	chenken
+ * @date    	2018年1月15日 下午3:07:48
+ * @company 	QMTH
+ * @description ExamStudent.java
+ */
+public class CommonExamStudent implements Serializable{
+	
+	private static final long serialVersionUID = -6784281319982374388L;
+	
+	private Long id;
+	/**
+	 * 考试批次ID
+	 */
+	private Long examId;
+	/**
+	 * 学习中心id
+	 */
+    private Long orgId;
+    /**
+	 * 课程code
+	 */
+	private String courseCode;
+	/**
+	 * 课程等级
+	 */
+	private String courseLevel;
+	/**
+	 * 考生姓名
+	 */
+	private String name;
+	/**
+	 * 学号
+	 */
+	private String studentCode;
+	/**
+	 * 身份证号
+	 */
+	private String identityNumber;
+	/**
+	 * 是否为重考
+	 */
+	private Boolean isReexamine;
+	/**
+	 * 重考原因类型
+	 */
+	private String reexamineType;
+	/**
+	 * 重考原因详情
+	 */
+	private String reexamineDetail;
+	
+	public Long getId() {
+		return id;
+	}
+	public void setId(Long id) {
+		this.id = id;
+	}
+	public Long getExamId() {
+		return examId;
+	}
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+	public Long getOrgId() {
+		return orgId;
+	}
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+	public String getCourseCode() {
+		return courseCode;
+	}
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+	public String getCourseLevel() {
+		return courseLevel;
+	}
+	public void setCourseLevel(String courseLevel) {
+		this.courseLevel = courseLevel;
+	}
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public String getStudentCode() {
+		return studentCode;
+	}
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+	public Boolean getIsReexamine() {
+		return isReexamine;
+	}
+	public void setIsReexamine(Boolean isReexamine) {
+		this.isReexamine = isReexamine;
+	}
+	public String getReexamineType() {
+		return reexamineType;
+	}
+	public void setReexamineType(String reexamineType) {
+		this.reexamineType = reexamineType;
+	}
+	public String getReexamineDetail() {
+		return reexamineDetail;
+	}
+	public void setReexamineDetail(String reexamineDetail) {
+		this.reexamineDetail = reexamineDetail;
+	}
+	
+}
+

+ 14 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/IdEntity.java

@@ -0,0 +1,14 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+public abstract class IdEntity {
+
+	private long id;
+
+	public long getId() {
+		return id;
+	}
+
+	public void setId(long id) {
+		this.id = id;
+	}
+}

+ 101 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkCourseDTO.java

@@ -0,0 +1,101 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+public class MarkCourseDTO {
+
+	private Long workId;
+
+	private String name;
+
+	private String code;
+
+	private Long totalCount;
+
+	private Long markedCount;
+
+	private Long leftCount;
+	
+	private Long rejectCount;
+
+	private double progress;
+	
+    /**
+     * 分配的评卷员数量
+     */
+    private long markerCount;
+	
+	public MarkCourseDTO() {
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Long getWorkId() {
+		return workId;
+	}
+
+	public void setWorkId(Long workId) {
+		this.workId = workId;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public Long getTotalCount() {
+		return totalCount;
+	}
+
+	public void setTotalCount(Long totalCount) {
+		this.totalCount = totalCount;
+	}
+
+	public Long getMarkedCount() {
+		return markedCount;
+	}
+
+	public void setMarkedCount(Long markedCount) {
+		this.markedCount = markedCount;
+	}
+
+	public Long getLeftCount() {
+		return leftCount;
+	}
+
+	public void setLeftCount(Long leftCount) {
+		this.leftCount = leftCount;
+	}
+
+	public double getProgress() {
+		return progress;
+	}
+
+	public void setProgress(double progress) {
+		this.progress = progress;
+	}
+
+	public Long getRejectCount() {
+		return rejectCount;
+	}
+
+	public void setRejectCount(Long rejectCount) {
+		this.rejectCount = rejectCount;
+	}
+
+	public long getMarkerCount() {
+		return markerCount;
+	}
+
+	public void setMarkerCount(long markerCount) {
+		this.markerCount = markerCount;
+	}
+
+}

+ 186 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkItem.java

@@ -0,0 +1,186 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+
+
+/**
+ * 评卷项
+ */
+public class MarkItem extends IdEntity {
+
+    enum ScoringType{
+        /**
+         * 根据给分间隔
+         */
+        INTERVAL,
+        /**
+         * 人工指定给分列表
+         */
+        MANUAL
+    }
+
+    private String paperId;
+
+    private Long workId;
+
+    private Long markRangeId;
+
+    /**
+     * 大题号
+     */
+    private int mainNumber;
+
+    /**
+     * 小题号
+     */
+    private int subNumber;
+    
+    /**
+     * 全卷范围内排序
+     */
+    private int orders;
+
+    /**
+     * 分值
+     */
+    private double maxScore;
+
+    /**
+     * 给分方式
+     */
+    private ScoringType scoringType;
+
+    /**
+     * 给分间隔
+     */
+    private Double scoreInterval;
+
+    /**
+     * 给分列表
+     */
+    private String socreList;
+
+    public MarkItem(){}
+
+    public MarkItem(String paperId, int mainNumber,int subNumber,double maxScore, Double scoreInterval,int orders) {
+        this.paperId = paperId;
+        this.mainNumber = mainNumber;
+        this.subNumber = subNumber;
+        this.maxScore = maxScore;
+        this.scoreInterval = scoreInterval == null ? 1 : scoreInterval;
+        this.scoringType = ScoringType.INTERVAL;
+        this.orders = orders;
+    }
+
+    public MarkItem(String paperId, int mainNumber,int subNumber,double maxScore,String socreList) {
+        this.paperId = paperId;
+        this.mainNumber = mainNumber;
+        this.subNumber = subNumber;
+        this.maxScore = maxScore;
+        this.socreList = socreList == null ? String.valueOf(this.maxScore) : socreList;
+        this.scoringType = ScoringType.MANUAL;
+    }
+
+    public Long getWorkId() {
+        return workId;
+    }
+
+    public void setWorkId(Long workId) {
+        this.workId = workId;
+    }
+
+    public int getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(int mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public int getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(int subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public double getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(double maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public ScoringType getScoringType() {
+        return scoringType;
+    }
+
+    public void setScoringType(ScoringType scoringType) {
+        this.scoringType = scoringType;
+    }
+
+    public Double getScoreInterval() {
+        return scoreInterval;
+    }
+
+    public void setScoreInterval(Double scoreInterval) {
+        this.scoreInterval = scoreInterval;
+    }
+
+    public String getSocreList() {
+        return socreList;
+    }
+
+    public void setSocreList(String socreList) {
+        this.socreList = socreList;
+    }
+
+    public String getPaperId() {
+        return paperId;
+    }
+
+    public void setPaperId(String paperId) {
+        this.paperId = paperId;
+    }
+
+    public Long getMarkRangeId() {
+        return markRangeId;
+    }
+
+    public void setMarkRangeId(Long markRangeId) {
+        this.markRangeId = markRangeId;
+    }
+
+    public int getOrders() {
+		return orders;
+	}
+
+	public void setOrders(int orders) {
+		this.orders = orders;
+	}
+
+	@Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        MarkItem markItem = (MarkItem) o;
+
+        if (getMainNumber() != markItem.getMainNumber()) return false;
+        if (getSubNumber() != markItem.getSubNumber()) return false;
+        if (getPaperId() != null ? !getPaperId().equals(markItem.getPaperId()) : markItem.getPaperId() != null)
+            return false;
+        return getWorkId() != null ? getWorkId().equals(markItem.getWorkId()) : markItem.getWorkId() == null;
+
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getPaperId() != null ? getPaperId().hashCode() : 0;
+        result = 31 * result + (getWorkId() != null ? getWorkId().hashCode() : 0);
+        result = 31 * result + getMainNumber();
+        result = 31 * result + getSubNumber();
+        return result;
+    }
+}

+ 5 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkMode.java

@@ -0,0 +1,5 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+public enum MarkMode {
+    SINGLE,MULTI
+}

+ 83 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkRange.java

@@ -0,0 +1,83 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * 评卷范围
+ */
+public class MarkRange extends IdEntity {
+
+	private String name;
+
+	private String paperId;
+
+	private Long workId;
+
+	private MarkMode markMode;
+
+	public Long getWorkId() {
+		return workId;
+	}
+
+	public void setWorkId(Long workId) {
+		this.workId = workId;
+	}
+
+	private Set<MarkItem> markItems = new HashSet<MarkItem>();
+
+	private Set<MarkTaskDTO> markTasks = new HashSet<MarkTaskDTO>();
+
+	public MarkRange() {
+	}
+
+	public MarkRange(String name, String paperId, Long workId,
+			Set<MarkItem> markItems, MarkMode markMode) {
+		this.name = name;
+		this.paperId = paperId;
+		this.workId = workId;
+		this.markItems = markItems;
+		this.markMode = markMode;
+	}
+
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public MarkMode getMarkMode() {
+		return markMode;
+	}
+
+	public void setMarkMode(MarkMode markMode) {
+		this.markMode = markMode;
+	}
+
+	public Set<MarkItem> getMarkItems() {
+		return markItems;
+	}
+
+	public void setMarkItems(Set<MarkItem> markItems) {
+		this.markItems = markItems;
+	}
+
+	public Set<MarkTaskDTO> getMarkTasks() {
+		return markTasks;
+	}
+
+	public void setMarkTasks(Set<MarkTaskDTO> markTasks) {
+		this.markTasks = markTasks;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+}

+ 272 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkResultDTO.java

@@ -0,0 +1,272 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+import java.util.Date;
+import java.util.Set;
+
+public class MarkResultDTO extends IdEntity {
+
+	private Long userId;
+
+	private Long markRangeId;
+
+	private Long studentPaperId;
+
+	private String markedOn;
+
+	private Set<ResultItem> resultItems;
+	
+    private Double score;
+    
+    private String studentId;
+
+	private String tag;
+	
+    private String studentName;
+    
+    private String studentCode;
+    
+    private String courseCode;
+    
+    private String orgCode;
+    
+    private String paperType;
+    
+    private String paperId;
+    
+    private String courseName;
+    
+    private String orgName;
+    
+    private String userName;
+    
+	private Double objectiveScore;
+	
+	private Double totalScore;
+	
+    private StudentPaper studentPaper;
+    
+    private Long workId;
+
+	private String specialtyName;
+
+	private String specialtyCode;
+	
+	/**
+	 * 学生答卷的主观题HTML
+	 */
+	private String studentSubjectiveHtml;
+
+	private String markRemark;
+	
+	public MarkResultDTO() {
+	}
+
+	public MarkResultDTO(StudentPaper studentPaper, MarkTaskDTO markTask,
+			Set<ResultItem> resultItems) {
+		this.studentPaper = studentPaper;
+		this.userId = markTask.getUserId();
+		this.markRangeId = markTask.getMarkRangeId();
+		this.resultItems = resultItems;
+		this.markedOn = String.valueOf(new Date().getTime());
+	}
+
+	public String getMarkedOn() {
+		return markedOn;
+	}
+
+	public void setMarkedOn(String markedOn) {
+		this.markedOn = markedOn;
+	}
+
+	public Set<ResultItem> getResultItems() {
+		return resultItems;
+	}
+
+	public void setResultItems(Set<ResultItem> resultItems) {
+		this.resultItems = resultItems;
+	}
+
+	public StudentPaper getStudentPaper() {
+		return studentPaper;
+	}
+
+	public void setStudentPaper(StudentPaper studentPaper) {
+		this.studentPaper = studentPaper;
+	}
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public Long getMarkRangeId() {
+		return markRangeId;
+	}
+
+	public void setMarkRangeId(Long markRangeId) {
+		this.markRangeId = markRangeId;
+	}
+
+	public Double getScore() {
+		return score;
+	}
+
+	public void setScore(Double score) {
+		this.score = score;
+	}
+
+	public String getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(String studentId) {
+		this.studentId = studentId;
+	}
+
+	public String getTag() {
+		return tag;
+	}
+
+	public void setTag(String tag) {
+		this.tag = tag;
+	}
+
+	public Long getStudentPaperId() {
+		return studentPaperId;
+	}
+
+	public void setStudentPaperId(Long studentPaperId) {
+		this.studentPaperId = studentPaperId;
+	}
+
+	public String getStudentName() {
+		return studentName;
+	}
+
+	public void setStudentName(String studentName) {
+		this.studentName = studentName;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getOrgCode() {
+		return orgCode;
+	}
+
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+
+	public String getPaperType() {
+		return paperType;
+	}
+
+	public void setPaperType(String paperType) {
+		this.paperType = paperType;
+	}
+
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getOrgName() {
+		return orgName;
+	}
+
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public Double getObjectiveScore() {
+		return objectiveScore;
+	}
+
+	public void setObjectiveScore(Double objectiveScore) {
+		this.objectiveScore = objectiveScore;
+	}
+
+	public Double getTotalScore() {
+		return totalScore;
+	}
+
+	public void setTotalScore(Double totalScore) {
+		this.totalScore = totalScore;
+	}
+
+	public Long getWorkId() {
+		return workId;
+	}
+
+	public void setWorkId(Long workId) {
+		this.workId = workId;
+	}
+
+	public String getSpecialtyName() {
+		return specialtyName;
+	}
+
+	public void setSpecialtyName(String specialtyName) {
+		this.specialtyName = specialtyName;
+	}
+
+	public String getSpecialtyCode() {
+		return specialtyCode;
+	}
+
+	public void setSpecialtyCode(String specialtyCode) {
+		this.specialtyCode = specialtyCode;
+	}
+
+	public String getStudentSubjectiveHtml() {
+		return studentSubjectiveHtml;
+	}
+
+	public void setStudentSubjectiveHtml(String studentSubjectiveHtml) {
+		this.studentSubjectiveHtml = studentSubjectiveHtml;
+	}
+
+	public String getMarkRemark() {
+		return markRemark;
+	}
+
+	public void setMarkRemark(String markRemark) {
+		this.markRemark = markRemark;
+	}
+}

+ 236 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkTaskDTO.java

@@ -0,0 +1,236 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+
+
+
+/**
+ * 评卷任务
+ */
+public class MarkTaskDTO extends IdEntity {
+
+    private Long userId;
+    private String userName;
+    private String userLoginName;
+    private Long workId;
+    private Long examId;
+    private Long markRangeId;
+    private String markRangeName;
+    private String paperId;
+    private String paperName;
+    private String paperType;
+    private String courseName;
+    private String courseCode;
+    /**
+     * 限制数量
+     */
+    private Long limitCount;
+    
+	private Long markedCount;
+	private Long leftCount;
+	private Long totalCount;
+	
+	private Long[] userIds;
+	
+	private Double maxScore;
+	private Double minScore;
+	private Double avgScore;
+	private Double stdDev;
+
+    public MarkTaskDTO() {
+    }
+    
+    public MarkTaskDTO(Long userId,Long workId,Long markRangeId) {
+    	this.markRangeId = markRangeId;
+    	this.userId = userId;
+    	this.workId = workId;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public Long getMarkRangeId() {
+        return markRangeId;
+    }
+
+    public void setMarkRangeId(Long markRangeId) {
+        this.markRangeId = markRangeId;
+    }
+
+    public Long getLimitCount() {
+        return limitCount;
+    }
+
+    public void setLimitCount(Long limitCount) {
+        this.limitCount = limitCount;
+    }
+
+    public Long getWorkId() {
+        return workId;
+    }
+
+    public void setWorkId(Long workId) {
+        this.workId = workId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        MarkTaskDTO markTask = (MarkTaskDTO) o;
+
+        if (getUserId() != null ? !getUserId().equals(markTask.getUserId()) : markTask.getUserId() != null)
+            return false;
+        return getMarkRangeId() != null ? getMarkRangeId().equals(markTask.getMarkRangeId()) : markTask.getMarkRangeId() == null;
+
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getUserId() != null ? getUserId().hashCode() : 0;
+        result = 31 * result + (getMarkRangeId() != null ? getMarkRangeId().hashCode() : 0);
+        return result;
+    }
+
+	public Long getMarkedCount() {
+		return markedCount;
+	}
+
+	public void setMarkedCount(Long markedCount) {
+		this.markedCount = markedCount;
+	}
+
+	public Long getLeftCount() {
+		return leftCount;
+	}
+
+	public void setLeftCount(Long leftCount) {
+		this.leftCount = leftCount;
+	}
+
+	public Long getTotalCount() {
+		return totalCount;
+	}
+
+	public void setTotalCount(Long totalCount) {
+		this.totalCount = totalCount;
+	}
+
+	public String getMarkRangeName() {
+		return markRangeName;
+	}
+
+	public void setMarkRangeName(String markRangeName) {
+		this.markRangeName = markRangeName;
+	}
+
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public String getPaperName() {
+		return paperName;
+	}
+
+	public void setPaperName(String paperName) {
+		this.paperName = paperName;
+	}
+
+	public Long[] getUserIds() {
+		return userIds;
+	}
+
+	public void setUserIds(Long[] userIds) {
+		this.userIds = userIds;
+	}
+
+	public String getPaperType() {
+		return paperType;
+	}
+
+	public void setPaperType(String paperType) {
+		this.paperType = paperType;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public String getUserLoginName() {
+		return userLoginName;
+	}
+
+	public void setUserLoginName(String userLoginName) {
+		this.userLoginName = userLoginName;
+	}
+
+	public Double getMaxScore() {
+		return maxScore;
+	}
+
+	public void setMaxScore(Double maxScore) {
+		this.maxScore = maxScore;
+	}
+
+	public Double getMinScore() {
+		return minScore;
+	}
+
+	public void setMinScore(Double minScore) {
+		this.minScore = minScore;
+	}
+
+	public Double getAvgScore() {
+		return avgScore;
+	}
+
+	public void setAvgScore(Double avgScore) {
+		this.avgScore = avgScore;
+	}
+
+	public Double getStdDev() {
+		return stdDev;
+	}
+
+	public void setStdDev(Double stdDev) {
+		this.stdDev = stdDev;
+	}
+
+}

+ 176 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkWorkDTO.java

@@ -0,0 +1,176 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+import java.util.List;
+
+import cn.com.qmth.examcloud.common.dto.em.enums.ExamType;
+
+/**
+ * 
+ * @Description: TODO
+ * @author ting.yin
+ * @date 2017年1月14日
+ */
+public class MarkWorkDTO extends IdEntity {
+
+	private String name;
+
+	private String createdOn;
+
+	private String examId;
+
+	private String examName;
+	
+    private ExamType examType;
+
+	private List<MarkTaskDTO> markTasks;
+
+	private String remark;
+	
+    private Long totalStudentPaper;
+    
+    private Long markedStudentPaper;
+    
+    private Long totalCourse;
+    
+    private Long markedCourse;
+    
+    private Long totalMarkItem;
+	
+    private double progress;
+    /**
+     * 状态 0:创建中 1:创建成功 2:创建失败
+     */
+    private int status;
+    
+	private Long rootOrgId;
+	
+	public MarkWorkDTO() {
+	}
+
+	public MarkWorkDTO(String name, String examId,Long rootOrgId) {
+		this.name = name;
+		this.examId = examId;
+		this.rootOrgId = rootOrgId;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getCreatedOn() {
+		return createdOn;
+	}
+
+	public void setCreatedOn(String createdOn) {
+		this.createdOn = createdOn;
+	}
+
+	public String getExamId() {
+		return examId;
+	}
+
+	public void setExamId(String examId) {
+		this.examId = examId;
+	}
+
+	public List<MarkTaskDTO> getMarkTasks() {
+		return markTasks;
+	}
+
+	public void setMarkTasks(List<MarkTaskDTO> markTasks) {
+		this.markTasks = markTasks;
+	}
+
+	public String getExamName() {
+		return examName;
+	}
+
+	public void setExamName(String examName) {
+		this.examName = examName;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public double getProgress() {
+		return progress;
+	}
+
+	public void setProgress(double progress) {
+		this.progress = progress;
+	}
+
+	public int getStatus() {
+		return status;
+	}
+
+	public void setStatus(int status) {
+		this.status = status;
+	}
+
+	public Long getTotalStudentPaper() {
+		return totalStudentPaper;
+	}
+
+	public void setTotalStudentPaper(Long totalStudentPaper) {
+		this.totalStudentPaper = totalStudentPaper;
+	}
+
+	public Long getTotalMarkItem() {
+		return totalMarkItem;
+	}
+
+	public void setTotalMarkItem(Long totalMarkItem) {
+		this.totalMarkItem = totalMarkItem;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getMarkedStudentPaper() {
+		return markedStudentPaper;
+	}
+
+	public void setMarkedStudentPaper(Long markedStudentPaper) {
+		this.markedStudentPaper = markedStudentPaper;
+	}
+
+	public Long getTotalCourse() {
+		return totalCourse;
+	}
+
+	public void setTotalCourse(Long totalCourse) {
+		this.totalCourse = totalCourse;
+	}
+
+	public Long getMarkedCourse() {
+		return markedCourse;
+	}
+
+	public void setMarkedCourse(Long markedCourse) {
+		this.markedCourse = markedCourse;
+	}
+
+	public ExamType getExamType() {
+		return examType;
+	}
+
+	public void setExamType(ExamType examType) {
+		this.examType = examType;
+	}
+
+}

+ 108 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/MarkerDTO.java

@@ -0,0 +1,108 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+public class MarkerDTO {
+
+	private Long userId;
+    private String userName;
+    private String userLoginName;
+	private Long workId;
+	private Long markedCount;
+	private Long courseCount;
+	private Long finishedCount;
+	private double maxScore;
+	private double minScore;
+	private double avgScore;
+	private double stdDev;
+
+	public MarkerDTO() {
+	}
+
+	public Long getUserId() {
+		return userId;
+	}
+
+	public void setUserId(Long userId) {
+		this.userId = userId;
+	}
+
+	public Long getMarkedCount() {
+		return markedCount;
+	}
+
+	public void setMarkedCount(Long markedCount) {
+		this.markedCount = markedCount;
+	}
+
+	public Long getCourseCount() {
+		return courseCount;
+	}
+
+	public void setCourseCount(Long courseCount) {
+		this.courseCount = courseCount;
+	}
+
+	public Long getFinishedCount() {
+		return finishedCount;
+	}
+
+	public void setFinishedCount(Long finishedCount) {
+		this.finishedCount = finishedCount;
+	}
+
+	public double getMaxScore() {
+		return maxScore;
+	}
+
+	public void setMaxScore(double maxScore) {
+		this.maxScore = maxScore;
+	}
+
+	public double getMinScore() {
+		return minScore;
+	}
+
+	public void setMinScore(double minScore) {
+		this.minScore = minScore;
+	}
+
+	public double getAvgScore() {
+		return avgScore;
+	}
+
+	public void setAvgScore(double avgScore) {
+		this.avgScore = avgScore;
+	}
+
+	public double getStdDev() {
+		return stdDev;
+	}
+
+	public void setStdDev(double stdDev) {
+		this.stdDev = stdDev;
+	}
+
+	public Long getWorkId() {
+		return workId;
+	}
+
+	public void setWorkId(Long workId) {
+		this.workId = workId;
+	}
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	public String getUserLoginName() {
+		return userLoginName;
+	}
+
+	public void setUserLoginName(String userLoginName) {
+		this.userLoginName = userLoginName;
+	}
+
+}

+ 50 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/ResultItem.java

@@ -0,0 +1,50 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+
+public class ResultItem extends IdEntity {
+
+	private MarkItem markItem;
+
+	/**
+	 * 评分
+	 */
+	private Double score;
+
+	/**
+	 * 评卷项id
+	 */
+	private Long markResultId;
+
+	public ResultItem() {
+	}
+
+	public ResultItem(Double score, MarkItem markItem) {
+		this.score = score;
+		this.markItem = markItem;
+	}
+
+	public Long getMarkResultId() {
+		return markResultId;
+	}
+
+	public void setMarkResultId(Long markResultId) {
+		this.markResultId = markResultId;
+	}
+
+	public Double getScore() {
+		return score;
+	}
+
+	public void setScore(Double score) {
+		this.score = score;
+	}
+
+	public MarkItem getMarkItem() {
+		return markItem;
+	}
+
+	public void setMarkItem(MarkItem markItem) {
+		this.markItem = markItem;
+	}
+	
+}

+ 138 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/marking/StudentPaper.java

@@ -0,0 +1,138 @@
+package cn.com.qmth.examcloud.common.dto.marking;
+
+
+/**
+ * Created by zhengmin on 2016/12/23.
+ */
+public class StudentPaper extends IdEntity {
+
+	private String paperId;
+
+	private String studentId;
+
+	private Long workId;
+
+    private String studentCode;
+    
+    private String studentName;
+    
+    private String courseCode;
+    
+    private String courseName;
+    
+    private String orgCode;
+    
+    private String identityNumber;
+    
+	private String specialtyName;
+
+	private String specialtyCode;
+
+	public StudentPaper() {
+	}
+
+	public StudentPaper(Long workId, String paperId, String studentId, 
+    		String studentCode,String studentName,String courseCode,String courseName,
+    		String orgCode,String identityNumber, String specialtyName, String specialtyCode) {
+		this.paperId = paperId;
+		this.studentId = studentId;
+		this.workId = workId;
+        this.studentCode = studentCode;
+        this.studentName = studentName;
+        this.courseCode = courseCode;
+        this.courseName = courseName;
+        this.orgCode = orgCode;
+        this.identityNumber = identityNumber;
+        this.specialtyCode = specialtyCode;
+        this.specialtyName = specialtyName;
+	}
+
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public Long getWorkId() {
+		return workId;
+	}
+
+	public void setWorkId(Long workId) {
+		this.workId = workId;
+	}
+
+	public String getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(String studentId) {
+		this.studentId = studentId;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getStudentName() {
+		return studentName;
+	}
+
+	public void setStudentName(String studentName) {
+		this.studentName = studentName;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getOrgCode() {
+		return orgCode;
+	}
+
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getSpecialtyName() {
+		return specialtyName;
+	}
+
+	public void setSpecialtyName(String specialtyName) {
+		this.specialtyName = specialtyName;
+	}
+
+	public String getSpecialtyCode() {
+		return specialtyCode;
+	}
+
+	public void setSpecialtyCode(String specialtyCode) {
+		this.specialtyCode = specialtyCode;
+	}
+	
+}

+ 63 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/ExamPhotoVerifyData.java

@@ -0,0 +1,63 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+
+import java.util.List;
+
+/**
+ * @author  	chenken
+ * @date    	2018年5月7日 下午1:53:15
+ * @company 	QMTH
+ * @description ExamVerifyData.java
+ */
+public class ExamPhotoVerifyData {
+
+	/**
+	 * 分数ID
+	 */
+	private Long scoreId;
+	/**
+	 * 总的人脸检测成功率(%)
+	 */
+	private double successRate;
+	/**
+	 * 陌生人脸出现总次数
+	 */
+	private int strangerCount;
+	/**
+	 * 照片URL集合
+	 */
+	private List<String> photoUrls;
+
+	public Long getScoreId() {
+		return scoreId;
+	}
+
+	public void setScoreId(Long scoreId) {
+		this.scoreId = scoreId;
+	}
+
+	public double getSuccessRate() {
+		return successRate;
+	}
+
+	public void setSuccessRate(double successRate) {
+		this.successRate = successRate;
+	}
+
+	public int getStrangerCount() {
+		return strangerCount;
+	}
+
+	public void setStrangerCount(int strangerCount) {
+		this.strangerCount = strangerCount;
+	}
+
+	public List<String> getPhotoUrls() {
+		return photoUrls;
+	}
+
+	public void setPhotoUrls(List<String> photoUrls) {
+		this.photoUrls = photoUrls;
+	}
+	
+}
+

+ 96 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/ExamRecordDto.java

@@ -0,0 +1,96 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+/**
+ * @author  	chenken
+ * @date    	2018年5月17日 下午3:06:34
+ * @company 	QMTH
+ * @description ExamRecordDto.java
+ */
+public class ExamRecordDto {
+	
+	private Long id;
+	
+	private Long orgId;
+	
+	private Long scoreId;
+	
+	private boolean isWarn;
+	
+	private boolean isAudit;
+	
+	private int invigilatorOperation;
+	
+	private String examRecordStatus;
+	
+	/**
+	 * 推送分数的动作点
+	 */
+	private PushScoreActionEnum pushScoreActionEnum;
+	
+	public ExamRecordDto(){}
+	
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public boolean isWarn() {
+		return isWarn;
+	}
+
+	public void setWarn(boolean isWarn) {
+		this.isWarn = isWarn;
+	}
+
+	public boolean isAudit() {
+		return isAudit;
+	}
+
+	public void setAudit(boolean isAudit) {
+		this.isAudit = isAudit;
+	}
+
+	public int getInvigilatorOperation() {
+		return invigilatorOperation;
+	}
+
+	public void setInvigilatorOperation(int invigilatorOperation) {
+		this.invigilatorOperation = invigilatorOperation;
+	}
+
+	public String getExamRecordStatus() {
+		return examRecordStatus;
+	}
+
+	public void setExamRecordStatus(String examRecordStatus) {
+		this.examRecordStatus = examRecordStatus;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public Long getScoreId() {
+		return scoreId;
+	}
+
+	public void setScoreId(Long scoreId) {
+		this.scoreId = scoreId;
+	}
+
+	public PushScoreActionEnum getPushScoreActionEnum() {
+		return pushScoreActionEnum;
+	}
+
+	public void setPushScoreActionEnum(PushScoreActionEnum pushScoreActionEnum) {
+		this.pushScoreActionEnum = pushScoreActionEnum;
+	}
+	
+}
+

+ 278 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/ExamStudentDomain.java

@@ -0,0 +1,278 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+
+import java.io.Serializable;
+
+/**
+ * 类注释
+ *
+ * @author WANGWEI
+ * @date 2018年7月9日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+public class ExamStudentDomain implements Serializable {
+
+	private static final long serialVersionUID = 757982847766860857L;
+
+	private Long id;
+
+	private Long studentId;
+
+	private String identityNumber;
+
+	private String studentName;
+
+	private String studentCode;
+
+	private Long examId;
+
+	private String examName;
+
+	private Long rootOrgId;
+
+	private Long orgId;
+
+	private String orgCode;
+
+	private String orgName;
+
+	private String examNumber;
+
+	private String courseCode;
+
+	private String courseName;
+
+	private String courseLevel;
+
+	private String paperType;
+
+	private String specialtyCode;
+
+	private String specialtyName;
+
+	/**
+	 * 考点
+	 */
+	private String examSite;
+
+	/**
+	 * 信息采集人
+	 */
+	private String infoCollector;
+
+	/**
+	 * 学生电话
+	 */
+	private String phone;
+
+	private String remark;
+
+	/**
+	 * 年级
+	 */
+	private String grade;
+
+	private Boolean finished;
+
+	private String updateTime;
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public Long getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(Long studentId) {
+		this.studentId = studentId;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+	public String getStudentName() {
+		return studentName;
+	}
+
+	public void setStudentName(String studentName) {
+		this.studentName = studentName;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getExamName() {
+		return examName;
+	}
+
+	public void setExamName(String examName) {
+		this.examName = examName;
+	}
+
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+
+	public String getOrgCode() {
+		return orgCode;
+	}
+
+	public void setOrgCode(String orgCode) {
+		this.orgCode = orgCode;
+	}
+
+	public String getOrgName() {
+		return orgName;
+	}
+
+	public void setOrgName(String orgName) {
+		this.orgName = orgName;
+	}
+
+	public String getExamNumber() {
+		return examNumber;
+	}
+
+	public void setExamNumber(String examNumber) {
+		this.examNumber = examNumber;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getCourseLevel() {
+		return courseLevel;
+	}
+
+	public void setCourseLevel(String courseLevel) {
+		this.courseLevel = courseLevel;
+	}
+
+	public String getPaperType() {
+		return paperType;
+	}
+
+	public void setPaperType(String paperType) {
+		this.paperType = paperType;
+	}
+
+	public String getSpecialtyCode() {
+		return specialtyCode;
+	}
+
+	public void setSpecialtyCode(String specialtyCode) {
+		this.specialtyCode = specialtyCode;
+	}
+
+	public String getSpecialtyName() {
+		return specialtyName;
+	}
+
+	public void setSpecialtyName(String specialtyName) {
+		this.specialtyName = specialtyName;
+	}
+
+	public String getExamSite() {
+		return examSite;
+	}
+
+	public void setExamSite(String examSite) {
+		this.examSite = examSite;
+	}
+
+	public String getInfoCollector() {
+		return infoCollector;
+	}
+
+	public void setInfoCollector(String infoCollector) {
+		this.infoCollector = infoCollector;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public String getGrade() {
+		return grade;
+	}
+
+	public void setGrade(String grade) {
+		this.grade = grade;
+	}
+
+	public Boolean getFinished() {
+		return finished;
+	}
+
+	public void setFinished(Boolean finished) {
+		this.finished = finished;
+	}
+
+	public String getUpdateTime() {
+		return updateTime;
+	}
+
+	public void setUpdateTime(String updateTime) {
+		this.updateTime = updateTime;
+	}
+
+}

+ 169 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/Paper.java

@@ -0,0 +1,169 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+
+/**
+ * Created by yuanpan on 2017/1/16.
+ */
+public class Paper {
+
+	private Long pk;
+
+	private String paperId;// bigint(20) DEFAULT NULL COMMENT '试卷ID',
+
+	private String paperName;// varchar(128) DEFAULT NULL COMMENT '试卷名称',
+
+	private String paperType;// varchar(128) DEFAULT NULL COMMENT '试卷名称',
+
+	private Long batchId;// bigint(20) DEFAULT NULL COMMENT '批次id',
+
+	private String paperHtml;// longtext COMMENT '试卷html',
+
+	private String answerHtml;// longtext COMMENT '标准答案html',
+
+	/**
+	 * 客观题总分
+	 */
+	private Double objectiveTotalScore;
+
+	/**
+	 * 主观题总分
+	 */
+	private Double subjectiveTotalScore;
+
+	/**
+     *
+     */
+	private Double paperScore;
+
+	/**
+	 * 课程名称
+	 */
+	private String courseName;
+
+	/**
+	 * 课程代码
+	 */
+	private String courseCode;
+
+	/**
+	 * 专业层次
+	 */
+	private String specialtyLevel;
+
+	/**
+	 * 专业名称
+	 */
+	private String specialtyName;
+
+	public Long getPk() {
+		return pk;
+	}
+
+	public void setPk(Long pk) {
+		this.pk = pk;
+	}
+
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public String getPaperName() {
+		return paperName;
+	}
+
+	public void setPaperName(String paperName) {
+		this.paperName = paperName;
+	}
+
+	public Long getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(Long batchId) {
+		this.batchId = batchId;
+	}
+
+	public String getPaperHtml() {
+		return paperHtml;
+	}
+
+	public void setPaperHtml(String paperHtml) {
+		this.paperHtml = paperHtml;
+	}
+
+	public String getAnswerHtml() {
+		return answerHtml;
+	}
+
+	public void setAnswerHtml(String answerHtml) {
+		this.answerHtml = answerHtml;
+	}
+
+	public Double getObjectiveTotalScore() {
+		return objectiveTotalScore;
+	}
+
+	public void setObjectiveTotalScore(Double objectiveTotalScore) {
+		this.objectiveTotalScore = objectiveTotalScore;
+	}
+
+	public Double getSubjectiveTotalScore() {
+		return subjectiveTotalScore;
+	}
+
+	public void setSubjectiveTotalScore(Double subjectiveTotalScore) {
+		this.subjectiveTotalScore = subjectiveTotalScore;
+	}
+
+	public Double getPaperScore() {
+		return paperScore;
+	}
+
+	public void setPaperScore(Double paperScore) {
+		this.paperScore = paperScore;
+	}
+
+	public String getCourseName() {
+		return courseName;
+	}
+
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+
+	public String getSpecialtyLevel() {
+		return specialtyLevel;
+	}
+
+	public void setSpecialtyLevel(String specialtyLevel) {
+		this.specialtyLevel = specialtyLevel;
+	}
+
+	public String getSpecialtyName() {
+		return specialtyName;
+	}
+
+	public void setSpecialtyName(String specialtyName) {
+		this.specialtyName = specialtyName;
+	}
+
+	public String getPaperType() {
+		return paperType;
+	}
+
+	public void setPaperType(String paperType) {
+		this.paperType = paperType;
+	}
+
+}

+ 129 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/PaperQuestion.java

@@ -0,0 +1,129 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+
+/**
+ * Created by yuanpan on 2017/1/17.
+ */
+public class PaperQuestion {
+
+	private Long pk;
+
+	private Paper paper;
+
+	private Long examQuestionId;
+
+	private String repositoryQuestionId;
+
+	private String body;
+
+	private String answer;
+
+	private Double socre;
+
+	private QuesStructType questionType;
+
+	private Integer orders;
+
+	private Integer mainNumber;
+
+	private Integer subNumber;
+
+	private String parentRepositoryQuestionId;
+
+	public Long getPk() {
+		return pk;
+	}
+
+	public void setPk(Long pk) {
+		this.pk = pk;
+	}
+
+	public Long getExamQuestionId() {
+		return examQuestionId;
+	}
+
+	public void setExamQuestionId(Long examQuestionId) {
+		this.examQuestionId = examQuestionId;
+	}
+
+	public String getRepositoryQuestionId() {
+		return repositoryQuestionId;
+	}
+
+	public void setRepositoryQuestionId(String repositoryQuestionId) {
+		this.repositoryQuestionId = repositoryQuestionId;
+	}
+
+	public String getBody() {
+		return body;
+	}
+
+	public void setBody(String body) {
+		this.body = body;
+	}
+
+	public String getAnswer() {
+		return answer;
+	}
+
+	public void setAnswer(String answer) {
+		this.answer = answer;
+	}
+
+	public Paper getPaper() {
+		return paper;
+	}
+
+	public void setPaper(Paper paper) {
+		this.paper = paper;
+	}
+
+	public Double getSocre() {
+		return socre;
+	}
+
+	public void setSocre(Double socre) {
+		this.socre = socre;
+	}
+
+	public QuesStructType getQuestionType() {
+		return questionType;
+	}
+
+	public void setQuestionType(QuesStructType questionType) {
+		this.questionType = questionType;
+	}
+
+	public Integer getOrders() {
+		return orders;
+	}
+
+	public void setOrders(Integer orders) {
+		this.orders = orders;
+	}
+
+	public Integer getMainNumber() {
+		return mainNumber;
+	}
+
+	public void setMainNumber(Integer mainNumber) {
+		this.mainNumber = mainNumber;
+	}
+
+	public Integer getSubNumber() {
+		return subNumber;
+	}
+
+	public void setSubNumber(Integer subNumber) {
+		this.subNumber = subNumber;
+	}
+
+	public String getParentRepositoryQuestionId() {
+		return parentRepositoryQuestionId;
+	}
+
+	public void setParentRepositoryQuestionId(String parentRepositoryQuestionId) {
+		this.parentRepositoryQuestionId = parentRepositoryQuestionId;
+	}
+}

+ 103 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/PaperStructureDTO.java

@@ -0,0 +1,103 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+
+/**
+ * Created by yuanpan on 2017/1/18.
+ */
+public class PaperStructureDTO {
+
+	private Long pk;// bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+
+	private Long paperPk;// bigint(20) DEFAULT NULL COMMENT '试卷主键',
+
+	private Integer index;// int(11) DEFAULT NULL COMMENT '结构下标',
+
+	private String title;// varchar(180) DEFAULT NULL COMMENT '标题',
+
+	private Double totalScore;// double DEFAULT NULL COMMENT '总分',
+
+	private Integer count;// int(11) DEFAULT NULL COMMENT '题数',
+
+	private Double score;// double DEFAULT NULL COMMENT '每题分值',
+
+	private QuesStructType questionType;// varchar(90) DEFAULT NULL COMMENT
+										// '题目类型',
+
+	private List<PaperQuestion> paperQuestionList = new ArrayList<>();
+
+	public Long getPk() {
+		return pk;
+	}
+
+	public void setPk(Long pk) {
+		this.pk = pk;
+	}
+
+	public Long getPaperPk() {
+		return paperPk;
+	}
+
+	public void setPaperPk(Long paperPk) {
+		this.paperPk = paperPk;
+	}
+
+	public Integer getIndex() {
+		return index;
+	}
+
+	public void setIndex(Integer index) {
+		this.index = index;
+	}
+
+	public String getTitle() {
+		return title;
+	}
+
+	public void setTitle(String title) {
+		this.title = title;
+	}
+
+	public Double getTotalScore() {
+		return totalScore;
+	}
+
+	public void setTotalScore(Double totalScore) {
+		this.totalScore = totalScore;
+	}
+
+	public Integer getCount() {
+		return count;
+	}
+
+	public void setCount(Integer count) {
+		this.count = count;
+	}
+
+	public Double getScore() {
+		return score;
+	}
+
+	public void setScore(Double score) {
+		this.score = score;
+	}
+
+	public QuesStructType getQuestionType() {
+		return questionType;
+	}
+
+	public void setQuestionType(QuesStructType questionType) {
+		this.questionType = questionType;
+	}
+
+	public List<PaperQuestion> getPaperQuestionList() {
+		return paperQuestionList;
+	}
+
+	public void setPaperQuestionList(List<PaperQuestion> paperQuestionList) {
+		this.paperQuestionList = paperQuestionList;
+	}
+}

+ 44 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/PushScoreActionEnum.java

@@ -0,0 +1,44 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+/**
+ * @author  	chenken
+ * @date    	2018年5月21日 下午2:52:47
+ * @company 	QMTH
+ * @description 推送分数的点
+ */
+public enum PushScoreActionEnum {
+	
+	END_EXAM(1,"考试结束"),
+	
+	CLEAN(2,"自动清理"),
+	
+	AUDIT_EXAM(3,"审核"),
+	
+	CAPTURE_STATUSTICS(4,"重新统计");
+	
+	private Integer id;
+	
+	private String desc;
+	
+	private PushScoreActionEnum(int id,String desc){
+		this.id = id;
+		this.desc = desc;
+	}
+
+	public Integer getId() {
+		return id;
+	}
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+
+	public void setDesc(String desc) {
+		this.desc = desc;
+	}
+	
+}
+

+ 109 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/SimpleStudentPaperDTO.java

@@ -0,0 +1,109 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+
+import java.io.Serializable;
+
+/**
+ * Created by yuanpan on 2017/7/24.
+ */
+public class SimpleStudentPaperDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 学生答卷主键
+     */
+    private Long pk;
+
+    private Long paperPk;
+
+    private String studentCode;
+
+    private String studentName;
+
+    private Long campusId;
+    
+    private String identityNumber;
+    /**
+     * 专业层次
+     */
+    private String specialtyLevel;
+    /**
+     * 专业code
+     */
+    private String specialtyCode;
+    /**
+     * 专业名称
+     */
+    private String specialtyName;
+
+    public Long getPk() {
+        return pk;
+    }
+
+    public void setPk(Long pk) {
+        this.pk = pk;
+    }
+
+    public Long getPaperPk() {
+        return paperPk;
+    }
+
+    public void setPaperPk(Long paperPk) {
+        this.paperPk = paperPk;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public Long getCampusId() {
+        return campusId;
+    }
+
+    public void setCampusId(Long campusId) {
+        this.campusId = campusId;
+    }
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+	public String getSpecialtyLevel() {
+		return specialtyLevel;
+	}
+
+	public void setSpecialtyLevel(String specialtyLevel) {
+		this.specialtyLevel = specialtyLevel;
+	}
+
+	public String getSpecialtyCode() {
+		return specialtyCode;
+	}
+
+	public void setSpecialtyCode(String specialtyCode) {
+		this.specialtyCode = specialtyCode;
+	}
+
+	public String getSpecialtyName() {
+		return specialtyName;
+	}
+
+	public void setSpecialtyName(String specialtyName) {
+		this.specialtyName = specialtyName;
+	}
+	
+}

+ 179 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/oe/marking/StudentPaperOE.java

@@ -0,0 +1,179 @@
+package cn.com.qmth.examcloud.common.dto.oe.marking;
+
+/**
+ * Created by yuanpan on 2017/1/17.
+ */
+public class StudentPaperOE {
+
+	/**
+	 * 评卷中的studentPaper的id
+	 */
+	private Long studentPaperId;
+
+	/**
+	 * 学生答卷主键
+	 */
+	private Long pk;
+
+	/**
+	 * 答卷所使用的试卷
+	 */
+	private Paper paper;
+
+	/**
+	 * 考试记录ID
+	 */
+	private Long examRecordId;
+
+	private Long batchId;
+
+	private Long stuUserId;
+	/**
+	 * 学生答卷的HTML
+	 */
+	private String studentPaperHtml;
+
+	/**
+	 * 学生答卷的主观题HTML
+	 */
+	private String studentSubjectiveHtml;
+
+	/**
+	 * 学生答卷的客观题得分
+	 */
+	private Double objectiveScore;
+
+	/**
+	 * 主观题得分
+	 */
+	private Double subjectiveScore;
+
+	private Long campusId;
+
+	private String studentName;
+
+	private String studentCode;
+
+    private String identityNumber;
+
+	public StudentPaperOE() {
+	}
+
+	public StudentPaperOE(Long pk, Double subjectiveScore) {
+		this.pk = pk;
+		this.subjectiveScore = subjectiveScore;
+	}
+
+	public Long getPk() {
+		return pk;
+	}
+
+	public void setPk(Long pk) {
+		this.pk = pk;
+	}
+
+	public Paper getPaper() {
+		return paper;
+	}
+
+	public void setPaper(Paper paper) {
+		this.paper = paper;
+	}
+
+	public String getStudentPaperHtml() {
+		return studentPaperHtml;
+	}
+
+	public void setStudentPaperHtml(String studentPaperHtml) {
+		this.studentPaperHtml = studentPaperHtml;
+	}
+
+	public String getStudentSubjectiveHtml() {
+		return studentSubjectiveHtml;
+	}
+
+	public void setStudentSubjectiveHtml(String studentSubjectiveHtml) {
+		this.studentSubjectiveHtml = studentSubjectiveHtml;
+	}
+
+	public Double getObjectiveScore() {
+		return objectiveScore;
+	}
+
+	public void setObjectiveScore(Double objectiveScore) {
+		this.objectiveScore = objectiveScore;
+	}
+
+	public Long getExamRecordId() {
+		return examRecordId;
+	}
+
+	public void setExamRecordId(Long examRecordId) {
+		this.examRecordId = examRecordId;
+	}
+
+	public Double getSubjectiveScore() {
+		return subjectiveScore;
+	}
+
+	public void setSubjectiveScore(Double subjectiveScore) {
+		this.subjectiveScore = subjectiveScore;
+	}
+
+	public Long getBatchId() {
+		return batchId;
+	}
+
+	public void setBatchId(Long batchId) {
+		this.batchId = batchId;
+	}
+
+	public Long getStuUserId() {
+		return stuUserId;
+	}
+
+	public void setStuUserId(Long stuUserId) {
+		this.stuUserId = stuUserId;
+	}
+
+	public Long getStudentPaperId() {
+		return studentPaperId;
+	}
+
+	public void setStudentPaperId(Long studentPaperId) {
+		this.studentPaperId = studentPaperId;
+	}
+
+	public Long getCampusId() {
+		return campusId;
+	}
+
+	public void setCampusId(Long campusId) {
+		this.campusId = campusId;
+	}
+
+	public String getStudentName() {
+		return studentName;
+	}
+
+	public void setStudentName(String studentName) {
+		this.studentName = studentName;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getIdentityNumber() {
+		return identityNumber;
+	}
+
+	public void setIdentityNumber(String identityNumber) {
+		this.identityNumber = identityNumber;
+	}
+
+}

+ 143 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/print/CoursePaperDto.java

@@ -0,0 +1,143 @@
+package cn.com.qmth.examcloud.common.dto.print;
+
+import java.util.Date;
+/**
+ * @author  	chenken
+ * @date    	2018年3月6日 下午5:39:57
+ * @company 	QMTH
+ * @description 课程试卷关联表
+ */
+public class CoursePaperDto {
+	
+	private Long id;
+	/**
+	 * 机构ID
+	 */
+	private Long orgId;
+	/**
+	 * 考试ID
+	 */
+	private Long examId;
+	/**
+	 * 课程code
+	 */
+	private String courseCode;
+	/**
+	 * 课程名称
+	 */
+	private String courseName;
+	/**
+	 * 试卷ID
+	 */
+	private String paperId;
+	/**
+	 * 试卷名称
+	 */
+	private String paperName;
+	/**
+	 * 试卷P数
+	 */
+	private Integer pNum;
+	/**
+	 * 试卷htmlURL
+	 */
+	private String paperHtmlUrl;
+	/**
+	 * 答案htmlURL
+	 */
+	private String answerHtmlUrl;
+	/**
+	 * 创建时间
+	 */
+	private Date createTime;
+	
+	public CoursePaperDto(){}
+	
+	public CoursePaperDto(Long orgId, Long examId, String courseCode) {
+		this.orgId = orgId;
+		this.examId = examId;
+		this.courseCode = courseCode;
+	}
+
+	public Long getId() {
+		return id;
+	}
+	public void setId(Long id) {
+		this.id = id;
+	}
+	
+	public Long getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+	
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getCourseCode() {
+		return courseCode;
+	}
+	public void setCourseCode(String courseCode) {
+		this.courseCode = courseCode;
+	}
+	public String getCourseName() {
+		return courseName;
+	}
+	public void setCourseName(String courseName) {
+		this.courseName = courseName;
+	}
+	public String getPaperName() {
+		return paperName;
+	}
+	public void setPaperName(String paperName) {
+		this.paperName = paperName;
+	}
+	public Date getCreateTime() {
+		return createTime;
+	}
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Integer getpNum() {
+		return pNum;
+	}
+
+	public void setpNum(Integer pNum) {
+		this.pNum = pNum;
+	}
+
+	public String getPaperId() {
+		return paperId;
+	}
+
+	public void setPaperId(String paperId) {
+		this.paperId = paperId;
+	}
+
+	public String getPaperHtmlUrl() {
+		return paperHtmlUrl;
+	}
+
+	public void setPaperHtmlUrl(String paperHtmlUrl) {
+		this.paperHtmlUrl = paperHtmlUrl;
+	}
+
+	public String getAnswerHtmlUrl() {
+		return answerHtmlUrl;
+	}
+
+	public void setAnswerHtmlUrl(String answerHtmlUrl) {
+		this.answerHtmlUrl = answerHtmlUrl;
+	}
+	
+}
+

+ 76 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/PaperDetailDto.java

@@ -0,0 +1,76 @@
+package cn.com.qmth.examcloud.common.dto.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Created by songyue on 17/3/15.
+ */
+public class PaperDetailDto implements Serializable {
+
+    private static final long serialVersionUID = -3520871668728091404L;
+
+    private String id;
+
+    private Integer number;// 大题序号
+
+    private String cnNum;// 中文序号
+
+    private String name;// 大题名称
+
+    private Double score;// 大题分数
+
+    private List<PaperDetailUnitDto> paperDetailUnits;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public String getCnNum() {
+        return cnNum;
+    }
+
+    public void setCnNum(String cnNum) {
+        this.cnNum = cnNum;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public List<PaperDetailUnitDto> getPaperDetailUnits() {
+        return paperDetailUnits;
+    }
+
+    public void setPaperDetailUnits(List<PaperDetailUnitDto> paperDetailUnits) {
+        this.paperDetailUnits = paperDetailUnits;
+    }
+}

+ 132 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/PaperDetailUnitDto.java

@@ -0,0 +1,132 @@
+package cn.com.qmth.examcloud.common.dto.question;
+
+import java.io.Serializable;
+import java.util.List;
+
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+
+/**
+ * Created by songyue on 17/3/15.
+ */
+public class PaperDetailUnitDto implements Serializable {
+
+    private static final long serialVersionUID = 6507445685386413261L;
+
+    private String id;
+
+    private Integer number;// 小题序号
+
+    private Double score;// 小题分数
+
+    private QuesStructType questionType;// 小题类型
+
+    private List<SubQuestionDto> subQuestions;// 套题下面的子题,如不是套题集合为空
+
+    private String quesId;// 关联试题Id
+
+    private String answer;// 试题答案
+
+    private List<Double> subScoreList;// 对应套题的情况下,各子题的分数分布
+
+    /**
+     * 选择题下option的排序,按照number排序 一般:4,2,3,1 套题下的选择题:1,2,3,4;2,3,4,1;3,2,1,4
+     * 题与题之间按分号";"分隔
+     */
+    private String optionOrder;
+    
+    private String quesBody;// 子题题干,默认为html
+    
+    private List<QuesOptionDto> quesOptions;// 子题选项
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public QuesStructType getQuestionType() {
+        return questionType;
+    }
+
+    public void setQuestionType(QuesStructType questionType) {
+        this.questionType = questionType;
+    }
+
+    public String getQuesId() {
+        return quesId;
+    }
+
+    public void setQuesId(String quesId) {
+        this.quesId = quesId;
+    }
+
+    public String getAnswer() {
+        return answer;
+    }
+
+    public void setAnswer(String answer) {
+        this.answer = answer;
+    }
+
+    public List<SubQuestionDto> getSubQuestions() {
+        return subQuestions;
+    }
+
+    public void setSubQuestions(List<SubQuestionDto> subQuestions) {
+        this.subQuestions = subQuestions;
+    }
+
+    public List<Double> getSubScoreList() {
+        return subScoreList;
+    }
+
+    public void setSubScoreList(List<Double> subScoreList) {
+        this.subScoreList = subScoreList;
+    }
+
+    public String getOptionOrder() {
+        return optionOrder;
+    }
+
+    public void setOptionOrder(String optionOrder) {
+        this.optionOrder = optionOrder;
+    }
+
+	public String getQuesBody() {
+		return quesBody;
+	}
+
+	public void setQuesBody(String quesBody) {
+		this.quesBody = quesBody;
+	}
+	
+	public List<QuesOptionDto> getQuesOptions() {
+		return quesOptions;
+	}
+
+	public void setQuesOptions(List<QuesOptionDto> quesOptions) {
+		this.quesOptions = quesOptions;
+	}
+}

+ 127 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/PaperDto.java

@@ -0,0 +1,127 @@
+package cn.com.qmth.examcloud.common.dto.question;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by songyue on 17/3/15.
+ */
+public class PaperDto implements Serializable{
+    private static final long serialVersionUID = -4673013279766466337L;
+
+    private String id;
+
+    private String name;//试卷名称
+
+    private String title;//试卷标题
+
+    private Double totalScore;//试卷总分
+    /**
+     * 试卷中是否全为客观题
+     * 是:true
+     * 否:false
+     */
+    private boolean isAllQbjectiveQuestion;
+    
+    private List<PaperDetailDto> paperDetails;
+
+    private Map<String,String> params;//导入试卷属性
+
+    /**
+     * 调卷规则原始试卷ID
+     */
+    private String basePaperId;
+    
+    /**
+     * 是否包含音频题
+     */
+    private Boolean hasAudio;
+    
+    private String examRemark;//考试说明
+    
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public List<PaperDetailDto> getPaperDetails() {
+        return paperDetails;
+    }
+
+    public void setPaperDetails(List<PaperDetailDto> paperDetails) {
+        this.paperDetails = paperDetails;
+    }
+
+    public Map<String, String> getParams() {
+        return params;
+    }
+
+    public void setParams(Map<String, String> params) {
+        this.params = params;
+    }
+
+	public String getBasePaperId() {
+		return basePaperId;
+	}
+
+	public void setBasePaperId(String basePaperId) {
+		this.basePaperId = basePaperId;
+	}
+
+	public boolean isAllQbjectiveQuestion() {
+		return isAllQbjectiveQuestion;
+	}
+
+	public void setAllQbjectiveQuestion(boolean isAllQbjectiveQuestion) {
+		this.isAllQbjectiveQuestion = isAllQbjectiveQuestion;
+	}
+
+	public Boolean getHasAudio() {
+		return hasAudio;
+	}
+
+	public void setHasAudio(Boolean hasAudio) {
+		this.hasAudio = hasAudio;
+	}
+
+	public String getExamRemark() {
+		return examRemark;
+	}
+
+	public void setExamRemark(String examRemark) {
+		this.examRemark = examRemark;
+	}
+    
+}

+ 33 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/QuesOptionDto.java

@@ -0,0 +1,33 @@
+package cn.com.qmth.examcloud.common.dto.question;
+
+import java.io.Serializable;
+
+public class QuesOptionDto implements Serializable {
+
+    private static final long serialVersionUID = -49939145760800880L;
+
+    private String number;// 选项编号
+
+    private String optionBody;// 选项内容
+
+    public String getNumber() {
+        return number;
+    }
+
+    public void setNumber(String number) {
+        this.number = number;
+    }
+
+    public String getOptionBody() {
+        return optionBody;
+    }
+
+    public void setOptionBody(String optionBody) {
+        this.optionBody = optionBody;
+    }
+
+    public static long getSerialversionuid() {
+        return serialVersionUID;
+    }
+
+}

+ 122 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/QuestionDto.java

@@ -0,0 +1,122 @@
+package cn.com.qmth.examcloud.common.dto.question;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+
+public class QuestionDto implements Serializable {
+
+    private static final long serialVersionUID = 1866951329075565891L;
+
+    private String id;
+
+    private String quesBody;// 题干,默认为html
+
+    private String quesAnswer;// 答案,默认为html
+
+    private List<SubQuestionDto> subQuestions;// 子题目,用于套题
+
+    private List<QuesOptionDto> quesOptions;// 试题选项
+
+    private QuesStructType questionType;// 试题结构类型
+
+    private Map<String, String> quesParams;// 试题属性
+
+    private Double score;// 预设分值
+
+    /**
+     * 是否包含音频
+     */
+    private Boolean hasAudio;
+    /**
+     * 播放次数
+     */
+    private Integer playTime;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getQuesBody() {
+        return quesBody;
+    }
+
+    public void setQuesBody(String quesBody) {
+        this.quesBody = quesBody;
+    }
+
+    public String getQuesAnswer() {
+        return quesAnswer;
+    }
+
+    public void setQuesAnswer(String quesAnswer) {
+        this.quesAnswer = quesAnswer;
+    }
+
+    public List<QuesOptionDto> getQuesOptions() {
+        return quesOptions;
+    }
+
+    public void setQuesOptions(List<QuesOptionDto> quesOptions) {
+        this.quesOptions = quesOptions;
+    }
+
+    public QuesStructType getQuestionType() {
+        return questionType;
+    }
+
+    public void setQuestionType(QuesStructType questionType) {
+        this.questionType = questionType;
+    }
+
+    public Map<String, String> getQuesParams() {
+        return quesParams;
+    }
+
+    public void setQuesParams(Map<String, String> quesParams) {
+        this.quesParams = quesParams;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Double getScore() {
+        return score == null ? 0 : score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public List<SubQuestionDto> getSubQuestions() {
+        return subQuestions;
+    }
+
+    public void setSubQuestions(List<SubQuestionDto> subQuestions) {
+        this.subQuestions = subQuestions;
+    }
+
+    public Boolean getHasAudio() {
+        return hasAudio;
+    }
+
+    public void setHasAudio(Boolean hasAudio) {
+        this.hasAudio = hasAudio;
+    }
+
+    public Integer getPlayTime() {
+        return playTime;
+    }
+
+    public void setPlayTime(Integer playTime) {
+        this.playTime = playTime;
+    }
+
+}

+ 82 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/SubQuestionDto.java

@@ -0,0 +1,82 @@
+package cn.com.qmth.examcloud.common.dto.question;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+import cn.com.qmth.examcloud.common.dto.question.enums.QuesStructType;
+
+public class SubQuestionDto implements Serializable {
+
+    private static final long serialVersionUID = -7612222458755752097L;
+
+    private Integer number;// 子题的序号
+
+    private String quesBody;// 子题题干,默认为html
+
+    private String quesAnswer;// 子题答案,默认为html
+
+    private List<QuesOptionDto> quesOptions;// 子题选项
+
+    private QuesStructType questionType;// 子题结构类型
+
+    private Map<String, String> quesParams;// 试题属性
+
+    private Double score;// 预设分值
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public String getQuesBody() {
+        return quesBody;
+    }
+
+    public void setQuesBody(String quesBody) {
+        this.quesBody = quesBody;
+    }
+
+    public String getQuesAnswer() {
+        return quesAnswer;
+    }
+
+    public void setQuesAnswer(String quesAnswer) {
+        this.quesAnswer = quesAnswer;
+    }
+
+    public List<QuesOptionDto> getQuesOptions() {
+        return quesOptions;
+    }
+
+    public void setQuesOptions(List<QuesOptionDto> quesOptions) {
+        this.quesOptions = quesOptions;
+    }
+
+    public QuesStructType getQuestionType() {
+        return questionType;
+    }
+
+    public void setQuestionType(QuesStructType questionType) {
+        this.questionType = questionType;
+    }
+
+    public Map<String, String> getQuesParams() {
+        return quesParams;
+    }
+
+    public void setQuesParams(Map<String, String> quesParams) {
+        this.quesParams = quesParams;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+}

+ 97 - 0
examcloud-exchange-base/src/main/java/cn/com/qmth/examcloud/common/dto/question/enums/QuesStructType.java

@@ -0,0 +1,97 @@
+package cn.com.qmth.examcloud.common.dto.question.enums;
+
+public enum QuesStructType {
+	
+	/**
+	 * 单选
+	 */
+	SINGLE_ANSWER_QUESTION(1L,"单选",true,false),
+	/**
+	 * 多选
+	 */
+	MULTIPLE_ANSWER_QUESTION(2L,"多选",true,false),
+	/**
+	 * 判断
+	 */
+	BOOL_ANSWER_QUESTION(3L,"判断",true,false),
+	/**
+	 * 填空
+	 */
+	FILL_BLANK_QUESTION(4L,"填空",false,false),
+	/**
+	 * 问答
+	 */
+	TEXT_ANSWER_QUESTION(5L,"问答",false,false),
+	/**
+	 * 套题
+	 */
+	NESTED_ANSWER_QUESTION(6L,"套题",false,true);
+	
+	private Long id;
+	private String name;
+	private boolean objective;//是否是客观题
+	private boolean combline;//是否是组合题
+		
+	private QuesStructType(Long id, String name, boolean objective, boolean combline) {
+		this.id = id;
+		this.name = name;;
+		this.objective = objective;
+		this.combline = combline;
+	}
+	
+	/**
+	 * 通过ID获取试题类型
+	 * @param id
+	 * @return
+	 */
+	public static QuesStructType getQuesStructTypeById(Long id){
+		for(QuesStructType type:QuesStructType.values()){
+			if(type.getId()==id){
+				return type;
+			}
+		}
+		return null;
+	}
+	
+	private QuesStructType(){
+		
+	}
+
+	public Long getId() {
+		return id;
+	}
+
+	public void setId(Long id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public boolean isObjective() {
+		return objective;
+	}
+
+	public void setObjective(boolean objective) {
+		this.objective = objective;
+	}
+
+	public boolean isCombline() {
+		return combline;
+	}
+
+	public void setCombline(boolean combline) {
+		this.combline = combline;
+	}
+
+	public String toString(){
+		return getName();
+	}
+	
+}
+