mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-23 23:09:47 +08:00
!752 update 优化流程实例业务扩展的保存和删除逻辑,增强代码可读性
* update 优化流程实例业务扩展的保存和删除逻辑,增强代码可读性
This commit is contained in:
@ -1,46 +0,0 @@
|
|||||||
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;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,9 +1,11 @@
|
|||||||
package org.dromara.workflow.domain.bo;
|
package org.dromara.workflow.domain.bo;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.workflow.domain.FlowInstanceBizExt;
|
||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
@ -47,7 +49,7 @@ public class StartProcessBo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 流程业务扩展信息
|
* 流程业务扩展信息
|
||||||
*/
|
*/
|
||||||
private FlowInstanceBizExtBo flowInstanceBizExtBo;
|
private FlowInstanceBizExt bizExt;
|
||||||
|
|
||||||
public Map<String, Object> getVariables() {
|
public Map<String, Object> getVariables() {
|
||||||
if (variables == null) {
|
if (variables == null) {
|
||||||
@ -56,4 +58,11 @@ public class StartProcessBo implements Serializable {
|
|||||||
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));
|
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));
|
||||||
return variables;
|
return variables;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FlowInstanceBizExt getBizExt() {
|
||||||
|
if (ObjectUtil.isNull(bizExt)) {
|
||||||
|
bizExt = new FlowInstanceBizExt();
|
||||||
|
}
|
||||||
|
return bizExt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
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;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +1,11 @@
|
|||||||
package org.dromara.workflow.mapper;
|
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.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
import org.dromara.workflow.domain.FlowInstanceBizExt;
|
import org.dromara.workflow.domain.FlowInstanceBizExt;
|
||||||
import org.dromara.workflow.domain.vo.FlowInstanceBizExtVo;
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程实例业务扩展Mapper接口
|
* 流程实例业务扩展Mapper接口
|
||||||
@ -10,6 +13,49 @@ import org.dromara.workflow.domain.vo.FlowInstanceBizExtVo;
|
|||||||
* @author may
|
* @author may
|
||||||
* @date 2025-08-05
|
* @date 2025-08-05
|
||||||
*/
|
*/
|
||||||
public interface FlwInstanceBizExtMapper extends BaseMapperPlus<FlowInstanceBizExt, FlowInstanceBizExtVo> {
|
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(entity)) {
|
||||||
|
// 存在就带上主键更新
|
||||||
|
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));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
@ -1,57 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.lang.Dict;
|
import cn.hutool.core.lang.Dict;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
||||||
@ -37,17 +36,25 @@ import org.dromara.warm.flow.core.service.*;
|
|||||||
import org.dromara.warm.flow.core.utils.ExpressionUtil;
|
import org.dromara.warm.flow.core.utils.ExpressionUtil;
|
||||||
import org.dromara.warm.flow.core.utils.MapUtil;
|
import org.dromara.warm.flow.core.utils.MapUtil;
|
||||||
import org.dromara.warm.flow.orm.entity.*;
|
import org.dromara.warm.flow.orm.entity.*;
|
||||||
import org.dromara.warm.flow.orm.mapper.*;
|
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.workflow.common.ConditionalOnEnable;
|
import org.dromara.workflow.common.ConditionalOnEnable;
|
||||||
import org.dromara.workflow.common.constant.FlowConstant;
|
import org.dromara.workflow.common.constant.FlowConstant;
|
||||||
import org.dromara.workflow.common.enums.TaskAssigneeType;
|
import org.dromara.workflow.common.enums.TaskAssigneeType;
|
||||||
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
import org.dromara.workflow.common.enums.TaskStatusEnum;
|
||||||
|
import org.dromara.workflow.domain.FlowInstanceBizExt;
|
||||||
import org.dromara.workflow.domain.bo.*;
|
import org.dromara.workflow.domain.bo.*;
|
||||||
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
|
import org.dromara.workflow.domain.vo.FlowHisTaskVo;
|
||||||
import org.dromara.workflow.domain.vo.FlowTaskVo;
|
import org.dromara.workflow.domain.vo.FlowTaskVo;
|
||||||
import org.dromara.workflow.mapper.FlwCategoryMapper;
|
import org.dromara.workflow.mapper.FlwCategoryMapper;
|
||||||
|
import org.dromara.workflow.mapper.FlwInstanceBizExtMapper;
|
||||||
import org.dromara.workflow.mapper.FlwTaskMapper;
|
import org.dromara.workflow.mapper.FlwTaskMapper;
|
||||||
import org.dromara.workflow.service.*;
|
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.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -83,7 +90,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
private final IFlwTaskAssigneeService flwTaskAssigneeService;
|
private final IFlwTaskAssigneeService flwTaskAssigneeService;
|
||||||
private final IFlwCommonService flwCommonService;
|
private final IFlwCommonService flwCommonService;
|
||||||
private final IFlwNodeExtService flwNodeExtService;
|
private final IFlwNodeExtService flwNodeExtService;
|
||||||
private final IFlwInstanceBizExtService flowInstanceBizExtService;
|
private final FlwInstanceBizExtMapper flwInstanceBizExtMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动任务
|
* 启动任务
|
||||||
@ -97,6 +104,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
if (StringUtils.isBlank(businessId)) {
|
if (StringUtils.isBlank(businessId)) {
|
||||||
throw new ServiceException("启动工作流时必须包含业务ID");
|
throw new ServiceException("启动工作流时必须包含业务ID");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 启动流程实例(提交申请)
|
// 启动流程实例(提交申请)
|
||||||
Map<String, Object> variables = startProcessBo.getVariables();
|
Map<String, Object> variables = startProcessBo.getVariables();
|
||||||
// 流程发起人
|
// 流程发起人
|
||||||
@ -105,14 +113,14 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
variables.put(INITIATOR_DEPT_ID, LoginHelper.getDeptId());
|
variables.put(INITIATOR_DEPT_ID, LoginHelper.getDeptId());
|
||||||
// 业务id
|
// 业务id
|
||||||
variables.put(BUSINESS_ID, businessId);
|
variables.put(BUSINESS_ID, businessId);
|
||||||
|
FlowInstanceBizExt bizExt = startProcessBo.getBizExt();
|
||||||
|
|
||||||
|
// 获取已有流程实例
|
||||||
FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class)
|
FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class)
|
||||||
.eq(FlowInstance::getBusinessId, businessId));
|
.eq(FlowInstance::getBusinessId, businessId));
|
||||||
FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo();
|
|
||||||
if (ObjectUtil.isEmpty(extBo)) {
|
|
||||||
extBo = new FlowInstanceBizExtBo();
|
|
||||||
startProcessBo.setFlowInstanceBizExtBo(extBo);
|
|
||||||
}
|
|
||||||
if (ObjectUtil.isNotNull(flowInstance)) {
|
if (ObjectUtil.isNotNull(flowInstance)) {
|
||||||
|
// 已存在流程
|
||||||
BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus());
|
BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus());
|
||||||
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId()));
|
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId()));
|
||||||
taskService.mergeVariable(flowInstance, variables);
|
taskService.mergeVariable(flowInstance, variables);
|
||||||
@ -121,24 +129,16 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
dto.setProcessInstanceId(taskList.get(0).getInstanceId());
|
dto.setProcessInstanceId(taskList.get(0).getInstanceId());
|
||||||
dto.setTaskId(taskList.get(0).getId());
|
dto.setTaskId(taskList.get(0).getId());
|
||||||
// 保存流程实例业务信息
|
// 保存流程实例业务信息
|
||||||
buildFlowInstanceBizExt(flowInstance, startProcessBo.getFlowInstanceBizExtBo());
|
this.buildFlowInstanceBizExt(flowInstance, bizExt);
|
||||||
return dto;
|
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());
|
Definition definition = FlowEngine.defService().getPublishByFlowCode(startProcessBo.getFlowCode());
|
||||||
Dict dict = JsonUtils.parseMap(definition.getExt());
|
Dict dict = JsonUtils.parseMap(definition.getExt());
|
||||||
boolean autoPass = !ObjectUtil.isNull(dict) && dict.getBool(FlowConstant.AUTO_PASS);
|
boolean autoPass = !ObjectUtil.isNull(dict) && dict.getBool(FlowConstant.AUTO_PASS);
|
||||||
variables.put(FlowConstant.AUTO_PASS, autoPass);
|
variables.put(FlowConstant.AUTO_PASS, autoPass);
|
||||||
variables.put(FlowConstant.BUSINESS_CODE, businessCode);
|
variables.put(FlowConstant.BUSINESS_CODE, this.generateBusinessCode(bizExt));
|
||||||
FlowParams flowParams = FlowParams.build()
|
FlowParams flowParams = FlowParams.build()
|
||||||
.handler(startProcessBo.getHandler())
|
.handler(startProcessBo.getHandler())
|
||||||
.flowCode(startProcessBo.getFlowCode())
|
.flowCode(startProcessBo.getFlowCode())
|
||||||
@ -151,7 +151,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
throw new ServiceException(e.getMessage());
|
throw new ServiceException(e.getMessage());
|
||||||
}
|
}
|
||||||
// 保存流程实例业务信息
|
// 保存流程实例业务信息
|
||||||
buildFlowInstanceBizExt(instance, startProcessBo.getFlowInstanceBizExtBo());
|
this.buildFlowInstanceBizExt(instance, bizExt);
|
||||||
// 申请人执行流程
|
// 申请人执行流程
|
||||||
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(instance.getId()));
|
List<Task> taskList = taskService.list(new FlowTask().setInstanceId(instance.getId()));
|
||||||
if (taskList.size() > 1) {
|
if (taskList.size() > 1) {
|
||||||
@ -163,17 +163,29 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
return dto;
|
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 instance 流程实例
|
||||||
* @param flowInstanceBizExtBo 业务扩展信息
|
* @param bizExt 流程业务扩展信息
|
||||||
*/
|
*/
|
||||||
private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExtBo flowInstanceBizExtBo) {
|
private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExt bizExt) {
|
||||||
flowInstanceBizExtBo.setInstanceId(instance.getId());
|
bizExt.setInstanceId(instance.getId());
|
||||||
flowInstanceBizExtBo.setBusinessId(instance.getBusinessId());
|
bizExt.setBusinessId(instance.getBusinessId());
|
||||||
flowInstanceBizExtBo.setBusinessCode(flowInstanceBizExtBo.getBusinessCode());
|
flwInstanceBizExtMapper.saveOrUpdateByInstanceId(bizExt);
|
||||||
flowInstanceBizExtService.saveOrUpdate(flowInstanceBizExtBo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -235,10 +247,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
/**
|
/**
|
||||||
* 流程办理
|
* 流程办理
|
||||||
*
|
*
|
||||||
* @param taskId 任务ID
|
* @param taskId 任务ID
|
||||||
* @param flowParams 参数
|
* @param flowParams 参数
|
||||||
* @param instanceId 实例ID
|
* @param instanceId 实例ID
|
||||||
* @param autoPass 自动审批
|
* @param autoPass 自动审批
|
||||||
*/
|
*/
|
||||||
private void skipTask(Long taskId, FlowParams flowParams, Long instanceId, Boolean autoPass) {
|
private void skipTask(Long taskId, FlowParams flowParams, Long instanceId, Boolean autoPass) {
|
||||||
// 执行任务跳转,并根据返回的处理人设置下一步处理人
|
// 执行任务跳转,并根据返回的处理人设置下一步处理人
|
||||||
@ -494,8 +506,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
/**
|
/**
|
||||||
* 获取可驳回的前置节点
|
* 获取可驳回的前置节点
|
||||||
*
|
*
|
||||||
* @param taskId 任务id
|
* @param taskId 任务id
|
||||||
* @param nowNodeCode 当前节点
|
* @param nowNodeCode 当前节点
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<Node> getBackTaskNode(Long taskId, String nowNodeCode) {
|
public List<Node> getBackTaskNode(Long taskId, String nowNodeCode) {
|
||||||
|
Reference in New Issue
Block a user