From c8de85433e5800a7b5595a96d99f4b49f24c38b4 Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期二, 16 十二月 2025 13:11:23 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/ai/controller/WcsDiagnosisController.java |  134 ++++++++++++++++++--------------------------
 1 files changed, 55 insertions(+), 79 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..ce1ea4c 100644
--- a/src/main/java/com/zy/ai/controller/WcsDiagnosisController.java
+++ b/src/main/java/com/zy/ai/controller/WcsDiagnosisController.java
@@ -1,30 +1,16 @@
 package com.zy.ai.controller;
 
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.zy.ai.entity.DeviceConfigsData;
-import com.zy.ai.entity.DeviceRealTimeData;
+import com.zy.ai.entity.ChatCompletionRequest;
 import com.zy.ai.entity.WcsDiagnosisRequest;
 import com.zy.ai.entity.WcsDiagnosisResponse;
-import com.zy.ai.log.AiLogAppender;
 import com.zy.ai.service.WcsDiagnosisService;
-import com.zy.asrs.entity.BasCrnp;
-import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.service.BasCrnpService;
-import com.zy.asrs.service.WrkMastService;
-import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.SlaveType;
-import com.zy.core.model.StationObjModel;
-import com.zy.core.model.protocol.CrnProtocol;
-import com.zy.core.model.protocol.StationProtocol;
-import com.zy.core.thread.CrnThread;
-import com.zy.core.thread.StationThread;
+import com.zy.ai.utils.AiUtils;
+import com.zy.common.web.BaseController;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.HashMap;
+import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
 import java.util.List;
 import java.util.Map;
 
@@ -32,75 +18,65 @@
 @RestController
 @RequestMapping("/ai/diagnose")
 @RequiredArgsConstructor
-public class WcsDiagnosisController {
+public class WcsDiagnosisController extends BaseController {
 
     @Autowired
     private WcsDiagnosisService wcsDiagnosisService;
     @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private BasCrnpService basCrnpService;
+    private AiUtils aiUtils;
 
     @GetMapping("/runAi")
     public WcsDiagnosisResponse runAi() {
-        WcsDiagnosisRequest request = new WcsDiagnosisRequest();
-
-        request.setAlarmMessage("绯荤粺涓嶆墽琛屼换鍔�");
-
-        List<String> logs = AiLogAppender.getRecentLogs(300);
-        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);
+        WcsDiagnosisRequest request = aiUtils.makeAiRequest(1000, "绯荤粺褰撳墠涓嶆墽琛屼换鍔★紝浣嗗叿浣撳師鍥犱笉鏄庯紝璇锋牴鎹互涓嬩俊鎭府鍔╁垽鏂�俓n\n");
         WcsDiagnosisResponse response = diagnose(request);
         return response;
+    }
+
+    @GetMapping("/runAiStream")
+    public SseEmitter runAiStream() {
+        SseEmitter emitter = new SseEmitter(0L);
+
+        new Thread(() -> {
+            try {
+                WcsDiagnosisRequest request = aiUtils.makeAiRequest(1000, "绯荤粺褰撳墠涓嶆墽琛屼换鍔★紝浣嗗叿浣撳師鍥犱笉鏄庯紝璇锋牴鎹互涓嬩俊鎭府鍔╁垽鏂�俓n\n");
+                wcsDiagnosisService.diagnoseStream(request, emitter);
+            } catch (Exception e) {
+                emitter.completeWithError(e);
+            }
+        }).start();
+
+        return emitter;
+    }
+
+    @GetMapping("/askStream")
+    public SseEmitter askStream(@RequestParam("prompt") String prompt,
+                                @RequestParam(value = "chatId", required = false) String chatId,
+                                @RequestParam(value = "reset", required = false, defaultValue = "false") boolean reset) {
+        SseEmitter emitter = new SseEmitter(0L);
+        new Thread(() -> {
+            try {
+                WcsDiagnosisRequest request = aiUtils.makeAiRequest(100, null);
+                wcsDiagnosisService.askStream(request, prompt, chatId, reset, emitter);
+            } catch (Exception e) {
+                emitter.completeWithError(e);
+            }
+        }).start();
+        return emitter;
+    }
+
+    @GetMapping("/chats")
+    public List<Map<String, Object>> listChats() {
+        return wcsDiagnosisService.listChats();
+    }
+
+    @DeleteMapping("/chats/{chatId}")
+    public Boolean deleteChat(@PathVariable("chatId") String chatId) {
+        return wcsDiagnosisService.deleteChat(chatId);
+    }
+
+    @GetMapping("/chats/{chatId}/history")
+    public List<ChatCompletionRequest.Message> getChatHistory(@PathVariable("chatId") String chatId) {
+        return wcsDiagnosisService.getChatHistory(chatId);
     }
 
     /**
@@ -115,4 +91,4 @@
         resp.setOriginalRequest(request);
         return resp;
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1