From 3e182c9e53cfdfb0ee7fc8b0688dd69bb450d3b2 Mon Sep 17 00:00:00 2001 From: lh Date: Mon, 29 Dec 2025 16:07:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=BA=E7=A5=A8=E9=A2=84=E8=AE=A2=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/CrmFlightBookingListener.java | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/CrmFlightBookingListener.java diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/CrmFlightBookingListener.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/CrmFlightBookingListener.java new file mode 100644 index 00000000..d6401aa2 --- /dev/null +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/CrmFlightBookingListener.java @@ -0,0 +1,81 @@ +package org.dromara.workflow.listener; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.api.RemoteDeptService; +import org.dromara.system.api.RemoteUserService; +import org.dromara.warm.flow.core.FlowEngine; +import org.dromara.warm.flow.core.dto.FlowParams; +import org.dromara.warm.flow.core.entity.Definition; +import org.dromara.warm.flow.core.entity.Instance; +import org.dromara.warm.flow.core.entity.Task; +import org.dromara.warm.flow.core.listener.GlobalListener; +import org.dromara.warm.flow.core.listener.Listener; +import org.dromara.warm.flow.core.listener.ListenerVariable; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.constant.FlowConstant; +import org.dromara.workflow.common.enums.TaskStatusEnum; +import org.dromara.workflow.domain.bo.FlowCopyBo; +import org.dromara.workflow.domain.vo.NodeExtVo; +import org.dromara.workflow.handler.FlowProcessEventHandler; +import org.dromara.workflow.service.IFlwCommonService; +import org.dromara.workflow.service.IFlwInstanceService; +import org.dromara.workflow.service.IFlwNodeExtService; +import org.dromara.workflow.service.IFlwTaskService; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 全局任务办理监听 + * + * @author may + */ +@ConditionalOnEnable +@Component +@Slf4j +@RequiredArgsConstructor +public class CrmFlightBookingListener implements Listener { + + private final IFlwNodeExtService nodeExtService; + private final FlowProcessEventHandler flowProcessEventHandler; + + @DubboReference + private RemoteUserService userService; + + @DubboReference + private final RemoteDeptService deptService; + + @Override + public void notify(ListenerVariable listenerVariable) { + Map variable = listenerVariable.getVariable(); + Instance instance = listenerVariable.getInstance(); + Set newList = new HashSet<>(); + Long createById = Long.valueOf(instance.getCreateBy()); + Long deptId = userService.getUserInfo(createById, LoginHelper.getTenantId()).getDeptId(); + Long leaderId = deptService.selectDeptLeaderById(deptId); + if (ObjectUtil.isNull(leaderId)) { + throw new ServiceException("当前部门未设置负责人,请联系管理员操作。"); + } + newList.add(leaderId.toString()); + List list = StreamUtils.toList(newList, 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); + } +}