1693994901 6 ay önce
ebeveyn
işleme
1472ccd569

+ 3 - 1
YWGC/FJK/WCS.WorkEngineering/Systems/分拣支线/环形库分流点.cs

@@ -304,11 +304,13 @@ namespace WCS.WorkEngineering.Systems
                         #region 判断两个位置是否都有码垛信息,为没有的创建码垛信息
 
                         var maDuoXinXiList = db.Queryable<BillRingPalletizingInfo>().Where(x => maDuoZhanTaiList.Contains(x.MaDuoGongWei) && x.Out == false).ToList();
-
+                        World.Log("直接码垛");
                         foreach (var maDuoZhanTai in maDuoZhanTaiList)
                         {
+                            World.Log("直接码垛埋点一");
                             if (!maDuoXinXiList.Any(x => x.MaDuoGongWei == maDuoZhanTai))
                             {
+                                World.Log("直接码垛埋点二");
                                 if (CreateStackingInfo(db, taskInfo, wareHouse, maDuoZhanTai)) continue;
                             }
                         }

+ 72 - 34
YWGC/FJK/WCS.WorkEngineering/Systems/码垛区域生成空托盘任务.cs

@@ -1,4 +1,5 @@
-using ServiceCenter.Extensions;
+using NetTaste;
+using ServiceCenter.Extensions;
 using ServiceCenter.SqlSugars;
 using SqlSugar;
 using System.ComponentModel;
@@ -8,6 +9,7 @@ using WCS.Entity.Protocol.Station;
 using WCS.WorkEngineering.Extensions;
 using WCS.WorkEngineering.Model.WMS;
 using WCS.WorkEngineering.WebApi.Controllers;
+using WCS.WorkEngineering.WebApi.Models.WMS.Request;
 using WCS.WorkEngineering.WebApi.Models.WMS.Response;
 using WCS.WorkEngineering.Worlds;
 using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
@@ -195,15 +197,50 @@ namespace WCS.WorkEngineering.Systems
                         var db = _db.Default;
                         var isDP = GetIsDirectPalletizing(obj.Entity.Parent.Code, db);
                         KeyValuePair<short, short> ringPallet = new KeyValuePair<short, short>();
+                        var device = "";
                         if (isDP) //直接码垛
                         {
+                            device = obj.Entity.Code;
                             //此位置是否有未结束的码垛信息
                             var ringPalletizingInfo = db.Queryable<BillRingPalletizingInfo>().Where(x => x.MaDuoGongWei == obj.Entity.Code && x.Out == false).ToList()
                                                                                              .OrderBy(x => x.AddTime).FirstOrDefault();
                             var bomsetgrp = db.Queryable<BillBomsetgrp>().NoLock().Where(x => x.Id == ringPalletizingInfo.BomSetGrpId).First();
                             ringPallet = new KeyValuePair<short, short>(bomsetgrp.ShortCode, ringPalletizingInfo.HWCountQty.ToShort());
+
+                            var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code && x.Status < TaskStatus.Finish);
+                            if (task != null) return;
+                            //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
+                            var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机));
+                            var dev = Device.All.Where(x => x.Code == addrFrom.Code).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
+                            if (dev.Data.TaskNumber != 0 /*|| dev.Data.GoodsEnd != 0*/)
+                            {
+                                World.Log($"拆盘机残留任务信息: {dev.Entity.Code}有残留任务信息 {dev.Data.TaskNumber} - {dev.Data.GoodsEnd} ,请确认处理!");
+                                return;
+                            }
+
+                            //开始创建搬运任务
+                            task = new WCS_TaskInfo()
+                            {
+                                AddrFrom = addrFrom.Code,
+                                AddrTo = obj.Entity.Code,
+                                BarCode = "码垛托盘搬运-" + obj.Entity.Code,
+                                Status = Entity.TaskStatus.NewBuild,
+                                PalletType = ringPallet.Key,
+                                FullQty = ringPallet.Value,
+                                Type = TaskType.Delivery,
+                                AddWho = "WCS",
+                                AddTime = DateTime.Now
+                            };
+                            var res = db.InsertableRowLock(task).ExecuteReturnEntity();
+                            var taskOld = res.Mapper<WCS_TaskOld, WCS_TaskInfo>();
+                            taskOld.Id = res.ID;
+                            taskOld.AddTime = DateTime.Now;
+                            db.InsertableRowLock(taskOld).SplitTable().ExecuteCommand();
+                            res.AddWCS_TASK_DTL(db, obj.Entity.Code, task.AddrTo, "初始化码垛托盘搬运任务");
+                            deliveryTask = res;
                         }
-                        else
+
+                        if(device == "" || ( obj.Entity.Code != device && !string.IsNullOrEmpty(device)))
                         {
                             //检查是否有待执行状态放货点是自己的出库任务
                             var ringTask = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.OutDepot && x.Status <= TaskStatus.WaitingToExecute && x.SrmStation == obj.Entity.Code);
@@ -233,38 +270,39 @@ namespace WCS.WorkEngineering.Systems
                                 return;
                             }
                             ringPallet = new KeyValuePair<short, short>(ringTask.PalletType, ringTask.FullQty);
-                        }
-                        var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code && x.Status < TaskStatus.Finish);
-                        if (task != null) return;
-                        //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
-                        var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机));
-                        var dev = Device.All.Where(x => x.Code == addrFrom.Code).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
-                        if (dev.Data.TaskNumber != 0 /*|| dev.Data.GoodsEnd != 0*/)
-                        {
-                            World.Log($"拆盘机残留任务信息: {dev.Entity.Code}有残留任务信息 {dev.Data.TaskNumber} - {dev.Data.GoodsEnd} ,请确认处理!");
-                            return;
-                        }
 
-                        //开始创建搬运任务
-                        task = new WCS_TaskInfo()
-                        {
-                            AddrFrom = addrFrom.Code,
-                            AddrTo = obj.Entity.Code,
-                            BarCode = "码垛托盘搬运-" + obj.Entity.Code,
-                            Status = Entity.TaskStatus.NewBuild,
-                            PalletType = ringPallet.Key,
-                            FullQty = ringPallet.Value,
-                            Type = TaskType.Delivery,
-                            AddWho = "WCS",
-                            AddTime = DateTime.Now
-                        };
-                        var res = db.InsertableRowLock(task).ExecuteReturnEntity();
-                        var taskOld = res.Mapper<WCS_TaskOld, WCS_TaskInfo>();
-                        taskOld.Id = res.ID;
-                        taskOld.AddTime = DateTime.Now;
-                        db.InsertableRowLock(taskOld).SplitTable().ExecuteCommand();
-                        res.AddWCS_TASK_DTL(db, obj.Entity.Code, task.AddrTo, "初始化码垛托盘搬运任务");
-                        deliveryTask = res;
+                            var task = db.Queryable<WCS_TaskInfo>().NoLock().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code && x.Status < TaskStatus.Finish);
+                            if (task != null) return;
+                            //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
+                            var addrFrom = obj.Entity.Sources.SelectMany(x => x.Sources).Single(x => x.HasFlag(DeviceFlags.拆盘机));
+                            var dev = Device.All.Where(x => x.Code == addrFrom.Code).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
+                            if (dev.Data.TaskNumber != 0 /*|| dev.Data.GoodsEnd != 0*/)
+                            {
+                                World.Log($"拆盘机残留任务信息: {dev.Entity.Code}有残留任务信息 {dev.Data.TaskNumber} - {dev.Data.GoodsEnd} ,请确认处理!");
+                                return;
+                            }
+
+                            //开始创建搬运任务
+                            task = new WCS_TaskInfo()
+                            {
+                                AddrFrom = addrFrom.Code,
+                                AddrTo = obj.Entity.Code,
+                                BarCode = "码垛托盘搬运-" + obj.Entity.Code,
+                                Status = Entity.TaskStatus.NewBuild,
+                                PalletType = ringPallet.Key,
+                                FullQty = ringPallet.Value,
+                                Type = TaskType.Delivery,
+                                AddWho = "WCS",
+                                AddTime = DateTime.Now
+                            };
+                            var res = db.InsertableRowLock(task).ExecuteReturnEntity();
+                            var taskOld = res.Mapper<WCS_TaskOld, WCS_TaskInfo>();
+                            taskOld.Id = res.ID;
+                            taskOld.AddTime = DateTime.Now;
+                            db.InsertableRowLock(taskOld).SplitTable().ExecuteCommand();
+                            res.AddWCS_TASK_DTL(db, obj.Entity.Code, task.AddrTo, "初始化码垛托盘搬运任务");
+                            deliveryTask = res;
+                        }
                     });
                 }
 
@@ -273,7 +311,7 @@ namespace WCS.WorkEngineering.Systems
                 dev.Data.TaskNumber = deliveryTask.ID;
                 dev.Data.GoodsEnd = deliveryTask.AddrTo.ToShort();
             }
-        }
+        }      
 
         public override bool Select(Device dev)
         {

+ 2 - 0
YWGC/FJK/WCS.WorkEngineering/WorkStart.cs

@@ -11,6 +11,7 @@ using WCS.Entity.Protocol.SRM;
 using WCS.Entity.Protocol.Station;
 using WCS.Entity.Protocol.Truss;
 using WCS.WorkEngineering.Extensions;
+using WCS.WorkEngineering.Model.WMS;
 using WCS.WorkEngineering.Systems;
 using WCS.WorkEngineering.Systems.桁架码垛;
 using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
@@ -2022,6 +2023,7 @@ namespace WCS.WorkEngineering
                             //_db.CodeFirst.InitTables(typeof(WCS_AgvTaskInfo));
                             //_db.CodeFirst.InitTables(typeof(WCS_Palletizing));
                             //_db.CodeFirst.InitTables(typeof(WCS_PalletizingLayer));
+                            //_db.CodeFirst.InitTables(typeof(BillRingPalletizingInfo));
                             //_db.CodeFirst.InitTables(typeof(WCS_PalletizingRow));
                             //_db.CodeFirst.InitTables(typeof(WCS_PalletizingLoc));
                             //_db.CodeFirst.InitTables(typeof(WCS_CacheLine));