|
@@ -16,6 +16,7 @@
|
|
*/
|
|
*/
|
|
package org.springblade.business.service.impl;
|
|
package org.springblade.business.service.impl;
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
@@ -41,6 +42,7 @@ import org.springblade.core.tool.utils.Func;
|
|
import org.springblade.flow.core.constant.ProcessConstant;
|
|
import org.springblade.flow.core.constant.ProcessConstant;
|
|
import org.springblade.flow.core.entity.BladeFlow;
|
|
import org.springblade.flow.core.entity.BladeFlow;
|
|
import org.springblade.flow.core.feign.IFlowClient;
|
|
import org.springblade.flow.core.feign.IFlowClient;
|
|
|
|
+import org.springblade.flow.core.feign.NewFlowClient;
|
|
import org.springblade.flow.core.utils.FlowUtil;
|
|
import org.springblade.flow.core.utils.FlowUtil;
|
|
import org.springblade.flow.core.utils.TaskUtil;
|
|
import org.springblade.flow.core.utils.TaskUtil;
|
|
import org.springblade.flow.core.vo.FlowProcessVO;
|
|
import org.springblade.flow.core.vo.FlowProcessVO;
|
|
@@ -62,6 +64,8 @@ import java.util.List;
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implements ITaskService {
|
|
public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implements ITaskService {
|
|
|
|
|
|
|
|
+ private final NewFlowClient newFlowClient;
|
|
|
|
+
|
|
private final IFlowClient flowClient;
|
|
private final IFlowClient flowClient;
|
|
|
|
|
|
private final IFixedFlowLinkService fixedFlowLinkService;
|
|
private final IFixedFlowLinkService fixedFlowLinkService;
|
|
@@ -79,10 +83,53 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
if(StringUtils.isEmpty(comment) && "OK".equals(taskApprovalVO.getFlag())){
|
|
if(StringUtils.isEmpty(comment) && "OK".equals(taskApprovalVO.getFlag())){
|
|
comment = "同意";
|
|
comment = "同意";
|
|
}
|
|
}
|
|
|
|
+ //获取当前分支信息
|
|
|
|
+ TaskParallel currentLink = this.taskParallelService.getOne(Wrappers.<TaskParallel>lambdaQuery().eq(TaskParallel::getParallelProcessInstanceId, parallelProcessInstanceId).eq(TaskParallel::getIsDeleted, 0));
|
|
|
|
+
|
|
|
|
+ if("OK".equals(taskApprovalVO.getFlag())){
|
|
|
|
+ //同意,执行签章
|
|
|
|
+ //todo ============================ 执行电签区域 ============================
|
|
|
|
+ //电签状态
|
|
|
|
+ String eVisaStatus = "1";
|
|
|
|
+ //todo ============================ 执行电签区域 ============================
|
|
|
|
|
|
|
|
+ //电签状态为999(错误状态)的就需要重新提交请求
|
|
|
|
+ if(!"999".equals(eVisaStatus)){
|
|
|
|
+ //完成/审批当前分支流程
|
|
|
|
+ this.newFlowClient.completeApprovalTask(taskId, parallelProcessInstanceId, comment).getData();
|
|
|
|
+ //修改分支状态,改为已完成
|
|
|
|
+ this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate().set(TaskParallel::getStatus, 2).eq(TaskParallel::getParallelProcessInstanceId, parallelProcessInstanceId));
|
|
|
|
|
|
|
|
+ //最后判断当前分支流程的主流程的其它分支是否都已经完成,如果都已完成则更改主流程状态并执行完成任务
|
|
|
|
+
|
|
|
|
+ //获取状态为1(待审批)的分支流程
|
|
|
|
+ List<TaskParallel> otherLink = this.taskParallelService.list(Wrappers.<TaskParallel>lambdaQuery().eq(TaskParallel::getProcessInstanceId, currentLink.getProcessInstanceId()).eq(TaskParallel::getIsDeleted, 0).eq(TaskParallel::getStatus, 1));
|
|
|
|
+ if(otherLink == null || otherLink.size() == 0){
|
|
|
|
+ //说明都审批完成,将主表状态更改为已完成
|
|
|
|
+ Task task = this.getOne(Wrappers.<Task>lambdaQuery().eq(Task::getIsDeleted, 0).eq(Task::getProcessInstanceId, currentLink.getProcessInstanceId()));
|
|
|
|
+ //根据主表的业务ID(processInstanceId)获取主流程的taskId
|
|
|
|
+ String masterTaskId = this.newFlowClient.queryTaskIdByProcessInstanceId(task.getProcessInstanceId());
|
|
|
|
+ if(StringUtils.isNotEmpty(masterTaskId)){
|
|
|
|
+ //完成流程
|
|
|
|
+ this.newFlowClient.completeApprovalTask(taskId, task.getProcessInstanceId(), "完成任务");
|
|
|
|
+ //修改主流程状态为已完成
|
|
|
|
+ this.update(Wrappers.<Task>lambdaUpdate().set(Task::getStatus, 2).eq(Task::getId, task.getId()));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ System.out.println("循环调用电签");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //废除,遵循只要某一个分支流程废除,则主流程及其所有分支流程均废除
|
|
|
|
+ //完成/审批当前分支流程
|
|
|
|
+ this.newFlowClient.completeApprovalTask(taskId, parallelProcessInstanceId, comment).getData();
|
|
|
|
+ //将分支状态更改为已废除
|
|
|
|
+ this.taskParallelService.update(Wrappers.<TaskParallel>lambdaUpdate().set(TaskParallel::getStatus, 3).eq(TaskParallel::getParallelProcessInstanceId, parallelProcessInstanceId));
|
|
|
|
+ //获取除当前分支外的所有分支
|
|
|
|
+ List<String> otherLink = this.taskParallelService.queryOtherLinkList(parallelProcessInstanceId);
|
|
|
|
+ }
|
|
|
|
|
|
- return null;
|
|
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -100,7 +147,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
query.setCurrent(1);
|
|
query.setCurrent(1);
|
|
query.setSize(999);
|
|
query.setSize(999);
|
|
//获取流程
|
|
//获取流程
|
|
- List<FlowProcessVO> modeProcessVOS = this.flowClient.startFlowList("", query, 1);
|
|
|
|
|
|
+ List<FlowProcessVO> modeProcessVOS = this.newFlowClient.startFlowList("", query, 1);
|
|
if(modeProcessVOS == null || modeProcessVOS.size() == 0){
|
|
if(modeProcessVOS == null || modeProcessVOS.size() == 0){
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
@@ -129,7 +176,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
//拼接并行的实例ID
|
|
//拼接并行的实例ID
|
|
vo.setProcessInstanceId(result.getData().getProcessInstanceId());
|
|
vo.setProcessInstanceId(result.getData().getProcessInstanceId());
|
|
} else {
|
|
} else {
|
|
-// throw new ServiceException("开启主流程失败");
|
|
|
|
|
|
+ throw new ServiceException("开启主流程失败");
|
|
}
|
|
}
|
|
|
|
|
|
//根据所选择的固定流程所含有的环节发起审批任务
|
|
//根据所选择的固定流程所含有的环节发起审批任务
|
|
@@ -144,7 +191,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
|
|
log.debug("并行流程已启动,流程ID:" + linkResult.getData().getProcessInstanceId());
|
|
log.debug("并行流程已启动,流程ID:" + linkResult.getData().getProcessInstanceId());
|
|
taskParallelArray.add(new TaskParallel(vo.getProcessInstanceId(), linkResult.getData().getProcessInstanceId(), link.getFixedFlowLinkUser().toString(), link.getFixedFlowLinkUserName()));
|
|
taskParallelArray.add(new TaskParallel(vo.getProcessInstanceId(), linkResult.getData().getProcessInstanceId(), link.getFixedFlowLinkUser().toString(), link.getFixedFlowLinkUserName()));
|
|
} else {
|
|
} else {
|
|
-// throw new ServiceException("开启并行流程失败");
|
|
|
|
|
|
+ throw new ServiceException("开启并行流程失败");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//设置流程信息
|
|
//设置流程信息
|