ting.yin 1 жил өмнө
parent
commit
b575745ace

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

@@ -67,7 +67,7 @@ public class MarkController {
     public Result getTask(@RequestParam Long examId, @RequestParam String paperNumber,
                           @RequestParam Integer groupNumber) {
         SysUser user = (SysUser) ServletUtil.getRequestUser();
-        return ResultUtil.ok(markService.getTask(user.getId(), examId, paperNumber));
+        return ResultUtil.ok(markService.getTask(user.getId(), examId, paperNumber,groupNumber));
     }
 
     @RequestMapping(value = "/saveTask")
@@ -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(order), examId, paperNumber,groupNumber,secretNumber,markerScore));
+        return ResultUtil.ok(markService.getHistory(user.getId(),pageNumber,pageSize,Sort.valueOf(sort), order,examId, paperNumber,groupNumber,secretNumber,markerScore));
     }
 
     @RequestMapping(value = "/updateSetting", method = RequestMethod.POST)

+ 28 - 32
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/mark/MarkTaskDto.java

@@ -11,7 +11,7 @@ public class MarkTaskDto {
     /**
      * 评卷任务编号
      */
-    private Integer libraryId;
+    private Integer taskId;
 
     /**
      * 考生编号
@@ -33,15 +33,9 @@ public class MarkTaskDto {
      */
     private String studentCode;
 
-    /**
-     * 准考证号
-     */
-    private String examNumber;
-
-    /**
-     * 科目
-     */
-    private MarkSubjectDto subject;
+  
+    private String paperNumber;
+    private Integer groupNumber;
 
     /**
      * 裁切图地址
@@ -133,15 +127,16 @@ public class MarkTaskDto {
      */
     private String message;
 
-    public Integer getLibraryId() {
-        return libraryId;
-    }
 
-    public void setLibraryId(Integer libraryId) {
-        this.libraryId = libraryId;
-    }
+    public Integer getTaskId() {
+		return taskId;
+	}
+
+	public void setTaskId(Integer taskId) {
+		this.taskId = taskId;
+	}
 
-    public Integer getStudentId() {
+	public Integer getStudentId() {
         return studentId;
     }
 
@@ -173,21 +168,6 @@ public class MarkTaskDto {
         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;
@@ -333,4 +313,20 @@ public class MarkTaskDto {
         this.headerTagList = headerTagList;
     }
 
+	public String getPaperNumber() {
+		return paperNumber;
+	}
+
+	public void setPaperNumber(String paperNumber) {
+		this.paperNumber = paperNumber;
+	}
+
+	public Integer getGroupNumber() {
+		return groupNumber;
+	}
+
+	public void setGroupNumber(Integer groupNumber) {
+		this.groupNumber = groupNumber;
+	}
+
 }

+ 10 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkTaskMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkerInfoDto;
+import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.entity.MarkTask;
 import org.apache.ibatis.annotations.Param;
 
@@ -26,4 +27,13 @@ public interface MarkTaskMapper extends BaseMapper<MarkTask> {
     List<MarkerInfoDto> listUserMarkedCount(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
 
     MarkTask getLastOneByUserIdAndStatus(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("groupNumber") Integer groupNumber, @Param("userId") Long userId, @Param("name") String name);
+
+	IPage<MarkTaskDto> listPageHistory(@Param("page")Page<MarkTaskDto> page,@Param("userId") Long userId,@Param("examId") Long examId, @Param("paperNumber")String paperNumber,
+			@Param("groupNumber")Integer groupNumber,@Param("secretNumber") String secretNumber,@Param("markerScore") Double markerScore);
+
+	List<MarkTaskDto> findUnMarked(@Param("page")Page<MarkTaskDto> page,@Param("examId") Long examId, @Param("paperNumber")String paperNumber, @Param("groupNumber")Integer groupNumber,
+			@Param("userId")Long userId);
+
+	List<MarkTaskDto> findUnMarkedFilterClass(@Param("page")Page<MarkTaskDto> page,@Param("examId") Long examId, @Param("paperNumber")String paperNumber, @Param("groupNumber")Integer groupNumber,
+			@Param("userId")Long userId);
 }

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

@@ -55,7 +55,7 @@ public interface MarkService {
 
 	List<MarkGroupDto> getGroup(Long userId, Long examId, String paperNumber);
 
-	MarkTaskDto getTask(Long userId, Long examId, String paperNumber);
+	MarkTaskDto getTask(Long userId, Long examId, String paperNumber, Integer groupNumber);
 
     void deleteMarkGroup(MarkGroup markGroup);
 
@@ -74,7 +74,7 @@ public interface MarkService {
 
     void submitHeaderTask(MarkHeaderGroupResult markResult, MarkUserGroup markUserGroup);
 
-	IPage<MarkTaskDto> getHistory(Long userId, int pageNumber, int pageSize, Sort sort, Long examId, String paperNumber,
+	IPage<MarkTaskDto> getHistory(Long userId, int pageNumber, int pageSize, Sort sort,String order, Long examId, String paperNumber,
 			Integer groupNumber, String secretNumber, Double markerScore);
 
 	String saveTask(Long userId, MarkResult markResult);

+ 12 - 8
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkTaskService.java

@@ -1,18 +1,17 @@
 package com.qmth.teachcloud.mark.service;
 
+import java.util.List;
+
+import javax.servlet.http.HttpServletResponse;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
 import com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto;
 import com.qmth.teachcloud.mark.entity.MarkTask;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 
-import io.lettuce.core.GeoArgs.Sort;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-
 /**
  * <p>
  * 评卷任务表 服务类
@@ -58,6 +57,11 @@ public interface MarkTaskService extends IService<MarkTask> {
 
     void deleteByExamIdAndPaperNumberAndGroupNumber(Long examId, String paperNumber, Integer groupNumber);
 
-	IPage<MarkTaskDto> listPageHistory(Page<MarkTaskDto> page, Sort sort, Long userId, Long examId, String paperNumber,
+	IPage<MarkTaskDto> listPageHistory(Page<MarkTaskDto> page, Long userId, Long examId, String paperNumber,
 			Integer groupNumber, String secretNumber, Double markerScore);
+
+	List<MarkTaskDto> findUnMarked(Page<MarkTaskDto> page, Long examId, String paperNumber, Integer groupNumber, Long userId);
+
+	List<MarkTaskDto> findUnMarkedFilterClass(Page<MarkTaskDto> page, Long examId, String paperNumber, Integer groupNumber,
+			Long userId);
 }

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

@@ -1,6 +1,7 @@
 package com.qmth.teachcloud.mark.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.common.entity.SysUser;
@@ -791,24 +792,65 @@ public class MarkServiceImpl implements MarkService {
     }
 
     @Override
-    public IPage<MarkTaskDto> getHistory(Long userId, int pageNumber, int pageSize, Sort sort, Long examId,
-                                         String paperNumber, Integer groupNumber, String secretNumber, Double markerScore) {
-        IPage<MarkTaskDto> list = markTaskService.listPageHistory(new Page<>(pageNumber, pageSize), sort, userId, examId, paperNumber, groupNumber, secretNumber, markerScore);
-        for (MarkTaskDto dto : list.getRecords()) {
-        }
-        return list;
-    }
-
-
-    @Override
-    public MarkTaskDto getTask(Long userId, Long examId, String paperNumber) {
-        // TODO Auto-generated method stub
-        return null;
-    }
-
-    @Override
-    public String saveTask(Long userId, MarkResult markResult) {
-        // TODO Auto-generated method stub
-        return null;
-    }
+	public IPage<MarkTaskDto> getHistory(Long userId, int pageNumber, int pageSize, Sort sort, String order,
+			Long examId, String paperNumber, Integer groupNumber, String secretNumber, Double markerScore) {
+		if (!"markerTime".equals(order) && !"markerScore".equals(order)) {
+			throw ExceptionResultEnum.ERROR.exception("排序错误");
+		}
+		Page<MarkTaskDto> page = new Page<>(pageNumber, pageSize);
+		OrderItem orderItem = new OrderItem(order, sort.equals(Sort.asc));
+		page.addOrder(orderItem);
+		IPage<MarkTaskDto> list = markTaskService.listPageHistory(page, userId, examId, paperNumber, groupNumber,
+				secretNumber, markerScore);
+		for (MarkTaskDto dto : list.getRecords()) {
+			dto.setPrevious(true);
+		}
+		return list;
+	}
+
+	@Override
+	public MarkTaskDto getTask(Long userId, Long examId, String paperNumber, Integer groupNumber) {
+		MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
+		if(markPaper == null ) {
+			throw ExceptionResultEnum.ERROR.exception("评卷试卷不存在");
+		}
+		MarkGroup group = markGroupService.getByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, groupNumber);
+		if (group == null) {
+			throw ExceptionResultEnum.ERROR.exception("评卷大题不存在");
+		}
+		MarkTaskDto task = null;
+		List<MarkTaskDto> list = new ArrayList<MarkTaskDto>();
+		int pageNumber = 1;
+		while (task == null) {
+			if(markPaper.getOpenMarkClass()) {
+				list = markTaskService.findUnMarkedFilterClass(new Page<>(pageNumber, 20), examId, paperNumber, groupNumber, userId);
+			}else {
+				list = markTaskService.findUnMarked(new Page<>(pageNumber, 20), examId, paperNumber, groupNumber, userId);
+			}
+			if (list.isEmpty()) {
+				break;
+			}
+			for (MarkTaskDto t : list) {
+				if (this.applyLibrary(t, userId)) {
+					task = t;
+					break;
+				}
+			}
+			if (task == null) {
+				pageNumber++;
+			}
+		}
+		return task;
+	}
+
+	private boolean applyLibrary(MarkTaskDto t, Long userId) {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	@Override
+	public String saveTask(Long userId, MarkResult markResult) {
+		// TODO Auto-generated method stub
+		return null;
+	}
 }

+ 15 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java

@@ -23,8 +23,6 @@ import com.qmth.teachcloud.mark.service.MarkGroupService;
 import com.qmth.teachcloud.mark.service.MarkQuestionService;
 import com.qmth.teachcloud.mark.service.MarkTaskService;
 
-import io.lettuce.core.GeoArgs.Sort;
-
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -240,8 +238,20 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
     }
 
 	@Override
-	public IPage<MarkTaskDto> listPageHistory(Page<MarkTaskDto> page, Sort sort, Long userId, Long examId,
-			String paperNumber, Integer groupNumber, String secretNumber, Double markerScore) {
-		return null;
+	public IPage<MarkTaskDto> listPageHistory(Page<MarkTaskDto> page, Long userId, Long examId, String paperNumber,
+			Integer groupNumber, String secretNumber, Double markerScore) {
+		return this.baseMapper.listPageHistory(page, userId, examId, paperNumber, groupNumber, secretNumber, markerScore);
+	}
+
+	@Override
+	public List<MarkTaskDto> findUnMarked(Page<MarkTaskDto> page, Long examId, String paperNumber, Integer groupNumber,
+			Long userId) {
+		return this.baseMapper.findUnMarked(page, examId, paperNumber, groupNumber, userId);
+	}
+
+	@Override
+	public List<MarkTaskDto> findUnMarkedFilterClass(Page<MarkTaskDto> page, Long examId, String paperNumber,
+			Integer groupNumber, Long userId) {
+		return this.baseMapper.findUnMarkedFilterClass(page, examId, paperNumber, groupNumber, userId);
 	}
 }

+ 90 - 1
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -118,5 +118,94 @@
         ORDER BY marker_time DESC
             LIMIT 1
     </select>
-
+	<select id="listPageHistory" resultType="com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto">
+        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 
+        <where>
+        	mt.student_id = s.id
+        and mt.exam_id = #{examId}
+		and mt.paper_number = #{paperNumber}
+		and mt.group_number = #{groupNumber}
+		and mt.marker_id = #{userId}
+            <if test="secretNumber != null">
+                and mt.secret_number = #{secretNumber}
+			</if>
+			<if test="markerScore != null">
+                and mt.marker_score = #{markerScore}
+			</if>
+        </where>
+    </select>
+    
+    <select id="findUnMarked" resultType="com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto">
+        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 
+        <where>
+        	mt.student_id = s.id
+        and mt.exam_id = #{examId}
+		and mt.paper_number = #{paperNumber}
+		and mt.group_number = #{groupNumber}
+		and (mt.marker_id is null or mt.marker_id =#{userId})
+		and (mt.status='WAITING' or mt.status='REJECTED')
+		and 
+            <if test="secretNumber != null">
+                and mt.secret_number = #{secretNumber}
+			</if>
+			<if test="markerScore != null">
+                and mt.marker_score = #{markerScore}
+			</if>
+        </where>
+    </select>
+    
+    <select id="findUnMarkedFilterClass" resultType="com.qmth.teachcloud.mark.dto.mark.mark.MarkTaskDto">
+        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 
+        <where>
+        	mt.student_id = s.id
+        and mt.exam_id = #{examId}
+		and mt.paper_number = #{paperNumber}
+		and mt.group_number = #{groupNumber}
+		and (mt.marker_id is null or mt.marker_id =#{userId})
+		and (mt.status='WAITING' or mt.status='REJECTED')
+		and 
+            <if test="secretNumber != null">
+                and mt.secret_number = #{secretNumber}
+			</if>
+			<if test="markerScore != null">
+                and mt.marker_score = #{markerScore}
+			</if>
+        </where>
+    </select>
 </mapper>