diff --git a/StandardScene.Core/WebApi.cs b/StandardScene.Core/WebApi.cs index 1ced9ea..ea1f391 100644 --- a/StandardScene.Core/WebApi.cs +++ b/StandardScene.Core/WebApi.cs @@ -15,12 +15,12 @@ using MDCSToolBox.Clumsy.Movements; using Nancy; using Newtonsoft.Json; using Newtonsoft.Json.Linq; -using SimpleLite; -using SimpleLite.RCS; -using SimpleLite.RCS.CarTypes; -using SimpleLite.CADTools; -using SimpleLite.Props; -using SimpleLite.UI; +using Simple3; +using Simple3.RCS; +using Simple3.RCS.CarTypes; +using Simple3.CADTools; +using Simple3.Props; +using Simple3.UI; using SimpleCore; using SimpleCore.Library; using SimpleCore.PropType; @@ -38,7 +38,7 @@ namespace StandardScene /// /// 【过渡期遗留】老平台 Nancy HTTP 接口(40+ 端点)。导航耦合极弱:仅二维码 QrMap(数据仍存 /// 本类静态字段,由 scene.qrlidar 插件的 SyncQrMap 工具写入)与 getLidarMap。 - /// 拆分计划 §4.7:暂留 Core 维持现场兼容,后续逐步迁往 SimpleLite 的 EmbedIO 接口(MIGU-API), + /// 拆分计划 §4.7:暂留 Core 维持现场兼容,后续逐步迁往 Simple3 的 EmbedIO 接口(MIGU-API), /// 新功能请勿在此追加端点。 /// public class ApiController : NancyModule @@ -2600,13 +2600,10 @@ namespace StandardScene } var currentSite = SimpleLib.GetSite(singleCar.status.holdingLocks.FirstOrDefault()); - // HashSet> blockedBy = singleCar.status.blockedBy; var blockedBy = singleCar.status.blockedBy.ToHashSet(); List blockedByItems = new List(); - //var BlockedBy = string.Empty; for (int i = 0; i < blockedBy.Count; i++) { - //BlockedBy += $"({blockedBy.ElementAt(i).Item1 + "," + blockedBy.ElementAt(i).Item2});"; blockedByItems.Add( new BlockedByItem { @@ -2615,7 +2612,29 @@ namespace StandardScene } ); } - //BlockedBy = BlockedBy.TrimEnd(';'); + + // 交管阻挡:报警优先;否则 CurrState 显示「被{name}车交管」(多车全部列出) + var hasAlarm = + singleCar.status.enums.TryGetValue("AlarmInfo", out var alarmInfo) + && !string.IsNullOrWhiteSpace(alarmInfo); + if (!hasAlarm) + { + var blockerNames = blockedBy + .Where(p => p.Item1 >= 0) + .Select(p => p.Item1) + .Distinct() + .Select(id => + { + var blocker = SimpleLib.GetCar(id); + return blocker != null && !string.IsNullOrWhiteSpace(blocker.name) + ? blocker.name + : id.ToString(); + }) + .ToList(); + if (blockerNames.Count > 0) + carState = $"被{string.Join("、", blockerNames)}车交管"; + } + return new CarStateInfo() { Code = carCode,