吴树波 3 weeks ago
parent
commit
ed4c65287a

+ 12 - 40
fs-service/src/main/java/com/fs/company/service/impl/call/node/AbstractWorkflowNode.java

@@ -2,6 +2,7 @@ package com.fs.company.service.impl.call.node;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.domain.*;
 import com.fs.company.mapper.*;
 import com.fs.company.param.ExecutionContext;
@@ -23,43 +24,14 @@ import java.util.*;
  */
 @Slf4j
 //@SuppressWarnings("all")
-public abstract class AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper, IWorkflowNode,
-        HasCompanyAiWorkflowExecMapper, HasCompanyWorkflowEdgeMapper, HasCompanyAiWorkflowExecLogMapper, HasCompanyVoiceRoboticBusinessMapper,
-        HasObjectMapper {
-
-    CompanyAiWorkflowExecMapper workflowExecMapper;
-    CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper;
-    CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper;
-    CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
-    CompanyVoiceRoboticBusinessMapper companyVoiceRoboticBusinessMapper;
-    ObjectMapper objectMapper;
-
-    @Override
-    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
-        this.companyWorkflowNodeMapper = mapper;
-    }
-    @Override
-    public void setCompanyAiWorkflowExecMapper(CompanyAiWorkflowExecMapper workflowExecMapper) {
-        this.workflowExecMapper = workflowExecMapper;
-    }
-
-    @Override
-    public void setCompanyWorkflowEdgeMapper(CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper) {
-        this.companyWorkflowEdgeMapper = companyWorkflowEdgeMapper;
-    }
-    @Override
-    public void setCompanyAiWorkflowExecLogMapper(CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper) {
-        this.companyAiWorkflowExecLogMapper = companyAiWorkflowExecLogMapper;
-    }
-    @Override
-    public void setCompanyVoiceRoboticBusinessMapper(CompanyVoiceRoboticBusinessMapper companyVoiceRoboticBusinessMapper){
-        this.companyVoiceRoboticBusinessMapper = companyVoiceRoboticBusinessMapper;
-    }
-    @Override
-    public void setObjectMapper(ObjectMapper objectMapper){
-        this.objectMapper = objectMapper;
-    }
+public abstract class AbstractWorkflowNode implements IWorkflowNode {
 
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
+    private static final CompanyAiWorkflowExecMapper companyAiWorkflowExecMapper = SpringUtils.getBean(CompanyAiWorkflowExecMapper.class);
+    private static final CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper = SpringUtils.getBean(CompanyAiWorkflowExecLogMapper.class);
+    private static final CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper = SpringUtils.getBean(CompanyWorkflowEdgeMapper.class);
+    private static final CompanyVoiceRoboticBusinessMapper companyVoiceRoboticBusinessMapper = SpringUtils.getBean(CompanyVoiceRoboticBusinessMapper.class);
+    private static final ObjectMapper objectMapper = new ObjectMapper();
 
     protected String nodeKey;
     protected String nodeName;
@@ -97,7 +69,7 @@ public abstract class AbstractWorkflowNode implements HasCompanyWorkflowNodeMapp
     @Override
     public ExecutionResult continueExecute(ExecutionContext context){
         try{
-            CompanyAiWorkflowExec companyAiWorkflowExec = workflowExecMapper.selectByWorkflowInstanceId(context.getWorkflowInstanceId());
+            CompanyAiWorkflowExec companyAiWorkflowExec = companyAiWorkflowExecMapper.selectByWorkflowInstanceId(context.getWorkflowInstanceId());
             if(!Integer.valueOf(ExecutionStatusEnum.WAITING.getValue()).equals(companyAiWorkflowExec.getStatus())){
                 return handleExecutionError( new Exception("状态不符合"), context);
             }
@@ -161,7 +133,7 @@ public abstract class AbstractWorkflowNode implements HasCompanyWorkflowNodeMapp
      */
     public String getNextNodeKey(String workflowInstanceId, String nodeKey){
 
-        CompanyAiWorkflowExec companyAiWorkflowExec = workflowExecMapper.selectByWorkflowInstanceId(workflowInstanceId);
+        CompanyAiWorkflowExec companyAiWorkflowExec = companyAiWorkflowExecMapper.selectByWorkflowInstanceId(workflowInstanceId);
 
         List<CompanyWorkflowEdge> companyWorkflowEdges =
                 companyWorkflowEdgeMapper.selectListByWorkflowIdAndNodeKey(companyAiWorkflowExec.getWorkflowId(), nodeKey);
@@ -260,7 +232,7 @@ public abstract class AbstractWorkflowNode implements HasCompanyWorkflowNodeMapp
             update.setStatus(ExecutionStatusEnum.WAITING.getValue());
             update.setLastUpdateTime(LocalDateTime.now());
             update.setVariables(objectMapper.writeValueAsString(context.getVariables()));
-            workflowExecMapper.updateByWorkflowInstanceId(update);
+            companyAiWorkflowExecMapper.updateByWorkflowInstanceId(update);
             log.info("工作流已阻塞在节点: {} -> {}", workflowInstanceId, nodeKey);
         } catch (Exception e) {
             log.error("更新工作流阻塞状态失败: {}", workflowInstanceId, e);
@@ -277,7 +249,7 @@ public abstract class AbstractWorkflowNode implements HasCompanyWorkflowNodeMapp
         update.setWorkflowInstanceId(workflowInstanceId);
         update.setStatus(status.getValue());
         update.setLastUpdateTime(LocalDateTime.now());
-        workflowExecMapper.updateByWorkflowInstanceId(update);
+        companyAiWorkflowExecMapper.updateByWorkflowInstanceId(update);
     }
 
 }

+ 4 - 12
fs-service/src/main/java/com/fs/company/service/impl/call/node/AiAddWxTaskNode.java

@@ -21,19 +21,11 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description AI外呼电话任务节点
  */
-public class AiAddWxTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+public class AiAddWxTaskNode extends AbstractWorkflowNode {
 
-    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
-    private static final CompanyAiWorkflowExecMapper companyAiWorkflowExecMapper;
-    private static final CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper;
-    private static final CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper;
-
-    static {
-        companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
-        companyAiWorkflowExecMapper = SpringUtils.getBean(CompanyAiWorkflowExecMapper.class);
-        companyAiWorkflowExecLogMapper = SpringUtils.getBean(CompanyAiWorkflowExecLogMapper.class);
-        companyWorkflowEdgeMapper = SpringUtils.getBean(CompanyWorkflowEdgeMapper.class);
-    }
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
+    private static final CompanyAiWorkflowExecMapper workflowExecMapper = SpringUtils.getBean(CompanyAiWorkflowExecMapper.class);
+    private static final CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper = SpringUtils.getBean(CompanyWorkflowEdgeMapper.class);
 
     public AiAddWxTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);

+ 3 - 6
fs-service/src/main/java/com/fs/company/service/impl/call/node/AiCallTaskNode.java

@@ -1,5 +1,6 @@
 package com.fs.company.service.impl.call.node;
 
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
 import com.fs.company.service.nodeInterface.HasCompanyWorkflowNodeMapper;
@@ -13,13 +14,9 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description AI外呼电话任务节点
  */
-public class AiCallTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
-    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+public class AiCallTaskNode extends AbstractWorkflowNode {
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
 
-    @Override
-    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
-        this.companyWorkflowNodeMapper = mapper;
-    }
     public AiCallTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 3 - 6
fs-service/src/main/java/com/fs/company/service/impl/call/node/AiSendMsgTaskNode.java

@@ -1,5 +1,6 @@
 package com.fs.company.service.impl.call.node;
 
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
 import com.fs.company.service.nodeInterface.HasCompanyWorkflowNodeMapper;
@@ -13,13 +14,9 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description AI外呼电话任务节点
  */
-public class AiSendMsgTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
-    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+public class AiSendMsgTaskNode extends AbstractWorkflowNode {
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
 
-    @Override
-    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
-        this.companyWorkflowNodeMapper = mapper;
-    }
     public AiSendMsgTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 4 - 11
fs-service/src/main/java/com/fs/company/service/impl/call/node/DelayNode.java

@@ -1,6 +1,7 @@
 package com.fs.company.service.impl.call.node;
 
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
 import com.fs.company.service.nodeInterface.HasCompanyWorkflowNodeMapper;
@@ -15,18 +16,10 @@ import java.util.Map;
  * @date 2026/1/28 13:39
  * @description 延时节点
  */
-public class DelayNode extends AbstractWorkflowNode implements HasRedisNode, HasCompanyWorkflowNodeMapper {
+public class DelayNode extends AbstractWorkflowNode {
 
-    private RedisCache redisCache;
-    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
-    @Override
-    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
-        this.companyWorkflowNodeMapper = mapper;
-    }
-    @Override
-    public void setRedisService(RedisCache redisCache) {
-        this.redisCache = redisCache;
-    }
+    private static final RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
 
     public DelayNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);

+ 3 - 6
fs-service/src/main/java/com/fs/company/service/impl/call/node/EndNode.java

@@ -1,5 +1,6 @@
 package com.fs.company.service.impl.call.node;
 
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
 import com.fs.company.service.nodeInterface.HasCompanyWorkflowNodeMapper;
@@ -13,12 +14,8 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description 开始节点
  */
-public class EndNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
-    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
-    @Override
-    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
-        this.companyWorkflowNodeMapper = mapper;
-    }
+public class EndNode extends AbstractWorkflowNode {
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
     public EndNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 3 - 6
fs-service/src/main/java/com/fs/company/service/impl/call/node/OutBoundTaskNode.java

@@ -1,5 +1,6 @@
 package com.fs.company.service.impl.call.node;
 
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
 import com.fs.company.service.nodeInterface.HasCompanyWorkflowNodeMapper;
@@ -13,12 +14,8 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description
  */
-public class OutBoundTaskNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
-    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
-    @Override
-    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
-        this.companyWorkflowNodeMapper = mapper;
-    }
+public class OutBoundTaskNode extends AbstractWorkflowNode {
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
     public OutBoundTaskNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 3 - 6
fs-service/src/main/java/com/fs/company/service/impl/call/node/StartNode.java

@@ -1,5 +1,6 @@
 package com.fs.company.service.impl.call.node;
 
+import com.fs.common.utils.spring.SpringUtils;
 import com.fs.company.mapper.CompanyWorkflowNodeMapper;
 import com.fs.company.param.ExecutionContext;
 import com.fs.company.service.nodeInterface.HasCompanyWorkflowNodeMapper;
@@ -13,14 +14,10 @@ import java.util.Map;
  * @date 2026/1/28 10:59
  * @description 开始节点
  */
-public class StartNode extends AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper {
+public class StartNode extends AbstractWorkflowNode {
 
-    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
+    private static final CompanyWorkflowNodeMapper companyWorkflowNodeMapper = SpringUtils.getBean(CompanyWorkflowNodeMapper.class);
 
-    @Override
-    public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
-        this.companyWorkflowNodeMapper = mapper;
-    }
     public StartNode(String nodeKey, String nodeName, Map<String, Object> properties) {
         super(nodeKey, nodeName, properties);
     }

+ 0 - 44
fs-service/src/main/java/com/fs/company/service/impl/call/node/WorkflowNodeFactory.java

@@ -19,20 +19,6 @@ import java.util.Map;
 @Component
 public class WorkflowNodeFactory implements IWorkflowNodeFactory {
 
-    @Autowired
-    private RedisCache redisCache;
-    @Autowired
-    private CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
-    @Autowired
-    private CompanyAiWorkflowExecMapper companyAiWorkflowExecMapper;
-    @Autowired
-    private CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper;
-    @Autowired
-    private CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper;
-    @Autowired
-    private CompanyVoiceRoboticBusinessMapper companyVoiceRoboticBusinessMapper;
-    @Autowired
-    private ObjectMapper objectMapper;
 
     @Override
     public IWorkflowNode createNode(String nodeKey, NodeTypeEnum type, String nodeName,
@@ -66,36 +52,6 @@ public class WorkflowNodeFactory implements IWorkflowNodeFactory {
             default:
                 throw new IllegalArgumentException("Unsupported node type: " + type);
         }
-        injectDependencies(node);
         return node;
     }
-
-    /**
-     * 注入依赖
-     * @param node
-     */
-    private void injectDependencies(Object node) {
-        if (node instanceof HasRedisNode) {
-            ((HasRedisNode) node).setRedisService(redisCache);
-        }
-        if (node instanceof HasCompanyWorkflowNodeMapper) {
-            ((HasCompanyWorkflowNodeMapper) node).setCompanyWorkflowNodeMapper(companyWorkflowNodeMapper);
-        }
-        if(node instanceof HasCompanyAiWorkflowExecMapper){
-            ((HasCompanyAiWorkflowExecMapper) node).setCompanyAiWorkflowExecMapper(companyAiWorkflowExecMapper);
-        }
-        if(node instanceof HasCompanyWorkflowEdgeMapper){
-            ((HasCompanyWorkflowEdgeMapper) node).setCompanyWorkflowEdgeMapper(companyWorkflowEdgeMapper);
-        }
-        if(node instanceof HasCompanyAiWorkflowExecLogMapper){
-            ((HasCompanyAiWorkflowExecLogMapper) node).setCompanyAiWorkflowExecLogMapper(companyAiWorkflowExecLogMapper);
-        }
-        if(node instanceof HasCompanyVoiceRoboticBusinessMapper){
-            ((HasCompanyVoiceRoboticBusinessMapper) node).setCompanyVoiceRoboticBusinessMapper(companyVoiceRoboticBusinessMapper);
-        }
-        if(node instanceof HasObjectMapper){
-            ((HasObjectMapper) node).setObjectMapper(objectMapper);
-        }
-
-    }
 }