diff --git a/backend/ruoyi-modules/ruoyi-workflow/pom.xml b/backend/ruoyi-modules/ruoyi-workflow/pom.xml index d195fafa..16d05991 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/pom.xml +++ b/backend/ruoyi-modules/ruoyi-workflow/pom.xml @@ -1,7 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> org.dromara ruoyi-modules @@ -78,6 +77,7 @@ org.dromara.warm warm-flow-plugin-ui-sb-web + diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/XgStudentCancelLeaveController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentCancelLeaveController.java similarity index 95% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/XgStudentCancelLeaveController.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentCancelLeaveController.java index ae27f485..7b9c05c3 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/XgStudentCancelLeaveController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentCancelLeaveController.java @@ -1,4 +1,4 @@ -package org.dromara.workflow.controller; +package org.dromara.xg.controller; import java.util.List; @@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.workflow.domain.vo.XgStudentCancelLeaveVo; -import org.dromara.workflow.domain.bo.XgStudentCancelLeaveBo; -import org.dromara.workflow.service.IXgStudentCancelLeaveService; +import org.dromara.xg.domain.vo.XgStudentCancelLeaveVo; +import org.dromara.xg.domain.bo.XgStudentCancelLeaveBo; +import org.dromara.xg.service.IXgStudentCancelLeaveService; import org.dromara.common.mybatis.core.page.TableDataInfo; /** diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/XgStudentLeaveController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentLeaveController.java similarity index 95% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/XgStudentLeaveController.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentLeaveController.java index 2a772b6b..e2d446f2 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/XgStudentLeaveController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentLeaveController.java @@ -1,4 +1,4 @@ -package org.dromara.workflow.controller; +package org.dromara.xg.controller; import java.util.List; @@ -17,9 +17,9 @@ import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.workflow.domain.vo.XgStudentLeaveVo; -import org.dromara.workflow.domain.bo.XgStudentLeaveBo; -import org.dromara.workflow.service.IXgStudentLeaveService; +import org.dromara.xg.domain.vo.XgStudentLeaveVo; +import org.dromara.xg.domain.bo.XgStudentLeaveBo; +import org.dromara.xg.service.IXgStudentLeaveService; import org.dromara.common.mybatis.core.page.TableDataInfo; /** diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/XgStudentCancelLeave.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentCancelLeave.java similarity index 98% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/XgStudentCancelLeave.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentCancelLeave.java index ba9595ef..e2a54cf4 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/XgStudentCancelLeave.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentCancelLeave.java @@ -1,4 +1,4 @@ -package org.dromara.workflow.domain; +package org.dromara.xg.domain; import org.dromara.common.tenant.core.TenantEntity; import com.baomidou.mybatisplus.annotation.*; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/XgStudentLeave.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentLeave.java similarity index 98% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/XgStudentLeave.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentLeave.java index 098df66c..97a58111 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/XgStudentLeave.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/XgStudentLeave.java @@ -1,4 +1,4 @@ -package org.dromara.workflow.domain; +package org.dromara.xg.domain; import org.dromara.common.tenant.core.TenantEntity; import com.baomidou.mybatisplus.annotation.*; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/XgStudentCancelLeaveBo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentCancelLeaveBo.java similarity index 98% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/XgStudentCancelLeaveBo.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentCancelLeaveBo.java index 42eb0f3c..4621628b 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/XgStudentCancelLeaveBo.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentCancelLeaveBo.java @@ -1,6 +1,6 @@ -package org.dromara.workflow.domain.bo; +package org.dromara.xg.domain.bo; -import org.dromara.workflow.domain.XgStudentCancelLeave; +import org.dromara.xg.domain.XgStudentCancelLeave; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/XgStudentLeaveBo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentLeaveBo.java similarity index 98% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/XgStudentLeaveBo.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentLeaveBo.java index a355427a..a301f476 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/XgStudentLeaveBo.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/bo/XgStudentLeaveBo.java @@ -1,6 +1,6 @@ -package org.dromara.workflow.domain.bo; +package org.dromara.xg.domain.bo; -import org.dromara.workflow.domain.XgStudentLeave; +import org.dromara.xg.domain.XgStudentLeave; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/XgStudentCancelLeaveVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentCancelLeaveVo.java similarity index 98% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/XgStudentCancelLeaveVo.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentCancelLeaveVo.java index 264975dd..adab1776 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/XgStudentCancelLeaveVo.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentCancelLeaveVo.java @@ -1,8 +1,8 @@ -package org.dromara.workflow.domain.vo; +package org.dromara.xg.domain.vo; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.workflow.domain.XgStudentCancelLeave; +import org.dromara.xg.domain.XgStudentCancelLeave; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import org.dromara.common.excel.annotation.ExcelDictFormat; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/XgStudentLeaveVo.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentLeaveVo.java similarity index 98% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/XgStudentLeaveVo.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentLeaveVo.java index edf703ee..eb1fde66 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/XgStudentLeaveVo.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStudentLeaveVo.java @@ -1,8 +1,8 @@ -package org.dromara.workflow.domain.vo; +package org.dromara.xg.domain.vo; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; -import org.dromara.workflow.domain.XgStudentLeave; +import org.dromara.xg.domain.XgStudentLeave; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import org.dromara.common.excel.annotation.ExcelDictFormat; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/XgStudentCancelLeaveMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentCancelLeaveMapper.java similarity index 62% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/XgStudentCancelLeaveMapper.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentCancelLeaveMapper.java index caab78f9..c471ff6b 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/XgStudentCancelLeaveMapper.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentCancelLeaveMapper.java @@ -1,7 +1,7 @@ -package org.dromara.workflow.mapper; +package org.dromara.xg.mapper; -import org.dromara.workflow.domain.XgStudentCancelLeave; -import org.dromara.workflow.domain.vo.XgStudentCancelLeaveVo; +import org.dromara.xg.domain.XgStudentCancelLeave; +import org.dromara.xg.domain.vo.XgStudentCancelLeaveVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/XgStudentLeaveMapper.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentLeaveMapper.java similarity index 67% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/XgStudentLeaveMapper.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentLeaveMapper.java index e22919d7..951faf3f 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/XgStudentLeaveMapper.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStudentLeaveMapper.java @@ -1,7 +1,7 @@ -package org.dromara.workflow.mapper; +package org.dromara.xg.mapper; -import org.dromara.workflow.domain.XgStudentLeave; -import org.dromara.workflow.domain.vo.XgStudentLeaveVo; +import org.dromara.xg.domain.XgStudentLeave; +import org.dromara.xg.domain.vo.XgStudentLeaveVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; /** diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IXgStudentCancelLeaveService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentCancelLeaveService.java similarity index 92% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IXgStudentCancelLeaveService.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentCancelLeaveService.java index 53e9a1da..1c3c23d5 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IXgStudentCancelLeaveService.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentCancelLeaveService.java @@ -1,7 +1,7 @@ -package org.dromara.workflow.service; +package org.dromara.xg.service; -import org.dromara.workflow.domain.vo.XgStudentCancelLeaveVo; -import org.dromara.workflow.domain.bo.XgStudentCancelLeaveBo; +import org.dromara.xg.domain.vo.XgStudentCancelLeaveVo; +import org.dromara.xg.domain.bo.XgStudentCancelLeaveBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IXgStudentLeaveService.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentLeaveService.java similarity index 93% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IXgStudentLeaveService.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentLeaveService.java index 1878caa6..125b19e2 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IXgStudentLeaveService.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/IXgStudentLeaveService.java @@ -1,7 +1,7 @@ -package org.dromara.workflow.service; +package org.dromara.xg.service; -import org.dromara.workflow.domain.vo.XgStudentLeaveVo; -import org.dromara.workflow.domain.bo.XgStudentLeaveBo; +import org.dromara.xg.domain.vo.XgStudentLeaveVo; +import org.dromara.xg.domain.bo.XgStudentLeaveBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/XgStudentCancelLeaveServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentCancelLeaveServiceImpl.java similarity index 95% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/XgStudentCancelLeaveServiceImpl.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentCancelLeaveServiceImpl.java index 48ae1d71..b9e907da 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/XgStudentCancelLeaveServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentCancelLeaveServiceImpl.java @@ -1,4 +1,4 @@ -package org.dromara.workflow.service.impl; +package org.dromara.xg.service.impl; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -10,13 +10,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.dromara.workflow.domain.bo.XgStudentCancelLeaveBo; -import org.dromara.workflow.domain.vo.XgStudentCancelLeaveVo; -import org.dromara.workflow.domain.XgStudentCancelLeave; -import org.dromara.workflow.mapper.XgStudentCancelLeaveMapper; -import org.dromara.workflow.service.IXgStudentCancelLeaveService; -import org.dromara.workflow.service.IXgStudentLeaveService; -import org.dromara.workflow.domain.bo.XgStudentLeaveBo; +import org.dromara.xg.domain.bo.XgStudentCancelLeaveBo; +import org.dromara.xg.domain.vo.XgStudentCancelLeaveVo; +import org.dromara.xg.domain.XgStudentCancelLeave; +import org.dromara.xg.mapper.XgStudentCancelLeaveMapper; +import org.dromara.xg.service.IXgStudentCancelLeaveService; +import org.dromara.xg.service.IXgStudentLeaveService; +import org.dromara.xg.domain.bo.XgStudentLeaveBo; import org.springframework.transaction.annotation.Transactional; import java.util.List; diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/XgStudentLeaveServiceImpl.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentLeaveServiceImpl.java similarity index 55% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/XgStudentLeaveServiceImpl.java rename to backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentLeaveServiceImpl.java index 571b449a..93f6cb80 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/XgStudentLeaveServiceImpl.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/service/impl/XgStudentLeaveServiceImpl.java @@ -1,4 +1,4 @@ -package org.dromara.workflow.service.impl; +package org.dromara.xg.service.impl; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -10,20 +10,20 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.dromara.workflow.domain.bo.XgStudentLeaveBo; -import org.dromara.workflow.domain.vo.XgStudentLeaveVo; -import org.dromara.workflow.domain.XgStudentLeave; -import org.dromara.workflow.mapper.XgStudentLeaveMapper; -import org.dromara.workflow.service.IXgStudentLeaveService; +import org.dromara.xg.domain.bo.XgStudentLeaveBo; +import org.dromara.xg.domain.vo.XgStudentLeaveVo; +import org.dromara.xg.domain.XgStudentLeave; +import org.dromara.xg.mapper.XgStudentLeaveMapper; +import org.dromara.xg.service.IXgStudentLeaveService; import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.domain.TestLeave; -import org.dromara.workflow.domain.XgStudentCancelLeave; +import org.dromara.xg.domain.XgStudentCancelLeave; import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.vo.TestLeaveVo; import org.dromara.workflow.mapper.TestLeaveMapper; -import org.dromara.workflow.mapper.XgStudentCancelLeaveMapper; +import org.dromara.xg.mapper.XgStudentCancelLeaveMapper; import org.dromara.workflow.service.ITestLeaveService; -import org.dromara.workflow.service.IXgStudentCancelLeaveService; +import org.dromara.xg.service.IXgStudentCancelLeaveService; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,10 +41,23 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.domain.SysDept; +import org.dromara.xg.mapper.XgStudentManagerMapper; +import org.dromara.xg.mapper.XgStudentManagerSourceMapper; +import org.dromara.xg.mapper.XgClassMsgMapper; +import org.dromara.xg.domain.XgStudentManager; +import org.dromara.xg.domain.XgStudentManagerSource; +import org.dromara.xg.domain.XgClassMsg; import java.util.List; import java.util.Map; import java.util.Collection; +import java.util.ArrayList; +import java.util.Set; +import java.util.HashSet; +import java.util.stream.Collectors; /** * 学生请假 - 记录学生的请假申请、审批和销假信息Service业务层处理 @@ -61,6 +74,11 @@ public class XgStudentLeaveServiceImpl implements IXgStudentLeaveService { private final XgStudentLeaveMapper baseMapper; private final WorkflowService workflowService; private final XgStudentCancelLeaveMapper xgStudentCancelLeaveMapper; + // 添加权限过滤需要的依赖 + private final SysDeptMapper sysDeptMapper; + private final XgStudentManagerMapper xgStudentManagerMapper; + private final XgStudentManagerSourceMapper xgStudentManagerSourceMapper; + private final XgClassMsgMapper xgClassMsgMapper; /** * 查询学生请假 - 记录学生的请假申请、审批和销假信息 @@ -82,7 +100,13 @@ public class XgStudentLeaveServiceImpl implements IXgStudentLeaveService { */ @Override public TableDataInfo queryPageList(XgStudentLeaveBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); + // 增加班级数据权限的过滤功能 + // 第一步:调用权限过滤方法,获取过滤后的班级IDs(传入101作为根组织ID) + List filteredDeptIds = filterDeptIdsByPermission(101L); + log.info("权限过滤后的班级ID列表: {}", filteredDeptIds); + + // 第二步:使用带权限过滤的查询条件构建器 + LambdaQueryWrapper lqw = buildQueryWrapperWithPermission(bo, filteredDeptIds); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -99,6 +123,218 @@ public class XgStudentLeaveServiceImpl implements IXgStudentLeaveService { return baseMapper.selectVoList(lqw); } + /** + * 权限过滤方法 + * 根据当前用户的权限范围过滤部门ID列表 + * + * @param deptId 入参的部门ID + * @return 过滤后的部门ID列表 + */ + private List filterDeptIdsByPermission(Long deptId) { + // 获取当前登录用户ID + Long currentUserId = LoginHelper.getUserId(); + log.info("当前登录用户ID: {}", currentUserId); + + // 第一步:判断当前用户是否为全校管理员 + boolean isSchoolManager = checkIsSchoolManager(currentUserId); + if (isSchoolManager) { + log.info("用户 {} 是全校管理员,不进行权限过滤", currentUserId); + // 全校管理员不进行过滤,返回包含入参deptId及其子组织的列表 + return getDeptIdsWithChildren(deptId); + } + + // 第二步:获取用户的总权限集合 + Set userAuthDeptIds = getUserAuthDeptIds(currentUserId); + log.info("用户 {} 的权限范围: {}", currentUserId, userAuthDeptIds); + + // 第三步:判断入参deptId是否在用户权限范围内 + if (deptId != null && userAuthDeptIds.contains(deptId)) { + log.info("入参deptId {} 在用户权限范围内,不进行过滤", deptId); + // 在权限范围内,返回包含入参deptId及其子组织的列表 + return getDeptIdsWithChildren(deptId); + } else { + log.info("入参deptId {} 不在用户权限范围内,进行权限过滤", deptId); + // 不在权限范围内,过滤deptIds,只保留在权限范围内的 + List filteredDeptIds = new ArrayList<>(); + if (deptId != null) { + // 如果入参deptId不为空,检查其子组织是否在权限范围内 + List deptIdsWithChildren = getDeptIdsWithChildren(deptId); + for (Long deptIdWithChild : deptIdsWithChildren) { + if (userAuthDeptIds.contains(deptIdWithChild)) { + filteredDeptIds.add(deptIdWithChild); + } + } + } else { + // 如果入参deptId为空,直接使用用户权限范围内的所有部门 + filteredDeptIds.addAll(userAuthDeptIds); + } + + // 对过滤后的deptIds,查找所有子组织包括他们自己 + Set finalDeptIds = new HashSet<>(); + for (Long filteredDeptId : filteredDeptIds) { + List deptIdsWithChildren = getDeptIdsWithChildren(filteredDeptId); + finalDeptIds.addAll(deptIdsWithChildren); + } + + return new ArrayList<>(finalDeptIds); + } + } + + /** + * 检查用户是否为全校管理员 + * + * @param userId 用户ID + * @return 是否为全校管理员 + */ + private boolean checkIsSchoolManager(Long userId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(XgStudentManager::getUserId, userId) + .eq(XgStudentManager::getDeleted, "0") + .eq(XgStudentManager::getStatus, "0") + .eq(XgStudentManager::getManagerType, "1"); + + return xgStudentManagerMapper.selectCount(lqw) > 0; + } + + /** + * 获取用户的总权限集合 + * + * @param userId 用户ID + * @return 用户权限范围内的部门ID集合 + */ + private Set getUserAuthDeptIds(Long userId) { + Set authDeptIds = new HashSet<>(); + + // 第三步:通过xg_student_manager和xg_student_manager_source关联,获取用户的权限范围 + LambdaQueryWrapper managerWrapper = Wrappers.lambdaQuery(); + managerWrapper.eq(XgStudentManager::getUserId, userId) + .eq(XgStudentManager::getDeleted, "0") + .eq(XgStudentManager::getStatus, "0"); + + List managers = xgStudentManagerMapper.selectList(managerWrapper); + + for (XgStudentManager manager : managers) { + LambdaQueryWrapper sourceWrapper = Wrappers.lambdaQuery(); + sourceWrapper.eq(XgStudentManagerSource::getManagerId, manager.getId()) + .eq(XgStudentManagerSource::getDeleted, "0") + .eq(XgStudentManagerSource::getStatus, "0"); + + List sources = xgStudentManagerSourceMapper.selectList(sourceWrapper); + for (XgStudentManagerSource source : sources) { + if (source.getAuthSource() != null) { + authDeptIds.add(source.getAuthSource()); + } + } + } + + // 第四步:通过xg_class_msg表,class_teacher_id=当前登录人id,deleted='0',class_status='1',获取id + LambdaQueryWrapper classWrapper = Wrappers.lambdaQuery(); + classWrapper.eq(XgClassMsg::getClassTeacherId, userId) + .eq(XgClassMsg::getDeleted, 0L) + .eq(XgClassMsg::getClassStatus, "1"); + + List classes = xgClassMsgMapper.selectList(classWrapper); + for (XgClassMsg classMsg : classes) { + if (classMsg.getId() != null) { + authDeptIds.add(classMsg.getId()); + } + } + + return authDeptIds; + } + + /** + * 获取部门ID及其所有子组织的ID列表 + * + * @param deptId 部门ID + * @return 包含部门ID及其子组织的ID列表 + */ + private List getDeptIdsWithChildren(Long deptId) { + List deptIds = new ArrayList<>(); + if (deptId != null) { + deptIds.add(deptId); // 包含自己 + + // 查找所有子组织 + List childDepts = sysDeptMapper.selectListByParentId(deptId); + if (!childDepts.isEmpty()) { + List childDeptIds = childDepts.stream() + .map(SysDept::getDeptId) + .collect(Collectors.toList()); + deptIds.addAll(childDeptIds); + } + } + return deptIds; + } + + /** + * 构建带权限过滤的查询条件包装器 + */ + private LambdaQueryWrapper buildQueryWrapperWithPermission(XgStudentLeaveBo bo, + List filteredDeptIds) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XgStudentLeave::getCreateTime); + + // 获取当前登录用户ID + Long currentUserId = LoginHelper.getUserId(); + + // 添加权限过滤条件:(班级ID必须在权限范围内) OR (是自己创建的请假单) + lqw.and(wrapper -> { + if (filteredDeptIds != null && !filteredDeptIds.isEmpty()) { + wrapper.in(XgStudentLeave::getClassId, filteredDeptIds); + } else { + // 如果用户没有任何权限,使用一个不存在的ID + wrapper.eq(XgStudentLeave::getClassId, -1L); + } + // OR 用户可以查看自己创建的请假单 + wrapper.or().eq(XgStudentLeave::getStudentId, currentUserId); + }); + + // 原有的查询条件 + lqw.eq(bo.getDeleted() != null, XgStudentLeave::getDeleted, bo.getDeleted()); + lqw.eq(bo.getStudentId() != null, XgStudentLeave::getStudentId, bo.getStudentId()); + lqw.like(StringUtils.isNotBlank(bo.getStudentName()), XgStudentLeave::getStudentName, bo.getStudentName()); + lqw.eq(StringUtils.isNotBlank(bo.getStudentNo()), XgStudentLeave::getStudentNo, bo.getStudentNo()); + lqw.eq(bo.getClassId() != null, XgStudentLeave::getClassId, bo.getClassId()); + lqw.like(StringUtils.isNotBlank(bo.getClassName()), XgStudentLeave::getClassName, bo.getClassName()); + lqw.eq(bo.getMajorId() != null, XgStudentLeave::getMajorId, bo.getMajorId()); + lqw.like(StringUtils.isNotBlank(bo.getMajorName()), XgStudentLeave::getMajorName, bo.getMajorName()); + lqw.eq(bo.getCollegeId() != null, XgStudentLeave::getCollegeId, bo.getCollegeId()); + lqw.like(StringUtils.isNotBlank(bo.getCollegeName()), XgStudentLeave::getCollegeName, bo.getCollegeName()); + lqw.eq(StringUtils.isNotBlank(bo.getLeaveTypeCode()), XgStudentLeave::getLeaveTypeCode, bo.getLeaveTypeCode()); + lqw.like(StringUtils.isNotBlank(bo.getLeaveTypeName()), XgStudentLeave::getLeaveTypeName, + bo.getLeaveTypeName()); + lqw.ge(bo.getStartTime() != null, XgStudentLeave::getStartTime, bo.getStartTime()); + lqw.le(bo.getEndTime() != null, XgStudentLeave::getEndTime, bo.getEndTime()); + lqw.eq(bo.getLeaveDuration() != null, XgStudentLeave::getLeaveDuration, bo.getLeaveDuration()); + lqw.eq(StringUtils.isNotBlank(bo.getIsLeaveSchool()), XgStudentLeave::getIsLeaveSchool, bo.getIsLeaveSchool()); + lqw.eq(StringUtils.isNotBlank(bo.getNeedCancel()), XgStudentLeave::getNeedCancel, bo.getNeedCancel()); + lqw.eq(StringUtils.isNotBlank(bo.getEmergencyContact()), XgStudentLeave::getEmergencyContact, + bo.getEmergencyContact()); + lqw.eq(StringUtils.isNotBlank(bo.getEmergencyPhone()), XgStudentLeave::getEmergencyPhone, + bo.getEmergencyPhone()); + lqw.eq(StringUtils.isNotBlank(bo.getLeaveReason()), XgStudentLeave::getLeaveReason, bo.getLeaveReason()); + lqw.eq(StringUtils.isNotBlank(bo.getLeaveLocation()), XgStudentLeave::getLeaveLocation, bo.getLeaveLocation()); + lqw.eq(StringUtils.isNotBlank(bo.getAttachmentOssIds()), XgStudentLeave::getAttachmentOssIds, + bo.getAttachmentOssIds()); + lqw.eq(StringUtils.isNotBlank(bo.getApprovalStatus()), XgStudentLeave::getApprovalStatus, + bo.getApprovalStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getApprovalOpinion()), XgStudentLeave::getApprovalOpinion, + bo.getApprovalOpinion()); + lqw.eq(bo.getApprovalTime() != null, XgStudentLeave::getApprovalTime, bo.getApprovalTime()); + lqw.eq(bo.getApprovalBy() != null, XgStudentLeave::getApprovalBy, bo.getApprovalBy()); + lqw.like(StringUtils.isNotBlank(bo.getApprovalByName()), XgStudentLeave::getApprovalByName, + bo.getApprovalByName()); + lqw.eq(StringUtils.isNotBlank(bo.getCancelStatus()), XgStudentLeave::getCancelStatus, bo.getCancelStatus()); + lqw.eq(bo.getCancelTime() != null, XgStudentLeave::getCancelTime, bo.getCancelTime()); + lqw.eq(StringUtils.isNotBlank(bo.getCancelLocation()), XgStudentLeave::getCancelLocation, + bo.getCancelLocation()); + lqw.eq(StringUtils.isNotBlank(bo.getCancelPhotoOssIds()), XgStudentLeave::getCancelPhotoOssIds, + bo.getCancelPhotoOssIds()); + lqw.eq(StringUtils.isNotBlank(bo.getCancelRemark()), XgStudentLeave::getCancelRemark, bo.getCancelRemark()); + return lqw; + } + private LambdaQueryWrapper buildQueryWrapper(XgStudentLeaveBo bo) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/studentLeave/XgStudentLeaveMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentCancelLeave/XgStudentCancelLeaveMapper.xml similarity index 72% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/studentLeave/XgStudentLeaveMapper.xml rename to backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentCancelLeave/XgStudentCancelLeaveMapper.xml index b9ca4c58..1fc4dd11 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/studentLeave/XgStudentLeaveMapper.xml +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentCancelLeave/XgStudentCancelLeaveMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/backend/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/studentCancelLeave/XgStudentCancelLeaveMapper.xml b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentLeave/XgStudentLeaveMapper.xml similarity index 67% rename from backend/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/studentCancelLeave/XgStudentCancelLeaveMapper.xml rename to backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentLeave/XgStudentLeaveMapper.xml index a488de9e..66df5095 100644 --- a/backend/ruoyi-modules/ruoyi-workflow/src/main/resources/mapper/studentCancelLeave/XgStudentCancelLeaveMapper.xml +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/studentLeave/XgStudentLeaveMapper.xml @@ -2,6 +2,6 @@ - + diff --git a/backend/add_create_dept.sql b/backend/sql/add_create_dept.sql similarity index 100% rename from backend/add_create_dept.sql rename to backend/sql/add_create_dept.sql diff --git a/backend/add_create_dept_field.sql b/backend/sql/add_create_dept_field.sql similarity index 100% rename from backend/add_create_dept_field.sql rename to backend/sql/add_create_dept_field.sql diff --git a/backend/debug_compatibility_type.sql b/backend/sql/debug_compatibility_type.sql similarity index 100% rename from backend/debug_compatibility_type.sql rename to backend/sql/debug_compatibility_type.sql diff --git a/backend/fix_compatibility_create_dept.sql b/backend/sql/fix_compatibility_create_dept.sql similarity index 100% rename from backend/fix_compatibility_create_dept.sql rename to backend/sql/fix_compatibility_create_dept.sql diff --git a/backend/fix_jcbt_scholarship_application_create_dept.sql b/backend/sql/fix_jcbt_scholarship_application_create_dept.sql similarity index 100% rename from backend/fix_jcbt_scholarship_application_create_dept.sql rename to backend/sql/fix_jcbt_scholarship_application_create_dept.sql