|
@@ -5,6 +5,7 @@ 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;
|
|
@@ -46,10 +47,7 @@ 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.FlwTaskMapper;
|
|
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.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
@@ -86,6 +84,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|
|
private final IFlwCommonService flwCommonService;
|
|
private final IFlwCommonService flwCommonService;
|
|
|
private final IFlwNodeExtService flwNodeExtService;
|
|
private final IFlwNodeExtService flwNodeExtService;
|
|
|
private final FlowDefinitionMapper flowDefinitionMapper;
|
|
private final FlowDefinitionMapper flowDefinitionMapper;
|
|
|
|
|
+ private final IFlwInstanceBizExtService flowInstanceBizExtService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 启动任务
|
|
* 启动任务
|
|
@@ -117,14 +116,30 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|
|
StartProcessReturnDTO dto = new StartProcessReturnDTO();
|
|
StartProcessReturnDTO dto = new StartProcessReturnDTO();
|
|
|
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());
|
|
|
return dto;
|
|
return dto;
|
|
|
}
|
|
}
|
|
|
|
|
+ FlowInstanceBizExtBo extBo = startProcessBo.getFlowInstanceBizExtBo();
|
|
|
|
|
+ String businessCode;
|
|
|
|
|
+ if (ObjectUtil.isEmpty(extBo)) {
|
|
|
|
|
+ extBo = new FlowInstanceBizExtBo();
|
|
|
|
|
+ startProcessBo.setFlowInstanceBizExtBo(extBo);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 生成业务编号
|
|
|
|
|
+ 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);
|
|
|
FlowParams flowParams = FlowParams.build()
|
|
FlowParams flowParams = FlowParams.build()
|
|
|
.handler(startProcessBo.getHandler())
|
|
.handler(startProcessBo.getHandler())
|
|
|
.flowCode(startProcessBo.getFlowCode())
|
|
.flowCode(startProcessBo.getFlowCode())
|
|
@@ -136,6 +151,8 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
throw new ServiceException(e.getMessage());
|
|
throw new ServiceException(e.getMessage());
|
|
|
}
|
|
}
|
|
|
|
|
+ // 保存流程实例业务信息
|
|
|
|
|
+ buildFlowInstanceBizExt(instance, startProcessBo.getFlowInstanceBizExtBo());
|
|
|
// 申请人执行流程
|
|
// 申请人执行流程
|
|
|
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) {
|
|
@@ -147,6 +164,19 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|
|
return dto;
|
|
return dto;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 构建流程实例业务信息
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param instance 流程实例
|
|
|
|
|
+ * @param flowInstanceBizExtBo 业务扩展信息
|
|
|
|
|
+ */
|
|
|
|
|
+ private void buildFlowInstanceBizExt(Instance instance, FlowInstanceBizExtBo flowInstanceBizExtBo) {
|
|
|
|
|
+ flowInstanceBizExtBo.setInstanceId(instance.getId());
|
|
|
|
|
+ flowInstanceBizExtBo.setBusinessId(instance.getBusinessId());
|
|
|
|
|
+ flowInstanceBizExtBo.setBusinessCode(flowInstanceBizExtBo.getBusinessCode());
|
|
|
|
|
+ flowInstanceBizExtService.saveOrUpdate(flowInstanceBizExtBo);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 办理任务
|
|
* 办理任务
|
|
|
*
|
|
*
|