using ServiceCenter.Extensions; using ServiceCenter.Logs; using ServiceCenter.SqlSugars; using System.ComponentModel; using WCS.Core; using WCS.Entity; using WCS.WorkEngineering.Extensions; using WCS.WorkEngineering.Protocol.Station; using WCS.WorkEngineering.Worlds; namespace WCS.WorkEngineering.Systems { /// /// 分流点 /// [BelongTo(typeof(MainWorld))] [Description("环形库分流点")] public class 环形库分流点 : DeviceSystem> { protected override bool ParallelDo => true; protected override bool SaveLogsToFile => true; public override void Do(Device obj) { if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High); if (obj.Data3.Status.HasFlag(StationStatus.Run)) throw new KnownException("设备运行中", LogLevelEnum.Low); if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) throw new KnownException("站台货物信息与实际占用不一致", LogLevelEnum.Low); if (obj.Data2.Request != 1) throw new KnownException("无请求", LogLevelEnum.Mid); if (obj.Data2.TaskNumber == 1) { obj.Data.TaskNumber = 591; obj.Data.GoodsStart = obj.Entity.Code.ToShort(); obj.Data.GoodsEnd = 591; obj.Data.VoucherNo++; World.Log($"执行记录:任务号[{591}]"); } SqlSugarHelper.Do(_db => { var db = _db.Default; var taskInfo = db.Queryable().First(v => v.ID == obj.Data2.TaskNumber) ?? throw new KnownException("未找到对应的WCS任务", LogLevelEnum.Mid); }); obj.Data.TaskNumber = obj.Data2.TaskNumber; obj.Data.GoodsStart = obj.Entity.Code.ToShort(); obj.Data.GoodsEnd = 455; obj.Data.VoucherNo++; World.Log($"执行记录:任务号[{obj.Data2.TaskNumber}]"); } public override bool Select(Device dev) { return dev.HasFlag(Extensions.DeviceFlags.环形库分流点); } } }