提交 84d20412 authored 作者: hzh's avatar hzh

Merge branch 'dev'

package org.dromara.system.api; package org.dromara.system.api;
import java.util.List;
/** /**
* 部门服务 * 部门服务
* *
...@@ -23,6 +25,15 @@ public interface RemoteDeptService { ...@@ -23,6 +25,15 @@ public interface RemoteDeptService {
*/ */
Long selectLeaderIdByUserId(Long userId); Long selectLeaderIdByUserId(Long userId);
/**
* 获取用户列表
*
* @param fileId 文件id
* @param roleKey 角色编码
* @return 用户列表
*/
List<Long> selectUserListByFileIdAndRoleKey(Long fileId, String roleKey);
/** /**
* 获取部门负责人id * 获取部门负责人id
* *
......
...@@ -2,6 +2,7 @@ package org.dromara.system.dubbo; ...@@ -2,6 +2,7 @@ package org.dromara.system.dubbo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.system.api.RemoteDeptService; import org.dromara.system.api.RemoteDeptService;
import org.dromara.system.domain.vo.SysDeptOssVo; import org.dromara.system.domain.vo.SysDeptOssVo;
import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysDeptVo;
...@@ -11,6 +12,8 @@ import org.dromara.system.service.ISysDeptService; ...@@ -11,6 +12,8 @@ import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysUserService; import org.dromara.system.service.ISysUserService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* 部门服务 * 部门服务
* *
...@@ -63,4 +66,16 @@ public class RemoteDeptServiceImpl implements RemoteDeptService { ...@@ -63,4 +66,16 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
SysDeptVo dept = sysDeptService.selectDeptById(sdo.getDeptId()); SysDeptVo dept = sysDeptService.selectDeptById(sdo.getDeptId());
return dept.getLeader(); return dept.getLeader();
} }
@Override
public List<Long> selectUserListByFileIdAndRoleKey(Long fileId, String roleKey) {
if (StringUtils.isEmpty(roleKey)) {
return List.of();
}
SysDeptOssVo sdo = deptOssService.queryById(fileId);
if (sdo == null) {
return List.of();
}
return userService.selectUserIdsByRoleKeyAndDeptId(roleKey, sdo.getDeptId());
}
} }
...@@ -284,6 +284,15 @@ public interface ISysUserService { ...@@ -284,6 +284,15 @@ public interface ISysUserService {
*/ */
List<Long> selectUserIdsByRoleIds(List<Long> roleIds); List<Long> selectUserIdsByRoleIds(List<Long> roleIds);
/**
* 通过角色key和部门id查询用户id集合
*
* @param roleKey 角色key
* @param deptId 部门id
* @return 数据
*/
List<Long> selectUserIdsByRoleKeyAndDeptId(String roleKey, Long deptId);
/** /**
* 保存或更新用户信息 * 保存或更新用户信息
* *
......
...@@ -706,6 +706,28 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -706,6 +706,28 @@ public class SysUserServiceImpl implements ISysUserService {
return StreamUtils.toList(userRoles, SysUserRole::getUserId); return StreamUtils.toList(userRoles, SysUserRole::getUserId);
} }
@Override
public List<Long> selectUserIdsByRoleKeyAndDeptId(String roleKey, Long deptId) {
if (StringUtils.isBlank(roleKey) || deptId == null) {
return List.of();
}
SysRole role = roleMapper.selectOne(SysRole::getRoleKey, roleKey);
if (role == null) {
return List.of();
}
List<SysUserRole> surList = userRoleMapper.selectList(SysUserRole::getRoleId, role.getRoleId());
//获取用户id
if (CollectionUtils.isEmpty(surList)) {
return List.of();
}
List<SysUser> userList = baseMapper.selectList(new LambdaQueryWrapper<SysUser>()
.in(SysUser::getUserId, StreamUtils.toList(surList, SysUserRole::getUserId))
.eq(SysUser::getStatus, UserConstants.USER_NORMAL)
.eq(SysUser::getDeptId, deptId)
.select(SysUser::getUserId));
return StreamUtils.toList(userList, SysUser::getUserId);
}
/** /**
* 通过用户ID查询用户账户 * 通过用户ID查询用户账户
* *
......
package org.dromara.workflow.flowable.listener;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.SpringUtils;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.domain.FileApprove;
import org.dromara.workflow.mapper.FileApproveMapper;
import org.dromara.workflow.service.IDeptService;
import org.flowable.task.service.delegate.DelegateTask;
import org.flowable.task.service.delegate.TaskListener;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 部门文件下载申请自定义审批人监听器
*
* @author wenhe
*/
@Component
@Slf4j
public class DeptFileApproveGroupListener implements TaskListener {
@Override
public void notify(DelegateTask delegateTask) {
// 获取业务id
Long businessKey = Long.parseLong(delegateTask.getVariable(FlowConstant.BUSINESS_KEY).toString());
FileApproveMapper mapper = SpringUtils.getBean(FileApproveMapper.class);
FileApprove fa = mapper.selectById(businessKey);
IDeptService deptService = SpringUtils.getBean(IDeptService.class);
// 调用服务获取审批人列表
List<Long> userIds = deptService.selectUserListByFileIdAndRoleKey(fa.getSysDeptFileId(), "file_approve");
// 设置候选用户
delegateTask.setVariable("group", userIds);
}
}
package org.dromara.workflow.service; package org.dromara.workflow.service;
import java.util.List;
public interface IDeptService { public interface IDeptService {
/** /**
...@@ -18,4 +20,13 @@ public interface IDeptService { ...@@ -18,4 +20,13 @@ public interface IDeptService {
*/ */
Long selectLeaderIdByFileId(Long fileId); Long selectLeaderIdByFileId(Long fileId);
/**
* 获取用户列表
*
* @param fileId 文件id
* @param roleKey 角色编码
* @return 用户列表
*/
List<Long> selectUserListByFileIdAndRoleKey(Long fileId, String roleKey);
} }
...@@ -6,6 +6,8 @@ import org.dromara.system.api.RemoteDeptService; ...@@ -6,6 +6,8 @@ import org.dromara.system.api.RemoteDeptService;
import org.dromara.workflow.service.IDeptService; import org.dromara.workflow.service.IDeptService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @author hzh * @author hzh
* @date 2025-05-20 * @date 2025-05-20
...@@ -26,4 +28,9 @@ public class DeptServiceImpl implements IDeptService { ...@@ -26,4 +28,9 @@ public class DeptServiceImpl implements IDeptService {
public Long selectLeaderIdByFileId(Long fileId) { public Long selectLeaderIdByFileId(Long fileId) {
return remoteDeptService.selectLeaderIdByFileId(fileId); return remoteDeptService.selectLeaderIdByFileId(fileId);
} }
@Override
public List<Long> selectUserListByFileIdAndRoleKey(Long fileId, String roleKey) {
return remoteDeptService.selectUserListByFileIdAndRoleKey(fileId, roleKey);
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论