Browse Source

3.3.0 评卷端接口

ting.yin 1 year ago
parent
commit
83c961795a

+ 76 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkController.java

@@ -1,13 +1,29 @@
 package com.qmth.distributed.print.api.mark;
 package com.qmth.distributed.print.api.mark;
 
 
+import java.util.List;
 
 
-import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
+import javax.servlet.http.HttpServletRequest;
 
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkGroupDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkSettingDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkStatusDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
+import com.qmth.teachcloud.mark.params.MarkResult;
+import com.qmth.teachcloud.mark.service.MarkService;
+
+import io.swagger.annotations.Api;
+
 /**
 /**
  * <p>
  * <p>
  * 评卷端接口 前端控制器
  * 评卷端接口 前端控制器
@@ -21,4 +37,60 @@ import org.springframework.web.bind.annotation.RestController;
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/mark")
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/mark")
 public class MarkController {
 public class MarkController {
 
 
+	@Autowired
+	private MarkService markService;
+
+	@RequestMapping(value = "/getSetting", method = RequestMethod.POST)
+	public MarkSettingDto getSetting(@RequestParam Long examId, @RequestParam String paperNumber,
+			@RequestParam Integer groupNumber) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+		return markService.getSetting(user.getId(), examId, paperNumber, groupNumber);
+	}
+
+	@RequestMapping(value = "/getStatus", method = RequestMethod.POST)
+	public MarkStatusDto status(@RequestParam Long examId, @RequestParam String paperNumber,
+			@RequestParam Integer groupNumber) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+		return markService.getStatus(user.getId(), examId, paperNumber, groupNumber);
+	}
+
+	@RequestMapping(value = "/getGroup", method = RequestMethod.POST)
+	@ResponseBody
+	public List<MarkGroupDto> getGroup(@RequestParam Long examId, @RequestParam String paperNumber) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+		return markService.getGroup(user.getId(), examId, paperNumber);
+	}
+
+	@RequestMapping(value = "/getTask", method = RequestMethod.POST)
+	public MarkTaskDto getTask(@RequestParam Long examId, @RequestParam String paperNumber,
+			@RequestParam Integer groupNumber) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+		return markService.getTask(user.getId(), examId, paperNumber);
+	}
+
+	@RequestMapping(value = "/saveTask")
+	public void saveTask(HttpServletRequest request, @RequestBody MarkResult markResult) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+	}
+
+	@RequestMapping(value = "/getHistory", method = RequestMethod.POST)
+	public List<MarkTaskDto> getHistory(HttpServletRequest request, @RequestParam int pageNumber,
+			@RequestParam int pageSize, @RequestParam String order, @RequestParam String sort,
+			@RequestParam(required = false) String secretNumber, @RequestParam(required = false) Double markerScore)
+			throws Exception {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+		return markService.getHistory(user.getId());
+	}
+
+	@RequestMapping(value = "/updateSetting", method = RequestMethod.POST)
+	public void updateSetting(HttpServletRequest request, @RequestParam(required = false) String uiSetting,
+			@RequestParam(required = false) String mode) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+	}
+
+	@RequestMapping("/clear")
+	public void clear(HttpServletRequest request) {
+		SysUser user = (SysUser) ServletUtil.getRequestUser();
+		markService.clear(user.getId());
+	}
 }
 }

+ 128 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/bean/mark/MarkConfigItem.java

@@ -0,0 +1,128 @@
+package com.qmth.teachcloud.mark.bean.mark;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 单个评卷区设置模型
+ */
+public class MarkConfigItem {
+
+    // 数据库中多个单元紧凑保存的拼接符,兼容旧版本只保存图片序号的模式
+    public static final String DB_ITEM_JOINER = ",";
+
+    // 数据库中单个单元紧凑保存的拼接符,兼容旧版本只保存图片序号的模式
+    public static final String DB_FIELD_JOINER = ":";
+
+    // 裁切去所属的图片序号,从1开始
+    private int i;
+
+    // 裁切区左上角X坐标
+    private double x;
+
+    // 裁切区左上角Y坐标
+    private double y;
+
+    // 裁切区宽度
+    private double w;
+
+    // 裁切区高度
+    private double h;
+
+    public MarkConfigItem() {
+
+    }
+
+    public MarkConfigItem(String text) {
+        text = StringUtils.trimToEmpty(text);
+        String[] values = StringUtils.split(text, DB_FIELD_JOINER);
+        try {
+            i = Integer.parseInt(values[0]);
+            if (values.length > 1) {
+                x = Double.parseDouble(values[1]);
+            }
+            if (values.length > 2) {
+                y = Double.parseDouble(values[2]);
+            }
+            if (values.length > 3) {
+                w = Double.parseDouble(values[3]);
+            }
+            if (values.length > 4) {
+                h = Double.parseDouble(values[4]);
+            }
+        } catch (Exception e) {
+            throw new IllegalArgumentException("Invalid PictureConfigItem init text:" + text);
+        }
+    }
+
+    public int getI() {
+        return i;
+    }
+
+    public void setI(int i) {
+        this.i = i;
+    }
+
+    public double getX() {
+        return x;
+    }
+
+    public void setX(double x) {
+        this.x = x;
+    }
+
+    public double getY() {
+        return y;
+    }
+
+    public void setY(double y) {
+        this.y = y;
+    }
+
+    public double getW() {
+        return w;
+    }
+
+    public void setW(double w) {
+        this.w = w;
+    }
+
+    public double getH() {
+        return h;
+    }
+
+    public void setH(double h) {
+        this.h = h;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(i).append(DB_FIELD_JOINER);
+        sb.append(x).append(DB_FIELD_JOINER);
+        sb.append(y).append(DB_FIELD_JOINER);
+        sb.append(w).append(DB_FIELD_JOINER);
+        sb.append(h);
+        return sb.toString();
+    }
+
+    public static List<MarkConfigItem> parse(String text) {
+        List<MarkConfigItem> list = new LinkedList<MarkConfigItem>();
+        text = StringUtils.trimToEmpty(text);
+        String[] values = StringUtils.split(text, DB_ITEM_JOINER);
+        for (String value : values) {
+            try {
+                MarkConfigItem item = new MarkConfigItem(value);
+                if (item != null && item.i > 0) {
+                    list.add(item);
+                }
+            } catch (Exception e) {
+                continue;
+            }
+        }
+        return list;
+    }
+
+}

+ 41 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkGroupDto.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.mark.dto.mark.mark;
+
+public class MarkGroupDto {
+	private Integer groupNuber;
+	private String groupQuestions;
+	private String title;
+	private Long markedCount;
+	private Long totalCount;
+	public Integer getGroupNuber() {
+		return groupNuber;
+	}
+	public void setGroupNuber(Integer groupNuber) {
+		this.groupNuber = groupNuber;
+	}
+	public String getGroupQuestions() {
+		return groupQuestions;
+	}
+	public void setGroupQuestions(String groupQuestions) {
+		this.groupQuestions = groupQuestions;
+	}
+	public String getTitle() {
+		return title;
+	}
+	public void setTitle(String title) {
+		this.title = title;
+	}
+	public Long getMarkedCount() {
+		return markedCount;
+	}
+	public void setMarkedCount(Long markedCount) {
+		this.markedCount = markedCount;
+	}
+	public Long getTotalCount() {
+		return totalCount;
+	}
+	public void setTotalCount(Long totalCount) {
+		this.totalCount = totalCount;
+	}
+
+
+}

+ 166 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkSettingDto.java

@@ -0,0 +1,166 @@
+package com.qmth.teachcloud.mark.dto.mark.mark;
+
+import java.util.List;
+
+import com.qmth.teachcloud.common.enums.mark.MarkMode;
+import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
+import com.qmth.teachcloud.common.enums.mark.MarkProblemType;
+import com.qmth.teachcloud.mark.enums.ExamType;
+
+public class MarkSettingDto {
+	private ExamType examType;
+	private MarkMode mode;
+	private Boolean forceMode;
+	private Boolean sheetView;
+	private String sheetConfig;
+	private Boolean enableAllZore;
+	private String fileServer;
+	private String userName;
+	private MarkSubjectDto subjec;
+	private Boolean forceSpeciakTag;
+	private String uiSetting;
+	private MarkPaperStatus statusValue;
+	private List<MarkProblemType> problemTypes;
+	private Integer groupNumber;
+	private Integer topCount;
+	private Double[] splitConfig;
+	private Integer prefetchCount;
+	private Long startTime;
+	private Long endTime;
+	private Boolean selective;
+	private Boolean autoScroll;
+	private Boolean enableSplit;
+	public ExamType getExamType() {
+		return examType;
+	}
+	public void setExamType(ExamType examType) {
+		this.examType = examType;
+	}
+	public MarkMode getMode() {
+		return mode;
+	}
+	public void setMode(MarkMode mode) {
+		this.mode = mode;
+	}
+	public Boolean getForceMode() {
+		return forceMode;
+	}
+	public void setForceMode(Boolean forceMode) {
+		this.forceMode = forceMode;
+	}
+	public Boolean getSheetView() {
+		return sheetView;
+	}
+	public void setSheetView(Boolean sheetView) {
+		this.sheetView = sheetView;
+	}
+	public String getSheetConfig() {
+		return sheetConfig;
+	}
+	public void setSheetConfig(String sheetConfig) {
+		this.sheetConfig = sheetConfig;
+	}
+	public Boolean getEnableAllZore() {
+		return enableAllZore;
+	}
+	public void setEnableAllZore(Boolean enableAllZore) {
+		this.enableAllZore = enableAllZore;
+	}
+	public String getFileServer() {
+		return fileServer;
+	}
+	public void setFileServer(String fileServer) {
+		this.fileServer = fileServer;
+	}
+	public String getUserName() {
+		return userName;
+	}
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+	public MarkSubjectDto getSubjec() {
+		return subjec;
+	}
+	public void setSubjec(MarkSubjectDto subjec) {
+		this.subjec = subjec;
+	}
+	public Boolean getForceSpeciakTag() {
+		return forceSpeciakTag;
+	}
+	public void setForceSpeciakTag(Boolean forceSpeciakTag) {
+		this.forceSpeciakTag = forceSpeciakTag;
+	}
+	public String getUiSetting() {
+		return uiSetting;
+	}
+	public void setUiSetting(String uiSetting) {
+		this.uiSetting = uiSetting;
+	}
+	public MarkPaperStatus getStatusValue() {
+		return statusValue;
+	}
+	public void setStatusValue(MarkPaperStatus statusValue) {
+		this.statusValue = statusValue;
+	}
+	public List<MarkProblemType> getProblemTypes() {
+		return problemTypes;
+	}
+	public void setProblemTypes(List<MarkProblemType> problemTypes) {
+		this.problemTypes = problemTypes;
+	}
+	public Integer getGroupNumber() {
+		return groupNumber;
+	}
+	public void setGroupNumber(Integer groupNumber) {
+		this.groupNumber = groupNumber;
+	}
+	public Integer getTopCount() {
+		return topCount;
+	}
+	public void setTopCount(Integer topCount) {
+		this.topCount = topCount;
+	}
+	public Double[] getSplitConfig() {
+		return splitConfig;
+	}
+	public void setSplitConfig(Double[] splitConfig) {
+		this.splitConfig = splitConfig;
+	}
+	public Integer getPrefetchCount() {
+		return prefetchCount;
+	}
+	public void setPrefetchCount(Integer prefetchCount) {
+		this.prefetchCount = prefetchCount;
+	}
+	public Long getStartTime() {
+		return startTime;
+	}
+	public void setStartTime(Long startTime) {
+		this.startTime = startTime;
+	}
+	public Long getEndTime() {
+		return endTime;
+	}
+	public void setEndTime(Long endTime) {
+		this.endTime = endTime;
+	}
+	public Boolean getSelective() {
+		return selective;
+	}
+	public void setSelective(Boolean selective) {
+		this.selective = selective;
+	}
+	public Boolean getAutoScroll() {
+		return autoScroll;
+	}
+	public void setAutoScroll(Boolean autoScroll) {
+		this.autoScroll = autoScroll;
+	}
+	public Boolean getEnableSplit() {
+		return enableSplit;
+	}
+	public void setEnableSplit(Boolean enableSplit) {
+		this.enableSplit = enableSplit;
+	}
+
+}

+ 41 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkStatusDto.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.mark.dto.mark.mark;
+
+public class MarkStatusDto {
+	private Long totalCount;
+	private Long personCount;
+	private Long markedCount;
+	private Long problemCount;
+	private Long arbitrateCount;
+	public Long getTotalCount() {
+		return totalCount;
+	}
+	public void setTotalCount(Long totalCount) {
+		this.totalCount = totalCount;
+	}
+	public Long getPersonCount() {
+		return personCount;
+	}
+	public void setPersonCount(Long personCount) {
+		this.personCount = personCount;
+	}
+	public Long getMarkedCount() {
+		return markedCount;
+	}
+	public void setMarkedCount(Long markedCount) {
+		this.markedCount = markedCount;
+	}
+	public Long getProblemCount() {
+		return problemCount;
+	}
+	public void setProblemCount(Long problemCount) {
+		this.problemCount = problemCount;
+	}
+	public Long getArbitrateCount() {
+		return arbitrateCount;
+	}
+	public void setArbitrateCount(Long arbitrateCount) {
+		this.arbitrateCount = arbitrateCount;
+	}
+
+
+}

+ 166 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkStepDTO.java

@@ -0,0 +1,166 @@
+package com.qmth.teachcloud.mark.dto.mark.mark;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MarkStepDTO  {
+
+    private int groupNumber;
+
+    private int mainNumber;
+
+    private String subNumber;
+
+    private String questionName;
+
+    private double intervalScore;
+
+    private double defaultScore;
+
+    private String title;
+
+    private Double score;
+
+    private double maxScore;
+
+    private double minScore;
+
+    private boolean uncalculate;
+
+    private Integer selectiveIndex;
+
+    private boolean rejected;
+
+    private List<TrackDTO> trackList = new ArrayList<TrackDTO>();
+
+    private List<TrackDTO> headerTrack = new ArrayList<TrackDTO>();
+
+    public int getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(int mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public String getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(String subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public double getIntervalScore() {
+        return intervalScore;
+    }
+
+    public void setIntervalScore(double intervalScore) {
+        this.intervalScore = intervalScore;
+    }
+
+    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 getDefaultScore() {
+        return defaultScore;
+    }
+
+    public void setDefaultScore(double defaultScore) {
+        this.defaultScore = defaultScore;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public List<TrackDTO> getTrackList() {
+        return trackList;
+    }
+
+    public void setTrackList(List<TrackDTO> trackList) {
+        this.trackList = trackList;
+    }
+
+    public void addTrack(TrackDTO track) {
+        this.trackList.add(track);
+    }
+
+    public int getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(int groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public boolean isUncalculate() {
+        return uncalculate;
+    }
+
+    public void setUncalculate(boolean uncalculate) {
+        this.uncalculate = uncalculate;
+    }
+
+    public Integer getSelectiveIndex() {
+        return selectiveIndex;
+    }
+
+    public void setSelectiveIndex(Integer selectiveIndex) {
+        this.selectiveIndex = selectiveIndex;
+    }
+
+    public String getQuestionName() {
+        return questionName;
+    }
+
+    public void setQuestionName(String questionName) {
+        this.questionName = questionName;
+    }
+
+    public boolean isRejected() {
+        return rejected;
+    }
+
+    public void setRejected(boolean rejected) {
+        this.rejected = rejected;
+    }
+
+    public List<TrackDTO> getHeaderTrack() {
+        return headerTrack;
+    }
+
+    public void setHeaderTrack(List<TrackDTO> headerTrack) {
+        this.headerTrack = headerTrack;
+    }
+
+    public void addHeaderTrack(TrackDTO trackDTO) {
+        this.headerTrack.add(trackDTO);
+    }
+
+}

+ 41 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkSubjectDto.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.mark.dto.mark.mark;
+
+public class MarkSubjectDto {
+	private String name;
+	private String code;
+	private String answerUrl;
+	private String paperUrl;
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getCode() {
+		return code;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getAnswerUrl() {
+		return answerUrl;
+	}
+
+	public void setAnswerUrl(String answerUrl) {
+		this.answerUrl = answerUrl;
+	}
+
+	public String getPaperUrl() {
+		return paperUrl;
+	}
+
+	public void setPaperUrl(String paperUrl) {
+		this.paperUrl = paperUrl;
+	}
+
+}

+ 336 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkTaskDto.java

@@ -0,0 +1,336 @@
+package com.qmth.teachcloud.mark.dto.mark.mark;
+
+import java.util.Date;
+import java.util.List;
+
+import com.qmth.teachcloud.mark.bean.mark.MarkConfigItem;
+import com.qmth.teachcloud.mark.dto.mark.SpecialTagDTO;
+
+public class MarkTaskDto {
+
+    /**
+     * 评卷任务编号
+     */
+    private Integer libraryId;
+
+    /**
+     * 考生编号
+     */
+    private Integer studentId;
+
+    /**
+     * 显示考生密号
+     */
+    private String secretNumber;
+
+    /**
+     * 考生名称
+     */
+    private String studentName;
+
+    /**
+     * 学号
+     */
+    private String studentCode;
+
+    /**
+     * 准考证号
+     */
+    private String examNumber;
+
+    /**
+     * 科目
+     */
+    private MarkSubjectDto subject;
+
+    /**
+     * 裁切图地址
+     */
+    private List<String> sliceUrls;
+
+    /**
+     * 题卡图片拼接配置
+     */
+    private List<MarkConfigItem> sliceConfig;
+
+    /**
+     * 多媒体地址
+     */
+    private String jsonUrl;
+
+    /**
+     * 给分步骤
+     */
+    private List<MarkStepDTO> questionList;
+
+    /**
+     * 特殊标记列表
+     */
+    private SpecialTagDTO[] specialTagList;
+
+    /**
+     * 组长特殊标记列表
+     */
+    private SpecialTagDTO[] headerTagList;
+
+    /**
+     * 题卡原图地址
+     */
+    private List<String> sheetUrls;
+
+    /**
+     * 客观题总分
+     */
+    private Double objectiveScore;
+
+    /**
+     * 评分
+     */
+    private Double markerScore;
+
+    /**
+     * 评卷时间
+     */
+    private Date markerTime;
+
+    /**
+     * 是否自评
+     */
+    private boolean isSelf;
+
+    /**
+     * 是否回评
+     */
+    private boolean isPrevious;
+
+    /**
+     * 是否打回
+     */
+    private boolean isRejected;
+
+    /**
+     * 打回原因
+     */
+    private String rejectReason;
+
+    /**
+     * 打回上次分数
+     */
+    private String rejectScoreList;
+
+    /**
+     * 评卷员登录名
+     */
+    private String markerName;
+
+    /**
+     * 复核时间
+     */
+    private Date inspectTime;
+
+    /**
+     * 错误信息
+     */
+    private String message;
+
+    public Integer getLibraryId() {
+        return libraryId;
+    }
+
+    public void setLibraryId(Integer libraryId) {
+        this.libraryId = libraryId;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getSecretNumber() {
+        return secretNumber;
+    }
+
+    public void setSecretNumber(String secretNumber) {
+        this.secretNumber = secretNumber;
+    }
+
+    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 getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public MarkSubjectDto getSubject() {
+        return subject;
+    }
+
+    public void setSubject(MarkSubjectDto subject) {
+        this.subject = subject;
+    }
+
+    public List<String> getSliceUrls() {
+        return sliceUrls;
+    }
+
+    public void setSliceUrls(List<String> sliceUrls) {
+        this.sliceUrls = sliceUrls;
+    }
+
+    public List<MarkConfigItem> getSliceConfig() {
+        return sliceConfig;
+    }
+
+    public void setSliceConfig(List<MarkConfigItem> sliceConfig) {
+        this.sliceConfig = sliceConfig;
+    }
+
+    public String getJsonUrl() {
+        return jsonUrl;
+    }
+
+    public void setJsonUrl(String jsonUrl) {
+        this.jsonUrl = jsonUrl;
+    }
+
+    public List<MarkStepDTO> getQuestionList() {
+        return questionList;
+    }
+
+    public void setQuestionList(List<MarkStepDTO> questionList) {
+        this.questionList = questionList;
+    }
+
+    public SpecialTagDTO[] getSpecialTagList() {
+        return specialTagList;
+    }
+
+    public void setSpecialTagList(SpecialTagDTO[] specialTagList) {
+        this.specialTagList = specialTagList;
+    }
+
+    public List<String> getSheetUrls() {
+        return sheetUrls;
+    }
+
+    public void setSheetUrls(List<String> sheetUrls) {
+        this.sheetUrls = sheetUrls;
+    }
+
+    public Double getObjectiveScore() {
+        return objectiveScore;
+    }
+
+    public void setObjectiveScore(Double objectiveScore) {
+        this.objectiveScore = objectiveScore;
+    }
+
+    public Double getMarkerScore() {
+        return markerScore;
+    }
+
+    public void setMarkerScore(Double markerScore) {
+        this.markerScore = markerScore;
+    }
+
+    public Date getMarkerTime() {
+        return markerTime;
+    }
+
+    public void setMarkerTime(Date markerTime) {
+        this.markerTime = markerTime;
+    }
+
+    public boolean isSelf() {
+        return isSelf;
+    }
+
+    public void setSelf(boolean isSelf) {
+        this.isSelf = isSelf;
+    }
+
+    public boolean isPrevious() {
+        return isPrevious;
+    }
+
+    public void setPrevious(boolean isPrevious) {
+        this.isPrevious = isPrevious;
+    }
+
+    public boolean isRejected() {
+        return isRejected;
+    }
+
+    public void setRejected(boolean isRejected) {
+        this.isRejected = isRejected;
+    }
+
+    public String getMarkerName() {
+        return markerName;
+    }
+
+    public void setMarkerName(String markerName) {
+        this.markerName = markerName;
+    }
+
+    public Date getInspectTime() {
+        return inspectTime;
+    }
+
+    public void setInspectTime(Date inspectTime) {
+        this.inspectTime = inspectTime;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String getRejectReason() {
+        return rejectReason;
+    }
+
+    public void setRejectReason(String rejectReason) {
+        this.rejectReason = rejectReason;
+    }
+
+    public String getRejectScoreList() {
+        return rejectScoreList;
+    }
+
+    public void setRejectScoreList(String rejectScoreList) {
+        this.rejectScoreList = rejectScoreList;
+    }
+
+    public SpecialTagDTO[] getHeaderTagList() {
+        return headerTagList;
+    }
+
+    public void setHeaderTagList(SpecialTagDTO[] headerTagList) {
+        this.headerTagList = headerTagList;
+    }
+
+}

+ 214 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/TrackDTO.java

@@ -0,0 +1,214 @@
+package com.qmth.teachcloud.mark.dto.mark.mark;
+
+
+public class TrackDTO  {
+
+
+    private Integer mainNumber;
+
+    private String subNumber;
+
+    private int number;
+
+    private double score;
+
+    private double positionX;
+
+    private double positionY;
+
+    private int offsetIndex;
+
+    private int offsetX;
+
+    private int offsetY;
+
+    private boolean unanswered;
+
+    public TrackDTO() {
+
+    }
+
+//    public TrackDTO(MarkTrack track) {
+//        String questionNumber = track.getQuestionNumber();
+//        String str[] = questionNumber.split("\\.");
+//        setMainNumber(Integer.parseInt(str[0]));
+//        setSubNumber(str[1]);
+//        setNumber(track.getNumber());
+//        setScore(track.getScore());
+//        setPositionX(track.getPositionX());
+//        setPositionY(track.getPositionY());
+//        setOffsetIndex(track.getOffsetIndex());
+//        setOffsetX(track.getOffsetX());
+//        setOffsetY(track.getOffsetY());
+//        setUnanswered(track.isUnanswered());
+//    }
+//
+//    public TrackDTO(TrialTrack track) {
+//        String str[] = track.getQuestionNumber().split("\\.");
+//        setMainNumber(Integer.parseInt(str[0]));
+//        setSubNumber(str[1]);
+//        setNumber(track.getNumber());
+//        setScore(track.getScore());
+//        setPositionX(track.getPositionX());
+//        setPositionY(track.getPositionY());
+//        setOffsetIndex(track.getOffsetIndex());
+//        setOffsetX(track.getOffsetX());
+//        setOffsetY(track.getOffsetY());
+//        setUnanswered(track.isUnanswered());
+//    }
+//
+//    public TrackDTO(HeaderTrack track) {
+//        String questionNumber = track.getQuestionNumber();
+//        String str[] = questionNumber.split("\\.");
+//        setMainNumber(Integer.parseInt(str[0]));
+//        setSubNumber(str[1]);
+//        setNumber(track.getNumber());
+//        setScore(track.getScore());
+//        setPositionX(track.getPositionX());
+//        setPositionY(track.getPositionY());
+//        setOffsetIndex(track.getOffsetIndex());
+//        setOffsetX(track.getOffsetX());
+//        setOffsetY(track.getOffsetY());
+//        setUnanswered(track.isUnanswered());
+//    }
+//
+//    public MarkTrack transform(MarkLibrary library, Marker marker) {
+//        MarkTrack track = new MarkTrack();
+//        track.setLibraryId(library.getId());
+//        track.setQuestionNumber(getMainNumber() + "." + getSubNumber());
+//        track.setNumber(getNumber());
+//        track.setStudentId(library.getStudentId());
+//        track.setExamId(library.getExamId());
+//        track.setSubjectCode(library.getSubjectCode());
+//        track.setGroupNumber(library.getGroupNumber());
+//        track.setMarkerId(marker.getId());
+//        track.setScore(getScore());
+//        track.setPositionX(getPositionX());
+//        track.setPositionY(getPositionY());
+//        track.setOffsetIndex(getOffsetIndex());
+//        track.setOffsetX(getOffsetX());
+//        track.setOffsetY(getOffsetY());
+//        track.setUnanswered(isUnanswered());
+//        return track;
+//    }
+//
+//    public TrialTrack transform(TrialLibrary library) {
+//        TrialTrack track = new TrialTrack();
+//        track.setLibraryId(library.getId());
+//        track.setMarkerId(library.getMarkerId());
+//        track.setQuestionNumber(getMainNumber() + "." + getSubNumber());
+//        track.setNumber(getNumber());
+//        track.setStudentId(library.getStudentId());
+//        track.setExamId(library.getExamId());
+//        track.setSubjectCode(library.getSubjectCode());
+//        track.setGroupNumber(library.getGroupNumber());
+//        track.setScore(getScore());
+//        track.setPositionX(getPositionX());
+//        track.setPositionY(getPositionY());
+//        track.setOffsetIndex(getOffsetIndex());
+//        track.setOffsetX(getOffsetX());
+//        track.setOffsetY(getOffsetY());
+//        track.setUnanswered(isUnanswered());
+//        return track;
+//    }
+//
+//    public HeaderTrack transform(ArbitrateHistory library) {
+//        HeaderTrack track = new HeaderTrack();
+//        track.setQuestionNumber(getMainNumber() + "." + getSubNumber());
+//        track.setNumber(getNumber());
+//        track.setStudentId(library.getStudentId());
+//        track.setExamId(library.getExamId());
+//        track.setSubjectCode(library.getSubjectCode());
+//        track.setGroupNumber(library.getGroupNumber());
+//        track.setUserId(library.getUserId());
+//        track.setScore(getScore());
+//        track.setPositionX(getPositionX());
+//        track.setPositionY(getPositionY());
+//        track.setOffsetIndex(getOffsetIndex());
+//        track.setOffsetX(getOffsetX());
+//        track.setOffsetY(getOffsetY());
+//        track.setUnanswered(isUnanswered());
+//        return track;
+//    }
+
+    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 int getNumber() {
+        return number;
+    }
+
+    public void setNumber(int number) {
+        this.number = number;
+    }
+
+    public double getScore() {
+        return score;
+    }
+
+    public void setScore(double score) {
+        this.score = score;
+    }
+
+    public double getPositionX() {
+        return positionX;
+    }
+
+    public void setPositionX(double positionX) {
+        this.positionX = positionX;
+    }
+
+    public double getPositionY() {
+        return positionY;
+    }
+
+    public void setPositionY(double positionY) {
+        this.positionY = positionY;
+    }
+
+    public int getOffsetIndex() {
+        return offsetIndex;
+    }
+
+    public void setOffsetIndex(int offsetIndex) {
+        this.offsetIndex = offsetIndex;
+    }
+
+    public int getOffsetX() {
+        return offsetX;
+    }
+
+    public void setOffsetX(int offsetX) {
+        this.offsetX = offsetX;
+    }
+
+    public int getOffsetY() {
+        return offsetY;
+    }
+
+    public void setOffsetY(int offsetY) {
+        this.offsetY = offsetY;
+    }
+
+    public boolean isUnanswered() {
+        return unanswered;
+    }
+
+    public void setUnanswered(boolean unanswered) {
+        this.unanswered = unanswered;
+    }
+
+}

+ 37 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/enums/ExamType.java

@@ -0,0 +1,37 @@
+package com.qmth.teachcloud.mark.enums;
+
+/**
+ * 考试类型
+ */
+public enum ExamType {
+
+	SCAN_IMAGE("扫描图片类型", 1), MULTI_MEDIA("多媒体类型", 2);
+
+	private String name;
+
+	private int value;
+
+	private ExamType(String name, int value) {
+		this.name = name;
+		this.value = value;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public static ExamType findByValue(int value) {
+		ExamType status = null;
+		for (ExamType s : ExamType.values()) {
+			if (s.getValue() == value) {
+				status = s;
+				break;
+			}
+		}
+		return status;
+	}
+}

+ 18 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkService.java

@@ -1,5 +1,11 @@
 package com.qmth.teachcloud.mark.service;
 package com.qmth.teachcloud.mark.service;
 
 
+import java.util.List;
+
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkGroupDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkSettingDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkStatusDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.params.MarkResult;
 import com.qmth.teachcloud.mark.params.MarkResult;
 
 
@@ -36,4 +42,16 @@ public interface MarkService {
     void deleteMarkTaskByStudent(MarkStudent student);
     void deleteMarkTaskByStudent(MarkStudent student);
 
 
     void updateGroupAllCount(Long examId, String paperNumber);
     void updateGroupAllCount(Long examId, String paperNumber);
+
+	MarkSettingDto getSetting(Long userId, Long examId, String paperNumber, Integer groupNumber);
+
+	MarkStatusDto getStatus(Long userId, Long examId, String paperNumber, Integer groupNumber);
+
+	List<MarkGroupDto> getGroup(Long userId, Long examId, String paperNumber);
+
+	MarkTaskDto getTask(Long userId, Long examId, String paperNumber);
+
+	List<MarkTaskDto> getHistory(Long userId);
+
+	void clear(Long userId);
 }
 }

+ 40 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -5,6 +5,10 @@ import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.common.enums.mark.MarkProblemStatus;
 import com.qmth.teachcloud.common.enums.mark.MarkProblemStatus;
 import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
 import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
 import com.qmth.teachcloud.mark.dto.mark.ScoreItem;
 import com.qmth.teachcloud.mark.dto.mark.ScoreItem;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkGroupDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkSettingDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkStatusDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
@@ -614,4 +618,40 @@ public class MarkServiceImpl implements MarkService {
         // 全部评完,更新考生主观题得分
         // 全部评完,更新考生主观题得分
         markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.MARKED, totalScore.doubleValue(), MarkStudent.buildScoreList(scoreList));
         markStudentService.updateSubjectiveStatusAndScore(studentId, SubjectiveStatus.MARKED, totalScore.doubleValue(), MarkStudent.buildScoreList(scoreList));
     }
     }
+
+	@Override
+	public MarkSettingDto getSetting(Long userId, Long examId, String paperNumber, Integer groupNumber) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public MarkStatusDto getStatus(Long userId, Long examId, String paperNumber, Integer groupNumber) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<MarkGroupDto> getGroup(Long userId, Long examId, String paperNumber) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public MarkTaskDto getTask(Long userId, Long examId, String paperNumber) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public List<MarkTaskDto> getHistory(Long userId) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	@Override
+	public void clear(Long userId) {
+		// TODO Auto-generated method stub
+		
+	}
 }
 }