mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +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;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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;
 | 
			
		||||
@@ -47,7 +49,7 @@ public class StartProcessBo implements Serializable {
 | 
			
		||||
    /**
 | 
			
		||||
     * 流程业务扩展信息
 | 
			
		||||
     */
 | 
			
		||||
    private FlowInstanceBizExtBo flowInstanceBizExtBo;
 | 
			
		||||
    private FlowInstanceBizExt bizExt;
 | 
			
		||||
 | 
			
		||||
    public Map<String, Object> getVariables() {
 | 
			
		||||
        if (variables == null) {
 | 
			
		||||
@@ -56,4 +58,11 @@ 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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
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 org.dromara.workflow.domain.vo.FlowInstanceBizExtVo;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 流程实例业务扩展Mapper接口
 | 
			
		||||
@@ -10,6 +13,49 @@ import org.dromara.workflow.domain.vo.FlowInstanceBizExtVo;
 | 
			
		||||
 * @author may
 | 
			
		||||
 * @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.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;
 | 
			
		||||
@@ -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.MapUtil;
 | 
			
		||||
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.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.*;
 | 
			
		||||
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.transaction.annotation.Transactional;
 | 
			
		||||
 | 
			
		||||
@@ -83,7 +90,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
    private final IFlwTaskAssigneeService flwTaskAssigneeService;
 | 
			
		||||
    private final IFlwCommonService flwCommonService;
 | 
			
		||||
    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)) {
 | 
			
		||||
            throw new ServiceException("启动工作流时必须包含业务ID");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // 启动流程实例(提交申请)
 | 
			
		||||
        Map<String, Object> variables = startProcessBo.getVariables();
 | 
			
		||||
        // 流程发起人
 | 
			
		||||
@@ -105,14 +113,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);
 | 
			
		||||
@@ -121,24 +129,16 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
            dto.setProcessInstanceId(taskList.get(0).getInstanceId());
 | 
			
		||||
            dto.setTaskId(taskList.get(0).getId());
 | 
			
		||||
            // 保存流程实例业务信息
 | 
			
		||||
            buildFlowInstanceBizExt(flowInstance, startProcessBo.getFlowInstanceBizExtBo());
 | 
			
		||||
            this.buildFlowInstanceBizExt(flowInstance, bizExt);
 | 
			
		||||
            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, businessCode);
 | 
			
		||||
        variables.put(FlowConstant.BUSINESS_CODE, this.generateBusinessCode(bizExt));
 | 
			
		||||
        FlowParams flowParams = FlowParams.build()
 | 
			
		||||
            .handler(startProcessBo.getHandler())
 | 
			
		||||
            .flowCode(startProcessBo.getFlowCode())
 | 
			
		||||
@@ -151,7 +151,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
 | 
			
		||||
            throw new ServiceException(e.getMessage());
 | 
			
		||||
        }
 | 
			
		||||
        // 保存流程实例业务信息
 | 
			
		||||
        buildFlowInstanceBizExt(instance, startProcessBo.getFlowInstanceBizExtBo());
 | 
			
		||||
        this.buildFlowInstanceBizExt(instance, bizExt);
 | 
			
		||||
        // 申请人执行流程
 | 
			
		||||
        List<Task> taskList = taskService.list(new FlowTask().setInstanceId(instance.getId()));
 | 
			
		||||
        if (taskList.size() > 1) {
 | 
			
		||||
@@ -163,17 +163,29 @@ 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 flowInstanceBizExtBo 业务扩展信息
 | 
			
		||||
     * @param instance 流程实例
 | 
			
		||||
     * @param bizExt   流程业务扩展信息
 | 
			
		||||
     */
 | 
			
		||||
    private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExtBo flowInstanceBizExtBo) {
 | 
			
		||||
        flowInstanceBizExtBo.setInstanceId(instance.getId());
 | 
			
		||||
        flowInstanceBizExtBo.setBusinessId(instance.getBusinessId());
 | 
			
		||||
        flowInstanceBizExtBo.setBusinessCode(flowInstanceBizExtBo.getBusinessCode());
 | 
			
		||||
        flowInstanceBizExtService.saveOrUpdate(flowInstanceBizExtBo);
 | 
			
		||||
    private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExt bizExt) {
 | 
			
		||||
        bizExt.setInstanceId(instance.getId());
 | 
			
		||||
        bizExt.setBusinessId(instance.getBusinessId());
 | 
			
		||||
        flwInstanceBizExtMapper.saveOrUpdateByInstanceId(bizExt);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -235,10 +247,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) {
 | 
			
		||||
        // 执行任务跳转,并根据返回的处理人设置下一步处理人
 | 
			
		||||
@@ -494,8 +506,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) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user