From d216edd0e9931d71664f33e625cff6d8131a0fad Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期五, 13 三月 2026 16:00:40 +0800
Subject: [PATCH] 重构: 实现前后端分离架构

---
 Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs |   50 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs
index 951d0ab..f94fe46 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs
@@ -26,14 +26,26 @@
         /// 鑾峰彇鎵�鏈夊疄渚嬪垪琛�
         /// </summary>
         [HttpGet]
-        [ProducesResponseType(typeof(IEnumerable<InstanceState>), StatusCodes.Status200OK)]
-        public ActionResult<IEnumerable<InstanceState>> GetAllInstances()
+        [ProducesResponseType(typeof(IEnumerable<object>), StatusCodes.Status200OK)]
+        public ActionResult GetAllInstances()
         {
             try
             {
                 var instances = _instanceManager.GetAllInstances();
-                var states = instances.Select(i => i.GetState()).ToList();
-                return Ok(states);
+                var result = instances.Select(i => new
+                {
+                    instanceId = i.Config.Id,
+                    name = i.Config.Name,
+                    plcType = i.Config.PLCType.ToString(),
+                    port = i.Config.Port,
+                    status = i.GetState().Status.ToString(),
+                    clientCount = i.GetState().ClientCount,
+                    totalRequests = i.GetState().TotalRequests,
+                    startTime = i.GetState().StartTime,
+                    lastActivityTime = i.GetState().LastActivityTime,
+                    errorMessage = i.GetState().ErrorMessage
+                }).ToList();
+                return Ok(result);
             }
             catch (Exception ex)
             {
@@ -129,6 +141,36 @@
         }
 
         /// <summary>
+        /// 鑾峰彇鎸囧畾瀹炰緥鐨勯厤缃�
+        /// </summary>
+        [HttpGet("{id}/config")]
+        [ProducesResponseType(typeof(InstanceConfig), StatusCodes.Status200OK)]
+        [ProducesResponseType(StatusCodes.Status404NotFound)]
+        public ActionResult<InstanceConfig> GetInstanceConfig(string id)
+        {
+            try
+            {
+                if (string.IsNullOrWhiteSpace(id))
+                {
+                    return BadRequest(new { error = "Instance ID is required" });
+                }
+
+                var instance = _instanceManager.GetInstance(id);
+                if (instance == null)
+                {
+                    return NotFound(new { error = $"Instance with ID '{id}' not found" });
+                }
+
+                return Ok(instance.Config);
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex, "Failed to get instance config {InstanceId}", id);
+                return StatusCode(StatusCodes.Status500InternalServerError, new { error = "Failed to retrieve instance config" });
+            }
+        }
+
+        /// <summary>
         /// 鏇存柊瀹炰緥閰嶇疆
         /// </summary>
         [HttpPut("{id}")]

--
Gitblit v1.9.3