Files
StandardSence/StandardScene.QrLidar/Cad/SyncQrMap.cs
T
黄兆尉andCursor e075bc0d7d refactor: CycleUiHelper 重命名为 FairyUiHelper
对齐 FairyView 宿主命名。环线/充电/按钮/门进程的 Stop 改为 override,避免隐藏基类;Kiva.ForceStop 改为 override。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 22:49:07 +08:00

50 lines
1.9 KiB
C#

using System;
using System.Linq;
using StandardScene.Utils;
using Newtonsoft.Json;
using SimpleCore;
using Simple3.CADTools;
using Simple3.RCS.CarTypes;
using StandardScene;
using StandardScene.Model;
namespace StandardScene.QrLidar.Cad
{
/// <summary>
/// 扫描全图带 tag 的站点生成二维码地图(码值 → 坐标/角度),写入 <see cref="ApiController.QrMap"/>
/// 供 <c>/api/QrMap</c> 下发,并通知带 QrCar 标记的在线车辆刷新。
/// 自 Core StandardCADTool.cs 迁入(scene.qrlidar 平台专属能力)。
/// </summary>
[CADToolDescriptor(name = "同步二维码地图到小车")]
public class SyncQrMap : CADTool
{
public override async void Invoke()
{
var tagSites = SimpleLib.GetAllSites().Where(p => p.fields.ContainsKey("tag"));
ApiController.QrMap.Clear();
foreach (var tagSite in tagSites)
{
var tag = int.Parse(tagSite.fields["tag"]);
var tagX = tagSite.x;
var tagY = tagSite.y;
var tagTh = tagSite.fields.TryGetValue("th", out var field) ? float.Parse(field) : 0f;
if (ApiController.QrMap.ContainsKey(tag))
{
FairyUiHelper.Alert("错误", $@"存在重复码值:{tag} 站点id为:{tagSite.id}");
return;
}
ApiController.QrMap[tag] = (tagX, tagY, tagTh);
}
ApiController.QrMapJson = JsonConvert.SerializeObject(ApiController.QrMap);
var qrCars = SimpleLib.GetAllCars().Where(p => p.fields.ContainsKey("QrCar"));
foreach (var qrCar in qrCars)
{
if(Commons.GetVehicleStatus((Car)qrCar) is VehicleStatus.Normal or VehicleStatus.NeedInit)
((ClumsyCar)qrCar).ImmediateCommand("pilot.GetUpdateQrMap()");
}
}
}
}