ting.yin vor 1 Jahr
Ursprung
Commit
6ffa89f32d

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

@@ -70,7 +70,7 @@ public class MarkController {
         return ResultUtil.ok(markService.getTask(user.getId(), examId, paperNumber,groupNumber));
     }
 
-    @RequestMapping(value = "/saveTask")
+    @RequestMapping(value = "/saveTask", method = RequestMethod.POST)
     public Result saveTask(HttpServletRequest request, @RequestBody MarkResult markResult) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
         return ResultUtil.ok(markService.saveTask(user.getId(),markResult));
@@ -81,7 +81,7 @@ public class MarkController {
     		@RequestParam Long examId, @RequestParam String paperNumber,
             @RequestParam Integer groupNumber,@RequestParam(required = false) String secretNumber, @RequestParam(required = false) Double markerScore) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(markService.getHistory(user.getId(),pageNumber,pageSize,Sort.valueOf(sort), order,examId, paperNumber,groupNumber,secretNumber,markerScore));
+        return ResultUtil.ok(markService.getHistory(user.getId(),pageNumber,pageSize,"DESC".equalsIgnoreCase(sort)?Sort.desc:Sort.asc, order,examId, paperNumber,groupNumber,secretNumber,markerScore));
     }
 
     @RequestMapping(value = "/updateSetting", method = RequestMethod.POST)
@@ -91,7 +91,7 @@ public class MarkController {
         return ResultUtil.ok(true);
     }
 
-    @RequestMapping("/clear")
+    @RequestMapping(value = "/clear", method = RequestMethod.POST)
     public Result clear(@RequestParam Long examId, @RequestParam String paperNumber,
             @RequestParam Integer groupNumber) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();

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

@@ -9,7 +9,7 @@ public class MarkStepDTO  {
 
     private int mainNumber;
 
-    private String subNumber;
+    private int subNumber;
 
     private String questionName;
 
@@ -43,11 +43,11 @@ public class MarkStepDTO  {
         this.mainNumber = mainNumber;
     }
 
-    public String getSubNumber() {
+    public int getSubNumber() {
         return subNumber;
     }
 
-    public void setSubNumber(String subNumber) {
+    public void setSubNumber(int subNumber) {
         this.subNumber = subNumber;
     }
 

+ 9 - 4
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkTaskDto.java

@@ -6,6 +6,7 @@ import java.util.List;
 import com.qmth.teachcloud.mark.bean.mark.MarkConfigItem;
 import com.qmth.teachcloud.mark.dto.mark.SpecialTagDTO;
 import com.qmth.teachcloud.mark.entity.MarkTask;
+import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 
 public class MarkTaskDto {
 
@@ -86,7 +87,7 @@ public class MarkTaskDto {
     /**
      * 评卷时间
      */
-    private Date markerTime;
+    private Long markerTime;
 
     /**
      * 是否自评
@@ -136,7 +137,11 @@ public class MarkTaskDto {
 		this.studentId=t.getStudentId();
 		this.secretNumber=t.getSecretNumber();
 		this.groupNumber=t.getGroupNumber();
-		
+		this.studentCode=t.getStudentCode();
+		this.isRejected = t.getStatus().equals(MarkTaskStatus.REJECTED);
+		this.markerScore = t.getMarkerScore();
+		this.markerTime = t.getMarkerTime();
+		this.paperNumber =t.getPaperNumber();
 	}
 
 	public Long getTaskId() {
@@ -244,11 +249,11 @@ public class MarkTaskDto {
         this.markerScore = markerScore;
     }
 
-    public Date getMarkerTime() {
+    public Long getMarkerTime() {
         return markerTime;
     }
 
-    public void setMarkerTime(Date markerTime) {
+    public void setMarkerTime(Long markerTime) {
         this.markerTime = markerTime;
     }
 

+ 13 - 14
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/TrackDTO.java

@@ -30,20 +30,19 @@ public class 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(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());
+    }
 //
 //    public TrackDTO(TrialTrack track) {
 //        String str[] = track.getQuestionNumber().split("\\.");

+ 28 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkTask.java

@@ -270,6 +270,34 @@ public class MarkTask implements Serializable {
         }
         return list;
     }
+    
+    public List<ScoreItem> getMarkerScoreItem() {
+        List<ScoreItem> list = new LinkedList<ScoreItem>();
+        String scoreList = null;
+        if (StringUtils.isNotBlank(markerScoreList)) {
+            scoreList = markerScoreList;
+        }
+        if (StringUtils.isNotBlank(scoreList)) {
+            try {
+                String[] values = scoreList.split(",");
+                for (String value : values) {
+                    if (value.equals("#")) {
+                        list.add(new ScoreItem(false));
+                    } else {
+                        ScoreItem item = ScoreItem.parse(value, false);
+                        if (item != null) {
+                            list.add(item);
+                        }
+                    }
+                }
+                if (scoreList.endsWith(",")) {
+                    list.add(new ScoreItem(false));
+                }
+            } catch (Exception e) {
+            }
+        }
+        return list;
+    }
 
     @Override
     public String toString() {

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

@@ -84,4 +84,8 @@ public interface MarkService {
 	boolean applyTask(MarkTask t, Long userId);
 
 	boolean hasApplied(MarkTask t, Long userId);
+	
+	MarkTaskDto getTaskDto(MarkTask task);
+	
+	MarkTaskDto getTaskDto(MarkStudent student);
 }

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTrackService.java

@@ -22,4 +22,6 @@ public interface MarkTrackService extends IService<MarkTrack> {
     void deleteByStudentId(Long studentId);
 
     void deleteByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber);
+    
+    List<MarkTrack> listByTaskId(Long taskId);
 }

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

@@ -11,8 +11,10 @@ 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.MarkStepDTO;
 import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.dto.mark.mark.SubmitResult;
+import com.qmth.teachcloud.mark.dto.mark.mark.TrackDTO;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.enums.ExamType;
 import com.qmth.teachcloud.mark.enums.LockType;
@@ -883,8 +885,7 @@ public class MarkServiceImpl implements MarkService {
 				secretNumber, markerScore);
 		List<MarkTaskDto> recordsDtos =new ArrayList<MarkTaskDto>();
 		for (MarkTask task : list.getRecords()) {
-			MarkTaskDto dto = toTaskDto(task);
-			dto.setPrevious(true);
+			MarkTaskDto dto = this.getTaskDto(task);
 			recordsDtos.add(dto);
 		}
 		IPage<MarkTaskDto> result = new Page<MarkTaskDto>();
@@ -922,7 +923,7 @@ public class MarkServiceImpl implements MarkService {
 			}
 			for (MarkTask t : list) {
 				if (this.applyTask(t, userId)) {
-					task = toTaskDto(t);
+					task =  this.getTaskDto(t);
 					break;
 				}
 			}
@@ -933,12 +934,6 @@ public class MarkServiceImpl implements MarkService {
 		return task;
 	}
 
-	private MarkTaskDto toTaskDto(MarkTask t) {
-		MarkTaskDto task = new MarkTaskDto(t);
-
-		return task;
-	}
-
 	@Override
 	public boolean applyTask(MarkTask t, Long userId) {
 		// 查询待领取任务时,已经做了多评同一studentId互斥处理
@@ -1142,4 +1137,77 @@ public class MarkServiceImpl implements MarkService {
         history.setCreateTime(now);
         return history;
     }
+	
+	@Override
+	public MarkTaskDto getTaskDto(MarkTask t) {
+		MarkTaskDto task = new MarkTaskDto(t);
+		task.setQuestionList(buildMarkStep(t));
+        return task;
+	}
+
+	private List<MarkStepDTO> buildMarkStep(MarkTask task) {
+        List<MarkStepDTO> list = new LinkedList<MarkStepDTO>();
+        List<MarkQuestion> sList = markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(task.getExamId(), task.getPaperNumber(),  task.getGroupNumber(), false);
+        List<MarkTrack> tracks = new ArrayList<MarkTrack>();
+        List<ScoreItem> sItems = new ArrayList<ScoreItem>();
+        List<ScoreItem> rItems = null;
+        if (task != null) {
+            tracks = markTrackService.listByTaskId(task.getId());
+            sItems = task.getMarkerScoreItem();
+        }
+        for (int i = 0; i < sList.size(); i++) {
+        	MarkQuestion question = sList.get(i);
+            MarkStepDTO step = buildStep(question);
+            if (task != null) {
+                if (!sItems.isEmpty() && sItems.size() == sList.size()) {
+                    step.setScore(sItems.get(i).getScore());
+                }
+                if (rItems == null) {
+                    // 无打回记录
+                    step.setRejected(false);
+                } else if (rItems != null && rItems.isEmpty()) {
+                    // 全打回
+                    step.setRejected(true);
+                } else if (rItems != null && !rItems.isEmpty() && rItems.size() == sList.size()) {
+                    // 部分打回
+                    step.setRejected(rItems.get(i).getScore() == null);
+                }
+                // 未选做
+//                if (task.getMarkerScore() != null && task.getMarkerScore() == UN_SELECTIVE_SCORE) {
+//                    step.setScore(UN_SELECTIVE_SCORE);
+//                }
+                // 增加阅卷轨迹列表获取
+                String questionNumber = question.getQuestionNumber();
+                for (MarkTrack track : tracks) {
+                    if (track.getQuestionNumber().equals(questionNumber)) {
+                        step.addTrack(new TrackDTO(track));
+                    }
+                }
+            }
+            list.add(step);
+        }
+        return list;
+    }
+
+	private MarkStepDTO buildStep(MarkQuestion question) {
+        MarkStepDTO step = new MarkStepDTO();
+        step.setMainNumber(question.getMainNumber());
+        step.setSubNumber(question.getSubNumber());
+        step.setGroupNumber(question.getGroupNumber());
+        step.setTitle(question.getMainTitle());
+        step.setDefaultScore(0d);
+        step.setMaxScore(question.getTotalScore());
+        step.setMinScore(0d);
+        step.setIntervalScore(question.getIntervalScore());
+        step.setUncalculate(false);
+//        step.setSelectiveIndex(question.getSelectiveIndex());
+        return step;
+    }
+
+	@Override
+	public MarkTaskDto getTaskDto(MarkStudent student) {
+		MarkTaskDto task = new MarkTaskDto();
+	       
+        return task;
+	}
 }

+ 7 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTrackServiceImpl.java

@@ -51,4 +51,11 @@ public class MarkTrackServiceImpl extends ServiceImpl<MarkTrackMapper, MarkTrack
                 .eq(MarkTrack::getGroupNumber, groupNumber);
         this.remove(updateWrapper);
     }
+
+	@Override
+	public List<MarkTrack> listByTaskId(Long taskId) {
+		 QueryWrapper<MarkTrack> queryWrapper = new QueryWrapper<>();
+	        queryWrapper.lambda().eq(MarkTrack::getTaskId, taskId);
+	        return this.list(queryWrapper);
+	}
 }

+ 10 - 32
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -118,26 +118,16 @@
         ORDER BY marker_time DESC
             LIMIT 1
     </select>
-	<select id="listPageHistory" resultType="com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto">
+	<select id="listPageHistory" resultType="com.qmth.teachcloud.mark.entity.MarkTask">
         SELECT
-        	mt.id taskId,
-        	mt.student_id studentId,
-            mt.secret_number secretNumber,
-            s.student_name studentName,
-            mt.student_code studentCode,
-            mt.paper_number paperNumber,
-            mt.group_number groupNumber,
-            s.objective_score objectiveScore,
-            mt.marker_time markerTime,
-            mt.marker_score markerScore
+        	*
         FROM
-            mark_task mt join mark_student s 
+            mark_task mt
         <where>
-        	mt.student_id = s.id
-        and mt.exam_id = #{examId}
+			mt.exam_id = #{examId}
 		and mt.paper_number = #{paperNumber}
 		and mt.group_number = #{groupNumber}
-		and mt.marker_id = #{userId}
+		and mt.user_id = #{userId}
             <if test="secretNumber != null">
                 and mt.secret_number = #{secretNumber}
 			</if>
@@ -149,7 +139,7 @@
     
     <select id="findUnMarked" resultType="com.qmth.teachcloud.mark.entity.MarkTask">
         SELECT
-        	mt
+        	*
         FROM
             mark_task mt
         <where>
@@ -158,18 +148,12 @@
 		and mt.group_number = #{groupNumber}
 		and (mt.user_id is null or mt.user_id =#{userId})
 		and (mt.status='WAITING' or mt.status='REJECTED')
-		<if test="secretNumber != null">
-			and mt.secret_number = #{secretNumber}
-		</if>
-		<if test="markerScore != null">
-			and mt.marker_score = #{markerScore}
-		</if>
 		AND NOT EXISTS ( 
-			SELECT t FROM
+			SELECT t.id FROM
 			mark_task t
 			WHERE
 			t.student_id = mt.student_id
-			AND t.id != l1.id
+			AND t.id != mt.id
 			AND t.user_id = #{userId}
 			AND t.marker_score IS NOT NULL
 		)
@@ -178,7 +162,7 @@
     
     <select id="findUnMarkedFilterClass" resultType="com.qmth.teachcloud.mark.entity.MarkTask">
         SELECT
-        	mt
+        	*
         FROM
             mark_task mt
         <where>
@@ -187,14 +171,8 @@
 		and mt.group_number = #{groupNumber}
 		and (mt.user_id is null or mt.user_id =#{userId})
 		and (mt.status='WAITING' or mt.status='REJECTED')
-		<if test="secretNumber != null">
-			and mt.secret_number = #{secretNumber}
-		</if>
-		<if test="markerScore != null">
-			and mt.marker_score = #{markerScore}
-		</if>
 		AND NOT EXISTS ( 
-			SELECT t 
+			SELECT t.id 
 			FROM
 			mark_task t
 			WHERE