update 调整流程驳回
fix 修复发送审批提醒重复 update 修改新增租户同步流程分类
This commit is contained in:
parent
e9936334e5
commit
57a46ea7b3
@ -58,4 +58,9 @@ public interface FlowConstant {
|
||||
*/
|
||||
String FLOW_CATEGORY_NAME = "flow_category_name#30d";
|
||||
|
||||
/**
|
||||
* 默认租户OA申请分类id
|
||||
*/
|
||||
Long FLOW_CATEGORY_ID = 100L;
|
||||
|
||||
}
|
||||
|
@ -30,6 +30,8 @@ import org.dromara.warm.flow.orm.mapper.FlowDefinitionMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowNodeMapper;
|
||||
import org.dromara.warm.flow.orm.mapper.FlowSkipMapper;
|
||||
import org.dromara.workflow.common.constant.FlowConstant;
|
||||
import org.dromara.workflow.domain.FlowCategory;
|
||||
import org.dromara.workflow.domain.vo.FlowDefinitionVo;
|
||||
import org.dromara.workflow.mapper.FlwCategoryMapper;
|
||||
import org.dromara.workflow.service.IFlwDefinitionService;
|
||||
@ -59,7 +61,6 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
|
||||
private final FlowDefinitionMapper flowDefinitionMapper;
|
||||
private final FlowHisTaskMapper flowHisTaskMapper;
|
||||
private final FlwCategoryMapper flwCategoryMapper;
|
||||
|
||||
private final FlowNodeMapper flowNodeMapper;
|
||||
private final FlowSkipMapper flowSkipMapper;
|
||||
|
||||
@ -223,6 +224,11 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
|
||||
if (CollUtil.isEmpty(flowDefinitions)) {
|
||||
return;
|
||||
}
|
||||
FlowCategory flowCategory = flwCategoryMapper.selectOne(new LambdaQueryWrapper<FlowCategory>()
|
||||
.eq(FlowCategory::getTenantId, DEFAULT_TENANT_ID).eq(FlowCategory::getCategoryId, FlowConstant.FLOW_CATEGORY_ID));
|
||||
flowCategory.setCategoryId(null);
|
||||
flowCategory.setTenantId(tenantId);
|
||||
flwCategoryMapper.insert(flowCategory);
|
||||
List<Long> defIds = StreamUtils.toList(flowDefinitions, FlowDefinition::getId);
|
||||
List<FlowNode> flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper<FlowNode>().in(FlowNode::getDefinitionId, defIds));
|
||||
List<FlowSkip> flowSkips = flowSkipMapper.selectList(new LambdaQueryWrapper<FlowSkip>().in(FlowSkip::getDefinitionId, defIds));
|
||||
@ -231,7 +237,7 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
|
||||
flowDefinition.setId(null);
|
||||
flowDefinition.setTenantId(tenantId);
|
||||
flowDefinition.setIsPublish(0);
|
||||
flowDefinition.setCategory(null);
|
||||
flowDefinition.setCategory(String.valueOf(flowCategory.getCategoryId()));
|
||||
int insert = flowDefinitionMapper.insert(flowDefinition);
|
||||
if (insert <= 0) {
|
||||
log.info("同步流程定义【{}】失败!", definition.getFlowCode());
|
||||
|
@ -361,48 +361,20 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
if (ObjectUtil.isNull(task)) {
|
||||
throw new ServiceException("任务不存在!");
|
||||
}
|
||||
List<FlowNode> flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper<FlowNode>().eq(FlowNode::getDefinitionId, task.getDefinitionId()));
|
||||
Instance inst = insService.getById(task.getInstanceId());
|
||||
BusinessStatusEnum.checkBackStatus(inst.getFlowStatus());
|
||||
Long definitionId = task.getDefinitionId();
|
||||
Definition definition = defService.getById(definitionId);
|
||||
String applyNodeCode = WorkflowUtils.applyNodeCode(definitionId);
|
||||
List<FlowTaskVo> listRunTask = flwTaskMapper.getListRunTask(new QueryWrapper<FlowTaskBo>().eq("instance_id", task.getInstanceId()));
|
||||
//不是当前节点的待审任务
|
||||
List<FlowTaskVo> taskVos = StreamUtils.filter(listRunTask, e -> !e.getId().equals(taskId));
|
||||
WorkflowUtils.deleteRunTask(StreamUtils.toList(taskVos, FlowTaskVo::getId));
|
||||
if (applyNodeCode.equals(bo.getNodeCode())) {
|
||||
WorkflowUtils.backTask(message, inst.getId(), bo.getNodeCode(), TaskStatusEnum.BACK.getStatus(), TaskStatusEnum.BACK.getStatus());
|
||||
} else {
|
||||
WorkflowUtils.backTask(message, inst.getId(), bo.getNodeCode(), TaskStatusEnum.WAITING.getStatus(), TaskStatusEnum.BACK.getStatus());
|
||||
}
|
||||
//删除记录
|
||||
FlowNode node = flowNodes.stream().filter(e -> e.getNodeCode().equals(task.getNodeCode())).findFirst().orElse(null);
|
||||
if (node.getNodeRatio().compareTo(BigDecimal.ZERO) > 0) {
|
||||
List<FlowHisTask> flowHisTasks = flowHisTaskMapper.selectList(
|
||||
new LambdaQueryWrapper<FlowHisTask>()
|
||||
.eq(FlowHisTask::getFlowStatus, BusinessStatusEnum.BACK.getStatus())
|
||||
.eq(FlowHisTask::getTaskId, taskId)
|
||||
.ne(FlowHisTask::getApprover, LoginHelper.getUserIdStr())
|
||||
);
|
||||
if (CollUtil.isNotEmpty(flowHisTasks)) {
|
||||
flowHisTaskMapper.deleteByIds(StreamUtils.toList(flowHisTasks, FlowHisTask::getId));
|
||||
}
|
||||
}
|
||||
FlowParams flowParams = FlowParams.build();
|
||||
flowParams.nodeCode(bo.getNodeCode());
|
||||
flowParams.message(message);
|
||||
flowParams.skipType(SkipType.REJECT.getKey());
|
||||
flowParams.flowStatus(applyNodeCode.equals(bo.getNodeCode()) ? TaskStatusEnum.BACK.getStatus() : TaskStatusEnum.WAITING.getStatus())
|
||||
.hisStatus(TaskStatusEnum.BACK.getStatus());
|
||||
taskService.skip(task.getId(), flowParams);
|
||||
|
||||
Instance instance = insService.getById(inst.getId());
|
||||
//判断或节点是否有多个,只保留一个
|
||||
List<FlowTask> currentTaskList = selectByInstId(instance.getId());
|
||||
if (CollUtil.isNotEmpty(currentTaskList)) {
|
||||
List<String> nodeCodes = StreamUtils.toList(currentTaskList, FlowTask::getNodeCode);
|
||||
List<FlowNode> nodeCodeList = StreamUtils.filter(flowNodes, flowNode -> nodeCodes.contains(flowNode.getNodeCode()));
|
||||
for (Node n : nodeCodeList) {
|
||||
List<FlowTask> flowTasks = currentTaskList.stream().filter(e -> e.getNodeCode().equals(n.getNodeCode()) && n.getNodeRatio().compareTo(BigDecimal.ZERO) == 0).collect(Collectors.toList());
|
||||
if (flowTasks.size() > 1) {
|
||||
flowTasks.remove(0);
|
||||
WorkflowUtils.deleteRunTask(StreamUtils.toList(flowTasks, Task::getId));
|
||||
}
|
||||
}
|
||||
}
|
||||
this.setHandler(instance, task, null);
|
||||
// 消息通知
|
||||
WorkflowUtils.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice);
|
||||
@ -413,11 +385,6 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取可驳回节点
|
||||
*
|
||||
* @param instanceId 实例id
|
||||
*/
|
||||
/**
|
||||
* 获取可驳回的前置节点
|
||||
*
|
||||
|
@ -36,6 +36,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
@ -121,7 +122,7 @@ public class WorkflowUtils {
|
||||
switch (messageTypeEnum) {
|
||||
case SYSTEM_MESSAGE:
|
||||
SseMessageDto dto = new SseMessageDto();
|
||||
dto.setUserIds(StreamUtils.toList(userList, UserDTO::getUserId));
|
||||
dto.setUserIds(StreamUtils.toList(userList, UserDTO::getUserId).stream().distinct().collect(Collectors.toList()));
|
||||
dto.setMessage(message);
|
||||
SseMessageUtils.publishMessage(dto);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user