using ServiceCenter.Extensions; using ServiceCenter.SqlSugars; using System.ComponentModel; using WCS.Core; using WCS.Entity; using WCS.Entity.Protocol.Station; using WCS.WorkEngineering.Extensions; using WCS.WorkEngineering.WebApi.Controllers; using WCS.WorkEngineering.WebApi.Models.WMS.Response; using WCS.WorkEngineering.Worlds; using TaskStatus = WCS.Entity.TaskStatus; namespace WCS.WorkEngineering.Systems.环形库 { /// /// 环形库分配货位 /// [BelongTo(typeof(SortingBranchWorld))] [Description("环形库分配货位")] public class 环形库分配货位 : DeviceSystem> { protected override bool ParallelDo => true; public override void Do(Device obj) { if (obj.Data.VoucherNo != obj.Data2.VoucherNo) { World.Log($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}"); return; } if (obj.Data3.Status.HasFlag(StationStatus.Run)) { World.Log("设备运行中"); return; } ; if (!obj.Data3.Status.HasFlag(StationStatus.OT_Status)) { World.Log("站台货物信息与实际占用不一致"); return; } if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status)) { } ; if (obj.Data2.Request != 1) { World.Log("无请求"); return; } WCS_TaskInfo taskInfo = null; int sideNum = 0; //开始获取货位号 SqlSugarHelper.Do(db => { var task = db.Default.Queryable().First(v => obj.Data2.TaskNumber == v.ID); if (task == null) { World.Log($"未找到任务[{obj.Data2.TaskNumber}],请人工接入处理!!!!"); return; } if (task.Type != TaskType.SetPlate) { World.Log($"任务[{obj.Data2.TaskNumber}]任务类型错误,应该是组盘任务,请人工接入处理!!!!"); return; } if (task.Status != TaskStatus.FinishOfShunt) { World.Log($"任务[{obj.Data2.TaskNumber}]任务状态错误,当前状态应该市分流结束,,请人工接入处理!!!!"); return; } var res = WmsApi.RingApplyStockInLoc(task.ID, task.Device, obj.Entity.Code, task.GoodsType); if (res.ResCode != ResponseStatusCodeEnum.Sucess) { World.Log(res.ResMsg,ServiceCenter.Logs.LogLevelEnum.Mid); return; } task.AddrTo = res.ResData.CellNo; task.Line = res.ResData.Row; task.Col = res.ResData.Colomn; task.Layer = res.ResData.Layer; task.Depth = res.ResData.Row; task.LastInteractionPoint = obj.Entity.Code; task.Device = obj.Entity.Code; task.EditWho = "WCS"; db.Default.UpdateableRowLock(task).UpdateColumns(x => new { x.Status, x.AddrTo, x.Line, x.Col, x.Layer, x.Depth, x.LastInteractionPoint, x.SrmStation, x.Device, x.EditWho }).ExecuteCommand(); task.AddWCS_TASK_DTL(db.Default, obj.Entity.Code, task.AddrTo, $"任务分配货位{task.AddrTo}"); var invNow = db.Default.Queryable().NoLock().First(x => x.ContGrpBarCode == task.BarCode); sideNum = invNow.SideNum; taskInfo = task; }); if (taskInfo == null) return; var next = (taskInfo.AddrNext.ToShort() - 2).ToShort(); obj.Data.TaskNumber = taskInfo.ID; obj.Data.TaskNumber = taskInfo.ID; obj.Data.GoodsStart = obj.Entity.Code.ToShort(); obj.Data.GoodsStart = obj.Entity.Code.ToShort(); obj.Data.GoodsEnd = next; if (sideNum == 2) //反面 { obj.Data.CmdType = StationCmd.Res6; obj.Data.CmdType = StationCmd.Res6; } obj.Data.GoodsEnd = next; obj.Data.SetVoucherNo(); } public override bool Select(Device dev) { var codes = new List() { "444","644","844","1044","1244","1444", "426","626","826","1026","1226","1426", "435","635","835","1035","1235","1435" }; return codes.Any(x => x == dev.Code); } } }