Преглед изворни кода

定义云阅卷相关接口结构

lideyin пре 5 година
родитељ
комит
c2d234cfd6
13 измењених фајлова са 762 додато и 0 уклоњено
  1. 117 0
      examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/provider/ExamQuestionOuterServiceProvider.java
  2. 35 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/ExamQuestionOuterService.java
  3. 63 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterBlockBean.java
  4. 128 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterExamRecordBean.java
  5. 25 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSectionBean.java
  6. 25 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSectionCollectionBean.java
  7. 63 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSubjectivePaperStructBean.java
  8. 61 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSubjectiveQuestionBean.java
  9. 93 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSubjectiveQuestionRecordBean.java
  10. 26 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/request/OuterGetSubjectivePaperStructReq.java
  11. 59 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/request/OuterGetSubjectiveQuestionReq.java
  12. 27 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/response/OuterGetSubjectivePaperStructResp.java
  13. 40 0
      examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/response/OuterGetSubjectiveQuestionResp.java

+ 117 - 0
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/provider/ExamQuestionOuterServiceProvider.java

@@ -0,0 +1,117 @@
+package cn.com.qmth.examcloud.exchange.outer.api.provider;
+
+import cn.com.qmth.examcloud.commons.exception.StatusException;
+import cn.com.qmth.examcloud.core.oe.admin.api.ExamScoreObtainQueueCloudService;
+import cn.com.qmth.examcloud.core.oe.admin.api.request.DeleteExamScoreQueueReq;
+import cn.com.qmth.examcloud.core.oe.admin.api.request.GetTopExamScoreQueueReq;
+import cn.com.qmth.examcloud.core.oe.admin.api.response.GetTopExamScoreQueueResp;
+import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
+import cn.com.qmth.examcloud.examwork.api.bean.ExamBean;
+import cn.com.qmth.examcloud.examwork.api.request.GetExamReq;
+import cn.com.qmth.examcloud.examwork.api.response.GetExamResp;
+import cn.com.qmth.examcloud.exchange.outer.api.ScoreQueueService;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterDeleteScoreQueueTopReq;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterGetScoreQueueTopReq;
+import cn.com.qmth.examcloud.exchange.outer.api.response.OuterDeleteScoreQueueTopResp;
+import cn.com.qmth.examcloud.exchange.outer.api.response.OuterGetScoreQueueTopResp;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import cn.com.qmth.examcloud.web.support.StatusResponse;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+/**
+ * @Description 考试作答服务
+ * @Author lideyin
+ * @Date 2020/3/30 14:48
+ * @Version 1.0
+ */
+@Api("考试作答服务")
+@RestController
+@RequestMapping("${$rmp.cloud.exchange.outer}/scoreQueue")
+public class ExamQuestionOuterServiceProvider extends ControllerSupport implements ScoreQueueService {
+
+	/**
+	 *
+	 */
+	private static final long serialVersionUID = -7975687672489564748L;
+
+	@Autowired
+	private ExamScoreObtainQueueCloudService examScoreObtainQueueCloudService;
+	@Autowired
+	private ExamCloudService examCloudService;
+
+
+
+	@ApiOperation(value = "取队列最顶层记录", httpMethod = "POST")
+	@ApiResponses({@ApiResponse(code = 200, message = "成功", response = OuterGetScoreQueueTopResp.class),
+			@ApiResponse(code = 500, message = "系统异常(异常信息见响应体)", response = StatusResponse.class)})
+	@PostMapping("/getScoreQueueTop")
+	@Override
+	public OuterGetScoreQueueTopResp getScoreQueueTop(@RequestBody OuterGetScoreQueueTopReq req) {
+		if (!getEnterpriseRootOrgId().equals(req.getRootOrgId())) {
+			throw new StatusException("1000001", "rootOrgId is wrong");
+		}
+		GetTopExamScoreQueueReq getTopExamScoreQueueReq = new GetTopExamScoreQueueReq();
+		getTopExamScoreQueueReq.setRootOrgId(req.getRootOrgId());
+		GetTopExamScoreQueueResp getTopExamScoreQueueResp = examScoreObtainQueueCloudService.getTopExamScoreQueue(getTopExamScoreQueueReq);
+		OuterGetScoreQueueTopResp resp = new OuterGetScoreQueueTopResp();
+
+		//返回值不为空数据
+		if(!getTopExamScoreQueueResp.getIsEmpty()){
+			resp.setQueueId(getTopExamScoreQueueResp.getQueueId());
+			resp.setExamRecordDataId(getTopExamScoreQueueResp.getExamRecordDataId());
+			Long examId=getTopExamScoreQueueResp.getExamId();
+			GetExamReq getExamReq=new GetExamReq();
+			getExamReq.setId(examId);
+			//获取考试详情
+			GetExamResp getExamResp = examCloudService.getExam(getExamReq);
+			if(getExamResp!=null) {
+				resp.setExamId(examId);//考试id
+				ExamBean examBean = getExamResp.getExamBean();
+				if(examBean!=null) {
+					//需求调整201911216:code和name都返回为code
+					resp.setExamCode(examBean.getCode());
+					resp.setExamName(examBean.getCode());
+				}
+			}
+			resp.setIsEmpty(false);//返回的为非空数据
+		}else {
+			resp.setIsEmpty(true);//返回的为空数据
+		}
+		return resp;
+	}
+
+	@ApiOperation(value = "删除队列最顶层记录", httpMethod = "POST")
+	@ApiResponses({@ApiResponse(code = 200, message = "成功", response = OuterDeleteScoreQueueTopResp.class),
+			@ApiResponse(code = 500, message = "系统异常(异常信息见响应体)", response = StatusResponse.class)})
+	@PostMapping("/deleteScoreQueueTop")
+	@Override
+	public OuterDeleteScoreQueueTopResp deleteScoreQueueTop(@RequestBody OuterDeleteScoreQueueTopReq req) {
+		if (!getEnterpriseRootOrgId().equals(req.getRootOrgId())) {
+			throw new StatusException("1000001", "rootOrgId is wrong");
+		}
+		GetTopExamScoreQueueReq getTopExamScoreQueueReq = new GetTopExamScoreQueueReq();
+		getTopExamScoreQueueReq.setRootOrgId(req.getRootOrgId());
+		GetTopExamScoreQueueResp getTopExamScoreQueueResp = examScoreObtainQueueCloudService.getTopExamScoreQueue(getTopExamScoreQueueReq);
+
+		if(getTopExamScoreQueueResp.getQueueId()==null || (getTopExamScoreQueueResp.getQueueId()!=null && !getTopExamScoreQueueResp.getQueueId().equals(req.getQueueId()))){
+			throw new StatusException("1000003", "queueId is wrong");
+		}
+
+		DeleteExamScoreQueueReq deleteExamScoreQueueReq = new DeleteExamScoreQueueReq();
+		deleteExamScoreQueueReq.setQueueId(req.getQueueId());
+		deleteExamScoreQueueReq.setRootOrgId(req.getRootOrgId());
+		examScoreObtainQueueCloudService.deleteExamScoreQueue(deleteExamScoreQueueReq);
+		OuterDeleteScoreQueueTopResp resp = new OuterDeleteScoreQueueTopResp();
+		resp.setIsSuccess(true);
+		resp.setDesc("删除成功");
+		return resp;
+	}
+
+}

+ 35 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/ExamQuestionOuterService.java

@@ -0,0 +1,35 @@
+package cn.com.qmth.examcloud.exchange.outer.api;
+
+import cn.com.qmth.examcloud.api.commons.EnterpriseService;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterDeleteScoreQueueTopReq;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterGetScoreQueueTopReq;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterGetSubjectivePaperStructReq;
+import cn.com.qmth.examcloud.exchange.outer.api.request.OuterGetSubjectiveQuestionReq;
+import cn.com.qmth.examcloud.exchange.outer.api.response.OuterDeleteScoreQueueTopResp;
+import cn.com.qmth.examcloud.exchange.outer.api.response.OuterGetScoreQueueTopResp;
+import cn.com.qmth.examcloud.exchange.outer.api.response.OuterGetSubjectivePaperStructResp;
+import cn.com.qmth.examcloud.exchange.outer.api.response.OuterGetSubjectiveQuestionResp;
+
+
+/**
+ * @Description 考试作答服务
+ * @Author lideyin
+ * @Date 2020/3/30 15:19
+ * @Version 1.0
+ */
+public interface ExamQuestionOuterService extends EnterpriseService{
+
+	/**
+	 * 获取主观题试卷结构
+	 * @param req
+	 * @return
+	 */
+	OuterGetSubjectivePaperStructResp getSubjectivePaperStruct(OuterGetSubjectivePaperStructReq req);
+
+	/**
+	 * 获取主观题作答结果
+	 * @param req
+	 * @return
+	 */
+	OuterGetSubjectiveQuestionResp getSubjectiveQuestion(OuterGetSubjectiveQuestionReq req);
+}

+ 63 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterBlockBean.java

@@ -0,0 +1,63 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import java.util.Map;
+
+/**
+ * @Description 从题库拷过来的代码,用于处理导出阅卷数据 ,见ExamRecordQuestionsCloudServiceProvider
+ * @Author lideyin
+ * @Date 2020/3/2 18:35
+ * @Version 1.0
+ */
+public class OuterBlockBean {
+    /**
+     * text:文字
+     * image:图片
+     * audio:音频
+     * video:视频
+     */
+    private String type;
+    /**
+     * 资源相对路径
+     */
+    private String value;
+    /**
+     * 播放次数
+     */
+    private Integer playTime;
+
+    private Map<String, Object> param;
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public Map<String, Object> getParam() {
+        return param;
+    }
+
+    public void setParam(Map<String, Object> param) {
+        this.param = param;
+    }
+
+    public Integer getPlayTime() {
+        return playTime;
+    }
+
+    public void setPlayTime(Integer playTime) {
+        this.playTime = playTime;
+    }
+
+}
+

+ 128 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterExamRecordBean.java

@@ -0,0 +1,128 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description 主观题考试记录实体
+ * @Author lideyin
+ * @Date 2020/3/30 16:06
+ * @Version 1.0
+ */
+@ApiModel(value = "OuterExamRecordBean", description = "主观题考试记录")
+public class OuterExamRecordBean implements JsonSerializable{
+	private static final long serialVersionUID = 2318585091725308489L;
+
+	@ApiModelProperty(value = "考试id", example = "1", required = true)
+	private Long examId;
+
+	@ApiModelProperty(value = "考生学号(对应网考的身份证号)", example = "111", required = true)
+	private String studentCode;
+	
+	@ApiModelProperty(value = "考生姓名", example = "XX", required = true)
+	private String name;
+	
+	@ApiModelProperty(value = "学院/年级", example = "XX", required = false)
+	private String college;
+
+	@ApiModelProperty(value = "班级", example = "", required = false)
+	private String className;
+
+	@ApiModelProperty(value = "教师", example = "", required = false)
+	private String teacher;
+
+	@ApiModelProperty(value = "科目代码", example = "", required = true)
+	private String subjectCode;
+
+	@ApiModelProperty(value = "科目名称", example = "", required = true)
+	private String subjectName;
+
+	@ApiModelProperty(value = "考生唯一标识(对应网考的考试记录id)", example = "", required = true)
+	private String examNumber;
+
+	@ApiModelProperty(value = "主观题作答集合", example = "[{}]", required = false)
+	private List<OuterSubjectiveQuestionRecordBean> subjectives;
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getStudentCode() {
+		return studentCode;
+	}
+
+	public void setStudentCode(String studentCode) {
+		this.studentCode = studentCode;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getCollege() {
+		return college;
+	}
+
+	public void setCollege(String college) {
+		this.college = college;
+	}
+
+	public String getClassName() {
+		return className;
+	}
+
+	public void setClassName(String className) {
+		this.className = className;
+	}
+
+	public String getTeacher() {
+		return teacher;
+	}
+
+	public void setTeacher(String teacher) {
+		this.teacher = teacher;
+	}
+
+	public String getSubjectCode() {
+		return subjectCode;
+	}
+
+	public void setSubjectCode(String subjectCode) {
+		this.subjectCode = subjectCode;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public String getExamNumber() {
+		return examNumber;
+	}
+
+	public void setExamNumber(String examNumber) {
+		this.examNumber = examNumber;
+	}
+
+	public List<OuterSubjectiveQuestionRecordBean> getSubjectives() {
+		return subjectives;
+	}
+
+	public void setSubjectives(List<OuterSubjectiveQuestionRecordBean> subjectives) {
+		this.subjectives = subjectives;
+	}
+}

+ 25 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSectionBean.java

@@ -0,0 +1,25 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import java.util.List;
+
+/**
+ * @Description 节点
+ * @Author lideyin
+ * @Date 2020/3/30 17:00
+ * @Version 1.0
+ */
+public class OuterSectionBean {
+
+    private List<OuterBlockBean> blocks;
+
+    public List<OuterBlockBean> getBlocks() {
+        return blocks;
+    }
+
+    public void setBlocks(List<OuterBlockBean> blocks) {
+        this.blocks = blocks;
+    }
+
+
+}
+

+ 25 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSectionCollectionBean.java

@@ -0,0 +1,25 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import java.util.List;
+
+/**
+ * @Description 节点集合
+ * @Author lideyin
+ * @Date 2020/3/30 16:59
+ * @Version 1.0
+ */
+public class OuterSectionCollectionBean {
+
+    private List<OuterSectionBean> sections;
+
+    public List<OuterSectionBean> getSections() {
+        return sections;
+    }
+
+    public void setSections(List<OuterSectionBean> sections) {
+        this.sections = sections;
+    }
+
+
+}
+

+ 63 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSubjectivePaperStructBean.java

@@ -0,0 +1,63 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description 主观题试卷结构实体
+ * @Author lideyin
+ * @Date 2020/3/30 15:37
+ * @Version 1.0
+ */
+@ApiModel(value = "OuterSubjectivePaperStructBean", description = "考生成绩数据")
+public class OuterSubjectivePaperStructBean implements JsonSerializable{
+
+	private static final long serialVersionUID = -861207406409903426L;
+
+	@ApiModelProperty(value = "考试ID", example = "1", required = true)
+	private Long examId;
+	
+	@ApiModelProperty(value = "科目代码", example = "XX", required = true)
+	private String subjectCode;
+	
+	@ApiModelProperty(value = "科目名称", example = "XX", required = true)
+	private String subjectName;
+
+	@ApiModelProperty(value = "主观题集合", example = "[]", required = true)
+	private List<OuterSubjectiveQuestionBean> questionList;
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public String getSubjectCode() {
+		return subjectCode;
+	}
+
+	public void setSubjectCode(String subjectCode) {
+		this.subjectCode = subjectCode;
+	}
+
+	public String getSubjectName() {
+		return subjectName;
+	}
+
+	public void setSubjectName(String subjectName) {
+		this.subjectName = subjectName;
+	}
+
+	public List<OuterSubjectiveQuestionBean> getQuestionList() {
+		return questionList;
+	}
+
+	public void setQuestionList(List<OuterSubjectiveQuestionBean> questionList) {
+		this.questionList = questionList;
+	}
+}

+ 61 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSubjectiveQuestionBean.java

@@ -0,0 +1,61 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description 主观题实体
+ * @Author lideyin
+ * @Date 2020/3/30 16:05
+ * @Version 1.0
+ */
+@ApiModel(value = "OuterSubjectiveQuestionBean", description = "考生成绩数据")
+public class OuterSubjectiveQuestionBean implements JsonSerializable{
+
+	private static final long serialVersionUID = -861207406409903426L;
+
+	@ApiModelProperty(value = "大题号", example = "1", required = true)
+	private Integer mainNumber;
+	
+	@ApiModelProperty(value = "大题名称", example = "XX", required = true)
+	private String mainTitle;
+	
+	@ApiModelProperty(value = "小题号", example = "XX", required = true)
+	private String subNumber;
+
+	@ApiModelProperty(value = "小题分", example = "1", required = true)
+	private Double totalScore;
+
+	public Integer getMainNumber() {
+		return mainNumber;
+	}
+
+	public void setMainNumber(Integer mainNumber) {
+		this.mainNumber = mainNumber;
+	}
+
+	public String getMainTitle() {
+		return mainTitle;
+	}
+
+	public void setMainTitle(String mainTitle) {
+		this.mainTitle = mainTitle;
+	}
+
+	public String getSubNumber() {
+		return subNumber;
+	}
+
+	public void setSubNumber(String subNumber) {
+		this.subNumber = subNumber;
+	}
+
+	public Double getTotalScore() {
+		return totalScore;
+	}
+
+	public void setTotalScore(Double totalScore) {
+		this.totalScore = totalScore;
+	}
+}

+ 93 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/bean/OuterSubjectiveQuestionRecordBean.java

@@ -0,0 +1,93 @@
+package cn.com.qmth.examcloud.exchange.outer.api.bean;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description 主观题作答记录实体
+ * @Author lideyin
+ * @Date 2020/3/30 16:43
+ * @Version 1.0
+ */
+@ApiModel(value = "OuterSubjectiveQuestionRecordBean", description = "主观题作答记录实体")
+public class OuterSubjectiveQuestionRecordBean implements JsonSerializable{
+	private static final long serialVersionUID = 5992269834285704045L;
+
+	@ApiModelProperty(value = "大题号", example = "1", required = true)
+	private Integer mainNumber;
+
+	@ApiModelProperty(value = "小题号", example = "XX", required = true)
+	private String subNumber;
+
+	@ApiModelProperty(value = "试题id,String,一个套题共用一个questionId", example = "1", required = true)
+	private String questionId;
+
+	@ApiModelProperty(value = "标准答案", example = "{}", required = false)
+	private OuterSectionCollectionBean answer;
+
+	@ApiModelProperty(value = "学生答案", example = "{}", required = false)
+	private OuterSectionCollectionBean studentAnswer;
+
+	@ApiModelProperty(value = "题干", example = "{}", required = true)
+	private OuterSectionCollectionBean body;
+
+	@ApiModelProperty(value = "父题干", example = "{}", required = false)
+	private OuterSectionCollectionBean parentBody;
+
+	public Integer getMainNumber() {
+		return mainNumber;
+	}
+
+	public void setMainNumber(Integer mainNumber) {
+		this.mainNumber = mainNumber;
+	}
+
+	public String getSubNumber() {
+		return subNumber;
+	}
+
+	public void setSubNumber(String subNumber) {
+		this.subNumber = subNumber;
+	}
+
+	public String getQuestionId() {
+		return questionId;
+	}
+
+	public void setQuestionId(String questionId) {
+		this.questionId = questionId;
+	}
+
+	public OuterSectionCollectionBean getAnswer() {
+		return answer;
+	}
+
+	public void setAnswer(OuterSectionCollectionBean answer) {
+		this.answer = answer;
+	}
+
+	public OuterSectionCollectionBean getStudentAnswer() {
+		return studentAnswer;
+	}
+
+	public void setStudentAnswer(OuterSectionCollectionBean studentAnswer) {
+		this.studentAnswer = studentAnswer;
+	}
+
+	public OuterSectionCollectionBean getBody() {
+		return body;
+	}
+
+	public void setBody(OuterSectionCollectionBean body) {
+		this.body = body;
+	}
+
+	public OuterSectionCollectionBean getParentBody() {
+		return parentBody;
+	}
+
+	public void setParentBody(OuterSectionCollectionBean parentBody) {
+		this.parentBody = parentBody;
+	}
+}

+ 26 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/request/OuterGetSubjectivePaperStructReq.java

@@ -0,0 +1,26 @@
+package cn.com.qmth.examcloud.exchange.outer.api.request;
+
+import cn.com.qmth.examcloud.api.commons.exchange.EnterpriseRequest;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description 获取主观题试卷结构请求类
+ * @Author lideyin
+ * @Date 2020/3/30 15:24
+ * @Version 1.0
+ */
+public class OuterGetSubjectivePaperStructReq extends EnterpriseRequest {
+
+	private static final long serialVersionUID = 8892205616387684966L;
+
+	@ApiModelProperty(value = "考试ID", example = "128", required = true)
+	private Long examId;
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+}

+ 59 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/request/OuterGetSubjectiveQuestionReq.java

@@ -0,0 +1,59 @@
+package cn.com.qmth.examcloud.exchange.outer.api.request;
+
+import cn.com.qmth.examcloud.api.commons.exchange.EnterpriseRequest;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description 获取主观题考试作答请求类
+ * @Author lideyin
+ * @Date 2020/3/30 15:25
+ * @Version 1.0
+ */
+public class OuterGetSubjectiveQuestionReq extends EnterpriseRequest {
+
+	private static final long serialVersionUID = 8303860788475413215L;
+
+	@ApiModelProperty(value = "考试ID", example = "128", required = true)
+	private Long examId;
+
+	@ApiModelProperty(value = "科目代码", example = "128", required = true)
+	private Long subjectCode;
+
+	@ApiModelProperty(value = "考试记录id,Long,第一次调用传0,下次调用,用返回的nextId", example = "0", required = true)
+	private Long startId;
+
+	@ApiModelProperty(value = "考试记录集合大小,最大不得超过500", example = "200", required = true)
+	private Long size;
+
+	public Long getExamId() {
+		return examId;
+	}
+
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+
+	public Long getSubjectCode() {
+		return subjectCode;
+	}
+
+	public void setSubjectCode(Long subjectCode) {
+		this.subjectCode = subjectCode;
+	}
+
+	public Long getStartId() {
+		return startId;
+	}
+
+	public void setStartId(Long startId) {
+		this.startId = startId;
+	}
+
+	public Long getSize() {
+		return size;
+	}
+
+	public void setSize(Long size) {
+		this.size = size;
+	}
+}

+ 27 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/response/OuterGetSubjectivePaperStructResp.java

@@ -0,0 +1,27 @@
+package cn.com.qmth.examcloud.exchange.outer.api.response;
+
+import cn.com.qmth.examcloud.api.commons.exchange.EnterpriseResponse;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.OuterScoreDataBean;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.OuterSubjectivePaperStructBean;
+
+import java.util.List;
+
+/**
+ * @Description 获取主观题试卷结构响应类
+ * @Author lideyin
+ * @Date 2020/3/30 15:31
+ * @Version 1.0
+ */
+public class OuterGetSubjectivePaperStructResp extends EnterpriseResponse{
+	private static final long serialVersionUID = -3599160726204259551L;
+
+	private List<OuterSubjectivePaperStructBean> paperStructList;
+
+	public List<OuterSubjectivePaperStructBean> getPaperStructList() {
+		return paperStructList;
+	}
+
+	public void setPaperStructList(List<OuterSubjectivePaperStructBean> paperStructList) {
+		this.paperStructList = paperStructList;
+	}
+}

+ 40 - 0
examcloud-exchange-outer-api/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/response/OuterGetSubjectiveQuestionResp.java

@@ -0,0 +1,40 @@
+package cn.com.qmth.examcloud.exchange.outer.api.response;
+
+import cn.com.qmth.examcloud.api.commons.exchange.EnterpriseResponse;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.OuterExamRecordBean;
+import cn.com.qmth.examcloud.exchange.outer.api.bean.OuterScoreDataBean;
+import io.swagger.annotations.ApiModelProperty;
+import java.util.List;
+
+/**
+ * @Description 获取主观题作答结果响应类
+ * @Author lideyin
+ * @Date 2020/3/30 15:30
+ * @Version 1.0
+ */
+public class OuterGetSubjectiveQuestionResp extends EnterpriseResponse{
+
+	private static final long serialVersionUID = -8015424509347237754L;
+
+	@ApiModelProperty(value = "下一个考试记录ID,如果已经是最后一条数据,则此值和startId相等", example = "128", required = true)
+	private Long nextId;
+
+	@ApiModelProperty(value = "考试记录集合", example = "[{'id':1}]", required = true)
+	private List<OuterExamRecordBean> dataList;
+
+	public Long getNextId() {
+		return nextId;
+	}
+
+	public void setNextId(Long nextId) {
+		this.nextId = nextId;
+	}
+
+	public List<OuterExamRecordBean> getDataList() {
+		return dataList;
+	}
+
+	public void setDataList(List<OuterExamRecordBean> dataList) {
+		this.dataList = dataList;
+	}
+}