From 689dd676fc0efb31236d989334122590b7198d61 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期一, 16 三月 2026 09:30:11 +0800
Subject: [PATCH] 1
---
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs | 176 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 148 insertions(+), 28 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..d748391 100644
--- a/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs
+++ b/Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs
@@ -25,15 +25,27 @@
/// <summary>
/// 鑾峰彇鎵�鏈夊疄渚嬪垪琛�
/// </summary>
- [HttpGet]
- [ProducesResponseType(typeof(IEnumerable<InstanceState>), StatusCodes.Status200OK)]
- public ActionResult<IEnumerable<InstanceState>> GetAllInstances()
+ [HttpGet("GetAll")]
+ [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)
{
@@ -45,10 +57,10 @@
/// <summary>
/// 鍒涘缓鏂板疄渚�
/// </summary>
- [HttpPost]
- [ProducesResponseType(typeof(InstanceState), StatusCodes.Status201Created)]
+ [HttpPost("Create")]
+ [ProducesResponseType(typeof(object), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
- public async Task<ActionResult<InstanceState>> CreateInstance([FromBody] InstanceConfig config)
+ public async Task<ActionResult> CreateInstance([FromBody] InstanceConfig config)
{
try
{
@@ -79,11 +91,24 @@
var instance = await _instanceManager.CreateInstanceAsync(config);
var state = instance.GetState();
+ var result = new
+ {
+ instanceId = instance.Config.Id,
+ name = instance.Config.Name,
+ plcType = instance.Config.PLCType.ToString(),
+ port = instance.Config.Port,
+ status = state.Status.ToString(),
+ clientCount = state.ClientCount,
+ totalRequests = state.TotalRequests,
+ startTime = state.StartTime,
+ lastActivityTime = state.LastActivityTime,
+ errorMessage = state.ErrorMessage
+ };
return CreatedAtAction(
nameof(GetInstance),
new { id = config.Id },
- state);
+ result);
}
catch (ArgumentException ex)
{
@@ -100,10 +125,10 @@
/// <summary>
/// 鑾峰彇鎸囧畾瀹炰緥璇︽儏
/// </summary>
- [HttpGet("{id}")]
- [ProducesResponseType(typeof(InstanceState), StatusCodes.Status200OK)]
+ [HttpGet("GetInstance")]
+ [ProducesResponseType(typeof(object), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
- public ActionResult<InstanceState> GetInstance(string id)
+ public ActionResult GetInstance(string id)
{
try
{
@@ -119,7 +144,20 @@
}
var state = instance.GetState();
- return Ok(state);
+ var result = new
+ {
+ instanceId = instance.Config.Id,
+ name = instance.Config.Name,
+ plcType = instance.Config.PLCType.ToString(),
+ port = instance.Config.Port,
+ status = state.Status.ToString(),
+ clientCount = state.ClientCount,
+ totalRequests = state.TotalRequests,
+ startTime = state.StartTime,
+ lastActivityTime = state.LastActivityTime,
+ errorMessage = state.ErrorMessage
+ };
+ return Ok(result);
}
catch (Exception ex)
{
@@ -129,13 +167,43 @@
}
/// <summary>
+ /// 鑾峰彇鎸囧畾瀹炰緥鐨勯厤缃�
+ /// </summary>
+ [HttpGet("GetInstanceConfig")]
+ [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}")]
- [ProducesResponseType(typeof(InstanceState), StatusCodes.Status200OK)]
+ [HttpPut("Update")]
+ [ProducesResponseType(typeof(object), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
- public async Task<ActionResult<InstanceState>> UpdateInstance(string id, [FromBody] InstanceConfig config)
+ public async Task<ActionResult> UpdateInstance([FromQuery] string id, [FromBody] InstanceConfig config)
{
try
{
@@ -175,7 +243,20 @@
}
var state = newInstance.GetState();
- return Ok(state);
+ var result = new
+ {
+ instanceId = newInstance.Config.Id,
+ name = newInstance.Config.Name,
+ plcType = newInstance.Config.PLCType.ToString(),
+ port = newInstance.Config.Port,
+ status = state.Status.ToString(),
+ clientCount = state.ClientCount,
+ totalRequests = state.TotalRequests,
+ startTime = state.StartTime,
+ lastActivityTime = state.LastActivityTime,
+ errorMessage = state.ErrorMessage
+ };
+ return Ok(result);
}
catch (ArgumentException ex)
{
@@ -192,10 +273,10 @@
/// <summary>
/// 鍒犻櫎瀹炰緥
/// </summary>
- [HttpDelete("{id}")]
+ [HttpDelete("Delete")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
- public async Task<IActionResult> DeleteInstance(string id, [FromQuery] bool deleteConfig = true)
+ public async Task<IActionResult> DeleteInstance(string id, bool deleteConfig = true)
{
try
{
@@ -222,11 +303,11 @@
/// <summary>
/// 鍚姩瀹炰緥
/// </summary>
- [HttpPost("{id}/start")]
+ [HttpPost("start")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
- public async Task<ActionResult<InstanceState>> StartInstance(string id)
+ public async Task<ActionResult> StartInstance([FromQuery] string id)
{
try
{
@@ -248,7 +329,20 @@
var instance = _instanceManager.GetInstance(id);
var state = instance?.GetState();
- return Ok(state);
+ var result = new
+ {
+ instanceId = instance.Config.Id,
+ name = instance.Config.Name,
+ plcType = instance.Config.PLCType.ToString(),
+ port = instance.Config.Port,
+ status = state.Status.ToString(),
+ clientCount = state.ClientCount,
+ totalRequests = state.TotalRequests,
+ startTime = state.StartTime,
+ lastActivityTime = state.LastActivityTime,
+ errorMessage = state.ErrorMessage
+ };
+ return Ok(result);
}
catch (Exception ex)
{
@@ -260,10 +354,10 @@
/// <summary>
/// 鍋滄瀹炰緥
/// </summary>
- [HttpPost("{id}/stop")]
+ [HttpPost("stop")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
- public async Task<ActionResult<InstanceState>> StopInstance(string id)
+ public async Task<ActionResult> StopInstance([FromQuery] string id)
{
try
{
@@ -281,7 +375,20 @@
var instance = _instanceManager.GetInstance(id);
var state = instance?.GetState();
- return Ok(state);
+ var result = new
+ {
+ instanceId = instance.Config.Id,
+ name = instance.Config.Name,
+ plcType = instance.Config.PLCType.ToString(),
+ port = instance.Config.Port,
+ status = state.Status.ToString(),
+ clientCount = state.ClientCount,
+ totalRequests = state.TotalRequests,
+ startTime = state.StartTime,
+ lastActivityTime = state.LastActivityTime,
+ errorMessage = state.ErrorMessage
+ };
+ return Ok(result);
}
catch (Exception ex)
{
@@ -293,11 +400,11 @@
/// <summary>
/// 閲嶅惎瀹炰緥
/// </summary>
- [HttpPost("{id}/restart")]
+ [HttpPost("restart")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
- public async Task<ActionResult<InstanceState>> RestartInstance(string id)
+ public async Task<ActionResult> RestartInstance([FromQuery] string id)
{
try
{
@@ -319,7 +426,20 @@
var instance = _instanceManager.GetInstance(id);
var state = instance?.GetState();
- return Ok(state);
+ var result = new
+ {
+ instanceId = instance.Config.Id,
+ name = instance.Config.Name,
+ plcType = instance.Config.PLCType.ToString(),
+ port = instance.Config.Port,
+ status = state.Status.ToString(),
+ clientCount = state.ClientCount,
+ totalRequests = state.TotalRequests,
+ startTime = state.StartTime,
+ lastActivityTime = state.LastActivityTime,
+ errorMessage = state.ErrorMessage
+ };
+ return Ok(result);
}
catch (Exception ex)
{
--
Gitblit v1.9.3