feat: GetCarStateInfo 无报警时在 CurrState 显示交管阻挡

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
黄兆尉
2026-08-26 11:20:03 +08:00
co-authored by Cursor
parent 3b4f505ac5
commit 368790f36e
+30 -11
View File
@@ -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
/// <summary>
/// 【过渡期遗留】老平台 Nancy HTTP 接口(40+ 端点)。导航耦合极弱:仅二维码 QrMap(数据仍存
/// 本类静态字段,由 scene.qrlidar 插件的 SyncQrMap 工具写入)与 getLidarMap。
/// 拆分计划 §4.7:暂留 Core 维持现场兼容,后续逐步迁往 SimpleLite 的 EmbedIO 接口(MIGU-API),
/// 拆分计划 §4.7:暂留 Core 维持现场兼容,后续逐步迁往 Simple3 的 EmbedIO 接口(MIGU-API),
/// 新功能请勿在此追加端点。
/// </summary>
public class ApiController : NancyModule
@@ -2600,13 +2600,10 @@ namespace StandardScene
}
var currentSite = SimpleLib.GetSite(singleCar.status.holdingLocks.FirstOrDefault());
// HashSet<Tuple<int, int>> blockedBy = singleCar.status.blockedBy;
var blockedBy = singleCar.status.blockedBy.ToHashSet();
List<BlockedByItem> blockedByItems = new List<BlockedByItem>();
//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,