From cde6ad77663a80d78d77568428a6287b53347716 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 19 三月 2026 17:19:55 +0800
Subject: [PATCH] feat: 新增API路由缓存预热并完善机器人消息日志
---
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/api/index.ts | 123 +++++++++++++++++++++++++++++++++++++----
1 files changed, 111 insertions(+), 12 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/api/index.ts b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/api/index.ts
index 1650852..c45b917 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/api/index.ts
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/api/index.ts
@@ -1,8 +1,12 @@
-import axios from 'axios'
+锘縤mport axios from 'axios'
import type {
InstanceListItem,
InstanceState,
- InstanceConfig
+ InstanceConfig,
+ ProtocolTemplate,
+ RobotClientStartRequest,
+ RobotClientSendRequest,
+ RobotClientStatusResponse
} from '../types'
const api = axios.create({
@@ -14,14 +18,16 @@
// 鑾峰彇鎵�鏈夊疄渚�
export async function getAllInstances(): Promise<InstanceListItem[]> {
- const response = await api.get<InstanceListItem[]>('/SimulatorInstances')
+ const response = await api.get<InstanceListItem[]>('/SimulatorInstances/GetAll')
return response.data
}
-// 鑾峰彇鎸囧畾瀹炰緥鐘舵��
+// 鑾峰彇瀹炰緥鐘舵��
export async function getInstance(id: string): Promise<InstanceState | null> {
try {
- const response = await api.get<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}`)
+ const response = await api.get<InstanceState>('/SimulatorInstances/GetInstance', {
+ params: { id }
+ })
return response.data
} catch (error) {
if (axios.isAxiosError(error) && error.response?.status === 404) {
@@ -34,7 +40,9 @@
// 鑾峰彇瀹炰緥閰嶇疆
export async function getInstanceConfig(id: string): Promise<InstanceConfig | null> {
try {
- const response = await api.get<InstanceConfig>(`/SimulatorInstances/${encodeURIComponent(id)}/config`)
+ const response = await api.get<InstanceConfig>('/SimulatorInstances/GetInstanceConfig', {
+ params: { id }
+ })
return response.data
} catch (error) {
if (axios.isAxiosError(error) && error.response?.status === 404) {
@@ -47,7 +55,7 @@
// 鍒涘缓瀹炰緥
export async function createInstance(config: InstanceConfig): Promise<InstanceState | null> {
try {
- const response = await api.post<InstanceState>('/SimulatorInstances', config)
+ const response = await api.post<InstanceState>('/SimulatorInstances/Create', config)
return response.data
} catch (error) {
console.error('鍒涘缓瀹炰緥澶辫触:', error)
@@ -58,7 +66,9 @@
// 鏇存柊瀹炰緥
export async function updateInstance(id: string, config: InstanceConfig): Promise<InstanceState | null> {
try {
- const response = await api.put<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}`, config)
+ const response = await api.put<InstanceState>('/SimulatorInstances/Update', config, {
+ params: { id }
+ })
return response.data
} catch (error) {
console.error('鏇存柊瀹炰緥澶辫触:', error)
@@ -69,7 +79,9 @@
// 鍒犻櫎瀹炰緥
export async function deleteInstance(id: string, deleteConfig: boolean = true): Promise<boolean> {
try {
- await api.delete(`/SimulatorInstances/${encodeURIComponent(id)}?deleteConfig=${deleteConfig}`)
+ await api.delete('/SimulatorInstances/Delete', {
+ params: { id, deleteConfig }
+ })
return true
} catch (error) {
console.error('鍒犻櫎瀹炰緥澶辫触:', error)
@@ -80,7 +92,9 @@
// 鍚姩瀹炰緥
export async function startInstance(id: string): Promise<InstanceState | null> {
try {
- const response = await api.post<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}/start`)
+ const response = await api.post<InstanceState>('/SimulatorInstances/start', null, {
+ params: { id }
+ })
return response.data
} catch (error) {
console.error('鍚姩瀹炰緥澶辫触:', error)
@@ -91,7 +105,9 @@
// 鍋滄瀹炰緥
export async function stopInstance(id: string): Promise<InstanceState | null> {
try {
- const response = await api.post<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}/stop`)
+ const response = await api.post<InstanceState>('/SimulatorInstances/stop', null, {
+ params: { id }
+ })
return response.data
} catch (error) {
console.error('鍋滄瀹炰緥澶辫触:', error)
@@ -102,7 +118,9 @@
// 閲嶅惎瀹炰緥
export async function restartInstance(id: string): Promise<InstanceState | null> {
try {
- const response = await api.post<InstanceState>(`/SimulatorInstances/${encodeURIComponent(id)}/restart`)
+ const response = await api.post<InstanceState>('/SimulatorInstances/restart', null, {
+ params: { id }
+ })
return response.data
} catch (error) {
console.error('閲嶅惎瀹炰緥澶辫触:', error)
@@ -110,4 +128,85 @@
}
}
+export async function getProtocolTemplates(): Promise<ProtocolTemplate[]> {
+ const response = await api.get<ProtocolTemplate[]>('/ProtocolTemplates')
+ return response.data
+}
+
+export async function getProtocolTemplate(id: string): Promise<ProtocolTemplate | null> {
+ try {
+ const response = await api.get<ProtocolTemplate>(`/ProtocolTemplates/${id}`)
+ return response.data
+ } catch (error) {
+ if (axios.isAxiosError(error) && error.response?.status === 404) {
+ return null
+ }
+ throw error
+ }
+}
+
+export async function createProtocolTemplate(template: ProtocolTemplate): Promise<ProtocolTemplate> {
+ const response = await api.post<ProtocolTemplate>('/ProtocolTemplates', template)
+ return response.data
+}
+
+export async function updateProtocolTemplate(id: string, template: ProtocolTemplate): Promise<ProtocolTemplate> {
+ const response = await api.put<ProtocolTemplate>(`/ProtocolTemplates/${id}`, template)
+ return response.data
+}
+
+export async function deleteProtocolTemplate(id: string): Promise<void> {
+ await api.delete(`/ProtocolTemplates/${id}`)
+}
+
+export async function readMemory(id: string): Promise<Record<string, string>> {
+ const response = await api.get<Record<string, string>>('/Memory/ReadMemory', {
+ params: { id }
+ })
+ return response.data
+}
+
+export async function writeMemory(id: string, data: Record<string, string>): Promise<boolean> {
+ try {
+ await api.post('/Memory/WriteMemory', data, {
+ params: { id }
+ })
+ return true
+ } catch (error) {
+ console.error('鍐欏叆鍐呭瓨澶辫触:', error)
+ return false
+ }
+}
+
+// 鑾峰彇鏈烘鎵嬫湇鍔$杩愯鐘舵�侊紙鍖呭惈澶氬疄渚嬪拰鎺ユ敹娑堟伅鏃ュ織锛�
+export async function getRobotClientStatus(): Promise<RobotClientStatusResponse> {
+ const response = await api.get<RobotClientStatusResponse>('/RobotClients/status')
+ return response.data
+}
+
+// 鍚姩涓�涓満姊版墜鏈嶅姟绔疄渚�
+export async function startRobotClients(request: RobotClientStartRequest): Promise<RobotClientStatusResponse> {
+ const response = await api.post<RobotClientStatusResponse>('/RobotClients/start', request)
+ return response.data
+}
+
+// 鍋滄鏈烘鎵嬫湇鍔$锛宻erverId 涓虹┖鏃跺仠姝㈠叏閮�
+export async function stopRobotClients(serverId?: string): Promise<void> {
+ await api.post('/RobotClients/stop', null, {
+ params: { serverId }
+ })
+}
+
+// 鍙戦�佹満姊版墜娑堟伅锛堟寜鏈嶅姟绔疄渚嬪箍鎾垨鍗曞彂锛�
+export async function sendRobotClientMessage(request: RobotClientSendRequest): Promise<void> {
+ await api.post('/RobotClients/send', request)
+}
+
+// 娓呯┖鎸囧畾鏈嶅姟绔疄渚嬬殑鎺ユ敹娑堟伅鏃ュ織
+export async function clearRobotClientReceivedMessages(serverId: string): Promise<void> {
+ await api.post('/RobotClients/clear-received', null, {
+ params: { serverId }
+ })
+}
+
export default api
--
Gitblit v1.9.3