Browse Source

3.3.1 update

xiaofei 1 năm trước cách đây
mục cha
commit
7efc197da5
29 tập tin đã thay đổi với 215 bổ sung663 xóa
  1. 9 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDetailDto.java
  2. 0 34
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperDto.java
  3. 0 189
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperFileDto.java
  4. 4 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ConditionMapper.java
  5. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java
  6. 4 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/DownloadService.java
  7. 0 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/SsoService.java
  8. 23 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ConditionServiceImpl.java
  9. 5 21
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DownloadServiceImpl.java
  10. 0 60
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SsoServiceImpl.java
  11. 19 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  12. 61 2
      distributed-print-business/src/main/resources/mapper/ConditionMapper.xml
  13. 34 16
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  14. 7 14
      distributed-print/src/main/java/com/qmth/distributed/print/api/DownloadController.java
  15. 0 26
      distributed-print/src/main/java/com/qmth/distributed/print/api/SsoController.java
  16. 9 12
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  17. 2 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysOrgController.java
  18. 0 47
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/userPush/SpecialPrivilegeEnum.java
  19. 0 12
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java
  20. 2 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicRoleDataPermissionService.java
  21. 2 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java
  22. 3 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysRoleService.java
  23. 1 50
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java
  24. 6 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java
  25. 2 3
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java
  26. 9 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java
  27. 5 119
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java
  28. 0 29
      teachcloud-common/src/main/resources/mapper/SysUserMapper.xml
  29. 5 5
      teachcloud-mark/src/main/resources/mapper/MarkPaperMapper.xml

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDetailDto.java

@@ -23,6 +23,7 @@ public class ExamTaskDetailDto {
     @ApiModelProperty(value = "题卡规则名称")
     private String cardRuleName;
     private String userId;
+    private String loginName;
     private String userName;
     private String status;
     private Boolean enable;
@@ -140,6 +141,14 @@ public class ExamTaskDetailDto {
         this.userId = userId;
     }
 
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
     public String getUserName() {
         return userName;
     }

+ 0 - 34
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperDto.java

@@ -1,34 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-
-import java.util.List;
-
-/**
- * @Description: 命题任务试卷文件
- * @Author: CaoZixuan
- * @Date: 2022-04-11
- */
-public class ExamTaskPaperDto {
-    @ApiModelProperty(value = "命题任务试卷文件Dto")
-    private List<ExamTaskPaperFileDto> examTaskPaperFileDtoList;
-
-    @ApiModelProperty(value = "试卷批量下载导出excelDto")
-    private List<ExamTaskPaperExportDto> examTaskPaperExportDtoList;
-
-    public List<ExamTaskPaperFileDto> getExamTaskPaperFileDtoList() {
-        return examTaskPaperFileDtoList;
-    }
-
-    public void setExamTaskPaperFileDtoList(List<ExamTaskPaperFileDto> examTaskPaperFileDtoList) {
-        this.examTaskPaperFileDtoList = examTaskPaperFileDtoList;
-    }
-
-    public List<ExamTaskPaperExportDto> getExamTaskPaperExportDtoList() {
-        return examTaskPaperExportDtoList;
-    }
-
-    public void setExamTaskPaperExportDtoList(List<ExamTaskPaperExportDto> examTaskPaperExportDtoList) {
-        this.examTaskPaperExportDtoList = examTaskPaperExportDtoList;
-    }
-}

+ 0 - 189
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskPaperFileDto.java

@@ -1,189 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto;
-
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.entity.ExamPrintPlan;
-import com.qmth.teachcloud.common.annotation.ExcelProperty;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.util.List;
-
-/**
- * @Description: 命题任务试卷文件Dto
- * @Author: CaoZixuan
- * @Date: 2022-04-07
- */
-public class ExamTaskPaperFileDto {
-    // 命题任务基本信息
-    @ApiModelProperty(value = "命题任务id")
-    @JsonSerialize(using = ToStringSerializer.class)
-    private Long examTaskId;
-
-    @ApiModelProperty(value = "学期名称")
-    private String semesterName;
-
-    @ApiModelProperty(value = "考试名称")
-    private String examName;
-
-    @ApiModelProperty(value = "机构名称")
-    private String orgName;
-
-    // 命题任务基础信息
-    @ApiModelProperty(value = "印刷计划集合")
-    private List<ExamPrintPlan> examPrintPlanList;
-
-    @ApiModelProperty(value = "课程名称")
-    @ExcelProperty(name = "课程名称", width = 30, index = 1)
-    private String courseName;
-
-    @ApiModelProperty(value = "课程代码")
-    @ExcelProperty(name = "课程代码", width = 30, index = 2)
-    private String courseCode;
-
-    @ApiModelProperty(value = "试卷编号")
-    @ExcelProperty(name = "试卷编号", width = 30, index = 3)
-    private String paperNumber;
-
-    // 试卷信息
-    @ApiModelProperty(value = "试卷类型")
-    private String paperType;
-
-    @ApiModelProperty(value = "曝光状态 true-已曝光、false-未曝光")
-    private Boolean exposureStatus;
-
-    @ApiModelProperty(value = "试卷文件名称")
-    private String paperName;
-
-    @ApiModelProperty(value = "试卷文件后缀")
-    private String paperSuffix;
-
-    @ApiModelProperty(value = "试卷文件路径")
-    private String paperPath;
-
-    // 题卡信息
-    @ApiModelProperty(value = "该命题任务id")
-    private Long examCardId;
-
-    @ApiModelProperty(value = "题卡规则id")
-    private Long cardRuleId;
-
-    public Long getExamTaskId() {
-        return examTaskId;
-    }
-
-    public void setExamTaskId(Long examTaskId) {
-        this.examTaskId = examTaskId;
-    }
-
-    public String getSemesterName() {
-        return semesterName;
-    }
-
-    public void setSemesterName(String semesterName) {
-        this.semesterName = semesterName;
-    }
-
-    public String getExamName() {
-        return examName;
-    }
-
-    public void setExamName(String examName) {
-        this.examName = examName;
-    }
-
-    public String getOrgName() {
-        return orgName;
-    }
-
-    public void setOrgName(String orgName) {
-        this.orgName = orgName;
-    }
-
-    public List<ExamPrintPlan> getExamPrintPlanList() {
-        return examPrintPlanList;
-    }
-
-    public void setExamPrintPlanList(List<ExamPrintPlan> examPrintPlanList) {
-        this.examPrintPlanList = examPrintPlanList;
-    }
-
-    public String getCourseName() {
-        return courseName;
-    }
-
-    public void setCourseName(String courseName) {
-        this.courseName = courseName;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getPaperNumber() {
-        return paperNumber;
-    }
-
-    public void setPaperNumber(String paperNumber) {
-        this.paperNumber = paperNumber;
-    }
-
-    public String getPaperType() {
-        return paperType;
-    }
-
-    public void setPaperType(String paperType) {
-        this.paperType = paperType;
-    }
-
-    public Boolean getExposureStatus() {
-        return exposureStatus;
-    }
-
-    public void setExposureStatus(Boolean exposureStatus) {
-        this.exposureStatus = exposureStatus;
-    }
-
-    public String getPaperName() {
-        return paperName;
-    }
-
-    public void setPaperName(String paperName) {
-        this.paperName = paperName;
-    }
-
-    public String getPaperSuffix() {
-        return paperSuffix;
-    }
-
-    public void setPaperSuffix(String paperSuffix) {
-        this.paperSuffix = paperSuffix;
-    }
-
-    public String getPaperPath() {
-        return paperPath;
-    }
-
-    public void setPaperPath(String paperPath) {
-        this.paperPath = paperPath;
-    }
-
-    public Long getExamCardId() {
-        return examCardId;
-    }
-
-    public void setExamCardId(Long examCardId) {
-        this.examCardId = examCardId;
-    }
-
-    public Long getCardRuleId() {
-        return cardRuleId;
-    }
-
-    public void setCardRuleId(Long cardRuleId) {
-        this.cardRuleId = cardRuleId;
-    }
-}

+ 4 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ConditionMapper.java

@@ -47,9 +47,11 @@ public interface ConditionMapper {
 
     List<String> listPaperNumberFromMarkPaper(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("dpr") DataPermissionRule dpr);
 
-    List<BasicCourse> listCourseFromExamTask(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+    List<BasicCourse> listCourseFromExamTaskByCreateId(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+    List<BasicCourse> listCourseFromExamTaskByUserId(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
 
-    List<String> listPaperNumberFromExamTask(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("dpr") DataPermissionRule dpr);
+    List<String> listPaperNumberFromExamTaskByCreateId(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("dpr") DataPermissionRule dpr);
+    List<String> listPaperNumberFromExamTaskByUserIdAndPass(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("dpr") DataPermissionRule dpr);
 
     List<BasicCourse> listCourseForQuery(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
 

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskMapper.java

@@ -80,7 +80,7 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
 
     ExamTaskDto getByExamTaskId(Long examTaskId);
 
-    IPage<ExamTaskDetailDto> listExamTaskDetailDownload(@Param("page") Page<ExamTaskDetailDto> page, @Param("schoolId") Long schoolId, @Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseName") String courseName, @Param("orgId") Long orgId, @Param("dpr") DataPermissionRule dpr);
+    IPage<ExamTaskDetailDto> listExamTaskDetailDownload(@Param("page") Page<ExamTaskDetailDto> page, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber, @Param("orgId") Long orgId, @Param("userParam") String userParam, @Param("dpr") DataPermissionRule dpr);
 
     /**
      * 根据条件查询要下载的试卷文件
@@ -88,11 +88,11 @@ public interface ExamTaskMapper extends BaseMapper<ExamTask> {
      * @param semesterId 学期id
      * @param examId     考试id
      * @param courseName 课程明后才能
-     * @param orgIds     机构id
      * @param idSet      命题任务id集合
+     * @param dpr
      * @return 命题任务试卷信息
      */
-    List<ExamTaskDetailDto> listExamTaskDetailDownloadByQuery(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseName") String courseName, @Param("orgIds") Set<Long> orgIds, @Param("idSet") Set<Long> idSet);
+    List<ExamTaskDetailDto> listExamTaskDetailDownloadByQuery(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseName") String courseName, @Param("orgId") Long orgId, @Param("idSet") Set<Long> idSet, @Param("dpr") DataPermissionRule dpr);
 
     /**
      * 根据流程id和任务节点id获取待办

+ 4 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/DownloadService.java

@@ -2,7 +2,8 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.distributed.print.business.bean.dto.ExamTaskDetailDto;
-import com.qmth.distributed.print.business.bean.dto.ExamTaskPaperDto;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import org.apache.commons.lang3.StringUtils;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -14,9 +15,9 @@ import java.util.Set;
  * </p>
  */
 public interface DownloadService {
-    IPage<ExamTaskDetailDto> page(Long semesterId, Long examId, Long orgId, String courseName, Integer pageNumber, Integer pageSize);
+    IPage<ExamTaskDetailDto> page(Long examId, String courseCode, String paperNumber, Long orgId, String userParam, Integer pageNumber, Integer pageSize);
 
     void paperDownload(HttpServletResponse response, Long id) throws Exception;
 
-    List<ExamTaskDetailDto> listExamQuery(Long semesterId, Long examId, Long orgId, String courseName, Set<Long> idSet);
+    List<ExamTaskDetailDto> listExamQuery(Long semesterId, Long examId, Long orgId, String courseName, Set<Long> idSet, DataPermissionRule dpr);
 }

+ 0 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/SsoService.java

@@ -11,10 +11,6 @@ import java.util.Map;
  * @Date: 2021/5/20.
  */
 public interface SsoService {
-    Map<String, Object> markerLoginInfo();
-
-    Map<String, Object> markerLeaderLoginInfo();
-
     /**
      * 教研分析单点登录
      *

+ 23 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ConditionServiceImpl.java

@@ -82,6 +82,10 @@ public class ConditionServiceImpl implements ConditionService {
 
     @Override
     public List<BasicCourse> listCourse(Long semesterId, Long examId, Boolean enable, List<String> printPlanIds) {
+        // 考试ID为空,默认返回空
+        if (examId == null) {
+            return new ArrayList<>();
+        }
         Long privilegeId = ServletUtil.getCurrentPrivilegeId();
         String privilegeIdString = privilegeId == null ? null : String.valueOf(privilegeId);
 
@@ -91,7 +95,7 @@ public class ConditionServiceImpl implements ConditionService {
 
         // 命题任务管理(39)
         if ("39".equals(privilegeIdString)) {
-            return conditionMapper.listCourseFromExamTask(examId, dpr);
+            return conditionMapper.listCourseFromExamTaskByCreateId(examId, dpr);
         }
         // 入库申请(40)
         else if ("40".equals(privilegeIdString)) {
@@ -118,7 +122,7 @@ public class ConditionServiceImpl implements ConditionService {
             dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
             return conditionMapper.listCourseForScore(semesterId, examId, basicCourses, MarkPaperStatus.FINISH.name(), dpr);
         }
-        // 评卷入口
+        // 评卷入口(491)
         else if ("491".equals(privilegeIdString)) {
             return conditionMapper.listCourseForEntrance(examId, sysUser.getId(), MarkPaperStatus.FORMAL.name());
         }
@@ -126,6 +130,11 @@ public class ConditionServiceImpl implements ConditionService {
         else if ("897".equals(privilegeIdString) || "917".equals(privilegeIdString) || "946".equals(privilegeIdString)) {
             dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
             return conditionMapper.listCourseFromMarkPaper(examId, dpr);
+        }
+        // 下载管理(653)
+        else if ("653".equals(privilegeIdString)) {
+            dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
+            return conditionMapper.listCourseFromExamTaskByUserId(examId, dpr);
         } else {
             dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
             return conditionMapper.listCourse(semesterId, examId, enable, printPlanIds, dpr);
@@ -134,6 +143,10 @@ public class ConditionServiceImpl implements ConditionService {
 
     @Override
     public List<String> listPaperNumber(Long semesterId, Long examId, String courseCode, List<String> printPlanIds) {
+        // 考试ID为空,默认返回空
+        if (examId == null) {
+            return new ArrayList<>();
+        }
         Long privilegeId = ServletUtil.getCurrentPrivilegeId();
         String privilegeIdString = privilegeId == null ? null : String.valueOf(privilegeId);
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
@@ -149,7 +162,7 @@ public class ConditionServiceImpl implements ConditionService {
         }
 
         if ("39".equals(privilegeIdString)) {
-            return conditionMapper.listPaperNumberFromExamTask(examId, courseCode, dpr);
+            return conditionMapper.listPaperNumberFromExamTaskByCreateId(examId, courseCode, dpr);
         }
         // 入库申请菜单
         else if ("40".equals(privilegeIdString)) {
@@ -166,12 +179,18 @@ public class ConditionServiceImpl implements ConditionService {
         // 印刷任务管理(47)
         else if ("47".equals(privilegeIdString)) {
             return conditionMapper.listPaperNumberPlanTask(semesterId, examId, printPlanIds, courseCode, dpr);
-        } else if ("491".equals(privilegeIdString)) {
+        }
+        // 评卷入口(491)
+        else if ("491".equals(privilegeIdString)) {
             return conditionMapper.listPaperNumberForEntrance(examId, sysUser.getId(), courseCode, MarkPaperStatus.FORMAL.name());
         }
         // 评卷设置(897)、评卷管理(917)、成绩检查(946)
         else if ("897".equals(privilegeIdString) || "917".equals(privilegeIdString) || "946".equals(privilegeIdString)) {
             return conditionMapper.listPaperNumberFromMarkPaper(examId, courseCode, dpr);
+        }
+        // 下载管理(653)
+        else if ("653".equals(privilegeIdString)) {
+            return conditionMapper.listPaperNumberFromExamTaskByUserIdAndPass(examId, courseCode, dpr);
         } else {
             return conditionMapper.listPaperNumber(semesterId, examId, courseCode, printPlanIds, dpr);
         }

+ 5 - 21
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DownloadServiceImpl.java

@@ -1,6 +1,5 @@
 package com.qmth.distributed.print.business.service.impl;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -48,13 +47,6 @@ public class DownloadServiceImpl implements DownloadService {
 
     @Resource
     ExamTaskMapper examTaskMapper;
-
-    @Resource
-    BasicAttachmentService basicAttachmentService;
-
-    @Resource
-    ExamPrintPlanService examPrintPlanService;
-
     @Resource
     ExamTaskDetailMapper examTaskDetailMapper;
 
@@ -72,23 +64,15 @@ public class DownloadServiceImpl implements DownloadService {
 
     @Resource
     CreatePdfUtil createPdfUtil;
-
-    @Resource
-    SysOrgService sysOrgService;
-
-    @Resource
-    DictionaryConfig dictionaryConfig;
-
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
-    public IPage<ExamTaskDetailDto> page(Long semesterId, Long examId, Long orgId, String courseName, Integer pageNumber, Integer pageSize) {
+    public IPage<ExamTaskDetailDto> page(Long examId, String courseCode, String paperNumber, Long orgId, String userParam, Integer pageNumber, Integer pageSize) {
         Page<ExamTaskDetailDto> page = new Page<>(pageNumber, pageSize);
-        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
-        return examTaskMapper.listExamTaskDetailDownload(page, schoolId, semesterId, examId, courseName, orgId, dpr);
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(requestUser.getSchoolId(), requestUser.getId(), ServletUtil.getRequest().getServletPath());
+        return examTaskMapper.listExamTaskDetailDownload(page, examId, courseCode, paperNumber, orgId, userParam, dpr);
     }
 
     @Override
@@ -195,8 +179,8 @@ public class DownloadServiceImpl implements DownloadService {
     }
 
     @Override
-    public List<ExamTaskDetailDto> listExamQuery(Long semesterId, Long examId, Long orgId, String courseName, Set<Long> idSet) {
-        return examTaskMapper.listExamTaskDetailDownloadByQuery(semesterId, examId, courseName, null, idSet);
+    public List<ExamTaskDetailDto> listExamQuery(Long semesterId, Long examId, Long orgId, String courseName, Set<Long> idSet, DataPermissionRule dpr) {
+        return examTaskMapper.listExamTaskDetailDownloadByQuery(semesterId, examId, courseName, orgId, idSet, dpr);
     }
 
 }

+ 0 - 60
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SsoServiceImpl.java

@@ -12,7 +12,6 @@ import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.slf4j.Logger;
@@ -49,65 +48,6 @@ public class SsoServiceImpl implements SsoService {
     @Resource
     TeachCourseService teachCourseService;
 
-    @Override
-    public Map<String, Object> markerLoginInfo() {
-        try {
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-            SpecialPrivilegeEnum userSpecialPrivilege = sysUserService.findUserSpecialPrivilegeByUserId(sysUser.getId(), sysUser.getSchoolId());
-            if (SpecialPrivilegeEnum.UNIDENTIFIED.equals(userSpecialPrivilege)) {
-                throw ExceptionResultEnum.ERROR.exception("该用户没有评卷员角色,无法登录");
-            }
-
-            // 顶级机构
-            SysOrg rootOrg = sysOrgService.findRootOrg(sysUser.getSchoolId());
-            List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(sysUser.getOrgId(), false, false);
-            if (sysOrgList.isEmpty()) {
-                throw ExceptionResultEnum.ERROR.exception(String.format("未找到用户账号[%s]所属机构及上级机构", sysUser.getLoginName()));
-            }
-            Optional<SysOrg> orgOptional = sysOrgList.stream().filter(m -> m.getParentId() != null && m.getParentId().equals(rootOrg.getId())).findFirst();
-            if (!orgOptional.isPresent()) {
-                throw ExceptionResultEnum.ERROR.exception(String.format("未找到用户账号[%s]所属学院", sysUser.getLoginName()));
-            }
-            SysOrg collegeOrg = orgOptional.get();
-            // 3.3.0待更新
-//            return stmmsUtils.markLogin(sysUser, orgCode);
-            return null;
-        } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
-        }
-    }
-
-    @Override
-    public Map<String, Object> markerLeaderLoginInfo() {
-        try {
-            SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-            SpecialPrivilegeEnum userSpecialPrivilege = sysUserService.findUserSpecialPrivilegeByUserId(sysUser.getId(), sysUser.getSchoolId());
-            if (SpecialPrivilegeEnum.UNIDENTIFIED.equals(userSpecialPrivilege)
-                    || SpecialPrivilegeEnum.MARKER.equals(userSpecialPrivilege)) {
-                throw ExceptionResultEnum.ERROR.exception("该用户没有科组长角色,无法登录");
-            }
-
-            String orgCode = null;
-            // 顶级机构
-            SysOrg rootOrg = sysOrgService.findRootOrg(sysUser.getSchoolId());
-            List<SysOrg> sysOrgList = sysOrgService.findByConnectByParentId(sysUser.getOrgId(), false, false);
-            if (sysOrgList.isEmpty()) {
-                throw ExceptionResultEnum.ERROR.exception(String.format("未找到用户账号[%s]所属机构及上级机构", sysUser.getLoginName()));
-            }
-            Optional<SysOrg> orgOptional = sysOrgList.stream().filter(m -> m.getParentId() != null && m.getParentId().equals(rootOrg.getId())).findFirst();
-            if (!orgOptional.isPresent()) {
-                throw ExceptionResultEnum.ERROR.exception(String.format("未找到用户账号[%s]所属学院", sysUser.getLoginName()));
-            }
-            SysOrg collegeOrg = orgOptional.get();
-            orgCode = collegeOrg.getCode();
-            //todo 3.3.0待更新
-//            return stmmsUtils.markLeaderLogin(sysUser, orgCode);
-            return null;
-        } catch (Exception e) {
-            throw ExceptionResultEnum.ERROR.exception(e.getMessage());
-        }
-    }
-
     /**
      * 教研分析单点登录
      *

+ 19 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -24,6 +24,7 @@ import com.qmth.distributed.print.business.templete.service.TaskLogicService;
 import com.qmth.distributed.print.business.util.CreatePdfUtil;
 import com.qmth.teachcloud.common.annotation.ExcelDBFieldDesc;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.excel.*;
 import com.qmth.teachcloud.common.bean.dto.excel.export.BasicStudentErrorExportDto;
 import com.qmth.teachcloud.common.bean.dto.excel.export.SysUserErrorExportDto;
@@ -121,7 +122,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
     @Resource
     BasicStudentService basicStudentService;
     @Resource
-    ExamTaskPrintService examTaskPrintService;
+    BasicRoleDataPermissionService basicRoleDataPermissionService;
     @Resource
     BasicExamService basicExamService;
     @Resource
@@ -1841,8 +1842,13 @@ public class TaskLogicServiceImpl implements TaskLogicService {
             boolean downloadPaper = paperFileDownloadContent != null && (PaperFileDownloadContentEnum.ONLY_PAPER.equals(paperFileDownloadContent) || PaperFileDownloadContentEnum.PAPER_AND_CARD.equals(paperFileDownloadContent));
             boolean downloadCard = paperFileDownloadContent != null && (PaperFileDownloadContentEnum.ONLY_CARD.equals(paperFileDownloadContent) || PaperFileDownloadContentEnum.PAPER_AND_CARD.equals(paperFileDownloadContent));
 
+            SysUser requestUser = (SysUser) map.get(SystemConstant.USER);
+            DataPermissionRule dpr = null;
+            if (CollectionUtils.isEmpty(idSet)) {
+                dpr = basicRoleDataPermissionService.findDataPermission(653l, requestUser);
+            }
             // 查询待下载数据
-            List<ExamTaskDetailDto> examTaskDetailDtoList = downloadService.listExamQuery(semesterId, examId, orgId, courseName, idSet);
+            List<ExamTaskDetailDto> examTaskDetailDtoList = downloadService.listExamQuery(semesterId, examId, orgId, courseName, idSet, dpr);
             List<ExamTaskPaperExportDto> examTaskPaperExportDtoList = new ArrayList<>();
             for (ExamTaskDetailDto examTaskDetailDto : examTaskDetailDtoList) {
                 ExamTaskPaperExportDto examTaskPaperExportDto = new ExamTaskPaperExportDto(examTaskDetailDto);
@@ -1916,8 +1922,17 @@ public class TaskLogicServiceImpl implements TaskLogicService {
 
                         MakeMethodEnum makeMethodEnum = examCard.getMakeMethod();
 
-                        String cardHtmlPath = StringUtils.deleteWhitespace(zipLocalRootPath + File.separator + secondPath + File.separator + "题卡" + SystemConstant.HYPHEN + paperInfoVo.getName() + SystemConstant.HYPHEN + examCard.getTitle() + SystemConstant.HTML_PREFIX);
-                        String cardPdfPath = StringUtils.deleteWhitespace(zipLocalRootPath + File.separator + secondPath + File.separator + "题卡" + SystemConstant.HYPHEN + paperInfoVo.getName() + SystemConstant.HYPHEN + examCard.getTitle() +SystemConstant.PDF_PREFIX);
+                        String cardHtmlPath = zipLocalRootPath + File.separator + secondPath + File.separator + "题卡" + SystemConstant.HYPHEN + paperInfoVo.getName() + SystemConstant.HYPHEN + fileNamePath;
+                        String cardPdfPath = zipLocalRootPath + File.separator + secondPath + File.separator + "题卡" + SystemConstant.HYPHEN + paperInfoVo.getName() + SystemConstant.HYPHEN + fileNamePath;
+                        // 原文件名
+                        if (namedByOriginalFile) {
+                            cardHtmlPath = StringUtils.deleteWhitespace(cardHtmlPath + SystemConstant.HYPHEN + examCard.getTitle() + SystemConstant.HTML_PREFIX);
+                            cardPdfPath = StringUtils.deleteWhitespace(cardPdfPath + SystemConstant.HYPHEN + examCard.getTitle() + SystemConstant.PDF_PREFIX);
+                        } else {
+                            cardHtmlPath = StringUtils.deleteWhitespace(cardHtmlPath + SystemConstant.HTML_PREFIX);
+                            cardPdfPath = StringUtils.deleteWhitespace(cardPdfPath + SystemConstant.PDF_PREFIX);
+                        }
+
                         // 通用题卡
                         String htmlContent;
                         if (MakeMethodEnum.SELECT.equals(makeMethodEnum)) {

+ 61 - 2
distributed-print-business/src/main/resources/mapper/ConditionMapper.xml

@@ -453,7 +453,7 @@
             </if>
         </if>
     </select>
-    <select id="listCourseFromExamTask" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
+    <select id="listCourseFromExamTaskByCreateId" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
         SELECT
             distinct a.course_code code,
             a.course_name name
@@ -478,7 +478,35 @@
             </if>
         </where>
     </select>
-    <select id="listPaperNumberFromExamTask" resultType="java.lang.String">
+    <select id="listCourseFromExamTaskByUserId" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
+        SELECT
+            distinct a.course_code code,
+            a.course_name name
+        FROM
+            exam_task a
+                LEFT JOIN
+            t_f_flow_approve g ON g.flow_id = a.flow_id
+                LEFT JOIN
+            sys_user d ON a.user_id = d.id
+        <where>
+            a.status = 'SUBMIT' AND (a.review = 0 OR (a.review = 1 AND g.status = 'FINISH'))
+            <if test="examId != null">
+                and a.exam_id = #{examId}
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND a.user_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND d.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+    </select>
+    <select id="listPaperNumberFromExamTaskByCreateId" resultType="java.lang.String">
         SELECT
             a.paper_number paperNumber
             FROM
@@ -506,6 +534,37 @@
         </where>
         order by a.create_time desc
     </select>
+    <select id="listPaperNumberFromExamTaskByUserIdAndPass" resultType="java.lang.String">
+        SELECT
+            a.paper_number paperNumber
+        FROM
+            exam_task a
+                LEFT JOIN
+            t_f_flow_approve g ON g.flow_id = a.flow_id
+                LEFT JOIN
+            sys_user d ON a.user_id = d.id
+        <where>
+            a.status = 'SUBMIT' AND (a.review = 0 OR (a.review = 1 AND g.status = 'FINISH'))
+            <if test="examId != null">
+                and a.exam_id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and a.course_code = #{courseCode}
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND a.user_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND d.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+        order by a.create_time desc
+    </select>
     <select id="listCourseForQuery" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
         SELECT
             distinct a.course_code code,

+ 34 - 16
distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml

@@ -1046,7 +1046,11 @@
             b.enable,
             b.paper_type paperType,
             b.exposed_paper_type exposedPaperType,
-            b.unexposed_paper_type unexposedPaperType
+            b.unexposed_paper_type unexposedPaperType,
+            a.user_id userId,
+            su.login_name loginName,
+            su.real_name userName,
+            so.name orgName
         FROM
             exam_task a
                 LEFT JOIN
@@ -1054,6 +1058,8 @@
                 LEFT JOIN
             basic_course bc ON a.school_id = bc.school_id and a.course_code = bc.code
                 LEFT JOIN
+            sys_org so ON bc.teaching_room_id = so.id
+                LEFT JOIN
             basic_card_rule e ON a.card_rule_id = e.id
                 LEFT JOIN
             basic_exam be ON a.exam_id = be.id
@@ -1061,31 +1067,33 @@
             basic_semester bs ON be.semester_id = bs.id
                 LEFT JOIN
             t_f_flow_approve g ON g.flow_id = a.flow_id
+                LEFT JOIN
+            sys_user su ON a.user_id = su.id
         <where>
             a.status = 'SUBMIT'
           AND (a.review = 0
             OR (a.review = 1 AND g.status = 'FINISH'))
-            <if test="schoolId != null and schoolId != ''">
-                and a.school_id = #{schoolId}
-            </if>
-            <if test="semesterId != null and semesterId != ''">
-                and be.semester_id = #{semesterId}
-            </if>
             <if test="examId != null and examId != ''">
                 and a.exam_id = #{examId}
             </if>
-            <if test="courseName != null and courseName != ''">
-                and a.course_name like concat('%', #{courseName}, '%')
+            <if test="courseCode != null and courseCode != ''">
+                and a.course_code = #{courseCode}
+            </if>
+            <if test="paperNumber != null and paperNumber != ''">
+                and a.paper_number = #{paperNumber}
             </if>
             <if test="orgId != null">
                 and bc.teaching_room_id = #{orgId}
             </if>
+            <if test="userParam != null and userParam != ''">
+                and (su.login_name like concat('%',#{userParam},'%') or su.real_name like concat('%',#{userParam},'%'))
+            </if>
             <if test="dpr != null">
                 <if test="dpr.requestUserId != null">
-                    AND a.create_id = #{dpr.requestUserId}
+                    AND a.user_id = #{dpr.requestUserId}
                 </if>
                 <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
-                    AND a.org_id IN
+                    AND su.org_id IN
                     <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
                         #{item}
                     </foreach>
@@ -1127,6 +1135,8 @@
             t_f_flow_approve g ON g.flow_id = a.flow_id
                 LEFT JOIN
             sys_org so ON bc.teaching_room_id = so.id and so.enable
+                LEFT JOIN
+            sys_user su ON a.user_id = su.id
         <where>
             a.status = 'SUBMIT'
             AND (a.review = 0
@@ -1140,11 +1150,8 @@
             <if test="courseName != null and courseName != ''">
                 and a.course_name like concat('%', #{courseName}, '%')
             </if>
-            <if test="orgIds != null and orgIds != '' and orgIds.size > 0">
-                and bc.teaching_room_id in
-                <foreach collection="orgIds" item="item" separator="," open="(" close=")">
-                    #{item}
-                </foreach>
+            <if test="orgId != null">
+                and bc.teaching_room_id = #{orgId}
             </if>
             <if test="idSet != null and idSet != '' and idSet.size > 0">
                 and a.id in
@@ -1152,6 +1159,17 @@
                     #{item}
                 </foreach>
             </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND a.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>
         ORDER BY a.update_time DESC
     </select>

+ 7 - 14
distributed-print/src/main/java/com/qmth/distributed/print/api/DownloadController.java

@@ -38,27 +38,20 @@ public class DownloadController {
     private AsyncDownloadPaperFileBatchService asyncDownloadPaperFileBatchService;
 
     /**
-     * 分页
-     *
-     * @param semesterId 学期ID
-     * @param examId     考试ID
-     * @param orgId      机构Id
-     * @param courseName 课程名称
-     * @param pageNumber 分页页码
-     * @param pageSize   分页数
-     * @return Object
+     * 分页查询
      */
     @ApiOperation(value = "分页查询")
     @RequestMapping(value = "/page", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = TaskListResult.class)})
-    public Object page(@ApiParam(value = "学期ID", required = false) @RequestParam(required = false) Long semesterId,
-                       @ApiParam(value = "考试ID", required = false) @RequestParam(required = false) Long examId,
-                       @ApiParam(value = "学院ID", required = false) @RequestParam(required = false) Long orgId,
-                       @ApiParam(value = "课程名称", required = false) @RequestParam(required = false) String courseName,
+    public Object page(@ApiParam(value = "考试ID", required = true) @RequestParam() Long examId,
+                       @ApiParam(value = "课程开课机构ID") @RequestParam(required = false) Long orgId,
+                       @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
+                       @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
+                       @ApiParam(value = "命题老师工号/姓名") @RequestParam(required = false) String userParam,
                        @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
                        @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
 
-        return ResultUtil.ok(downloadService.page(semesterId, examId, orgId, courseName, pageNumber, pageSize));
+        return ResultUtil.ok(downloadService.page(examId, courseCode, paperNumber, orgId, userParam, pageNumber, pageSize));
     }
 
     /**

+ 0 - 26
distributed-print/src/main/java/com/qmth/distributed/print/api/SsoController.java

@@ -45,32 +45,6 @@ public class SsoController {
     @Resource
     SysOrgService sysOrgService;
 
-    /**
-     * 评卷员单点登录
-     *
-     * @return
-     */
-    @ApiOperation(value = "评卷员单点登录")
-    @RequestMapping(value = "/marker_login", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
-    public Result markerLogin() {
-        Map<String, Object> map = ssoService.markerLoginInfo();
-        return ResultUtil.ok(map);
-    }
-
-    /**
-     * 评卷员单点登录
-     *
-     * @return
-     */
-    @ApiOperation(value = "评卷员单点登录")
-    @RequestMapping(value = "/marker_leader_login", method = RequestMethod.POST)
-    @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.UN_KNOW)
-    public Result markerLeaderLogin() {
-        Map<String, Object> map = ssoService.markerLeaderLoginInfo();
-        return ResultUtil.ok(map);
-    }
-
     @ApiOperation(value = "题库单点登录")
     @ApiResponses({@ApiResponse(code = 200, message = "题库单点登录", response = Result.class)})
     @RequestMapping(value = "/question_library_login", method = RequestMethod.POST)

+ 9 - 12
distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java

@@ -7,8 +7,6 @@ import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.params.LoginParam;
 import com.qmth.distributed.print.business.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.EditResult;
-import com.qmth.teachcloud.common.entity.BasicExamStudent;
-import com.qmth.teachcloud.common.entity.BasicTeachClazz;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.distributed.print.business.enums.DictionaryEnum;
 import com.qmth.distributed.print.business.enums.LoginTypeEnum;
@@ -24,7 +22,6 @@ import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
 import com.qmth.teachcloud.common.enums.log.SystemEnum;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.FileUtil;
 import com.qmth.teachcloud.common.util.Result;
@@ -810,15 +807,15 @@ public class SysController {
     @RequestMapping(value = "/get_open_role", method = RequestMethod.POST)
     public Result getOpenRole() {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        SpecialPrivilegeEnum userSpecialPrivilege = sysUserService.findUserSpecialPrivilegeByUserId(sysUser.getId(), sysUser.getSchoolId());
-        List<SpecialPrivilegeEnum> list = new ArrayList<>();
-        if (!SpecialPrivilegeEnum.UNIDENTIFIED.equals(userSpecialPrivilege)) {
-            if (SpecialPrivilegeEnum.COMPOSITE.equals(userSpecialPrivilege)) {
-                list.add(SpecialPrivilegeEnum.MARKER);
-            } else {
-                list.add(userSpecialPrivilege);
-            }
-        }
+//        SpecialPrivilegeEnum userSpecialPrivilege = sysUserService.findUserSpecialPrivilegeByUserId(sysUser.getId(), sysUser.getSchoolId());
+        List list = new ArrayList<>();
+//        if (!SpecialPrivilegeEnum.UNIDENTIFIED.equals(userSpecialPrivilege)) {
+//            if (SpecialPrivilegeEnum.COMPOSITE.equals(userSpecialPrivilege)) {
+//                list.add(SpecialPrivilegeEnum.MARKER);
+//            } else {
+//                list.add(userSpecialPrivilege);
+//            }
+//        }
         return ResultUtil.ok(list);
     }
 

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

@@ -7,8 +7,8 @@ import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.enums.log.CustomizedOperationTypeEnum;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
@@ -48,7 +48,7 @@ public class SysOrgController {
      */
     @ApiOperation(value = "查询")
     @RequestMapping(value = "/list", method = RequestMethod.POST)
-    public Result list(@RequestParam(value = "specialPrivilege", required = false) SpecialPrivilegeEnum specialPrivilege,
+    public Result list(@RequestParam(value = "specialPrivilege", required = false) RoleTypeEnum specialPrivilege,
                        @RequestParam(value = "withoutPrintingRoom", required = false) boolean withoutPrintingRoom,
                        @ApiParam(value = "科目编码") @RequestParam(required = false) String courseCode) {
         return ResultUtil.ok(sysOrgService.listOrgTree(specialPrivilege, withoutPrintingRoom, courseCode));

+ 0 - 47
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/userPush/SpecialPrivilegeEnum.java

@@ -1,47 +0,0 @@
-package com.qmth.teachcloud.common.enums.userPush;
-
-/**
- * @Description: 用户特殊身份(权限)枚举
- * @Author: CaoZixuan
- * @Date: 2021-10-27
- */
-public enum SpecialPrivilegeEnum {
-    MARKER("评卷员权限", "Marker", "M_", 5, "7"),
-    COMPOSITE("复合权限", "Composite", null, 0, "7,6"),
-    TEACHER("内置老师权限", "teacher", null, 0, "3"),
-    UNIDENTIFIED("无特殊权限", "Unidentified", null, 0, null);
-
-    SpecialPrivilegeEnum(String title, String id, String prefix, int value, String roleId) {
-        this.title = title;
-        this.id = id;
-        this.prefix = prefix;
-        this.value = value;
-        this.roleId = roleId;
-    }
-
-    private final String title;
-    private final String id;
-    private final String prefix;
-    private final int value;
-    private final String roleId;
-
-    public String getTitle() {
-        return title;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public String getPrefix() {
-        return prefix;
-    }
-
-    public int getValue() {
-        return value;
-    }
-
-    public String getRoleId() {
-        return roleId;
-    }
-}

+ 0 - 12
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/SysUserMapper.java

@@ -31,18 +31,6 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     IPage<UserDto> listCustomerPage(Page<UserDto> page, @Param("realName") String realName, @Param("enable") Boolean enable);
 
-    /**
-     * 过滤拥有审核权限的人
-     *
-     * @param schoolId
-     * @param orgIds
-     * @param filter
-     * @param approveName
-     * @param realName
-     * @return
-     */
-    List<ApproveUserResult> filterFlowPrivilege(@Param("schoolId") Long schoolId, @Param("orgIds") Set<Long> orgIds, @Param("filter") Boolean filter, @Param("approveName") String approveName, @Param("realName") String realName);
-
     /**
      * 根据id获取
      *

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicRoleDataPermissionService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionInfo;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.entity.BasicRoleDataPermission;
+import com.qmth.teachcloud.common.entity.SysUser;
 
 import java.util.List;
 
@@ -54,4 +55,5 @@ public interface BasicRoleDataPermissionService extends IService<BasicRoleDataPe
      * @return
      */
     DataPermissionRule findDataPermission(Long privilegeId);
+    DataPermissionRule findDataPermission(Long privilegeId, SysUser sysUser);
 }

+ 2 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysOrgService.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.OrgDto;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
+import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -30,7 +30,7 @@ public interface SysOrgService extends IService<SysOrg> {
      * @param courseCode
      * @return 查询到的机构
      */
-    List<OrgDto> listOrgTree(SpecialPrivilegeEnum specialPrivilegeEnum, boolean withoutPrintingRoom, String courseCode);
+    List<OrgDto> listOrgTree(RoleTypeEnum specialPrivilegeEnum, boolean withoutPrintingRoom, String courseCode);
 
     /**
      * 获取所有机构

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysRoleService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.params.SysRolePrivilegeParams;
 import com.qmth.teachcloud.common.entity.SysRole;
+import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 
 import java.security.NoSuchAlgorithmException;
 import java.util.List;
@@ -57,4 +58,6 @@ public interface SysRoleService extends IService<SysRole> {
     boolean builtin(Long id, boolean defaultRole);
 
     List<SysRole> getByRoleName(Long schoolId, String roleName);
+
+    SysRole getDefaultRoleByType(RoleTypeEnum type);
 }

+ 1 - 50
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysUserService.java

@@ -3,7 +3,6 @@ package com.qmth.teachcloud.common.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.teachcloud.common.bean.dto.AssignTeacherDto;
-import com.qmth.teachcloud.common.bean.dto.LoginDto;
 import com.qmth.teachcloud.common.bean.dto.UserDto;
 import com.qmth.teachcloud.common.bean.params.ApproveUserResult;
 import com.qmth.teachcloud.common.bean.params.UserSaveParams;
@@ -12,9 +11,7 @@ import com.qmth.teachcloud.common.bean.result.LoginResult;
 import com.qmth.teachcloud.common.bean.result.SysUserResult;
 import com.qmth.teachcloud.common.bean.result.UserRoleNameResult;
 import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.FlowApproveNameEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import org.springframework.util.LinkedMultiValueMap;
 
 import javax.servlet.http.HttpServletResponse;
@@ -96,8 +93,6 @@ public interface SysUserService extends IService<SysUser> {
 
     boolean bindRoles(SysUser sysUser);
 
-    LoginDto getUserRoles(SysUser sysUser);
-
     AssignTeacherDto listUser(String courseCode, String param);
 
     List<SysUser> listByOrgId(Long id);
@@ -123,18 +118,6 @@ public interface SysUserService extends IService<SysUser> {
      */
     boolean saveUserNoAuth(UserSaveParams userSaveParams);
 
-    /**
-     * 过滤拥有审核权限的人
-     *
-     * @param schoolId
-     * @param orgIds
-     * @param filter
-     * @param approveName
-     * @param realName
-     * @return
-     */
-    List<ApproveUserResult> filterFlowPrivilege(Long schoolId, Set<Long> orgIds, Boolean filter, FlowApproveNameEnum approveName, String realName);
-
     /**
      * 执行批量导入用户逻辑
      *
@@ -177,23 +160,6 @@ public interface SysUserService extends IService<SysUser> {
      */
     void expiredVerifyCode(Long userId, String mobileNumber);
 
-    /**
-     * 获取教研室id底下的人数量
-     *
-     * @param orgId
-     * @return
-     */
-    public int countByTeachingRoomId(Long orgId);
-
-    /**
-     * 根据用户id查询当前用户的特殊权限
-     *
-     * @param userId   用户id
-     * @param schoolId 学校id
-     * @return 用户特殊权限身份
-     */
-    SpecialPrivilegeEnum findUserSpecialPrivilegeByUserId(Long userId, Long schoolId);
-
     /**
      * 查找用户角色名
      *
@@ -226,13 +192,6 @@ public interface SysUserService extends IService<SysUser> {
      */
     boolean isAdminDataAuth(Long userId);
 
-    /**
-     * 查找机构树下所有用户集合
-     *
-     * @return 用户集合
-     */
-    List<SysUserResult> findSysUserResultList();
-
     /**
      * 根据roleId和成员姓名获取
      *
@@ -244,14 +203,6 @@ public interface SysUserService extends IService<SysUser> {
 
     List<SysUser> findBySchoolIdAndCode(Long schoolId, String code);
 
-    /**
-     * 查询某用户是否包含系统特定角色
-     *
-     * @param userId      用户id
-     * @param defaultRole 系统默认角色
-     * @return true:包含 || false:不包含
-     */
-    boolean includeSysRole(Long userId, RoleTypeEnum defaultRole);
 
     /**
      * 为没有学校管理员的学校自动创建一个学校管理员
@@ -273,7 +224,7 @@ public interface SysUserService extends IService<SysUser> {
      * @param specialPrivilegeEnum
      * @return
      */
-    List<SysUserResult> findSysUserResultListNew(Long schoolId, SpecialPrivilegeEnum specialPrivilegeEnum);
+    List<SysUserResult> findSysUserResultListNew(Long schoolId, RoleTypeEnum specialPrivilegeEnum);
 
     /**
      * 查找科目下命题老师

+ 6 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicRoleDataPermissionServiceImpl.java

@@ -126,6 +126,12 @@ public class BasicRoleDataPermissionServiceImpl extends ServiceImpl<BasicRoleDat
         return this.analysisDataPermission(sysPrivilege, requestUser.getId(), requestUser.getSchoolId());
     }
 
+    @Override
+    public DataPermissionRule findDataPermission(Long privilegeId, SysUser user) {
+        SysPrivilege sysPrivilege = sysPrivilegeService.getById(privilegeId);
+        return this.analysisDataPermission(sysPrivilege, user.getId(), user.getSchoolId());
+    }
+
     /**
      * 计算多角色中的最大权限并解析
      *

+ 2 - 3
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysOrgServiceImpl.java

@@ -19,7 +19,6 @@ import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
 import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.mapper.SysOrgMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExcelUtil;
@@ -70,7 +69,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     private BasicCourseService basicCourseService;
 
     @Override
-    public List<OrgDto> listOrgTree(SpecialPrivilegeEnum specialPrivilegeEnum, boolean withoutPrintingRoom, String courseCode) {
+    public List<OrgDto> listOrgTree(RoleTypeEnum specialPrivilegeEnum, boolean withoutPrintingRoom, String courseCode) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
 //        List<SysUserResult> sysUserResultList = sysUserService.findSysUserResultList();
 //        List<SysUserResult> finalSysUserResultList = sysUserResultList.stream()
@@ -130,7 +129,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             map.remove(key);
         }
         List<OrgDto> list = new ArrayList<>(map.values());
-        if ((specialPrivilegeEnum == SpecialPrivilegeEnum.MARKER || specialPrivilegeEnum == SpecialPrivilegeEnum.COMPOSITE) && Objects.nonNull(courseCode)) {
+        if ((specialPrivilegeEnum == RoleTypeEnum.MARKER) && Objects.nonNull(courseCode)) {
             List<SysUserResult> resultList = sysUserService.findCourseSysUserResultList(schoolId, courseCode);
             list.get(0).setCourseUserList(resultList);
         }

+ 9 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysRoleServiceImpl.java

@@ -395,4 +395,13 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     public List<SysRole> getByRoleName(Long schoolId, String roleName) {
         return this.baseMapper.getByRoleName(schoolId, roleName);
     }
+
+    @Override
+    public SysRole getDefaultRoleByType(RoleTypeEnum type) {
+        QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().isNull(SysRole::getSchoolId)
+                .eq(SysRole::getType, type)
+                .eq(SysRole::getDefaultRole, true);
+        return this.getOne(queryWrapper);
+    }
 }

+ 5 - 119
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -20,11 +20,9 @@ import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
-import com.qmth.teachcloud.common.enums.userPush.SpecialPrivilegeEnum;
 import com.qmth.teachcloud.common.mapper.SysUserMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.*;
-
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -41,7 +39,6 @@ import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * <p>
@@ -342,27 +339,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return sysUserRoleService.saveBatch(list);
     }
 
-    @Override
-    public LoginDto getUserRoles(SysUser sysUser) {
-        LoginDto loginDto = new LoginDto();
-        loginDto.setId(String.valueOf(sysUser.getId()));
-        loginDto.setSchoolId(String.valueOf(sysUser.getSchoolId()));
-        loginDto.setLoginName(sysUser.getLoginName());
-        loginDto.setRealName(sysUser.getRealName());
-        loginDto.setOrgId(String.valueOf(sysUser.getOrgId()));
-        loginDto.setEnable(sysUser.getEnable());
-        loginDto.setPwdUpdateTime(sysUser.getPwdUpdateTime());
-
-        if ("admin".equals(sysUser.getLoginName())) {
-            loginDto.setRoles(Arrays.asList("ADMIN"));
-        } else {
-            List<SysRole> list = sysUserRoleService.listRoleByUserId(sysUser.getId());
-            List<String> roles = list.stream().map(m -> m.getType().name()).collect(Collectors.toList());
-            loginDto.setRoles(roles);
-        }
-        return loginDto;
-    }
-
     @Override
     public AssignTeacherDto listUser(String courseCode, String param) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
@@ -716,21 +692,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return isSuccess;
     }
 
-    /**
-     * 过滤拥有审核权限的人
-     *
-     * @param schoolId    schoolId
-     * @param orgIds      orgIds
-     * @param filter      filter
-     * @param approveName approveName
-     * @param realName    realName
-     * @return return
-     */
-    @Override
-    public List<ApproveUserResult> filterFlowPrivilege(Long schoolId, Set<Long> orgIds, Boolean filter, FlowApproveNameEnum approveName, String realName) {
-        return sysUserMapper.filterFlowPrivilege(schoolId, orgIds, filter, Objects.nonNull(approveName) ? approveName.getId() : null, realName);
-    }
-
     @Transactional
     @Override
     public Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) {
@@ -874,38 +835,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
     }
 
-
-    /**
-     * 获取教研室id底下的人数量
-     *
-     * @param orgId
-     * @return
-     */
-    @Override
-    public int countByTeachingRoomId(Long orgId) {
-        QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
-        sysUserQueryWrapper.lambda().eq(SysUser::getOrgId, orgId);
-        return sysUserService.count(sysUserQueryWrapper);
-    }
-
-    @Override
-    public SpecialPrivilegeEnum findUserSpecialPrivilegeByUserId(Long userId, Long schoolId) {
-        // 知学知考评卷员-科组长角色
-        boolean markerRole = this.includeSysRole(userId, RoleTypeEnum.MARKER);
-        boolean leaderRole = this.includeSysRole(userId, RoleTypeEnum.MARKER_LEADER);
-
-        // 记录的云阅卷应该的状态(云阅卷自己不改)
-        SpecialPrivilegeEnum result;
-        if (markerRole && leaderRole) {
-            result = SpecialPrivilegeEnum.COMPOSITE;
-        } else if (markerRole) {
-            result = SpecialPrivilegeEnum.MARKER;
-        } else {
-            result = SpecialPrivilegeEnum.UNIDENTIFIED;
-        }
-        return result;
-    }
-
     /**
      * 查找用户角色名
      *
@@ -958,35 +887,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return result;
     }
 
-    @Override
-    public List<SysUserResult> findSysUserResultList() {
-        Long schoolId = SystemConstant.convertIdToLong(String.valueOf(ServletUtil.getRequestHeaderSchoolId()));
-        List<SysUser> sysUserDatasource = sysUserService.list(new QueryWrapper<SysUser>().lambda().eq(SysUser::getSchoolId, schoolId));
-        List<SysRole> sysRoleDatasource = sysRoleService.list(new QueryWrapper<SysRole>().lambda().eq(SysRole::getSchoolId, schoolId));
-        List<SysUserRole> sysUserRoleDatasource = sysUserRoleService.list();
-
-        return sysUserDatasource.stream().flatMap(e -> {
-            Set<Long> roleIdSet = sysUserRoleDatasource.stream().filter(ur -> e.getId().equals(ur.getUserId())).map(SysUserRole::getRoleId).collect(Collectors.toSet());
-            List<RoleResult> roleResultCellList = new ArrayList<>();
-            if (roleIdSet.size() > 0) {
-                roleResultCellList = sysRoleDatasource.stream().filter(r -> roleIdSet.contains(r.getId())).flatMap(rr -> {
-                    RoleResult roleResult = new RoleResult();
-                    roleResult.setRoleId(rr.getId());
-                    roleResult.setRoleName(rr.getName());
-                    return Stream.of(roleResult);
-                }).collect(Collectors.toList());
-            }
-            SysUserResult sysUserResult = new SysUserResult();
-            sysUserResult.setId(e.getId());
-            sysUserResult.setLoginName(e.getLoginName());
-            sysUserResult.setRealName(e.getRealName());
-            sysUserResult.setMobileNumber(e.getMobileNumber());
-            sysUserResult.setOrgId(e.getOrgId());
-            sysUserResult.setRoleResultList(roleResultCellList);
-            return Stream.of(sysUserResult);
-        }).collect(Collectors.toList());
-    }
-
     /**
      * 根据roleId和成员姓名获取
      *
@@ -1007,19 +907,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return sysUserMapper.selectList(queryWrapper);
     }
 
-    @Override
-    public boolean includeSysRole(Long userId, RoleTypeEnum defaultRole) {
-        SysRole sysRole = sysRoleService.getOne(new QueryWrapper<SysRole>().lambda().eq(SysRole::getType, defaultRole));
-        if (Objects.nonNull(sysRole)) {
-            SysUserRole sysUserRole = sysUserRoleService.getOne(new QueryWrapper<SysUserRole>()
-                    .lambda()
-                    .eq(SysUserRole::getUserId, userId)
-                    .eq(SysUserRole::getRoleId, sysRole.getId()));
-            return Objects.nonNull(sysUserRole);
-        }
-        return false;
-    }
-
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void buildAdministratorForSchool(Long schoolId) {
@@ -1104,7 +991,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         userExportDtos.forEach(m -> {
             List<SysOrg> byConnectByParentIdList = sysOrgService.findByConnectByParentId(m.getOrgId(), true, false);
-            if(CollectionUtils.isNotEmpty(byConnectByParentIdList)){
+            if (CollectionUtils.isNotEmpty(byConnectByParentIdList)) {
                 m.setOrgName(byConnectByParentIdList.stream().map(SysOrg::getName).collect(Collectors.joining("/")));
             }
             //角色
@@ -1129,14 +1016,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @return
      */
     @Override
-    public List<SysUserResult> findSysUserResultListNew(Long schoolId, SpecialPrivilegeEnum specialPrivilegeEnum) {
+    public List<SysUserResult> findSysUserResultListNew(Long schoolId, RoleTypeEnum specialPrivilegeEnum) {
         Set<Long> roleIds = null;
         if (Objects.nonNull(specialPrivilegeEnum)) {
             roleIds = new HashSet<>();
-            String roleId = specialPrivilegeEnum.getRoleId();
-            String[] strs = StringUtils.split(roleId, ",");
-            for (int i = 0; i < strs.length; i++) {
-                roleIds.add(Long.parseLong(strs[i]));
+            SysRole sysRole = sysRoleService.getDefaultRoleByType(specialPrivilegeEnum);
+            if (sysRole != null && sysRole.getId() != null) {
+                roleIds.add(sysRole.getId());
             }
         }
         return sysUserMapper.findSysUserResultListNew(schoolId, roleIds);

+ 0 - 29
teachcloud-common/src/main/resources/mapper/SysUserMapper.xml

@@ -198,35 +198,6 @@
             left join sys_role_privilege srp on srp.role_id = sur.role_id
             left join sys_org so on so.id = su.org_id
     </sql>
-
-    <select id="filterFlowPrivilege" resultType="com.qmth.teachcloud.common.bean.params.ApproveUserResult">
-        <include refid="approveUserResultHeaderCommon" />
-        <if test="filter != null and filter != '' and filter == 1">
-            join(
-            select
-            sp.id
-            from
-            sys_privilege sp
-            where sp.url = #{approveName}) t on
-            t.id = srp.privilege_id
-        </if>
-           <where>
-                and su.enable = true
-               <if test="orgIds != null and orgIds != '' and orgIds.size > 0">
-                   AND su.org_id IN
-                   <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
-                       #{item}
-                   </foreach>
-               </if>
-               <if test="schoolId != null and schoolId != ''">
-                   and su.school_id = #{schoolId}
-               </if>
-               <if test="realName != null and realName != ''">
-                   and su.real_name like concat('%', #{realName} , '%')
-               </if>
-           </where>
-    </select>
-
     <select id="findById" resultType="com.qmth.teachcloud.common.bean.params.ApproveUserResult">
         <include refid="approveUserResultHeaderCommon" />
         <where>

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

@@ -130,12 +130,12 @@
         SELECT t.id,t.exam_id,t.course_code,t.course_name,t.paper_number,
         count(*) studentCount,count(distinct s.class_name) classCount,
         sum(case when s.is_absent =1 or s.omr_absent =1 then 1 else 0 end) absentCount,
-        avg(case when s.is_absent !=1 then s.objective_score+s.subjective_score else null end) avgScore,
-        max(case when s.is_absent !=1 then s.objective_score+s.subjective_score else null end) maxScore,
-        min(case when s.is_absent !=1 then s.objective_score+s.subjective_score else null end) minScore,
-        sum(case when s.objective_score+s.subjective_score >=t.total_score * t.pass_score/100 then 1 else 0 end)
+        avg(case when s.is_absent !=1 then ifnull(s.objective_score,0)+ifnull(s.subjective_score,0) else null end) avgScore,
+        max(case when s.is_absent !=1 then ifnull(s.objective_score,0)+ifnull(s.subjective_score,0) else null end) maxScore,
+        min(case when s.is_absent !=1 then ifnull(s.objective_score,0)+ifnull(s.subjective_score,0) else null end) minScore,
+        sum(case when ifnull(s.objective_score,0)+ifnull(s.subjective_score,0) >=t.total_score * t.pass_score/100 then 1 else 0 end)
         passCount,
-        sum(case when s.objective_score+s.subjective_score >=t.total_score * t.excellent_score/100 then 1 else 0 end)
+        sum(case when ifnull(s.objective_score,0)+ifnull(s.subjective_score,0) >=t.total_score * t.excellent_score/100 then 1 else 0 end)
         excellentCount
         FROM
         mark_paper t