xiaofei 1 سال پیش
والد
کامیت
1484b02bb1

+ 9 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkStudent.java

@@ -583,12 +583,16 @@ public class MarkStudent implements Serializable {
     }
 
     public List<String> getAnswerList() {
-        String[] values = StringUtils.split(StringUtils.trimToNull(answers), ANSWER_SPLIT);
+//        String[] values = StringUtils.split(StringUtils.trimToNull(answers), ANSWER_SPLIT);
+//        List<String> list = new ArrayList<String>();
+//        if (values != null && values.length > 0) {
+//            for (String answer : values) {
+//                list.add(StringUtils.trim(answer));
+//            }
+//        }
         List<String> list = new ArrayList<String>();
-        if (values != null && values.length > 0) {
-            for (String answer : values) {
-                list.add(StringUtils.trim(answer));
-            }
+        if(StringUtils.isNotBlank(answers)){
+            list = JSON.parseArray(answers, String.class);
         }
         return list;
     }

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/MarkPaperMapper.java

@@ -40,4 +40,6 @@ public interface MarkPaperMapper extends BaseMapper<MarkPaper> {
     int getPaperNumberCount(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
 
     List<MarkPaper> listMarkPaper(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
+
+    List<MarkPaper> listByExamAndPackageCode(@Param("examId") Long examId, @Param("packageCode") String packageCode, @Param("dpr") DataPermissionRule dpr);
 }

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

@@ -21,7 +21,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  */
 public interface ScanPackageMapper extends BaseMapper<ScanPackage> {
 
-	IPage<ScanPackageVo> page(@Param("page") Page<ScanPackageVo> page, @Param("req")ScanPackageQuery query);
+	IPage<ScanPackageVo> page(@Param("page") Page<ScanPackageVo> page, @Param("req")ScanPackageQuery query, @Param("dpr") DataPermissionRule dpr);
 
     int countPackageCode(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
 }

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

@@ -47,7 +47,7 @@ public interface MarkPaperService extends IService<MarkPaper> {
 
 	MarkPaper getByExamIdAndCoursePaperId(Long examId, String coursePaperId);
 
-	List<MarkPaper> listByExamAndPackage(Long examId, String packageCode);
+	List<MarkPaper> listByExamAndPackage(Long examId, String packageCode, DataPermissionRule dpr);
 
     void updateGroupStatusByExamIdAndPaperNumber(boolean groupStatus, Long examId, String paperNumber);
 

+ 3 - 8
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkPaperServiceImpl.java

@@ -16,6 +16,7 @@ import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.mark.bean.answerbatch.Paper;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreQuery;
 import com.qmth.teachcloud.mark.bean.archivescore.ArchiveScoreVo;
 import com.qmth.teachcloud.mark.dto.mark.score.CheckScoreListDto;
@@ -232,14 +233,8 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
     }
 
     @Override
-    public List<MarkPaper> listByExamAndPackage(Long examId, String packageCode) {
-        QueryWrapper<MarkPaper> wrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<MarkPaper> lw = wrapper.lambda();
-        lw.eq(MarkPaper::getExamId, examId);
-        if (StringUtils.isNotBlank(packageCode)) {
-            lw.like(MarkPaper::getPackageCode, packageCode);
-        }
-        return this.list(wrapper);
+    public List<MarkPaper> listByExamAndPackage(Long examId, String packageCode, DataPermissionRule dpr) {
+        return this.baseMapper.listByExamAndPackageCode(examId, packageCode, dpr);
     }
 
     @Override

+ 8 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanConditionServiceImpl.java

@@ -2,10 +2,13 @@ package com.qmth.teachcloud.mark.service.impl;
 
 import com.qmth.teachcloud.common.bean.dto.CampusExamRoomDto;
 import com.qmth.teachcloud.common.bean.dto.CoursePaperNumberDto;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.SemesterExamDto;
 import com.qmth.teachcloud.common.entity.BasicExam;
 import com.qmth.teachcloud.common.entity.BasicSemester;
+import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.BasicSemesterService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
@@ -36,6 +39,8 @@ public class ScanConditionServiceImpl implements ScanConditionService {
     private MarkPaperService markPaperService;
     @Resource
     private MarkStudentService markStudentService;
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
     public List<SemesterExamDto> scanSemesterList(Boolean enable) {
@@ -67,7 +72,9 @@ public class ScanConditionServiceImpl implements ScanConditionService {
 
     @Override
     public List<CoursePaperNumberDto> scanCourseList(Long examId) {
-        List<MarkPaper> markPaperList = markPaperService.listByExamAndPackage(examId, null);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        List<MarkPaper> markPaperList = markPaperService.listByExamAndPackage(examId, null, dpr);
         Map<String, List<MarkPaper>> map = markPaperList.stream().collect(Collectors.groupingBy(m -> m.getCourseCode()));
         List<CoursePaperNumberDto> coursePaperNumberDtoList = new ArrayList<>();
         for (Map.Entry<String, List<MarkPaper>> entry : map.entrySet()) {

+ 10 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanPackageServiceImpl.java

@@ -8,7 +8,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.exception.ParameterException;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.bean.scananswer.SheetUploadVo;
 import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageFindVo;
 import com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageQuery;
@@ -52,6 +55,8 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
     private MarkPaperService markPaperService;
     @Resource
     private TeachcloudCommonService teachcloudCommonService;
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
     public int getCount(Long examId, String courseCode, String coursePaperId, DataPermissionRule dpr) {
@@ -76,7 +81,7 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
     public SheetUploadVo imageUpload(Long examId, String packageCode, Integer packageNo, MultipartFile file,
                                      String md5) {
         SheetUploadVo vo = null;
-        List<MarkPaper> mps = markPaperService.listByExamAndPackage(examId, packageCode);
+        List<MarkPaper> mps = markPaperService.listByExamAndPackage(examId, packageCode, null);
         if (CollectionUtils.isEmpty(mps)) {
             throw new ParameterException("未找到科目信息");
         }
@@ -137,7 +142,9 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
 
     @Override
     public IPage<ScanPackageVo> imagePage(ScanPackageQuery query) {
-        IPage<ScanPackageVo> iPage = this.baseMapper.page(new Page<>(query.getPageNumber(), query.getPageSize()), query);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        IPage<ScanPackageVo> iPage = this.baseMapper.page(new Page<>(query.getPageNumber(), query.getPageSize()), query, dpr);
         if (CollectionUtils.isNotEmpty(iPage.getRecords())) {
             List<ScanPackage> sps = getByExamIdAndCoursePaperId(query.getExamId(), query.getCoursePaperId());
             if (CollectionUtils.isNotEmpty(sps)) {
@@ -169,7 +176,7 @@ public class ScanPackageServiceImpl extends ServiceImpl<ScanPackageMapper, ScanP
 
     @Override
     public ScanPackageFindVo find(Long examId, String packageCode) {
-        List<MarkPaper> markPaperList = markPaperService.listByExamAndPackage(examId, packageCode);
+        List<MarkPaper> markPaperList = markPaperService.listByExamAndPackage(examId, packageCode, null);
         ScanPackageFindVo scanPackageFindVo = new ScanPackageFindVo();
         if (CollectionUtils.isNotEmpty(markPaperList)) {
             scanPackageFindVo.setExamId(examId);

+ 22 - 0
teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

@@ -232,5 +232,27 @@
             </if>
         </where>
     </select>
+    <select id="listByExamAndPackageCode" resultType="com.qmth.teachcloud.mark.entity.MarkPaper">
+        select mp.*
+            from mark_paper mp
+                left join sys_user su on mp.user_id = su.id
+            <where>
+                mp.exam_id = #{examId}
+                <if test="packageCode != null and packageCode != ''">
+                    AND mp.package_code like concat('%', #{packageCode}, '%')
+                </if>
+                <if test="dpr != null">
+                    <if test="dpr.requestUserId != null">
+                        AND mp.user_id = #{dpr.requestUserId}
+                    </if>
+                    <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                        AND su.org_id IN
+                        <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                            #{item}
+                        </foreach>
+                    </if>
+                </if>
+            </where>
+    </select>
 
 </mapper>

+ 12 - 1
teachcloud-mark/src/main/resources/mapper/ScanPackageMapper.xml

@@ -22,7 +22,7 @@
 	<select id="page"
 		resultType="com.qmth.teachcloud.mark.bean.scanpackage.ScanPackageVo">
 		select t.*,t.paper_number coursePaperNumber
-		FROM mark_paper t
+		FROM mark_paper t left join sys_user su on t.user_id = su.id
         where t.exam_id=#{req.examId}
         <if test="req.courseCode != null and req.courseCode != ''">
 			and t.course_code = #{req.courseCode}
@@ -42,6 +42,17 @@
 				)
 			</if>
 		</if>
+		<if test="dpr != null">
+			<if test="dpr.requestUserId != null">
+				AND t.user_id = #{dpr.requestUserId}
+			</if>
+			<if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+				AND su.org_id IN
+				<foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+					#{item}
+				</foreach>
+			</if>
+		</if>
 		ORDER BY t.id
 	</select>
     <select id="countPackageCode" resultType="java.lang.Integer">