Revert "update 添加 FlowCopyVo 类,优化抄送对象处理逻辑"

This reverts commit e5e8d305d2.
This commit is contained in:
疯狂的狮子Li
2025-08-29 01:35:27 +00:00
committed by Gitee
parent e5e8d305d2
commit cfa67fcd8c
6 changed files with 35 additions and 54 deletions

View File

@ -1,36 +0,0 @@
package org.dromara.workflow.domain.vo;
import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import java.io.Serial;
import java.io.Serializable;
/**
* 抄送对象
*
* @author AprilWind
*/
@Data
public class FlowCopyVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
private Long userId;
/**
* 用户名称
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "userId")
private String userName;
public FlowCopyVo(Long userId) {
this.userId = userId;
}
}

View File

@ -192,7 +192,7 @@ public class FlowTaskVo implements Serializable {
* <p> * <p>
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID * 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
*/ */
private List<FlowCopyVo> copyList; private List<FlowCopyBo> copyList;
/** /**
* 自定义参数 Map * 自定义参数 Map

View File

@ -6,6 +6,7 @@ import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* Node 扩展属性解析结果 VO * Node 扩展属性解析结果 VO
@ -28,11 +29,11 @@ public class NodeExtVo implements Serializable {
private List<ButtonPermissionVo> buttonPermissions; private List<ButtonPermissionVo> buttonPermissions;
/** /**
* 抄送对象 * 抄送对象 ID 集合
* <p> * <p>
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID * 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
*/ */
private List<FlowCopyVo> flowCopyList; private Set<String> copySettings;
/** /**
* 自定义参数 Map * 自定义参数 Map

View File

@ -1,12 +1,15 @@
package org.dromara.workflow.listener; package org.dromara.workflow.listener;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.lang.TypeReference; import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.service.UserService;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.warm.flow.core.dto.FlowParams; import org.dromara.warm.flow.core.dto.FlowParams;
import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.entity.Definition;
@ -30,6 +33,7 @@ import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* 全局任务办理监听 * 全局任务办理监听
@ -47,6 +51,7 @@ public class WorkflowGlobalListener implements GlobalListener {
private final FlowProcessEventHandler flowProcessEventHandler; private final FlowProcessEventHandler flowProcessEventHandler;
private final IFlwCommonService flwCommonService; private final IFlwCommonService flwCommonService;
private final IFlwNodeExtService nodeExtService; private final IFlwNodeExtService nodeExtService;
private final UserService userService;
private final InsService insService; private final InsService insService;
/** /**
@ -70,9 +75,16 @@ public class WorkflowGlobalListener implements GlobalListener {
if (StringUtils.isNotBlank(ext)) { if (StringUtils.isNotBlank(ext)) {
NodeExtVo nodeExt = nodeExtService.parseNodeExt(ext); NodeExtVo nodeExt = nodeExtService.parseNodeExt(ext);
Map<String, Object> variable = listenerVariable.getVariable(); Map<String, Object> variable = listenerVariable.getVariable();
Set<String> copyList = nodeExt.getCopySettings();
if (CollUtil.isNotEmpty(nodeExt.getFlowCopyList())) { if (CollUtil.isNotEmpty(copyList)) {
variable.put(FlowConstant.FLOW_COPY_LIST, nodeExt.getFlowCopyList()); List<FlowCopyBo> list = StreamUtils.toList(copyList, x -> {
FlowCopyBo bo = new FlowCopyBo();
Long id = Convert.toLong(x);
bo.setUserId(id);
bo.setUserName(userService.selectUserNameById(id));
return bo;
});
variable.put(FlowConstant.FLOW_COPY_LIST, list);
} }
if (CollUtil.isNotEmpty(nodeExt.getVariables())) { if (CollUtil.isNotEmpty(nodeExt.getVariables())) {
variable.putAll(nodeExt.getVariables()); variable.putAll(nodeExt.getVariables());
@ -169,14 +181,12 @@ public class WorkflowGlobalListener implements GlobalListener {
} }
if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) { if (variable.containsKey(FlowConstant.FLOW_COPY_LIST)) {
List<FlowCopyBo> flowCopyList = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() { List<FlowCopyBo> flowCopyList = MapUtil.get(variable, FlowConstant.FLOW_COPY_LIST, new TypeReference<>() {});
});
// 添加抄送人 // 添加抄送人
flwTaskService.setCopy(task, flowCopyList); flwTaskService.setCopy(task, flowCopyList);
} }
if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) { if (variable.containsKey(FlowConstant.MESSAGE_TYPE)) {
List<String> messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() { List<String> messageType = MapUtil.get(variable, FlowConstant.MESSAGE_TYPE, new TypeReference<>() {});
});
String notice = MapUtil.getStr(variable, FlowConstant.MESSAGE_NOTICE); String notice = MapUtil.getStr(variable, FlowConstant.MESSAGE_NOTICE);
// 消息通知 // 消息通知
if (CollUtil.isNotEmpty(messageType)) { if (CollUtil.isNotEmpty(messageType)) {

View File

@ -7,7 +7,6 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.dto.DictTypeDTO; import org.dromara.common.core.domain.dto.DictTypeDTO;
import org.dromara.common.core.service.DictService; import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.json.utils.JsonUtils;
import org.dromara.warm.flow.ui.service.NodeExtService; import org.dromara.warm.flow.ui.service.NodeExtService;
@ -18,7 +17,6 @@ import org.dromara.workflow.common.enums.CopySettingEnum;
import org.dromara.workflow.common.enums.NodeExtEnum; import org.dromara.workflow.common.enums.NodeExtEnum;
import org.dromara.workflow.common.enums.VariablesEnum; import org.dromara.workflow.common.enums.VariablesEnum;
import org.dromara.workflow.domain.vo.ButtonPermissionVo; import org.dromara.workflow.domain.vo.ButtonPermissionVo;
import org.dromara.workflow.domain.vo.FlowCopyVo;
import org.dromara.workflow.domain.vo.NodeExtVo; import org.dromara.workflow.domain.vo.NodeExtVo;
import org.dromara.workflow.service.IFlwNodeExtService; import org.dromara.workflow.service.IFlwNodeExtService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -237,9 +235,8 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
} else if (CopySettingEnum.class.getSimpleName().equals(code)) { } else if (CopySettingEnum.class.getSimpleName().equals(code)) {
// 解析抄送对象 ID 集合 // 解析抄送对象 ID 集合
Set<String> userIds = StringUtils.str2Set(value, StringUtils.SEPARATOR); nodeExtVo.setCopySettings(StringUtils.str2Set(value, StringUtils.SEPARATOR));
List<FlowCopyVo> copySettings = StreamUtils.toList(userIds, x -> new FlowCopyVo(Convert.toLong(x)));
nodeExtVo.setFlowCopyList(copySettings);
} else if (VariablesEnum.class.getSimpleName().equals(code)) { } else if (VariablesEnum.class.getSimpleName().equals(code)) {
// 解析自定义参数 // 解析自定义参数
// 将 key=value 字符串拆分为 Map // 将 key=value 字符串拆分为 Map

View File

@ -46,7 +46,6 @@ import org.dromara.workflow.common.enums.TaskAssigneeType;
import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.common.enums.TaskStatusEnum;
import org.dromara.workflow.domain.FlowInstanceBizExt; import org.dromara.workflow.domain.FlowInstanceBizExt;
import org.dromara.workflow.domain.bo.*; import org.dromara.workflow.domain.bo.*;
import org.dromara.workflow.domain.vo.FlowCopyVo;
import org.dromara.workflow.domain.vo.FlowHisTaskVo; 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.domain.vo.NodeExtVo; import org.dromara.workflow.domain.vo.NodeExtVo;
@ -602,8 +601,18 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt()); NodeExtVo nodeExtVo = flwNodeExtService.parseNodeExt(flowNode.getExt());
//设置按钮权限 //设置按钮权限
flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions()); flowTaskVo.setButtonList(nodeExtVo.getButtonPermissions());
List<FlowCopyVo> flowCopyList = nodeExtVo.getFlowCopyList(); if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) {
flowTaskVo.setCopyList(CollUtil.isEmpty(flowCopyList) ? Collections.emptyList() : flowCopyList); List<FlowCopyBo> list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> {
FlowCopyBo bo = new FlowCopyBo();
Long id = Convert.toLong(x);
bo.setUserId(id);
bo.setUserName(userService.selectUserNameById(id));
return bo;
});
flowTaskVo.setCopyList(list);
} else {
flowTaskVo.setCopyList(new ArrayList<>());
}
flowTaskVo.setVarList(nodeExtVo.getVariables()); flowTaskVo.setVarList(nodeExtVo.getVariables());
flowTaskVo.setNodeRatio(flowNode.getNodeRatio()); flowTaskVo.setNodeRatio(flowNode.getNodeRatio());
flowTaskVo.setApplyNode(flowNode.getNodeCode().equals(flwCommonService.applyNodeCode(task.getDefinitionId()))); flowTaskVo.setApplyNode(flowNode.getNodeCode().equals(flwCommonService.applyNodeCode(task.getDefinitionId())));