update 挑战者驳回 撤销
This commit is contained in:
parent
33e28daba6
commit
5e47e7c261
@ -210,22 +210,12 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
|||||||
//判断申请人节点是否有多个,只保留一个
|
//判断申请人节点是否有多个,只保留一个
|
||||||
List<Task> currentTaskList = taskService.list(FlowFactory.newTask().setInstanceId(instance.getId()));
|
List<Task> currentTaskList = taskService.list(FlowFactory.newTask().setInstanceId(instance.getId()));
|
||||||
if (CollUtil.isNotEmpty(currentTaskList)) {
|
if (CollUtil.isNotEmpty(currentTaskList)) {
|
||||||
Task task = currentTaskList.get(0);
|
|
||||||
if (currentTaskList.size() > 1) {
|
if (currentTaskList.size() > 1) {
|
||||||
currentTaskList.remove(0);
|
currentTaskList.remove(0);
|
||||||
List<Long> taskIds = StreamUtils.toList(currentTaskList, Task::getId);
|
List<Long> taskIds = StreamUtils.toList(currentTaskList, Task::getId);
|
||||||
WorkflowUtils.userService.deleteByTaskIds(taskIds);
|
WorkflowUtils.userService.deleteByTaskIds(taskIds);
|
||||||
flowTaskMapper.deleteByIds(taskIds);
|
flowTaskMapper.deleteByIds(taskIds);
|
||||||
}
|
}
|
||||||
//如果为空增加一个申请人
|
|
||||||
List<User> userList = WorkflowUtils.userService.getByAssociateds(Collections.singletonList(task.getId()));
|
|
||||||
if (CollUtil.isEmpty(userList)) {
|
|
||||||
FlowUser flowUser = new FlowUser();
|
|
||||||
flowUser.setAssociated(task.getId());
|
|
||||||
flowUser.setProcessedBy(LoginHelper.getUserIdStr());
|
|
||||||
flowUser.setType(UserType.APPROVAL.getKey());
|
|
||||||
WorkflowUtils.userService.save(flowUser);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -311,6 +301,10 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
|||||||
String join = StreamUtils.join(allUser, e -> String.valueOf(e.getUserId()));
|
String join = StreamUtils.join(allUser, e -> String.valueOf(e.getUserId()));
|
||||||
flowHisTaskVo.setApprover(join);
|
flowHisTaskVo.setApprover(join);
|
||||||
}
|
}
|
||||||
|
if (BusinessStatusEnum.isDraftOrCancelOrBack(flowInstance.getFlowStatus())) {
|
||||||
|
flowHisTaskVo.setApprover(LoginHelper.getUserIdStr());
|
||||||
|
flowHisTaskVo.setApproveName(LoginHelper.getLoginUser().getNickname());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
list.addAll(flowHisTaskVos);
|
list.addAll(flowHisTaskVos);
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import org.dromara.common.core.validate.EditGroup;
|
|||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.warm.flow.core.FlowFactory;
|
||||||
import org.dromara.warm.flow.core.dto.FlowParams;
|
import org.dromara.warm.flow.core.dto.FlowParams;
|
||||||
import org.dromara.warm.flow.core.entity.*;
|
import org.dromara.warm.flow.core.entity.*;
|
||||||
import org.dromara.warm.flow.core.enums.NodeType;
|
import org.dromara.warm.flow.core.enums.NodeType;
|
||||||
@ -347,6 +348,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
Long taskId = bo.getTaskId();
|
Long taskId = bo.getTaskId();
|
||||||
String notice = bo.getNotice();
|
String notice = bo.getNotice();
|
||||||
List<String> messageType = bo.getMessageType();
|
List<String> messageType = bo.getMessageType();
|
||||||
|
String message = bo.getMessage();
|
||||||
List<FlowTask> flowTasks = flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).eq(FlowTask::getId, taskId));
|
List<FlowTask> flowTasks = flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class).eq(FlowTask::getId, taskId));
|
||||||
if (CollUtil.isEmpty(flowTasks)) {
|
if (CollUtil.isEmpty(flowTasks)) {
|
||||||
throw new ServiceException("任务不存在!");
|
throw new ServiceException("任务不存在!");
|
||||||
@ -359,20 +361,23 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
FlowSkip flowSkip = StreamUtils.findFirst(flowSkips, e -> NodeType.START.getKey().equals(e.getNowNodeType()));
|
FlowSkip flowSkip = StreamUtils.findFirst(flowSkips, e -> NodeType.START.getKey().equals(e.getNowNodeType()));
|
||||||
//开始节点的下一节点
|
//开始节点的下一节点
|
||||||
assert flowSkip != null;
|
assert flowSkip != null;
|
||||||
String nextNodeCode = flowSkip.getNextNodeCode();
|
//申请人节点
|
||||||
|
String applyUserNodeCode = flowSkip.getNextNodeCode();
|
||||||
FlowParams flowParams = new FlowParams();
|
if (applyUserNodeCode.equals(bo.getNodeCode())) {
|
||||||
flowParams.variable(bo.getVariables());
|
backApplyUser(message, inst, applyUserNodeCode);
|
||||||
flowParams.skipType(SkipType.PASS.getKey());
|
|
||||||
if (nextNodeCode.equals(bo.getNodeCode())) {
|
|
||||||
flowParams.flowStatus(BusinessStatusEnum.BACK.getStatus());
|
|
||||||
} else {
|
} else {
|
||||||
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus());
|
List<Task> list = taskService.list(FlowFactory.newTask().setInstanceId(inst.getId()));
|
||||||
}
|
for (Task task : list) {
|
||||||
flowParams.hisStatus(TaskStatusEnum.BACK.getStatus());
|
FlowParams flowParams = FlowParams.build();
|
||||||
flowParams.message(bo.getMessage());
|
|
||||||
flowParams.nodeCode(bo.getNodeCode());
|
flowParams.nodeCode(bo.getNodeCode());
|
||||||
Instance instance = taskService.skip(taskId, flowParams);
|
flowParams.message(message);
|
||||||
|
flowParams.skipType(SkipType.PASS.getKey());
|
||||||
|
flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.BACK.getStatus());
|
||||||
|
flowParams.ignore(true);
|
||||||
|
taskService.skip(task.getId(), flowParams);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Instance instance = insService.getById(inst.getId());
|
||||||
setHandler(instance, flowTasks.get(0), null);
|
setHandler(instance, flowTasks.get(0), null);
|
||||||
//消息通知
|
//消息通知
|
||||||
WorkflowUtils.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice);
|
WorkflowUtils.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice);
|
||||||
@ -383,6 +388,39 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退回
|
||||||
|
*
|
||||||
|
* @param message 审批已经
|
||||||
|
* @param instance 流程实例
|
||||||
|
* @param applyUserNodeCode 申请人节点
|
||||||
|
*/
|
||||||
|
private void backApplyUser(String message, Instance instance, String applyUserNodeCode) {
|
||||||
|
List<Task> list = taskService.list(FlowFactory.newTask().setInstanceId(instance.getId()));
|
||||||
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
|
List<Task> tasks = StreamUtils.filter(list, e -> e.getNodeCode().equals(applyUserNodeCode));
|
||||||
|
if (list.size() == tasks.size()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (Task task : list) {
|
||||||
|
List<UserDTO> userList = currentTaskAllUser(task.getId());
|
||||||
|
FlowParams flowParams = FlowParams.build();
|
||||||
|
flowParams.nodeCode(applyUserNodeCode);
|
||||||
|
flowParams.message(message);
|
||||||
|
flowParams.skipType(SkipType.PASS.getKey());
|
||||||
|
flowParams.flowStatus(BusinessStatusEnum.BACK.getStatus()).hisStatus(TaskStatusEnum.BACK.getStatus());
|
||||||
|
flowParams.ignore(true);
|
||||||
|
//解决会签,或签撤销没权限问题
|
||||||
|
if (CollUtil.isNotEmpty(userList)) {
|
||||||
|
flowParams.handler(userList.get(0).getUserId().toString());
|
||||||
|
}
|
||||||
|
taskService.skip(task.getId(), flowParams);
|
||||||
|
}
|
||||||
|
//解决会签,或签多人审批问题
|
||||||
|
backApplyUser(message, instance, applyUserNodeCode);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取可驳回节点
|
* 获取可驳回节点
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user