add -- 新增流程审核可选择抄送流程功能
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
package com.ruoyi.workflow.service;
|
||||
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.workflow.domain.bo.WfCopyBo;
|
||||
import com.ruoyi.workflow.domain.bo.WfTaskBo;
|
||||
import com.ruoyi.workflow.domain.vo.WfCopyVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 流程抄送Service接口
|
||||
*
|
||||
* @author KonBAI
|
||||
* @date 2022-05-19
|
||||
*/
|
||||
public interface IWfCopyService {
|
||||
|
||||
/**
|
||||
* 查询流程抄送
|
||||
*
|
||||
* @param copyId 流程抄送主键
|
||||
* @return 流程抄送
|
||||
*/
|
||||
WfCopyVo queryById(Long copyId);
|
||||
|
||||
/**
|
||||
* 查询流程抄送列表
|
||||
*
|
||||
* @param wfCopy 流程抄送
|
||||
* @return 流程抄送集合
|
||||
*/
|
||||
TableDataInfo<WfCopyVo> queryPageList(WfCopyBo wfCopy, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询流程抄送列表
|
||||
*
|
||||
* @param wfCopy 流程抄送
|
||||
* @return 流程抄送集合
|
||||
*/
|
||||
List<WfCopyVo> queryList(WfCopyBo wfCopy);
|
||||
|
||||
/**
|
||||
* 抄送
|
||||
* @param taskBo
|
||||
* @return
|
||||
*/
|
||||
Boolean makeCopy(WfTaskBo taskBo);
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.ruoyi.workflow.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.workflow.domain.WfCopy;
|
||||
import com.ruoyi.workflow.domain.bo.WfCopyBo;
|
||||
import com.ruoyi.workflow.domain.bo.WfTaskBo;
|
||||
import com.ruoyi.workflow.domain.vo.WfCopyVo;
|
||||
import com.ruoyi.workflow.mapper.WfCopyMapper;
|
||||
import com.ruoyi.workflow.service.IWfCopyService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 流程抄送Service业务层处理
|
||||
*
|
||||
* @author KonBAI
|
||||
* @date 2022-05-19
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class WfCopyServiceImpl implements IWfCopyService {
|
||||
|
||||
private final WfCopyMapper baseMapper;
|
||||
|
||||
private final RuntimeService runtimeService;
|
||||
|
||||
/**
|
||||
* 查询流程抄送
|
||||
*
|
||||
* @param copyId 流程抄送主键
|
||||
* @return 流程抄送
|
||||
*/
|
||||
@Override
|
||||
public WfCopyVo queryById(Long copyId){
|
||||
return baseMapper.selectVoById(copyId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程抄送列表
|
||||
*
|
||||
* @param bo 流程抄送
|
||||
* @return 流程抄送
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<WfCopyVo> queryPageList(WfCopyBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<WfCopy> lqw = buildQueryWrapper(bo);
|
||||
lqw.orderByDesc(WfCopy::getCreateTime);
|
||||
Page<WfCopyVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程抄送列表
|
||||
*
|
||||
* @param bo 流程抄送
|
||||
* @return 流程抄送
|
||||
*/
|
||||
@Override
|
||||
public List<WfCopyVo> queryList(WfCopyBo bo) {
|
||||
LambdaQueryWrapper<WfCopy> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<WfCopy> buildQueryWrapper(WfCopyBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<WfCopy> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProcessName()), WfCopy::getProcessName, bo.getProcessName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getOriginatorName()), WfCopy::getOriginatorName, bo.getOriginatorName());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean makeCopy(WfTaskBo taskBo) {
|
||||
if (StringUtils.isBlank(taskBo.getCopyUserIds())) {
|
||||
// 若抄送用户为空,则不需要处理,返回成功
|
||||
return true;
|
||||
}
|
||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
|
||||
.processInstanceId(taskBo.getInstanceId()).singleResult();
|
||||
String[] ids = taskBo.getCopyUserIds().split(",");
|
||||
List<WfCopy> copyList = new ArrayList<>(ids.length);
|
||||
Long originatorId = LoginHelper.getUserId();
|
||||
String originatorName = LoginHelper.getNickName();
|
||||
String title = processInstance.getProcessDefinitionName() + "-" + taskBo.getTaskName();
|
||||
for (String id : ids) {
|
||||
Long userId = Long.valueOf(id);
|
||||
WfCopy copy = new WfCopy();
|
||||
copy.setTitle(title);
|
||||
copy.setProcessId(processInstance.getProcessDefinitionId());
|
||||
copy.setProcessName(processInstance.getProcessDefinitionName());
|
||||
copy.setDeploymentId(processInstance.getDeploymentId());
|
||||
copy.setInstanceId(taskBo.getInstanceId());
|
||||
copy.setTaskId(taskBo.getTaskId());
|
||||
copy.setUserId(userId);
|
||||
copy.setOriginatorId(originatorId);
|
||||
copy.setOriginatorName(originatorName);
|
||||
copyList.add(copy);
|
||||
}
|
||||
return baseMapper.insertBatch(copyList);
|
||||
}
|
||||
}
|
||||
@@ -21,6 +21,7 @@ import com.ruoyi.system.service.ISysUserService;
|
||||
import com.ruoyi.workflow.domain.bo.WfTaskBo;
|
||||
import com.ruoyi.workflow.domain.dto.WfNextDto;
|
||||
import com.ruoyi.workflow.domain.vo.WfViewerVo;
|
||||
import com.ruoyi.workflow.service.IWfCopyService;
|
||||
import com.ruoyi.workflow.service.IWfTaskService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -64,6 +65,8 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ
|
||||
|
||||
private final ISysRoleService sysRoleService;
|
||||
|
||||
private final IWfCopyService copyService;
|
||||
|
||||
/**
|
||||
* 完成任务
|
||||
*
|
||||
@@ -89,6 +92,12 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ
|
||||
taskService.complete(taskBo.getTaskId());
|
||||
}
|
||||
}
|
||||
// 设置任务节点名称
|
||||
taskBo.setTaskName(task.getName());
|
||||
// 处理抄送用户
|
||||
if (!copyService.makeCopy(taskBo)) {
|
||||
throw new RuntimeException("抄送任务失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -215,7 +224,11 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ
|
||||
} catch (FlowableException e) {
|
||||
throw new RuntimeException("无法取消或开始活动");
|
||||
}
|
||||
|
||||
// 设置任务节点名称
|
||||
bo.setTaskName(task.getName());
|
||||
if (!copyService.makeCopy(bo)) {
|
||||
throw new RuntimeException("抄送任务失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -298,6 +311,12 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ
|
||||
} catch (FlowableException e) {
|
||||
throw new RuntimeException("无法取消或开始活动");
|
||||
}
|
||||
// 设置任务节点名称
|
||||
bo.setTaskName(task.getName());
|
||||
// 处理抄送用户
|
||||
if (!copyService.makeCopy(bo)) {
|
||||
throw new RuntimeException("抄送任务失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -405,6 +424,12 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ
|
||||
taskService.setOwner(bo.getTaskId(), LoginHelper.getUserId().toString());
|
||||
// 执行委派
|
||||
taskService.delegateTask(bo.getTaskId(), bo.getUserId());
|
||||
// 设置任务节点名称
|
||||
bo.setTaskName(task.getName());
|
||||
// 处理抄送用户
|
||||
if (!copyService.makeCopy(bo)) {
|
||||
throw new RuntimeException("抄送任务失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -438,6 +463,12 @@ public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskServ
|
||||
taskService.setOwner(bo.getTaskId(), LoginHelper.getUserId().toString());
|
||||
// 转办任务
|
||||
taskService.setAssignee(bo.getTaskId(), bo.getUserId());
|
||||
// 设置任务节点名称
|
||||
bo.setTaskName(task.getName());
|
||||
// 处理抄送用户
|
||||
if (!copyService.makeCopy(bo)) {
|
||||
throw new RuntimeException("抄送任务失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user