From 70af762aa04fccfd68f211a9991c9a36f0228dfd Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期四, 11 十二月 2025 17:53:43 +0800
Subject: [PATCH] #AI

---
 src/main/java/com/zy/ai/controller/WcsDiagnosisController.java |   78 ++++++++++++++++++++++++++++++++++++++-
 1 files changed, 76 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/ai/controller/WcsDiagnosisController.java b/src/main/java/com/zy/ai/controller/WcsDiagnosisController.java
index 34167fa..45c90e3 100644
--- a/src/main/java/com/zy/ai/controller/WcsDiagnosisController.java
+++ b/src/main/java/com/zy/ai/controller/WcsDiagnosisController.java
@@ -22,6 +22,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -47,7 +48,7 @@
 
         request.setAlarmMessage("绯荤粺涓嶆墽琛屼换鍔�");
 
-        List<String> logs = AiLogAppender.getRecentLogs(300);
+        List<String> logs = AiLogAppender.getRecentLogs(100);
         request.setLogs(logs);
 
         List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<>());
@@ -99,8 +100,81 @@
         }
 
         request.setDeviceRealtimeData(deviceRealTimeDataList);
+        request.setDeviceConfigs(deviceConfigsDataList);
         WcsDiagnosisResponse response = diagnose(request);
         return response;
+    }
+
+    @GetMapping("/runAiStream")
+    public SseEmitter runAiStream() {
+        SseEmitter emitter = new SseEmitter(0L);
+
+        new Thread(() -> {
+            try {
+                WcsDiagnosisRequest request = new WcsDiagnosisRequest();
+                request.setAlarmMessage("绯荤粺涓嶆墽琛屼换鍔�");
+
+                List<String> logs = AiLogAppender.getRecentLogs(100);
+                request.setLogs(logs);
+
+                List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<>());
+                request.setTasks(wrkMasts);
+
+                List<DeviceRealTimeData> deviceRealTimeDataList = new ArrayList<>();
+                List<DeviceConfigsData> deviceConfigsDataList = new ArrayList<>();
+
+                List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
+                for (BasCrnp basCrnp : basCrnps) {
+                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo());
+                    if (crnThread == null) {
+                        continue;
+                    }
+
+                    CrnProtocol protocol = crnThread.getStatus();
+
+                    for (StationObjModel stationObjModel : basCrnp.getInStationList$()) {
+                        StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
+                        if (stationThread == null) {
+                            continue;
+                        }
+
+                        Map<Integer, StationProtocol> map = stationThread.getStatusMap();
+                        StationProtocol stationProtocol = map.get(stationObjModel.getStationId());
+                        if (stationProtocol == null) {
+                            continue;
+                        }
+
+                        DeviceRealTimeData stationData = new DeviceRealTimeData();
+                        stationData.setDeviceNo(stationObjModel.getDeviceNo());
+                        stationData.setDeviceType(String.valueOf(SlaveType.Devp));
+                        stationData.setDeviceData(stationProtocol);
+                        deviceRealTimeDataList.add(stationData);
+                    }
+
+
+                    DeviceRealTimeData deviceRealTimeData = new DeviceRealTimeData();
+                    deviceRealTimeData.setDeviceNo(basCrnp.getCrnNo());
+                    deviceRealTimeData.setDeviceType(String.valueOf(SlaveType.Crn));
+                    deviceRealTimeData.setDeviceData(protocol);
+                    deviceRealTimeDataList.add(deviceRealTimeData);
+
+                    DeviceConfigsData deviceConfigsData = new DeviceConfigsData();
+                    deviceConfigsData.setDeviceNo(basCrnp.getCrnNo());
+                    deviceConfigsData.setDeviceType(String.valueOf(SlaveType.Crn));
+                    deviceConfigsData.setDeviceData(basCrnp);
+                    deviceConfigsDataList.add(deviceConfigsData);
+                }
+
+                request.setDeviceRealtimeData(deviceRealTimeDataList);
+                request.setDeviceConfigs(deviceConfigsDataList);
+
+                wcsDiagnosisService.diagnoseStream(request, emitter);
+            } catch (Exception e) {
+                emitter.completeWithError(e);
+            }
+        }).start();
+
+        return emitter;
     }
 
     /**
@@ -115,4 +189,4 @@
         resp.setOriginalRequest(request);
         return resp;
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1