提交 fdf971d5 authored 作者: hzh's avatar hzh

部门审批功能实现

上级 64a1c745
......@@ -23,4 +23,11 @@ public interface RemoteDeptService {
*/
Long selectLeaderIdByUserId(Long userId);
/**
* 获取部门负责人id
*
* @param fileId 文件id
* @return 负责人id
*/
Long selectLeaderIdByFileId(Long fileId);
}
......@@ -3,8 +3,10 @@ package org.dromara.system.dubbo;
import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.system.api.RemoteDeptService;
import org.dromara.system.domain.vo.SysDeptOssVo;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysDeptOssService;
import org.dromara.system.service.ISysDeptService;
import org.dromara.system.service.ISysUserService;
import org.springframework.stereotype.Service;
......@@ -21,6 +23,7 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
private final ISysDeptService sysDeptService;
private final ISysUserService userService;
private final ISysDeptOssService deptOssService;
/**
* 通过部门ID查询部门名称
......@@ -49,4 +52,15 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
SysDeptVo dept = sysDeptService.selectDeptById(user.getDeptId());
return dept.getLeader();
}
@Override
public Long selectLeaderIdByFileId(Long fileId) {
SysDeptOssVo sdo = deptOssService.queryById(fileId);
if (sdo == null) {
return null;
}
//获取部门
SysDeptVo dept = sysDeptService.selectDeptById(sdo.getDeptId());
return dept.getLeader();
}
}
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.Objects;
/**
* 部门文件下载申请自定义审批人监听器
*
* @author wenhe
*/
@Component
@Slf4j
public class DeptFileApproveAssigneeListener 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);
// 调用服务获取审批人列表
Long approveId = deptService.selectLeaderIdByFileId(fa.getSysDeptFileId());
// 设置候选用户
String owner = Objects.isNull(approveId) ? null : approveId.toString();
delegateTask.setAssignee(owner);
}
}
......@@ -11,6 +11,11 @@ import org.springframework.stereotype.Component;
import java.util.Objects;
/**
* 获取提交人的部门负责人监听器
*
* @author wenhe
*/
@Component
@Slf4j
public class DynamicAssigneeListener implements TaskListener {
......
......@@ -10,4 +10,12 @@ public interface IDeptService {
*/
Long selectLeaderIdByUserId(Long userId);
/**
* 获取部门负责人id
*
* @param fileId 文件id
* @return 负责人id
*/
Long selectLeaderIdByFileId(Long fileId);
}
......@@ -9,7 +9,6 @@ import org.springframework.stereotype.Service;
/**
* @author hzh
* @date 2025-05-20
* @desc TODO
**/
@Service
@RequiredArgsConstructor
......@@ -22,4 +21,9 @@ public class DeptServiceImpl implements IDeptService {
public Long selectLeaderIdByUserId(Long userId) {
return remoteDeptService.selectLeaderIdByUserId(userId);
}
@Override
public Long selectLeaderIdByFileId(Long fileId) {
return remoteDeptService.selectLeaderIdByFileId(fileId);
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论