caozixuan 2 жил өмнө
parent
commit
6f0487974d

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java

@@ -70,7 +70,7 @@ public interface ExamDetailMapper extends BaseMapper<ExamDetail> {
                                                   @Param("studentParams") String studentParams,
                                                   @Param("startDate") Long startDate,
                                                   @Param("endDate") Long endDate,
-                                                  @Param("orgIds") Set<Long> orgIds);
+                                                  @Param("dpr") DataPermissionRule dpr);
 
     IPage<ExaminationDetailResult> findDetailPageById(@Param("page") Page<ExaminationDetailResult> page,
                                                       @Param("examDetailId") Long examDetailId);

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamPrintPlanMapper.java

@@ -41,7 +41,7 @@ public interface ExamPrintPlanMapper extends BaseMapper<ExamPrintPlan> {
                                                  @Param("printPlanId") Long printPlanId,
                                                  @Param("startTime") Long startTime,
                                                  @Param("endTime") Long endTime,
-                                                 @Param("orgIds") Set<Long> orgIds);
+                                                 @Param("dpr") DataPermissionRule dpr);
 
     List<PrintPlanBrief> list(@Param("schoolId") Long schoolId, @Param("source") String source, @Param("module") String module, @Param("status") String[] status, @Param("dpr") DataPermissionRule dpr);
 

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -326,8 +326,8 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Transactional(rollbackFor = Exception.class)
     @Override
     public IPage<ExaminationDetailResult> findExaminationDetail(Long schoolId, Long semesterId, Long examId, List<Long> printPlanIdList, String courseCode, String paperNumber, String examPlace, String examRoom, String studentParams, Long startDate, Long endDate, int pageNumber, int pageSize) {
-        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
-        return examDetailMapper.findDetailPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, printPlanIdList, courseCode, paperNumber, examPlace, examRoom, SystemConstant.translateSpecificSign(studentParams), startDate, endDate, orgIds);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission();
+        return examDetailMapper.findDetailPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, printPlanIdList, courseCode, paperNumber, examPlace, examRoom, SystemConstant.translateSpecificSign(studentParams), startDate, endDate, dpr);
     }
 
     @Transactional(rollbackFor = Exception.class)

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -134,9 +134,9 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     @Transactional(rollbackFor = Exception.class)
     @Override
     public IPage<PrintPlanResult> printPlanSyncPage(Long schoolId, Long semesterId, Long examId, Long printPlanId, Long startTime, Long endTime, int pageNumber, int pageSize) {
-        Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
         String[] status = {PrintPlanStatusEnum.PRINT_FINISH.name(), PrintPlanStatusEnum.END.name()};
-        IPage<PrintPlanResult> page = examPrintPlanMapper.findPrintPlanSyncPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, status, printPlanId, startTime, endTime, orgIds);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission();
+        IPage<PrintPlanResult> page = examPrintPlanMapper.findPrintPlanSyncPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, status, printPlanId, startTime, endTime, dpr);
         List<PrintPlanResult> list = page.getRecords();
         for (PrintPlanResult printPlanResult : list) {
             List<SyncExamStudentDto> examStudentDtos = examStudentService.listStudentByPrintPlanIdAndSyncStatus(printPlanResult.getId());

+ 10 - 5
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -304,11 +304,16 @@
             <if test="examId != null and examId!= ''">
                 AND be.id = #{examId}
             </if>
-            <if test="orgIds != null and orgIds != '' and orgIds.size > 0">
-                AND b.org_id IN
-                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND b.id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND b.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
             </if>
         </where>
         order by stu.exam_detail_course_id desc, stu.id desc

+ 10 - 5
distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml

@@ -166,11 +166,16 @@
             <if test="endTime != null and endTime != ''">
                 and #{endTime} >= a.create_time
             </if>
-            <if test="orgIds != null and orgIds != '' and orgIds.size > 0">
-                AND b.org_id IN
-                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND b.id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND b.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
             </if>
         </where>
         ORDER BY a.update_time DESC

+ 12 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/SsoController.java

@@ -2,16 +2,20 @@ package com.qmth.distributed.print.api;
 
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.service.SsoService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.bean.params.OpenParams;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
+import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -19,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.util.Map;
 import java.util.Objects;
@@ -37,6 +42,8 @@ public class SsoController {
 
     @Autowired
     SsoService ssoService;
+    @Resource
+    SysOrgService sysOrgService;
 
     /**
      * 评卷员单点登录
@@ -105,13 +112,17 @@ public class SsoController {
         if (Objects.isNull(role)) {
             throw ExceptionResultEnum.PARAMS_ERROR.exception("角色不能为空");
         }
+        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
+        SysOrg sysOrg = sysOrgService.findCollegeLevelOrgByOrgId(sysOrgService.getOne(new QueryWrapper<SysOrg>().lambda()
+                .eq(SysOrg::getSchoolId,schoolId)
+                .eq(SysOrg::getName,orgName)).getId());
         if (Objects.isNull(orgName) || Objects.equals(orgName, "")) {
             throw ExceptionResultEnum.PARAMS_ERROR.exception("学院名称不能为空");
         }
         if (role != RoleTypeEnum.OFFICE_TEACHER && role != RoleTypeEnum.PRESIDENT && role != RoleTypeEnum.TEACHER) {
             throw ExceptionResultEnum.ERROR.exception("角色类型超出限制");
         }
-        return ResultUtil.ok(ssoService.analysisLogin(loginName, role, orgName, realName, mobileNumber, enable, returnUrl));
+        return ResultUtil.ok(ssoService.analysisLogin(loginName, role, sysOrg.getName(), realName, mobileNumber, enable, returnUrl));
     }
 }
 

+ 7 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TSyncExamStudentScoreController.java

@@ -125,7 +125,13 @@ public class TSyncExamStudentScoreController {
         List<ExamDetailCourseDto> examDetailCourseList = examDetailCourseService.listByPrintPlanIdAndExamTaskId(printPlanIds, null);
         for (ExamDetailCourseDto examDetailCourseDto : examDetailCourseList) {
             if (examDetailCourseDto.getSyncStatus().equals(ExamPrintPlanSyncStatusEnum.FINISH)) {
-                semesterExamIdMap.add(Long.valueOf(semesterId), Integer.parseInt(String.valueOf(examDetailCourseDto.getThirdRelateId())));
+                Integer thirdExamId = Integer.parseInt(String.valueOf(examDetailCourseDto.getThirdRelateId()));
+                List<Integer> values = semesterExamIdMap.get(Long.valueOf(semesterId));
+                if (values == null || values.size() == 0) {
+                    semesterExamIdMap.add(Long.valueOf(semesterId), thirdExamId);
+                } else if (!values.contains(thirdExamId)) {
+                    semesterExamIdMap.add(Long.valueOf(semesterId), thirdExamId);
+                }
             }
         }
         Map<String, Object> map = printCommonService.savePush(PushTypeEnum.SCORE_PUSH, Long.valueOf(examId));