using Newtonsoft.Json; using ServiceCenter.Extensions; using ServiceCenter.Redis; using System.ComponentModel; using WCS.Core; using WCS.WorkEngineering.Extensions; 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(Station obj) { obj.入库站点是否满足执行条件(); //获取条码 var bcr = obj.GetBarCode(World); //获取到仓库Id var mainlineDiversion = JsonConvert.DeserializeObject(RedisHub.WMS.Get($"MainlineDiversion{bcr}")); //更具仓库ID来分配目标地址 int nextAdd = 0; switch (mainlineDiversion.WarehouseId) { case 1: nextAdd = 0; break; case 2: nextAdd = 0; break; case 3: nextAdd = 0; break; case 4: nextAdd = 0; break; case 5: nextAdd = 0; break; case 6: nextAdd = 0; break; } obj.Data.GoodsStart = obj.Entity.Code.ToShort(); obj.Data.GoodsEnd = nextAdd.ToShort(); obj.Data.TaskNumber = mainlineDiversion.TaskId; obj.Data.VoucherNo++; } public override bool Select(Device dev) { return dev.HasFlag(Extensions.DeviceFlags.主线分流点); } } /// /// 主线分流 /// public class MainlineDiversion { /// /// 任务号 /// public int TaskId { get; set; } /// /// 仓库号 /// public int WarehouseId { get; set; } } }