using System.Text.Json; using OMS.NET.Common; using OMS.NET.DbClass; namespace OMS.NET.Instructs { public class PickIngElementInstruct : Instruct { public PickIngElementInstruct() { this.Type = "broadcast"; this.Class = "pickIngElement"; } public override Task Handler(string wsid) { return Task.Run(() => { if (!GlobalArea.LoginCheckByID(wsid)) return;//登录检查,不通过则直接退出 if (Data?.GetType() != typeof(JsonElement)) return;//Data 非空和JsonElement类型检查 try { long id = Data.GetInt64(); string conveyor = GlobalArea.GetLoginEmailByID(wsid); AccountData accountData = GlobalArea.GetLoginAccountData(conveyor)!; UserInfo userInfo = new() { Email = conveyor, Color = accountData.HeadColor, Name = accountData.UserName, }; if (GlobalArea.IsElementExit(id))//已存在activedata项 { ActiveDataElement activeDataElement = GlobalArea.GetActiveDataElement(id)!; if (activeDataElement.Pick == null) { activeDataElement.Pick = userInfo; } else { throw new Exception($"{id}已被{activeDataElement.Pick.Name}Pick"); } } else { GlobalArea.AddActiveDataElement(new ActiveDataElement(id) { Pick = userInfo }); } string time = GlobalArea.GetCurrentTime(); ResponseOrBroadcastInstructs.Add(new PickIngElementInstruct() { IsBroadcast = true, Conveyor = conveyor, Time = time, Data = new { id = id, color = accountData.HeadColor } }); } catch (Exception ex) { GlobalArea.Log.Warn($"处理{this.Class}广播指令出错:" + ex.Message); } }); } } }