xiaofei 1 gadu atpakaļ
vecāks
revīzija
84a4a3029a

+ 16 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkInspectedController.java

@@ -6,8 +6,11 @@ import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.mark.dto.mark.manage.Task;
+import com.qmth.teachcloud.mark.dto.mark.score.SettingDto;
 import com.qmth.teachcloud.mark.dto.mark.score.StudentObjectiveDetailDto;
+import com.qmth.teachcloud.mark.params.MarkHeaderResult;
 import com.qmth.teachcloud.mark.params.MarkResult;
+import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.MarkStudentService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -31,7 +34,19 @@ public class MarkInspectedController {
 
     @Resource
     private MarkStudentService markStudentService;
+    @Resource
+    private MarkPaperService markPaperService;
 
+    /**
+     * 配置获取
+     */
+    @ApiOperation(value = "配置获取")
+    @RequestMapping(value = "/getSetting", method = RequestMethod.POST)
+    public Result getSetting(@ApiParam(value = "考试ID", required = true) @RequestParam Long examId,
+                             @ApiParam(value = "试卷编号", required = true) @RequestParam String paperNumber) {
+        SettingDto settingDto = markPaperService.getSetting(examId, paperNumber);
+        return ResultUtil.ok(settingDto);
+    }
 
     /**
      * 客观题检查任务获取
@@ -68,7 +83,7 @@ public class MarkInspectedController {
      */
     @ApiOperation(value = "主观题检查任务保存")
     @RequestMapping(value = "/subjective/saveTask", method = RequestMethod.POST)
-    public Result saveSubjectiveInspectedTask(@ApiParam(value = "考生ID", required = true) @RequestBody MarkResult markResult) {
+    public Result saveSubjectiveInspectedTask(@RequestBody MarkHeaderResult markResult) {
         markStudentService.saveSubjectiveInspectedTask(markResult);
         return ResultUtil.ok(true);
     }

+ 3 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/manage/TrackDTO.java

@@ -1,6 +1,8 @@
 package com.qmth.teachcloud.mark.dto.mark.manage;
 
 import com.qmth.teachcloud.mark.entity.*;
+import com.qmth.teachcloud.mark.params.MarkHeaderGroupResult;
+import com.qmth.teachcloud.mark.params.MarkHeaderResult;
 import com.qmth.teachcloud.mark.params.MarkResult;
 
 import java.io.Serializable;
@@ -103,7 +105,7 @@ public class TrackDTO implements Serializable {
         return track;
     }
 
-    public MarkHeaderTrack transform(MarkResult markResult, MarkUserGroup markUserGroup) {
+    public MarkHeaderTrack transform(MarkHeaderGroupResult markResult, MarkUserGroup markUserGroup) {
         MarkHeaderTrack track = new MarkHeaderTrack();
         track.setQuestionNumber(getMainNumber() + "." + getSubNumber());
         track.setNumber(getNumber());

+ 72 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/score/SettingDto.java

@@ -0,0 +1,72 @@
+package com.qmth.teachcloud.mark.dto.mark.score;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+public class SettingDto {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+    private String userName;
+    private String courseCode;
+    private String courseName;
+    private String paperNumber;
+    private String paperUrl;
+    private String answerUrl;
+
+    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 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 getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getPaperUrl() {
+        return paperUrl;
+    }
+
+    public void setPaperUrl(String paperUrl) {
+        this.paperUrl = paperUrl;
+    }
+
+    public String getAnswerUrl() {
+        return answerUrl;
+    }
+
+    public void setAnswerUrl(String answerUrl) {
+        this.answerUrl = answerUrl;
+    }
+}

+ 157 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/params/MarkHeaderGroupResult.java

@@ -0,0 +1,157 @@
+package com.qmth.teachcloud.mark.params;
+
+import com.qmth.teachcloud.mark.dto.mark.manage.TrackDTO;
+import com.qmth.teachcloud.mark.entity.*;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 标准评卷结果对象(管理员直接分打)
+ */
+public class MarkHeaderGroupResult {
+
+    public static final String SPLIT = ",";
+
+    private Integer groupNumber;
+
+    /**
+     * 评卷状态
+     */
+    private String statusValue;
+
+    /**
+     * 考生编号
+     */
+    private Long studentId;
+
+    /**
+     * 总分
+     */
+    private double markerScore;
+
+    /**
+     * 分值列表
+     */
+    private Double[] scoreList;
+
+    /**
+     * 阅卷轨迹列表
+     */
+    private TrackDTO[] trackList;
+
+
+    /**
+     * 所花时间
+     */
+    private int spent;
+
+
+    public Integer getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(Integer groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+    public String getStatusValue() {
+        return statusValue;
+    }
+
+    public void setStatusValue(String statusValue) {
+        this.statusValue = statusValue;
+    }
+
+    public double getMarkerScore() {
+        return markerScore;
+    }
+
+    public void setMarkerScore(double markerScore) {
+        this.markerScore = markerScore;
+    }
+
+    public String getScoreList() {
+        List<Object> list = new ArrayList<Object>();
+        for (int i = 0; i < scoreList.length; i++) {
+            Double d = scoreList[i];
+            if (d % 1 == 0) {
+                list.add(d.intValue());
+            } else {
+                list.add(d);
+            }
+        }
+        return StringUtils.join(list, SPLIT);
+    }
+
+    public void setScoreList(Double[] scoreList) {
+        this.scoreList = scoreList;
+    }
+
+    public TrackDTO[] getTrackList() {
+        return trackList;
+    }
+
+    public void setTrackList(TrackDTO[] trackList) {
+        this.trackList = trackList;
+    }
+
+    public int getSpent() {
+        return spent;
+    }
+
+    public void setSpent(int spent) {
+        this.spent = spent;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public List<MarkHeaderTrack> getTrackList(MarkArbitrateHistory history) {
+        List<MarkHeaderTrack> list = new LinkedList<>();
+        if (trackList != null) {
+            for (TrackDTO dto : trackList) {
+                list.add(dto.transform(history));
+            }
+        }
+        return list;
+    }
+
+    public List<MarkHeaderTrack> getTrackList(MarkHeaderGroupResult markResult, MarkUserGroup markUserGroup) {
+        List<MarkHeaderTrack> list = new LinkedList<>();
+        if (trackList != null) {
+            for (TrackDTO dto : trackList) {
+                list.add(dto.transform(markResult, markUserGroup));
+            }
+        }
+        return list;
+    }
+
+    public List<MarkTrack> getTrackList(MarkTask markTask, MarkUserGroup markUserGroup) {
+        List<MarkTrack> list = new LinkedList<>();
+        if (trackList != null) {
+            for (TrackDTO dto : trackList) {
+                list.add(dto.transform(markTask, markUserGroup));
+            }
+        }
+        return list;
+    }
+
+//    public List<MarkHeaderTrack> getHeaderTagList(MarkArbitrateHistory library) {
+//        List<MarkHeaderTrack> list = new LinkedList<>();
+//        if (specialTagList != null) {
+//            for (SpecialTagDTO dto : specialTagList) {
+//                list.add(dto.transform(library));
+//            }
+//        }
+//        return list;
+//    }
+
+}

+ 47 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/params/MarkHeaderResult.java

@@ -0,0 +1,47 @@
+package com.qmth.teachcloud.mark.params;
+
+import com.qmth.teachcloud.mark.dto.mark.manage.TrackDTO;
+import com.qmth.teachcloud.mark.entity.*;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 标准评卷结果对象(管理员直接分打)
+ */
+public class MarkHeaderResult {
+
+    public static final String SPLIT = ",";
+
+    private Long examId;
+    private String paperNumber;
+
+    private List<MarkHeaderGroupResult> groups;
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public List<MarkHeaderGroupResult> getGroups() {
+        return groups;
+    }
+
+    public void setGroups(List<MarkHeaderGroupResult> groups) {
+        this.groups = groups;
+    }
+
+}

+ 3 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkPaperService.java

@@ -8,6 +8,7 @@ import com.qmth.teachcloud.common.bean.dto.mark.MarkSettingDto;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto;
 import com.qmth.teachcloud.mark.dto.mark.score.MarkPaperPackageDto;
+import com.qmth.teachcloud.mark.dto.mark.score.SettingDto;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
 
 /**
@@ -49,4 +50,6 @@ public interface MarkPaperService extends IService<MarkPaper> {
     int countByPropositionTeacherId(boolean status);
 
     void updateStudentCountByExamIdAndPaperNumberAndPaperType(Long examId, String paperNumber, String paperType);
+
+    SettingDto getSetting(Long examId, String paperNumber);
 }

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkService.java

@@ -9,6 +9,7 @@ import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.MarkStudent;
 import com.qmth.teachcloud.mark.entity.MarkTask;
 import com.qmth.teachcloud.mark.entity.MarkUserGroup;
+import com.qmth.teachcloud.mark.params.MarkHeaderGroupResult;
 import com.qmth.teachcloud.mark.params.MarkResult;
 
 /**
@@ -72,5 +73,5 @@ public interface MarkService {
      */
     boolean applyStudent(MarkStudent student, Long userId);
 
-    void submitHeaderTask(MarkResult markResult, MarkUserGroup markUserGroup);
+    void submitHeaderTask(MarkHeaderGroupResult markResult, MarkUserGroup markUserGroup);
 }

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -20,6 +20,7 @@ import com.qmth.teachcloud.mark.dto.mark.score.StudentObjectiveDetailDto;
 import com.qmth.teachcloud.mark.dto.mark.score.StudentScoreDetailDto;
 import com.qmth.teachcloud.mark.entity.MarkStudent;
 import com.qmth.teachcloud.mark.entity.ScanStudentPaper;
+import com.qmth.teachcloud.mark.params.MarkHeaderResult;
 import com.qmth.teachcloud.mark.params.MarkResult;
 
 import javax.validation.constraints.NotNull;
@@ -97,5 +98,5 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     Task getSubjectiveInspectedTask(Long studentId);
 
-    void saveSubjectiveInspectedTask(MarkResult markResult);
+    void saveSubjectiveInspectedTask(MarkHeaderResult markResult);
 }

+ 22 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -16,7 +16,7 @@ import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto;
 import com.qmth.teachcloud.mark.dto.mark.score.MarkPaperPackageDto;
-import com.qmth.teachcloud.mark.entity.MarkGroup;
+import com.qmth.teachcloud.mark.dto.mark.score.SettingDto;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
 import com.qmth.teachcloud.mark.entity.ScanPackage;
 import com.qmth.teachcloud.mark.mapper.MarkPaperMapper;
@@ -204,4 +204,25 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
         this.update(updateWrapper);
     }
 
+    @Override
+    public SettingDto getSetting(Long examId, String paperNumber) {
+        SettingDto settingDto = new SettingDto();
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        settingDto.setExamId(examId);
+        settingDto.setPaperNumber(paperNumber);
+        settingDto.setUserName(sysUser.getRealName());
+        MarkPaper markPaper = this.getByExamIdAndPaperNumber(examId, paperNumber);
+        if (markPaper != null) {
+            settingDto.setCourseCode(markPaper.getCourseCode());
+            settingDto.setCourseName(markPaper.getCourseName());
+            if (StringUtils.isNotBlank(markPaper.getPaperFilePath())) {
+                settingDto.setPaperUrl(teachcloudCommonService.filePreview(markPaper.getPaperFilePath()));
+            }
+            if (StringUtils.isNotBlank(markPaper.getAnswerFilePath())) {
+                settingDto.setAnswerUrl(teachcloudCommonService.filePreview(markPaper.getAnswerFilePath()));
+            }
+        }
+        return settingDto;
+    }
+
 }

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

@@ -14,6 +14,7 @@ import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 import com.qmth.teachcloud.mark.enums.ScorePolicy;
 import com.qmth.teachcloud.mark.lock.LockService;
+import com.qmth.teachcloud.mark.params.MarkHeaderGroupResult;
 import com.qmth.teachcloud.mark.params.MarkResult;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.BigDecimalUtils;
@@ -770,7 +771,7 @@ public class MarkServiceImpl implements MarkService {
     }
 
     @Override
-    public void submitHeaderTask(MarkResult markResult, MarkUserGroup markUserGroup) {
+    public void submitHeaderTask(MarkHeaderGroupResult markResult, MarkUserGroup markUserGroup) {
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(markUserGroup.getExamId(), markUserGroup.getPaperNumber());
         // 评卷是否结束
         if (markPaper == null || markPaper.getStatus() == MarkPaperStatus.FINISH
@@ -778,7 +779,6 @@ public class MarkServiceImpl implements MarkService {
             throw ExceptionResultEnum.ERROR.exception("打分失败");
         }
         Long currentTime = System.currentTimeMillis();
-        // 问题卷
         if (markResult.getTrackList() != null) {
             markHeaderTrackService.deleteByExamIdAndPaperNumberAndGroupNumberAndStudentId(markUserGroup.getExamId(), markUserGroup.getPaperNumber(), markUserGroup.getGroupNumber(), markResult.getStudentId());
             List<MarkHeaderTrack> tracks = markResult.getTrackList(markResult, markUserGroup);

+ 20 - 16
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -37,6 +37,8 @@ import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.mark.enums.OmrTaskStatus;
 import com.qmth.teachcloud.mark.lock.LockService;
 import com.qmth.teachcloud.mark.mapper.MarkStudentMapper;
+import com.qmth.teachcloud.mark.params.MarkHeaderGroupResult;
+import com.qmth.teachcloud.mark.params.MarkHeaderResult;
 import com.qmth.teachcloud.mark.params.MarkResult;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.utils.BatchGetDataUtil;
@@ -693,22 +695,24 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public void saveSubjectiveInspectedTask(MarkResult markResult) {
-        boolean success = false;
-        MarkUserGroup markUserGroup = markUserGroupService.getById(markResult.getMarkUserGroupId());
-        try {
-            lockService.watch(LockType.EXAM_SUBJECT, markUserGroup.getExamId(), markUserGroup.getPaperNumber());
-            lockService.watch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(), markUserGroup.getGroupNumber());
-            lockService.watch(LockType.MARK_USER_GROUP, markUserGroup.getId());
-            lockService.waitlock(LockType.STUDENT, markResult.getStudentId());
-            markService.submitHeaderTask(markResult, markUserGroup);
-        } catch (Exception e) {
-            log.error("save task error", e);
-        } finally {
-            lockService.unlock(LockType.STUDENT, markResult.getStudentId());
-            lockService.unwatch(LockType.MARK_USER_GROUP, markUserGroup.getId());
-            lockService.unwatch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(), markUserGroup.getGroupNumber());
-            lockService.unwatch(LockType.EXAM_SUBJECT, markUserGroup.getExamId(), markUserGroup.getPaperNumber());
+    public void saveSubjectiveInspectedTask(MarkHeaderResult markResult) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        for (MarkHeaderGroupResult groupResult : markResult.getGroups()) {
+            MarkUserGroup markUserGroup = markUserGroupService.getByExamIdAndPaperNumberAndGroupNumberAndUserId(markResult.getExamId(), markResult.getPaperNumber(), groupResult.getGroupNumber(), sysUser.getId());
+            try {
+                lockService.watch(LockType.EXAM_SUBJECT, markUserGroup.getExamId(), markUserGroup.getPaperNumber());
+                lockService.watch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(), markUserGroup.getGroupNumber());
+                lockService.watch(LockType.MARK_USER_GROUP, markUserGroup.getId());
+                lockService.waitlock(LockType.STUDENT, groupResult.getStudentId());
+                markService.submitHeaderTask(groupResult, markUserGroup);
+            } catch (Exception e) {
+                log.error("save task error", e);
+            } finally {
+                lockService.unlock(LockType.STUDENT, groupResult.getStudentId());
+                lockService.unwatch(LockType.MARK_USER_GROUP, markUserGroup.getId());
+                lockService.unwatch(LockType.GROUP, markUserGroup.getExamId(), markUserGroup.getPaperNumber(), markUserGroup.getGroupNumber());
+                lockService.unwatch(LockType.EXAM_SUBJECT, markUserGroup.getExamId(), markUserGroup.getPaperNumber());
+            }
         }
     }