lmx 4 semanas atrás
pai
commit
8d58b09149
18 arquivos alterados com 177 adições e 32 exclusões
  1. 15 0
      fs-service/src/main/java/com/fs/company/service/HasCompanyWorkflowNodeMapper.java
  2. 14 0
      fs-service/src/main/java/com/fs/company/service/HasRedisNode.java
  3. 1 0
      fs-service/src/main/java/com/fs/company/service/impl/AbstractWorkflowNode.java
  4. 12 1
      fs-service/src/main/java/com/fs/company/service/impl/ActionNode.java
  5. 9 1
      fs-service/src/main/java/com/fs/company/service/impl/AiAddWxTaskNode.java
  6. 8 1
      fs-service/src/main/java/com/fs/company/service/impl/AiAnalysisNode.java
  7. 8 1
      fs-service/src/main/java/com/fs/company/service/impl/AiCallTaskNode.java
  8. 8 1
      fs-service/src/main/java/com/fs/company/service/impl/AiDialogNode.java
  9. 8 1
      fs-service/src/main/java/com/fs/company/service/impl/AiSendMsgTaskNode.java
  10. 8 7
      fs-service/src/main/java/com/fs/company/service/impl/CompanyWorkflowEngineImpl.java
  11. 18 1
      fs-service/src/main/java/com/fs/company/service/impl/DelayNode.java
  12. 8 2
      fs-service/src/main/java/com/fs/company/service/impl/EndNode.java
  13. 8 2
      fs-service/src/main/java/com/fs/company/service/impl/HttpRequestNode.java
  14. 8 2
      fs-service/src/main/java/com/fs/company/service/impl/MessageNotificationNode.java
  15. 8 2
      fs-service/src/main/java/com/fs/company/service/impl/OutBoundTaskNode.java
  16. 8 2
      fs-service/src/main/java/com/fs/company/service/impl/StartNode.java
  17. 8 2
      fs-service/src/main/java/com/fs/company/service/impl/VariableSetNode.java
  18. 20 6
      fs-service/src/main/java/com/fs/company/service/impl/WorkflowNodeFactory.java

+ 15 - 0
fs-service/src/main/java/com/fs/company/service/HasCompanyWorkflowNodeMapper.java

@@ -0,0 +1,15 @@
+package com.fs.company.service;
+
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
+
+/**
+ * @author MixLiu
+ * @date 2026/1/29 10:24
+ * @description
+ */
+public interface HasCompanyWorkflowNodeMapper {
+
+    void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper);
+
+}
+

+ 14 - 0
fs-service/src/main/java/com/fs/company/service/HasRedisNode.java

@@ -0,0 +1,14 @@
+package com.fs.company.service;
+
+import com.fs.common.core.redis.RedisCache;
+
+/**
+ * @author MixLiu
+ * @date 2026/1/29 10:01
+ * @description 流程需要用到redis
+ */
+public interface HasRedisNode {
+
+    void setRedisService(RedisCache redisCache);
+
+}

+ 1 - 0
fs-service/src/main/java/com/fs/company/service/impl/AbstractWorkflowNode.java

@@ -70,6 +70,7 @@ public abstract class AbstractWorkflowNode implements IWorkflowNode {
         long endTime = System.currentTimeMillis();
         context.setVariable("node_end_time_" + nodeKey, endTime);
         log.info("Completed execution of node: {} ({})", nodeKey, nodeName);
+        //todo 写入执行日志
     }
 
     /**

+ 12 - 1
fs-service/src/main/java/com/fs/company/service/impl/ActionNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,7 +13,14 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class ActionNode extends AbstractWorkflowNode{
+public class ActionNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
 
     public ActionNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
@@ -26,4 +35,6 @@ public class ActionNode extends AbstractWorkflowNode{
     public NodeTypeEnum getType() {
         return NodeTypeEnum.ACTION;
     }
+
+
 }

+ 9 - 1
fs-service/src/main/java/com/fs/company/service/impl/AiAddWxTaskNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,14 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description AI外呼电话任务节点
  */
-public class AiAddWxTaskNode extends AbstractWorkflowNode{
+public class AiAddWxTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
 
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public AiAddWxTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 1
fs-service/src/main/java/com/fs/company/service/impl/AiAnalysisNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,13 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class AiAnalysisNode extends AbstractWorkflowNode{
+public class AiAnalysisNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
 
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public AiAnalysisNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 1
fs-service/src/main/java/com/fs/company/service/impl/AiCallTaskNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,13 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description AI外呼电话任务节点
  */
-public class AiCallTaskNode extends AbstractWorkflowNode{
+public class AiCallTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
 
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public AiCallTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 1
fs-service/src/main/java/com/fs/company/service/impl/AiDialogNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,13 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class AiDialogNode extends AbstractWorkflowNode{
+public class AiDialogNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
 
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public AiDialogNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 1
fs-service/src/main/java/com/fs/company/service/impl/AiSendMsgTaskNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,13 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description AI外呼电话任务节点
  */
-public class AiSendMsgTaskNode extends AbstractWorkflowNode{
+public class AiSendMsgTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
 
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public AiSendMsgTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 7
fs-service/src/main/java/com/fs/company/service/impl/CompanyWorkflowEngineImpl.java

@@ -33,6 +33,7 @@ import java.util.*;
 @Service
 @Slf4j
 public class CompanyWorkflowEngineImpl implements CompanyWorkflowEngine {
+
     @Autowired
     private WorkflowNodeFactory nodeFactory;
 
@@ -51,7 +52,6 @@ public class CompanyWorkflowEngineImpl implements CompanyWorkflowEngine {
     @Autowired
     private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
 
-
     /**
      * 初始化工作流
      * 创建工作流实例并保存初始状态
@@ -345,15 +345,15 @@ public class CompanyWorkflowEngineImpl implements CompanyWorkflowEngine {
      * 创建节点实例
      */
     private IWorkflowNode createNode(CompanyWorkflow definition, String nodeKey) {
-        CompanyWorkflowNode nodeDef = companyWorkflowNodeMapper.selectNodeByWorkflowIdAndNodeKey(definition.getWorkflowId(),nodeKey);
-        if (nodeDef == null) {
+        CompanyWorkflowNode node = companyWorkflowNodeMapper.selectNodeByWorkflowIdAndNodeKey(definition.getWorkflowId(),nodeKey);
+        if (node == null) {
             return null;
         }
         return nodeFactory.createNode(
-                nodeDef.getNodeKey(),
-                NodeTypeEnum.fromValue(nodeDef.getNodeType()),
-                nodeDef.getNodeName(),
-                JSON.parseObject(nodeDef.getNodeConfig(), Map.class));
+                node.getNodeKey(),
+                NodeTypeEnum.fromValue(node.getNodeType()),
+                node.getNodeName(),
+                JSON.parseObject(node.getNodeConfig(), Map.class));
     }
 
     /**
@@ -374,6 +374,7 @@ public class CompanyWorkflowEngineImpl implements CompanyWorkflowEngine {
         context.setVariables(inputVariables != null ? inputVariables : new HashMap<>());
         context.setStartTime(new Date());
         context.setCurrentTime(new Date());
+        context.setBusinessId(inputVariables.containsKey("businessId")?inputVariables.get("businessId").toString():null);
 
         return context;
     }

+ 18 - 1
fs-service/src/main/java/com/fs/company/service/impl/DelayNode.java

@@ -1,6 +1,10 @@
 package com.fs.company.service.impl;
 
+import com.fs.common.core.redis.RedisCache;
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
+import com.fs.company.service.HasRedisNode;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,7 +15,18 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description 延时节点
  */
-public class DelayNode extends AbstractWorkflowNode{
+public class DelayNode extends AbstractWorkflowNode implements HasRedisNode, HasCompanyWorkflowNodeMapper {
+
+    private RedisCache redisCache;
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
+    @Override
+    public void setRedisService(RedisCache redisCache) {
+        this.redisCache = redisCache;
+    }
 
     public DelayNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
@@ -32,4 +47,6 @@ public class DelayNode extends AbstractWorkflowNode{
     public Boolean isAsync() {
         return true;
     }
+
+
 }

+ 8 - 2
fs-service/src/main/java/com/fs/company/service/impl/EndNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,12 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description 开始节点
  */
-public class EndNode extends AbstractWorkflowNode{
-
+public class EndNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public EndNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 2
fs-service/src/main/java/com/fs/company/service/impl/HttpRequestNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,12 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class HttpRequestNode extends AbstractWorkflowNode{
-
+public class HttpRequestNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public HttpRequestNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 2
fs-service/src/main/java/com/fs/company/service/impl/MessageNotificationNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,12 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class MessageNotificationNode extends AbstractWorkflowNode{
-
+public class MessageNotificationNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public MessageNotificationNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 2
fs-service/src/main/java/com/fs/company/service/impl/OutBoundTaskNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,12 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class OutBoundTaskNode extends AbstractWorkflowNode{
-
+public class OutBoundTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public OutBoundTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 2
fs-service/src/main/java/com/fs/company/service/impl/StartNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,12 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description 开始节点
  */
-public class StartNode extends AbstractWorkflowNode{
-
+public class StartNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public StartNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 8 - 2
fs-service/src/main/java/com/fs/company/service/impl/VariableSetNode.java

@@ -1,6 +1,8 @@
 package com.fs.company.service.impl;
 
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
 import com.fs.company.vo.ExecutionResult;
 import com.fs.enums.NodeTypeEnum;
 
@@ -11,8 +13,12 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class VariableSetNode extends AbstractWorkflowNode{
-
+public class VariableSetNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    @Override
+    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
+        this.companyWorkflowNodeMapper = mapper;
+    }
     public VariableSetNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 20 - 6
fs-service/src/main/java/com/fs/company/service/impl/WorkflowNodeFactory.java

@@ -1,8 +1,13 @@
 package com.fs.company.service.impl;
 
+import com.fs.common.core.redis.RedisCache;
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
+import com.fs.company.service.HasCompanyWorkflowNodeMapper;
+import com.fs.company.service.HasRedisNode;
 import com.fs.company.service.IWorkflowNode;
 import com.fs.company.service.IWorkflowNodeFactory;
 import com.fs.enums.NodeTypeEnum;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.Map;
@@ -15,6 +20,10 @@ import java.util.Map;
 @Component
 public class WorkflowNodeFactory implements IWorkflowNodeFactory {
 
+    @Autowired
+    private RedisCache redisCache;
+    @Autowired
+    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
 
     @Override
     public IWorkflowNode createNode(String nodeKey, NodeTypeEnum type, String nodeName,
@@ -70,12 +79,17 @@ public class WorkflowNodeFactory implements IWorkflowNodeFactory {
         return node;
     }
 
+    /**
+     * 注入依赖
+     * @param node
+     */
     private void injectDependencies(Object node) {
-//        if (node instanceof HasUserMapper) {
-//            ((HasUserMapper) node).setUserMapper(userMapper);
-//        }
-//        if (node instanceof HasSomeService) {
-//            ((HasSomeService) node).setSomeService(someService);
-//        }
+        if (node instanceof HasRedisNode) {
+            ((HasRedisNode) node).setRedisService(redisCache);
+        }
+        if (node instanceof HasCompanyWorkflowNodeMapper) {
+            ((HasCompanyWorkflowNodeMapper) node).setCompanyWorkflowNodeMapper(companyWorkflowNodeMapper);
+        }
+
     }
 }