ZhuDeKang 4 сар өмнө
parent
commit
c50397c37d

+ 1 - 2
ruoyi-admin/src/main/resources/application.yml

@@ -12,8 +12,7 @@ ruoyi:
   addressEnabled: false
   # 验证码类型 math 数字计算 char 字符验证
   captchaType: math
-
-  gateway: http://localhost:8080
+  gatewayUrl: http://localhost:8080
 
 # 开发环境配置
 server:

+ 3 - 1
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/controller/MdAppFlowController.java

@@ -2,6 +2,8 @@ package com.ruoyi.interfaces.controller;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.interfaces.domain.vo.MdAppFlowVo;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -99,7 +101,7 @@ public class MdAppFlowController extends BaseController
 
 
     @PostMapping("/runFlow")
-    public AjaxResult runFlow(@RequestBody MdAppFlow appFlow){
+    public AjaxResult runFlow(@RequestBody MdAppFlowVo appFlow){
 
         System.out.println(appFlow.getFlowGraph());
         return success(mdAppFlowService.runFlow(appFlow));

+ 17 - 0
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/domain/vo/MdAppFlowVo.java

@@ -0,0 +1,17 @@
+package com.ruoyi.interfaces.domain.vo;
+
+import com.ruoyi.interfaces.domain.MdAppFlow;
+
+public class MdAppFlowVo extends MdAppFlow {
+    private String webSocketId;
+
+    public MdAppFlowVo() {
+    }
+
+    public String getWebSocketId() {
+        return webSocketId;
+    }
+
+    public void setWebSocketId(String webSocketId) {
+    }
+}

+ 2 - 1
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/service/IMdAppFlowService.java

@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Map;
 
 import com.ruoyi.interfaces.domain.MdAppFlow;
+import com.ruoyi.interfaces.domain.vo.MdAppFlowVo;
 
 /**
  * 模型应用流程Service接口
@@ -61,5 +62,5 @@ public interface IMdAppFlowService
      */
     public int deleteMdAppFlowByFlowId(Long flowId);
 
-    Map<String, Object> runFlow(MdAppFlow appFlow);
+    Map<String, Object> runFlow(MdAppFlowVo appFlow);
 }

+ 39 - 30
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/service/impl/MdAppFlowServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.interfaces.service.impl;
 
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -10,6 +11,10 @@ import com.agentsflex.core.chain.ChainNode;
 import com.agentsflex.core.chain.event.NodeEndEvent;
 import com.agentsflex.core.chain.listener.ChainEventListener;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.JsonUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.websocket.WebSocketUsers;
+import com.ruoyi.interfaces.domain.vo.MdAppFlowVo;
 import com.ruoyi.interfaces.tinyflow.TinyflowUtil;
 import com.ruoyi.interfaces.tinyflow.parser.PrintNodeParser;
 import dev.tinyflow.core.Tinyflow;
@@ -19,94 +24,96 @@ import com.ruoyi.interfaces.mapper.MdAppFlowMapper;
 import com.ruoyi.interfaces.domain.MdAppFlow;
 import com.ruoyi.interfaces.service.IMdAppFlowService;
 
+import javax.websocket.Session;
+
 /**
  * 模型应用流程Service业务层处理
- * 
+ *
  * @author 朱得糠
  * @date 2025-08-19
  */
 @Service
-public class MdAppFlowServiceImpl implements IMdAppFlowService 
-{
+public class MdAppFlowServiceImpl implements IMdAppFlowService {
     @Autowired
     private MdAppFlowMapper mdAppFlowMapper;
 
     /**
      * 查询模型应用流程
-     * 
+     *
      * @param flowId 模型应用流程主键
      * @return 模型应用流程
      */
     @Override
-    public MdAppFlow selectMdAppFlowByFlowId(Long flowId)
-    {
+    public MdAppFlow selectMdAppFlowByFlowId(Long flowId) {
         return mdAppFlowMapper.selectMdAppFlowByFlowId(flowId);
     }
 
     /**
      * 查询模型应用流程列表
-     * 
+     *
      * @param mdAppFlow 模型应用流程
      * @return 模型应用流程
      */
     @Override
-    public List<MdAppFlow> selectMdAppFlowList(MdAppFlow mdAppFlow)
-    {
+    public List<MdAppFlow> selectMdAppFlowList(MdAppFlow mdAppFlow) {
         return mdAppFlowMapper.selectMdAppFlowList(mdAppFlow);
     }
 
     /**
      * 新增模型应用流程
-     * 
+     *
      * @param mdAppFlow 模型应用流程
      * @return 结果
      */
     @Override
-    public int insertMdAppFlow(MdAppFlow mdAppFlow)
-    {
+    public int insertMdAppFlow(MdAppFlow mdAppFlow) {
         mdAppFlow.setCreateTime(DateUtils.getNowDate());
         return mdAppFlowMapper.insertMdAppFlow(mdAppFlow);
     }
 
     /**
      * 修改模型应用流程
-     * 
+     *
      * @param mdAppFlow 模型应用流程
      * @return 结果
      */
     @Override
-    public int updateMdAppFlow(MdAppFlow mdAppFlow)
-    {
+    public int updateMdAppFlow(MdAppFlow mdAppFlow) {
         mdAppFlow.setUpdateTime(DateUtils.getNowDate());
         return mdAppFlowMapper.updateMdAppFlow(mdAppFlow);
     }
 
     /**
      * 批量删除模型应用流程
-     * 
+     *
      * @param flowIds 需要删除的模型应用流程主键
      * @return 结果
      */
     @Override
-    public int deleteMdAppFlowByFlowIds(Long[] flowIds)
-    {
+    public int deleteMdAppFlowByFlowIds(Long[] flowIds) {
         return mdAppFlowMapper.deleteMdAppFlowByFlowIds(flowIds);
     }
 
     /**
      * 删除模型应用流程信息
-     * 
+     *
      * @param flowId 模型应用流程主键
      * @return 结果
      */
     @Override
-    public int deleteMdAppFlowByFlowId(Long flowId)
-    {
+    public int deleteMdAppFlowByFlowId(Long flowId) {
         return mdAppFlowMapper.deleteMdAppFlowByFlowId(flowId);
     }
 
     @Override
-    public Map<String, Object> runFlow(MdAppFlow appFlow) {
+    public Map<String, Object> runFlow(MdAppFlowVo appFlow) {
+        Session session;
+        if (StringUtils.isNotNull(appFlow.getWebSocketId())) {
+            session = WebSocketUsers.getUsers().get(appFlow.getWebSocketId());
+        } else {
+            session = null;
+        }
+
         String flowGraph = appFlow.getFlowGraph();
         Tinyflow tinyflow = TinyflowUtil.getTinyflow(flowGraph);
         //tinyflow.getChainParser().addNodeParser("printNode",new PrintNodeParser());
@@ -115,18 +122,20 @@ public class MdAppFlowServiceImpl implements IMdAppFlowService
             @Override
             public void onEvent(ChainEvent event, Chain chain) {
                 if (event instanceof NodeEndEvent) {
-                    NodeEndEvent nodeEndEvent = (NodeEndEvent) event;
-                    ChainNode completedNode = nodeEndEvent.getNode();
-                    Map<String, Object> executeResult = nodeEndEvent.getResult();
-                    // 节点执行完毕的回调逻辑
-                    System.out.println("节点执行完毕: " + completedNode.getName());
-                    System.out.println("节点ID: " + completedNode.getId());
-                    System.out.println("执行结果: " + executeResult);
+                    if (StringUtils.isNotNull(session)) {
+                        NodeEndEvent nodeEndEvent = (NodeEndEvent) event;
+                        ChainNode completedNode = nodeEndEvent.getNode();
+                        Map<String, Object> executeResult = nodeEndEvent.getResult();
+                        HashMap<String, Object> nodeMap = new HashMap<>();
+                        nodeMap.put("id", completedNode.getId());
+                        nodeMap.put("name", completedNode.getName());
+                        nodeMap.put("result", executeResult);
+                        WebSocketUsers.sendMessageToUserByText(session, JsonUtils.objectToJson(nodeMap));
+                    }
                 }
             }
         });
 
-
         return chain.executeForResult(appFlow.getParams());
     }
 }

+ 9 - 5
ruoyi-api-patform/src/main/java/com/ruoyi/interfaces/tinyflow/node/ServiceNode.java

@@ -3,6 +3,7 @@ package com.ruoyi.interfaces.tinyflow.node;
 import com.agentsflex.core.chain.Chain;
 import com.agentsflex.core.chain.node.BaseNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.utils.JsonUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.http.HttpUtils;
@@ -29,16 +30,19 @@ public class ServiceNode extends BaseNode {
 
     @Override
     protected Map<String, Object> execute(Chain chain) {
-        Map<String,Object> map = new HashMap<>();
+        Map<String, Object> map = new HashMap<>();
 
+        String url = RuoYiConfig.getGatewayUrl() + ptService.getProxyPath() + ptService.getUrl();
+        System.out.println("url:" + url);
         Map<String, Object> parameterValues = chain.getParameterValues(this); //获取参数
         List<PtServiceParam> params = ptService.getParams();
 
 
-
         HashMap<String, String> headers = null;
         if (StringUtils.isNotNull(parameterValues.get("headers")))
             headers = (HashMap<String, String>) parameterValues.get("headers");
+        if (StringUtils.isNull(headers)) headers = new HashMap<>();
+        headers.put("Authorization", "1478702065085063169");
         switch (ptService.getRqtype()) {
             case "POST":
                 HashMap<String, Object> paramMap = new HashMap<>();
@@ -49,20 +53,20 @@ public class ServiceNode extends BaseNode {
                     }
                 }
                 try {
-                     map.putAll(JsonUtils.jsonToPojo(HttpUtils.sendBodyPost(ptService.getUrl(), paramMap, headers), Map.class));
+                    map.putAll(JsonUtils.jsonToPojo(HttpUtils.sendBodyPost(url, paramMap, headers), Map.class));
                 } catch (IOException e) {
                     throw new RuntimeException(e);
                 }
                 break;
             case "GET":
-                String paramString ="";
+                String paramString = "";
                 for (PtServiceParam serviceParam : params) {
                     Object paramValue = parameterValues.get(serviceParam.getParamCode());
                     if (StringUtils.isNotNull(paramValue)) {
                         paramString += (serviceParam.getParamCode() + "=" + paramValue) + "&";
                     }
                 }
-                map.putAll(JsonUtils.jsonToPojo(HttpUtils.sendGet(ptService.getUrl(), paramString, headers), Map.class));
+                map.putAll(JsonUtils.jsonToPojo(HttpUtils.sendGet(url, paramString, headers), Map.class));
                 break;
         }
         /**

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java

@@ -286,7 +286,7 @@ public class HttpUtils {
 
     public static String sendBodyPost(String url, Object body, HashMap<String, String> headers) throws IOException {
         String bodyJson = JsonUtils.objectToJson(body);
-
+        System.out.println(bodyJson);
         return sendBodyPostTest( url,  bodyJson, headers);
     }
 

+ 2 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/websocket/WebSocketServer.java

@@ -54,7 +54,8 @@ public class WebSocketServer
             WebSocketUsers.put(session.getId(), session);
             LOGGER.info("\n 建立连接 - {}", session);
             LOGGER.info("\n 当前人数 - {}", WebSocketUsers.getUsers().size());
-            WebSocketUsers.sendMessageToUserByText(session, "连接成功");
+
+            WebSocketUsers.sendMessageToUserByText(session,session.getId());
         }
     }