Kaynağa Gözat

3.2.7 update

xiaofei 1 yıl önce
ebeveyn
işleme
2505974429

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkTaskMapper.java

@@ -3,6 +3,7 @@ package com.qmth.teachcloud.mark.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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.entity.MarkTask;
@@ -20,7 +21,7 @@ import java.util.List;
  */
 public interface MarkTaskMapper extends BaseMapper<MarkTask> {
 
-    IPage<MarkManageDto> listPaperManage(@Param("page") Page<MarkManageDto> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("progressStatus") Boolean progressStatus);
+    IPage<MarkManageDto> listPaperManage(@Param("page") Page<MarkManageDto> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("progressStatus") Boolean progressStatus, @Param("dpr") DataPermissionRule dpr);
 
     List<MarkerInfoDto> listUserMarkedCount(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
 

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

@@ -6,8 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.util.ExcelUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto;
 import com.qmth.teachcloud.mark.dto.mark.manage.MarkerInfoDto;
 import com.qmth.teachcloud.mark.entity.MarkGroup;
@@ -39,14 +43,17 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
 
     @Resource
     private MarkGroupService markGroupService;
-
     @Resource
     private MarkQuestionService markQuestionService;
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
     public IPage<MarkManageDto> listPaperManage(Long examId, String courseCode, String paperNumber, Boolean progressStatus, Integer pageNumber, Integer pageSize) {
         Page<MarkManageDto> page = new Page<>(pageNumber, pageSize);
-        return this.baseMapper.listPaperManage(page, examId, courseCode, paperNumber, progressStatus);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        return this.baseMapper.listPaperManage(page, examId, courseCode, paperNumber, progressStatus, dpr);
     }
 
     @Override

+ 24 - 9
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -27,25 +27,40 @@
     </resultMap>
     <select id="listPaperManage" resultType="com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto">
         SELECT
-            exam_id examId,
-            course_code courseCode,
-            course_name courseName,
-            paper_number paperNumber,
+            mt.exam_id examId,
+            mt.course_code courseCode,
+            mt.course_name courseName,
+            mt.paper_number paperNumber,
             COUNT(1) totalCount,
-            SUM(CASE status
+            SUM(CASE mt.status
                     WHEN 'MARKED' THEN 1
                     WHEN 'ARBITRATED' THEN 1
                     ELSE 0
                 END) AS markedCount
         FROM
-            mark_task
+            mark_task mt
         <where>
-            exam_id = #{examId}
+            mt.exam_id = #{examId}
             <if test="courseCode != null and courseCode != ''">
-                and course_code = #{courseCode}
+                and mt.course_code = #{courseCode}
             </if>
             <if test="paperNumber != null and paperNumber != ''">
-                and course_code = #{courseCode}
+                and mt.paper_number = #{paperNumber}
+            </if>
+            <if test="dpr != null">
+                and exists (
+                    select 1 from mark_paper mp left join sys_user su on mp.user_id = su.id
+                        where mt.exam_id = mp.exam_id and mt.paper_number = mp.paper_number
+                <if test="dpr.requestUserId != null">
+                    and mp.user_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+                )
             </if>
         </where>
         GROUP BY exam_id , course_code , course_name , paper_number