Compare commits

..

No commits in common. "aa76859a056587e97b9f91e441e16bb5a6f82b61" and "237e78e80c99c9c8d6a685daaee122f2b5e2df78" have entirely different histories.

12 changed files with 269 additions and 211 deletions

View File

@ -30,9 +30,7 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo> {
*/
default String buildDeptByRoleSql(Long roleId) {
return """
select srd.dept_id from sys_role_dept srd
left join sys_role sr on sr.role_id = srd.role_id
where srd.role_id = %d and sr.status = 0
select dept_id from sys_role_dept where role_id = %d
""".formatted(roleId);
}
@ -49,9 +47,7 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDept, SysDeptVo> {
default String buildParentDeptByRoleSql(Long roleId) {
return """
select parent_id from sys_dept where dept_id in (
select srd.dept_id from sys_role_dept srd
left join sys_role sr on sr.role_id = srd.role_id
where srd.role_id = %d and sr.status = 0
select dept_id from sys_role_dept where role_id = %d
)
""".formatted(roleId);
}

View File

@ -32,9 +32,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
default String buildMenuByUserSql(Long userId) {
return """
select menu_id from sys_role_menu where role_id in (
select sur.role_id from sys_user_role sur
left join sys_role sr on sr.role_id = sur.role_id
where sur.user_id = %d and sr.status = 0
select role_id from sys_user_role where user_id = %d
)
""".formatted(userId);
}
@ -52,9 +50,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
*/
default String buildMenuByRoleSql(Long roleId) {
return """
select srm.menu_id from sys_role_menu srm
left join sys_role sr on sr.role_id = srm.role_id
where srm.role_id = %d and sr.status = 0
select menu_id from sys_role_menu where role_id = %d
""".formatted(roleId);
}
@ -72,9 +68,7 @@ public interface SysMenuMapper extends BaseMapperPlus<SysMenu, SysMenuVo> {
default String buildParentMenuByRoleSql(Long roleId) {
return """
select parent_id from sys_menu where menu_id in (
select srm.menu_id from sys_role_menu srm
left join sys_role sr on sr.role_id = srm.role_id
where srm.role_id = %d and sr.status = 0
select menu_id from sys_role_menu where role_id = %d
)
""".formatted(roleId);
}

View File

@ -1,20 +0,0 @@
package org.dromara.workflow.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 抄送设置枚举
*
* @author AprilWind
*/
@Getter
@AllArgsConstructor
public enum CopySettingEnum implements NodeExtEnum {
;
private final String label;
private final String value;
private final boolean selected;
}

View File

@ -1,20 +0,0 @@
package org.dromara.workflow.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 变量枚举
*
* @author AprilWind
*/
@Getter
@AllArgsConstructor
public enum VariablesEnum implements NodeExtEnum {
;
private final String label;
private final String value;
private final boolean selected;
}

View File

@ -0,0 +1,46 @@
package org.dromara.workflow.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.workflow.domain.FlowInstanceBizExt;
/**
* 流程实例业务扩展业务对象 flow_instance_biz_ext
*
* @author may
* @date 2025-08-05
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = FlowInstanceBizExt.class, reverseConvertGenerate = false)
public class FlowInstanceBizExtBo extends BaseEntity {
/**
* 主键
*/
private Long id;
/**
* 流程实例ID
*/
private Long instanceId;
/**
* 业务ID
*/
private String businessId;
/**
* 业务编码
*/
private String businessCode;
/**
* 业务标题
*/
private String businessTitle;
}

View File

@ -1,11 +1,9 @@
package org.dromara.workflow.domain.bo;
import cn.hutool.core.util.ObjectUtil;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.workflow.domain.FlowInstanceBizExt;
import java.io.Serial;
import java.io.Serializable;
@ -49,7 +47,7 @@ public class StartProcessBo implements Serializable {
/**
* 流程业务扩展信息
*/
private FlowInstanceBizExt bizExt;
private FlowInstanceBizExtBo flowInstanceBizExtBo;
public Map<String, Object> getVariables() {
if (variables == null) {
@ -58,11 +56,4 @@ public class StartProcessBo implements Serializable {
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));
return variables;
}
public FlowInstanceBizExt getBizExt() {
if (ObjectUtil.isNull(bizExt)) {
bizExt = new FlowInstanceBizExt();
}
return bizExt;
}
}

View File

@ -0,0 +1,58 @@
package org.dromara.workflow.domain.vo;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.workflow.domain.FlowInstanceBizExt;
import java.io.Serial;
import java.io.Serializable;
/**
* 流程实例业务扩展视图对象 flow_instance_biz_ext
*
* @author may
* @date 2025-08-05
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = FlowInstanceBizExt.class)
public class FlowInstanceBizExtVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@ExcelProperty(value = "主键")
private Long id;
/**
* 流程实例ID
*/
@ExcelProperty(value = "流程实例ID")
private Long instanceId;
/**
* 业务ID
*/
@ExcelProperty(value = "业务ID")
private String businessId;
/**
* 业务编码
*/
@ExcelProperty(value = "业务编码")
private String businessCode;
/**
* 业务标题
*/
@ExcelProperty(value = "业务标题")
private String businessTitle;
}

View File

@ -1,11 +1,8 @@
package org.dromara.workflow.mapper;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.workflow.domain.FlowInstanceBizExt;
import java.util.List;
import org.dromara.workflow.domain.vo.FlowInstanceBizExtVo;
/**
* 流程实例业务扩展Mapper接口
@ -13,49 +10,6 @@ import java.util.List;
* @author may
* @date 2025-08-05
*/
public interface FlwInstanceBizExtMapper extends BaseMapperPlus<FlowInstanceBizExt, FlowInstanceBizExt> {
/**
* 根据 instanceId 保存或更新流程实例业务扩展
*
* @param entity 流程实例业务扩展实体
* @return 操作是否成功
*/
default int saveOrUpdateByInstanceId(FlowInstanceBizExt entity) {
// 查询是否存在
FlowInstanceBizExt exist = this.selectOne(new LambdaQueryWrapper<FlowInstanceBizExt>()
.eq(FlowInstanceBizExt::getInstanceId, entity.getInstanceId()));
if (ObjectUtil.isNotNull(exist)) {
// 存在就带上主键更新
entity.setId(exist.getId());
return updateById(entity);
} else {
// 不存在就插入
return insert(entity);
}
}
/**
* 按照流程实例ID删除单个流程实例业务扩展
*
* @param instanceId 流程实例ID
* @return 删除的行数
*/
default int deleteByInstId(Long instanceId) {
return this.delete(new LambdaQueryWrapper<FlowInstanceBizExt>()
.eq(FlowInstanceBizExt::getInstanceId, instanceId));
}
/**
* 按照流程实例ID批量删除流程实例业务扩展
*
* @param instanceIds 流程实例ID列表
* @return 删除的行数
*/
default int deleteByInstIds(List<Long> instanceIds) {
return this.delete(new LambdaQueryWrapper<FlowInstanceBizExt>()
.in(FlowInstanceBizExt::getInstanceId, instanceIds));
}
public interface FlwInstanceBizExtMapper extends BaseMapperPlus<FlowInstanceBizExt, FlowInstanceBizExtVo> {
}

View File

@ -0,0 +1,30 @@
package org.dromara.workflow.service;
import org.dromara.workflow.domain.bo.FlowInstanceBizExtBo;
import java.util.List;
/**
* 流程实例业务扩展Service接口
*
* @author may
* @date 2025-08-05
*/
public interface IFlwInstanceBizExtService {
/**
* 新增/修改流程实例业务扩展
*
* @param bo 流程实例业务扩展
* @return 是否新增成功
*/
Boolean saveOrUpdate(FlowInstanceBizExtBo bo);
/**
* 按照流程实例ID批量删除
*
* @param instanceIds 流程实例ID
* @return 是否删除成功
*/
Boolean deleteByInstIds(List<Long> instanceIds);
}

View File

@ -0,0 +1,57 @@
package org.dromara.workflow.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.workflow.domain.FlowInstanceBizExt;
import org.dromara.workflow.domain.bo.FlowInstanceBizExtBo;
import org.dromara.workflow.mapper.FlwInstanceBizExtMapper;
import org.dromara.workflow.service.IFlwInstanceBizExtService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 流程实例业务扩展Service业务层处理
*
* @author may
* @date 2025-08-05
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class FlwInstanceBizExtServiceImpl implements IFlwInstanceBizExtService {
private final FlwInstanceBizExtMapper baseMapper;
/**
* 新增/修改流程实例业务扩展
*
* @param bo 流程实例业务扩展
* @return 是否新增成功
*/
@Override
public Boolean saveOrUpdate(FlowInstanceBizExtBo bo) {
FlowInstanceBizExt convert = MapstructUtils.convert(bo, FlowInstanceBizExt.class);
FlowInstanceBizExt flowInstanceBizExt = baseMapper.selectOne(new LambdaQueryWrapper<FlowInstanceBizExt>()
.eq(FlowInstanceBizExt::getInstanceId, bo.getInstanceId()));
if (flowInstanceBizExt != null) {
flowInstanceBizExt.setBusinessTitle(convert.getBusinessTitle());
return baseMapper.insertOrUpdate(flowInstanceBizExt);
}
return baseMapper.insertOrUpdate(convert);
}
/**
* 按照流程实例ID批量删除
*
* @param instanceIds 流程实例ID
* @return 是否删除成功
*/
@Override
public Boolean deleteByInstIds(List<Long> instanceIds) {
return baseMapper.delete(new LambdaQueryWrapper<FlowInstanceBizExt>().in(FlowInstanceBizExt::getInstanceId, instanceIds)) > 0;
}
}

View File

@ -13,9 +13,7 @@ import org.dromara.warm.flow.ui.service.NodeExtService;
import org.dromara.warm.flow.ui.vo.NodeExt;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.enums.ButtonPermissionEnum;
import org.dromara.workflow.common.enums.CopySettingEnum;
import org.dromara.workflow.common.enums.NodeExtEnum;
import org.dromara.workflow.common.enums.VariablesEnum;
import org.dromara.workflow.domain.vo.ButtonPermissionVo;
import org.dromara.workflow.service.IFlwNodeExtService;
import org.springframework.stereotype.Service;
@ -38,35 +36,14 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
/**
* 存储不同 dictType 对应的配置信息
*/
private static final Map<String, Map<String, Object>> CHILD_NODE_MAP;
private static final Map<String, ButtonPermission> CHILD_NODE_MAP = new HashMap<>();
record ButtonPermission(String label, Integer type, Boolean must, Boolean multiple) {
}
static {
CHILD_NODE_MAP = Map.of(
CopySettingEnum.class.getSimpleName(),
Map.of(
"label", "抄送对象",
"type", 2,
"must", false,
"multiple", false,
"desc", "设置该节点的抄送办理人"
),
VariablesEnum.class.getSimpleName(),
Map.of(
"label", "自定义参数",
"type", 2,
"must", false,
"multiple", false,
"desc", "节点执行时可以使用的自定义参数"
),
ButtonPermissionEnum.class.getSimpleName(),
Map.of(
"label", "权限按钮",
"type", 4,
"must", false,
"multiple", true,
"desc", "控制该节点的按钮权限"
)
);
CHILD_NODE_MAP.put(ButtonPermissionEnum.class.getSimpleName(),
new ButtonPermission("权限按钮", 4, false, true));
}
private final DictService dictService;
@ -79,9 +56,6 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
@Override
public List<NodeExt> getNodeExt() {
List<NodeExt> nodeExtList = new ArrayList<>();
// 构建基础设置页面
nodeExtList.add(buildNodeExt("wf_basic_tab", "基础设置", 1,
List.of(CopySettingEnum.class, VariablesEnum.class)));
// 构建按钮权限页面
nodeExtList.add(buildNodeExt("wf_button_tab", "权限", 2,
List.of(ButtonPermissionEnum.class)));
@ -131,20 +105,9 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
return null;
}
String simpleName = enumClass.getSimpleName();
NodeExt.ChildNode childNode = new NodeExt.ChildNode();
Map<String, Object> map = CHILD_NODE_MAP.get(simpleName);
NodeExt.ChildNode childNode = buildChildNodeMap(simpleName);
// 编码此json中唯
childNode.setCode(simpleName);
// label名称
childNode.setLabel(Convert.toStr(map.get("label")));
// 1输入框 2文本域 3下拉框 4选择框
childNode.setType(Convert.toInt(map.get("type"), 1));
// 是否必填
childNode.setMust(Convert.toBool(map.get("must"), false));
// 是否多选
childNode.setMultiple(Convert.toBool(map.get("multiple"), true));
// 描述
childNode.setDesc(Convert.toStr(map.get("desc"), null));
// 字典下拉框和复选框时用到
childNode.setDict(Arrays.stream(enumClass.getEnumConstants())
.map(NodeExtEnum.class::cast)
@ -165,18 +128,12 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
if (ObjectUtil.isNull(dictTypeDTO)) {
return null;
}
NodeExt.ChildNode childNode = new NodeExt.ChildNode();
NodeExt.ChildNode childNode = buildChildNodeMap(dictType);
// 编码此json中唯一
childNode.setCode(dictType);
// label名称
childNode.setLabel(dictTypeDTO.getDictName());
// 1输入框 2文本域 3下拉框 4选择框
childNode.setType(3);
// 是否必填
childNode.setMust(false);
// 是否多选
childNode.setMultiple(true);
// 描述 (可根据描述参数解析更多配置如typemustmultiple等)
// 描述
childNode.setDesc(dictTypeDTO.getRemark());
// 字典下拉框和复选框时用到
childNode.setDict(dictService.getDictData(dictType)
@ -186,6 +143,33 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
return childNode;
}
/**
* 根据 CHILD_NODE_MAP 中的配置信息构建一个基本的 ChildNode 对象
* 该方法用于设置 ChildNode 的常规属性例如 labeltype是否必填是否多选等
*
* @param key CHILD_NODE_MAP key
* @return 返回构建好的 ChildNode 对象
*/
private NodeExt.ChildNode buildChildNodeMap(String key) {
NodeExt.ChildNode childNode = new NodeExt.ChildNode();
ButtonPermission bp = CHILD_NODE_MAP.get(key);
if (bp == null) {
childNode.setType(1);
childNode.setMust(false);
childNode.setMultiple(true);
return childNode;
}
// label名称
childNode.setLabel(bp.label());
// 1输入框 2输入框 3下拉框 4选择框
childNode.setType(bp.type());
// 是否必填
childNode.setMust(bp.must());
// 是否多选
childNode.setMultiple(bp.multiple());
return childNode;
}
/**
* 从扩展属性构建按钮权限列表根据 ext 中记录的权限值标记每个按钮是否勾选
*

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
@ -36,25 +37,17 @@ import org.dromara.warm.flow.core.service.*;
import org.dromara.warm.flow.core.utils.ExpressionUtil;
import org.dromara.warm.flow.core.utils.MapUtil;
import org.dromara.warm.flow.orm.entity.*;
import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper;
import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper;
import org.dromara.warm.flow.orm.mapper.FlowNodeMapper;
import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
import org.dromara.warm.flow.orm.mapper.*;
import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.common.enums.TaskAssigneeType;
import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.FlowInstanceBizExt;
import org.dromara.workflow.domain.bo.*;
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
import org.dromara.workflow.domain.vo.FlowTaskVo;
import org.dromara.workflow.mapper.FlwCategoryMapper;
import org.dromara.workflow.mapper.FlwInstanceBizExtMapper;
import org.dromara.workflow.mapper.FlwTaskMapper;
import org.dromara.workflow.service.IFlwCommonService;
import org.dromara.workflow.service.IFlwNodeExtService;
import org.dromara.workflow.service.IFlwTaskAssigneeService;
import org.dromara.workflow.service.IFlwTaskService;
import org.dromara.workflow.service.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -90,7 +83,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
private final IFlwTaskAssigneeService flwTaskAssigneeService;
private final IFlwCommonService flwCommonService;
private final IFlwNodeExtService flwNodeExtService;
private final FlwInstanceBizExtMapper flwInstanceBizExtMapper;
private final IFlwInstanceBizExtService flowInstanceBizExtService;
/**
* 启动任务
@ -104,7 +97,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
if (StringUtils.isBlank(businessId)) {
throw new ServiceException("启动工作流时必须包含业务ID");
}
// 启动流程实例提交申请
Map<String, Object> variables = startProcessBo.getVariables();
// 流程发起人
@ -113,14 +105,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
variables.put(INITIATOR_DEPT_ID, LoginHelper.getDeptId());
// 业务id
variables.put(BUSINESS_ID, businessId);
FlowInstanceBizExt bizExt = startProcessBo.getBizExt();
// 获取已有流程实例
FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class)
.eq(FlowInstance::getBusinessId, businessId));
FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo();
if (ObjectUtil.isEmpty(extBo)) {
extBo = new FlowInstanceBizExtBo();
startProcessBo.setFlowInstanceBizExtBo(extBo);
}
if (ObjectUtil.isNotNull(flowInstance)) {
// 已存在流程
BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus());
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId()));
taskService.mergeVariable(flowInstance, variables);
@ -129,16 +121,24 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
dto.setProcessInstanceId(taskList.get(0).getInstanceId());
dto.setTaskId(taskList.get(0).getId());
// 保存流程实例业务信息
this.buildFlowInstanceBizExt(flowInstance, bizExt);
buildFlowInstanceBizExt(flowInstance, startProcessBo.getFlowInstanceBizExtBo());
return dto;
}
String businessCode;
// 生成业务编号
if (StringUtils.isBlank(extBo.getBusinessCode())) {
//todo 按照自己业务自行修改
businessCode = System.currentTimeMillis()+ StrUtil.EMPTY;
extBo.setBusinessCode(businessCode);
} else {
businessCode = extBo.getBusinessCode();
}
// 将流程定义内的扩展参数设置到变量中
Definition definition = FlowEngine.defService().getPublishByFlowCode(startProcessBo.getFlowCode());
Dict dict = JsonUtils.parseMap(definition.getExt());
boolean autoPass = !ObjectUtil.isNull(dict) && dict.getBool(FlowConstant.AUTO_PASS);
variables.put(FlowConstant.AUTO_PASS, autoPass);
variables.put(FlowConstant.BUSINESS_CODE, this.generateBusinessCode(bizExt));
variables.put(FlowConstant.BUSINESS_CODE, businessCode);
FlowParams flowParams = FlowParams.build()
.handler(startProcessBo.getHandler())
.flowCode(startProcessBo.getFlowCode())
@ -151,7 +151,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
throw new ServiceException(e.getMessage());
}
// 保存流程实例业务信息
this.buildFlowInstanceBizExt(instance, bizExt);
buildFlowInstanceBizExt(instance, startProcessBo.getFlowInstanceBizExtBo());
// 申请人执行流程
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(instance.getId()));
if (taskList.size() > 1) {
@ -163,29 +163,17 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
return dto;
}
/**
* 生成业务编号如果已有则直接返回已有值
*/
private String generateBusinessCode(FlowInstanceBizExt bizExt) {
if (StringUtils.isBlank(bizExt.getBusinessCode())) {
// TODO: 按照自己业务规则生成编号
String businessCode = Convert.toStr(System.currentTimeMillis());
bizExt.setBusinessCode(businessCode);
return businessCode;
}
return bizExt.getBusinessCode();
}
/**
* 构建流程实例业务信息
*
* @param instance 流程实例
* @param bizExt 流程业务扩展信息
* @param instance 流程实例
* @param flowInstanceBizExtBo 业务扩展信息
*/
private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExt bizExt) {
bizExt.setInstanceId(instance.getId());
bizExt.setBusinessId(instance.getBusinessId());
flwInstanceBizExtMapper.saveOrUpdateByInstanceId(bizExt);
private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExtBo flowInstanceBizExtBo) {
flowInstanceBizExtBo.setInstanceId(instance.getId());
flowInstanceBizExtBo.setBusinessId(instance.getBusinessId());
flowInstanceBizExtBo.setBusinessCode(flowInstanceBizExtBo.getBusinessCode());
flowInstanceBizExtService.saveOrUpdate(flowInstanceBizExtBo);
}
/**
@ -247,10 +235,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
/**
* 流程办理
*
* @param taskId 任务ID
* @param flowParams 参数
* @param instanceId 实例ID
* @param autoPass 自动审批
* @param taskId 任务ID
* @param flowParams 参数
* @param instanceId 实例ID
* @param autoPass 自动审批
*/
private void skipTask(Long taskId, FlowParams flowParams, Long instanceId, Boolean autoPass) {
// 执行任务跳转并根据返回的处理人设置下一步处理人
@ -506,8 +494,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
/**
* 获取可驳回的前置节点
*
* @param taskId 任务id
* @param nowNodeCode 当前节点
* @param taskId 任务id
* @param nowNodeCode 当前节点
*/
@Override
public List<Node> getBackTaskNode(Long taskId, String nowNodeCode) {