mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-09-23 23:09:47 +08:00
update 添加 FlowCopyVo 类,优化抄送对象处理逻辑
This commit is contained in:
@ -0,0 +1,36 @@
|
|||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -192,7 +192,7 @@ public class FlowTaskVo implements Serializable {
|
|||||||
* <p>
|
* <p>
|
||||||
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
|
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
|
||||||
*/
|
*/
|
||||||
private List<FlowCopyBo> copyList;
|
private List<FlowCopyVo> copyList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义参数 Map
|
* 自定义参数 Map
|
||||||
|
@ -6,7 +6,6 @@ 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
|
||||||
@ -29,11 +28,11 @@ public class NodeExtVo implements Serializable {
|
|||||||
private List<ButtonPermissionVo> buttonPermissions;
|
private List<ButtonPermissionVo> buttonPermissions;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 抄送对象 ID 集合
|
* 抄送对象
|
||||||
* <p>
|
* <p>
|
||||||
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
|
* 根据扩展属性中 CopySettingEnum 类型的数据生成,存储需要抄送的对象 ID
|
||||||
*/
|
*/
|
||||||
private Set<String> copySettings;
|
private List<FlowCopyVo> flowCopyList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义参数 Map
|
* 自定义参数 Map
|
||||||
|
@ -1,15 +1,12 @@
|
|||||||
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;
|
||||||
@ -33,7 +30,6 @@ 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;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全局任务办理监听
|
* 全局任务办理监听
|
||||||
@ -51,7 +47,6 @@ 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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -75,16 +70,9 @@ 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(copyList)) {
|
if (CollUtil.isNotEmpty(nodeExt.getFlowCopyList())) {
|
||||||
List<FlowCopyBo> list = StreamUtils.toList(copyList, x -> {
|
variable.put(FlowConstant.FLOW_COPY_LIST, nodeExt.getFlowCopyList());
|
||||||
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());
|
||||||
@ -181,12 +169,14 @@ 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)) {
|
||||||
|
@ -7,6 +7,7 @@ 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;
|
||||||
@ -17,6 +18,7 @@ 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;
|
||||||
@ -235,8 +237,9 @@ public class FlwNodeExtServiceImpl implements NodeExtService, IFlwNodeExtService
|
|||||||
|
|
||||||
} else if (CopySettingEnum.class.getSimpleName().equals(code)) {
|
} else if (CopySettingEnum.class.getSimpleName().equals(code)) {
|
||||||
// 解析抄送对象 ID 集合
|
// 解析抄送对象 ID 集合
|
||||||
nodeExtVo.setCopySettings(StringUtils.str2Set(value, StringUtils.SEPARATOR));
|
Set<String> userIds = 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
|
||||||
|
@ -46,6 +46,7 @@ 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;
|
||||||
@ -601,18 +602,8 @@ 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());
|
||||||
if (CollUtil.isNotEmpty(nodeExtVo.getCopySettings())) {
|
List<FlowCopyVo> flowCopyList = nodeExtVo.getFlowCopyList();
|
||||||
List<FlowCopyBo> list = StreamUtils.toList(nodeExtVo.getCopySettings(), x -> {
|
flowTaskVo.setCopyList(CollUtil.isEmpty(flowCopyList) ? Collections.emptyList() : flowCopyList);
|
||||||
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())));
|
||||||
|
Reference in New Issue
Block a user