林豪 左 2 éve
szülő
commit
776d0b310c

+ 1 - 1
WCS.WorkEngineering/Extensions/DeviceExtension.cs

@@ -332,7 +332,7 @@ namespace WCS.WorkEngineering.Extensions
         桁架取货点 = 1L << 34,
         拆盘机09 = 1L << 35,
         拆盘机非09 = 1L << 36,
-        码垛位09 = 1L << 37,
+        桁架码垛位 = 1L << 37,
         环形库码垛工位 = 1L << 38,
         Robot = 1L << 39
     }

+ 17 - 13
WCS.WorkEngineering/Extensions/TaskExtension.cs

@@ -48,22 +48,23 @@ namespace WCS.WorkEngineering.Extensions
         }
 
         /// <summary>
-        /// 完成或取消任务
+        ///  更新历史表数据
         /// </summary>
         /// <param name="taskInfo"></param>
         /// <param name="db"></param>
-        public static void CompleteOrCancelTasks(this WCS_TaskInfo taskInfo, SqlSugarScopeProvider db)
+        public static void UpdateableOldTask(this WCS_TaskInfo taskInfo, SqlSugarScopeProvider db)
         {
-            if (taskInfo.Status is not Entity.TaskStatus.Finish and not Entity.TaskStatus.Cancel) throw new KnownException("任务未完成或取消,无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid);
-            // 任务完成或取消,进行相关同步动作
+            // 同步任务信息
             var taskOld = db.Queryable<WCS_TaskOld>().SplitTable(tabs => tabs.Take(2)).Where(v => v.Id == taskInfo.ID).OrderByDescending(v => v.AddTime).First();
             if (taskOld is not null)
             {
-                taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
-                taskOld.Id = taskInfo.ID;
-                //更新任务历史表,删除任务当前表
-                db.Updateable(taskOld).SplitTable().ExecuteCommand();
-                db.Deleteable(taskInfo).ExecuteCommand();
+                if (taskInfo.Status >= TaskStatus.Finish) taskInfo.CompleteOrCancelTasks(db);
+                else
+                {
+                    taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
+                    taskOld.Id = taskInfo.ID;
+                    db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable().ExecuteCommand();
+                }
             }
             else
             {
@@ -72,19 +73,22 @@ namespace WCS.WorkEngineering.Extensions
         }
 
         /// <summary>
-        ///  更新历史表数据
+        /// 完成或取消任务
         /// </summary>
         /// <param name="taskInfo"></param>
         /// <param name="db"></param>
-        public static void UpdateableOldTask(this WCS_TaskInfo taskInfo, SqlSugarScopeProvider db)
+        public static void CompleteOrCancelTasks(this WCS_TaskInfo taskInfo, SqlSugarScopeProvider db)
         {
-            // 同步任务信息
+            if (taskInfo.Status is not Entity.TaskStatus.Finish and not Entity.TaskStatus.Cancel) throw new KnownException("任务未完成或取消,无法执行WCS_TaskInfo与WCS_TaskOld同步动作", LogLevelEnum.Mid);
+            // 任务完成或取消,进行相关同步动作
             var taskOld = db.Queryable<WCS_TaskOld>().SplitTable(tabs => tabs.Take(2)).Where(v => v.Id == taskInfo.ID).OrderByDescending(v => v.AddTime).First();
             if (taskOld is not null)
             {
                 taskOld = taskInfo.Mapper<WCS_TaskOld, WCS_TaskInfo>();
                 taskOld.Id = taskInfo.ID;
-                db.Updateable(taskOld).Where(x => x.Id == taskOld.Id).SplitTable().ExecuteCommand();
+                //更新任务历史表,删除任务当前表
+                db.Updateable(taskOld).SplitTable().ExecuteCommand();
+                db.Deleteable(taskInfo).ExecuteCommand();
             }
             else
             {

+ 0 - 3
WCS.WorkEngineering/Systems/AgvSystems.cs

@@ -36,8 +36,6 @@ namespace WCS.WorkEngineering.Systems
 
         public override void Do(Station obj)
         {
-            
-
             if (obj.Entity.HasFlag(DeviceFlags.出库))
             {
                 var agvTaskInfos = new List<WCS_AgvTaskInfo>();
@@ -84,7 +82,6 @@ namespace WCS.WorkEngineering.Systems
                                         taskInfo.EedTime = DateTime.Now;
                                         db.Default.Updateable(taskInfo).ExecuteCommand();
                                         taskInfo.AddWCS_TASK_DTL(db.Default, "agv", "任务完成");
-                                        taskInfo.CompleteOrCancelTasks(db.Default);
                                         taskInfos.Add(taskInfo);
                                     }
                                     else

+ 59 - 20
WCS.WorkEngineering/Systems/RGVSystems.cs

@@ -7,6 +7,7 @@ using WCS.Entity;
 using WCS.WorkEngineering.Extensions;
 using WCS.WorkEngineering.Protocol.BCR;
 using WCS.WorkEngineering.Protocol.RGV;
+using WCS.WorkEngineering.Protocol.Robot;
 using WCS.WorkEngineering.Protocol.Station;
 using WCS.WorkEngineering.Protocol.Truss;
 using WCS.WorkEngineering.Worlds;
@@ -46,7 +47,7 @@ namespace WCS.WorkEngineering.Systems
             if (obj.Data.VoucherNo != obj.Data2.VoucherNo) throw new KnownException($"凭证号不一致,DB520:{obj.Data.VoucherNo}-DB521:{obj.Data2.VoucherNo}", LogLevelEnum.High);
             if (obj.Data2.WorkMode != RGVWorkMode.Automatic) return;
 
-            if (obj.Data.RES1 == 1) return;
+            if (obj.Data.RES1 == 1) return; //wcs任务完成确认信号未清除
 
             if (obj.Data2.Status.HasFlag(RGVStatus.Taskfinishi))
             {
@@ -55,25 +56,37 @@ namespace WCS.WorkEngineering.Systems
                     case RGVCmdType.PickGoods: //单独取货任务完成,默认只有空托盘才会下发单独取货任务
                         //开始申请读码信息
                         var bcrCode = obj.Data3.GetBCRCode();
-                        WCS_Palletizing palletizing = null;
+                        int taskNumber = 0;
                         SqlSugarHelper.Do(_db =>
                         {
                             var db = _db.Default;
-
-                            //开始绑定任务,并下发新的任务信息到小车
-                            WCS_Palletizing palletizingInfo = db.Queryable<WCS_Palletizing>().Single(x => x.Id == obj.Data2.TaskNumber);
-                            if (palletizingInfo == null) return;
-                            palletizingInfo.PalleCode = bcrCode;
-                            db.Updateable(palletizingInfo).ExecuteCommand();
-                            palletizing = palletizingInfo;
+                            var dev = Device.All.First(x => x.Code == obj.Data2.StartPosition.ToString());
+                            if (dev.HasFlag(DeviceFlags.拆盘机09))
+                            {
+                                //开始绑定任务,并下发新的任务信息到小车
+                                WCS_Palletizing palletizingInfo = db.Queryable<WCS_Palletizing>().Single(x => x.Id == obj.Data2.TaskNumber);
+                                if (palletizingInfo == null) return;
+                                palletizingInfo.PalleCode = bcrCode;
+                                db.Updateable(palletizingInfo).ExecuteCommand();
+                                taskNumber = palletizingInfo.Id;
+                            }
+                            else if (dev.HasFlag(DeviceFlags.拆盘机非09))
+                            {
+                                //开始处理对应的搬运任务信息
+                                var task = db.Queryable<WCS_TaskInfo>().First(x => x.Type == TaskType.Delivery && x.ID == obj.Data2.TaskNumber && x.AddrTo == obj.Data2.DestPosition.ToString());
+                                task.BarCode = bcrCode;
+                                db.Updateable(task).ExecuteCommand();
+                                task.AddWCS_TASK_DTL(db, obj.Entity.Code, obj.Data2.DestPosition.ToString(), $"环形库码垛位{obj.Data2.DestPosition}搬运任务绑定条码信息{bcrCode}");
+                                taskNumber = task.ID;
+                            }
                         });
-                        if (palletizing == null) return;
+                        if (taskNumber == 0) return;
                         //清空起始点信息
-                        var staDev = new Device<IStation520, IStation521>(Device.All.FirstOrDefault(x => x.Code == obj.Data.DestPosition.ToString())!, World);
+                        var staDev = new Device<IStation520, IStation521>(Device.All.FirstOrDefault(x => x.Code == obj.Data2.DestPosition.ToString())!, World);
                         staDev.Data.TaskNumber = 0;
                         staDev.Data.GoodsStart = 0;
                         staDev.Data.GoodsEnd = 0;
-                        obj.Data2.TaskNumber = palletizing.Id;
+                        obj.Data2.TaskNumber = taskNumber;
                         obj.Data.RES1 = 1;
                         break;
 
@@ -81,15 +94,31 @@ namespace WCS.WorkEngineering.Systems
                         WCS_TaskInfo finishiTask = null;
                         var startPosition = Device.All.Where(x => x.Code == obj.Data2.StartPosition.ToString()).Select(x => new Device<IStation520, IStation521, IStation523>(x, World)).FirstOrDefault();
                         var destPosition = Device.All.FirstOrDefault(x => x.Code == obj.Data2.DestPosition.ToString());
-                        var isPalletizing = destPosition!.HasFlag(DeviceFlags.码垛位09, DeviceFlags.环形库码垛工位);
-                        palletizing = null;
+                        var isPalletizing = destPosition!.HasFlag(DeviceFlags.桁架码垛位, DeviceFlags.环形库码垛工位);
+                        short countQty = 0;
+                        short shortCode = 0;
                         SqlSugarHelper.Do(_db =>
                         {
                             var db = _db.Default;
                             if (isPalletizing)
                             {
-                                var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.Id == obj.Data.TaskNumber);
-                                palletizing = palletizingInfo;
+                                if (destPosition.HasFlag(DeviceFlags.桁架码垛位))
+                                {
+                                    var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.Id == obj.Data.TaskNumber);
+                                    countQty = palletizingInfo.CountQty.ToShort();
+                                    shortCode = palletizingInfo.ShortCode;
+                                }
+                                else if (destPosition.HasFlag(DeviceFlags.环形库码垛工位))
+                                {
+                                    var deliveryTask = db.Queryable<WCS_TaskInfo>().First(x => x.ID == obj.Data.TaskNumber);
+                                    countQty = deliveryTask.FullQty;
+                                    shortCode = deliveryTask.PalletType;
+                                    deliveryTask.Status = TaskStatus.RgvCompleted;
+                                    deliveryTask.EditTime = DateTime.Now;
+                                    deliveryTask.LastInteractionPoint = obj.Entity.Code;
+                                    db.Updateable(deliveryTask).ExecuteCommand();
+                                    deliveryTask.AddWCS_TASK_DTL(db, deliveryTask.AddrTo, $"RGV任务执行结束");
+                                }
                             }
                         });
 
@@ -99,10 +128,20 @@ namespace WCS.WorkEngineering.Systems
                         //目标地址是码垛工位
                         if (isPalletizing)
                         {
-                            var dest = new Device<IStation520, IStation521, IStation521, ITruss530, ITruss531>(destPosition!, World);
-                            dest.Data4.MaxQuantity = palletizing.CountQty.ToShort();
-                            dest.Data4.Type = palletizing.ShortCode;
-                            dest.Data4.VoucherNo++;
+                            if (destPosition.HasFlag(DeviceFlags.桁架码垛位))
+                            {
+                                var dest = new Device<ITruss531>(destPosition!, World);
+                                dest.Data.MaxQuantity = countQty;
+                                dest.Data.Type = shortCode;
+                                dest.Data.VoucherNo++;
+                            }
+                            else if (destPosition.HasFlag(DeviceFlags.环形库码垛工位))
+                            {
+                                var dest = new Device<IRobot531>(destPosition!, World);
+                                dest.Data.MaxQuantity = countQty;
+                                dest.Data.Type = shortCode;
+                                dest.Data.VoucherNo++;
+                            }
                         }
                         obj.Data.RES1 = 1;
                         break;

+ 0 - 3
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -130,9 +130,6 @@ namespace WCS.WorkEngineering.Systems
                             task.AddWCS_TASK_DTL(db.Default, task.AddrTo, "空轮初始化任务结束");
                             break;
                     }
-
-                    if (task.Status >= TaskStatus.Finish) task.CompleteOrCancelTasks(db.Default);
-
                     taskInfo = task;
                 });
                 if (taskInfo == null) throw new KnownException("数据库提交事务错误", LogLevelEnum.High);

+ 1 - 1
WCS.WorkEngineering/Systems/机台叫料生成AGV任务.cs

@@ -43,7 +43,7 @@ namespace WCS.WorkEngineering.Systems
                     db.Insertable(new WCS_AgvTaskInfo()
                     {
                         ID = task.ID,
-                        TaskType = AGVTaskType.CallMaterial,
+                        TaskType = AGVTaskType.Transport,
                         Status = AGVTaskStatus.NewBuild,
                         TaskId = task.ID,
                         Position = task.WorkBench,

+ 1 - 0
WCS.WorkEngineering/Systems/桁架码垛/桁架码垛区补空托盘任务生成.cs

@@ -49,6 +49,7 @@ namespace WCS.WorkEngineering.Systems
             var dev = Device.All.Where(x => x.Code == "1606").Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
             dev.Data.TaskNumber = palletizing.Id;
             dev.Data.GoodsEnd = palletizing.PalletizingStation!.ToShort();
+            dev.Data.CmdType = 1;
         }
 
         public override bool Select(Device dev)

+ 2 - 3
WCS.WorkEngineering/Systems/桁架码垛/桁架码垛工位任务结束处理.cs

@@ -54,9 +54,8 @@ namespace WCS.WorkEngineering.Systems
                 {
                     item.Status = TaskStatus.Finish;
                     item.EditTime = DateTime.Now;
-                    item.AddWCS_TASK_DTL(db, obj.Entity.Code, "任务结束");
                     db.Updateable(item).ExecuteCommand();
-                    item.CompleteOrCancelTasks(db);
+                    item.AddWCS_TASK_DTL(db, obj.Entity.Code, "任务结束");
                 }
 
                 palletizing.Finish = true;
@@ -72,7 +71,7 @@ namespace WCS.WorkEngineering.Systems
 
         public override bool Select(Device dev)
         {
-            return dev.HasFlag(DeviceFlags.码垛位09);
+            return dev.HasFlag(DeviceFlags.桁架码垛位);
         }
     }
 }

+ 3 - 10
WCS.WorkEngineering/Systems/环形库/机械臂cs.cs

@@ -59,7 +59,7 @@ namespace WCS.WorkEngineering.Systems
             if (obj.Data2.TaskFinishId1 > 0 || obj.Data2.TaskFinishId2 > 0)
             {
                 //处理完成的任务信息
-                List<WCS_TaskInfo> tasks = new List<WCS_TaskInfo>();
+                var tasks = new List<WCS_TaskInfo>();
                 //开始处理
                 SqlSugarHelper.Do(db =>
                 {
@@ -67,9 +67,8 @@ namespace WCS.WorkEngineering.Systems
 
                     //根据DB521任务号获取对应任务
                     var taskInfoList = db.Default.Queryable<WCS_TaskInfo>().Where(v => v.ID == obj.Data2.TaskFinishId1 || v.ID == obj.Data2.TaskFinishId2).ToList();
-                    foreach (var task in taskInfoList)
+                    foreach (var task in taskInfoList.Where(task => task.Status == Entity.TaskStatus.StackerExecution))
                     {
-                        if (task.Status != Entity.TaskStatus.StackerExecution) continue;
                         //根据任务类型做不同的处理
                         switch (task.Type)
                         {
@@ -96,17 +95,11 @@ namespace WCS.WorkEngineering.Systems
                                 task.AddWCS_TASK_DTL(db.Default, task.AddrTo, "移库任务结束");
                                 break;
                         }
-                        if (task.Status >= Entity.TaskStatus.Finish) task.CompleteOrCancelTasks(db.Default);
                         tasks.Add(task);
                     }
                 });
                 if (!tasks.Any()) throw new KnownException("数据库提交事务错误", LogLevelEnum.High);
-                foreach (var task in tasks)
-                {
-                    //通知WMS任务完成
-                    if (task.Status == Entity.TaskStatus.Finish) WmsApi.CompleteTask(task.ID);
-                    if (task.Type == TaskType.OutDepot && task.Status == Entity.TaskStatus.ConveyorExecution) WmsApi.SrmPickOutCompleted(task.ID);
-                }
+                foreach (var task in tasks.Where(task => task.Status == Entity.TaskStatus.Finish)) WmsApi.CompleteTask(task.ID);
 
                 // 写入信号
                 obj.Data.OkAck = 1;

+ 44 - 26
WCS.WorkEngineering/Systems/环形库/环形库码垛区补空托盘任务生成.cs

@@ -1,11 +1,13 @@
-using PlcSiemens.Core.Extension;
-using ServiceCenter.Extensions;
+using ServiceCenter.Extensions;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
 using WCS.Core;
 using WCS.Entity;
+using WCS.WorkEngineering.Extensions;
 using WCS.WorkEngineering.Protocol.Station;
+using WCS.WorkEngineering.WebApi.Controllers;
 using WCS.WorkEngineering.Worlds;
+using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
 using TaskStatus = WCS.Entity.TaskStatus;
 
 namespace WCS.WorkEngineering.Systems
@@ -15,45 +17,61 @@ namespace WCS.WorkEngineering.Systems
     /// </summary>
     [BelongTo(typeof(RingWorld))]
     [Description("环形库码垛区补空托盘任务生成")]
-    public class 环形库码垛区补空托盘任务生成 : DeviceSystem<Device<IStation520>>
+    public class 环形库码垛区补空托盘任务生成 : DeviceSystem<Device<IStation520, IStation521, IStation523>>
     {
         protected override bool ParallelDo => true;
 
         protected override bool SaveLogsToFile => true;
 
-        public override void Do(Device<IStation520> obj)
+        public override void Do(Device<IStation520, IStation521, IStation523> obj)
         {
-            WCS_Palletizing palletizing = null;
+            if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status)) return;
+            WCS_TaskInfo deliveryTask = null;
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
-                //取一个时间最靠前的,没有绑定码垛工位的码垛记录
-                var palletizingInfo = db.Queryable<WCS_Palletizing>().First(x => x.PalletizingStation == null);
-                if (palletizingInfo == null) return;
-                var palleTask = db.Queryable<WCS_TaskInfo>().First(x => x.ID == palletizingInfo.TaskId && (x.Status == TaskStatus.FinishOfShunt || x.Status == TaskStatus.ConveyorExecution));
-                if (palleTask == null) return;
-                //获取可以使用的放货站台信息
-                var taskAddNext = Device.All.FirstOrDefault(x => x.Code == palleTask.AddrNext).Targets.FirstOrDefault().Targets.FirstOrDefault().Targets;
-                if (taskAddNext == null) return;
-                var devs = Device.All.Where(x => taskAddNext.Contains(x)).Select(x => new Device<IStation520, IStation521, IStation523>(x, World)).ToList();
-                //取一个可用用于码垛的地方
-                var dev = devs.FirstOrDefault(x => !x.Data3.Status.HasFlag(StationStatus.PH_Status));
-                if (dev == null) return;
+                //检查是否有待执行状态放货点是自己的出库任务
+                var ringTask = db.Queryable<WCS_TaskInfo>().First(x => x.Type == TaskType.OutDepot && x.Status == TaskStatus.WaitingToExecute && x.SrmStation == obj.Entity.Code);
+                if (ringTask == null)
+                {
+                    //开始申请码垛任务
+                    WmsApi.ApplyPalletizingStockOut(obj.Entity.Code, obj.Entity.Targets.Single(x => x.HasFlag(DeviceFlags.Robot)).Code);
+                    return;
+                }
+                var task = db.Queryable<WCS_TaskInfo>().First(x => x.Type == TaskType.Delivery && x.AddrTo == obj.Entity.Code);
+                if (task != null) return;
+                //开始获取当前地址上个设备的上一个设备中的非零九托盘拆机
+                var addrFrom = obj.Entity.Targets.SelectMany(x => x.Targets).Single(x => x.HasFlag(DeviceFlags.拆盘机非09));
 
-                palletizingInfo.PalletizingStation = dev.Entity.Code;
-                db.Updateable(palletizingInfo).ExecuteCommand();
-                palletizing = palletizingInfo;
+                //开始创建搬运任务
+                task = new WCS_TaskInfo()
+                {
+                    AddrFrom = addrFrom.Code,
+                    AddrTo = obj.Entity.Code,
+                    BarCode = "码垛托盘搬运-" + obj.Entity.Code,
+                    Status = Entity.TaskStatus.NewBuild,
+                    PalletType = ringTask.PalletType,
+                    FullQty = ringTask.FullQty,
+                    Type = TaskType.Delivery,
+                    AddWho = "WCS",
+                    AddTime = DateTime.Now
+                };
+                var res = db.Insertable(task).ExecuteReturnEntity();
+                var taskOld = res.Mapper<WCS_TaskOld, WCS_TaskInfo>();
+                db.Insertable(taskOld).SplitTable().ExecuteCommand();
+                res.AddWCS_TASK_DTL(db, obj.Entity.Code, task.AddrTo, "初始化码垛托盘搬运任务");
+                deliveryTask = task;
             });
-            if (palletizing == null) return;
-            //TODO:取货地址暂时写死,后续依靠任务进行计算
-            var dev = Device.All.Where(x => x.Code == "1606").Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
-            dev.Data.TaskNumber = palletizing.Id;
-            dev.Data.GoodsEnd = palletizing.PalletizingStation!.ToShort();
+
+            if (deliveryTask == null) return;
+            var dev = Device.All.Where(x => x.Code == deliveryTask.AddrFrom).Select(x => new Device<IStation520>(x, World)).FirstOrDefault();
+            dev.Data.TaskNumber = deliveryTask.ID;
+            dev.Data.GoodsEnd = deliveryTask.AddrTo.ToShort();
         }
 
         public override bool Select(Device dev)
         {
-            return dev.Code == nameof(环形库码垛区补空托盘任务生成);
+            return dev.HasFlag(DeviceFlags.环形库码垛工位);
         }
     }
 }

+ 13 - 7
WCS.WorkEngineering/Systems/环形库/环形库码垛结束.cs

@@ -9,6 +9,7 @@ using WCS.WorkEngineering.Protocol.Station;
 using WCS.WorkEngineering.WebApi.Controllers;
 using WCS.WorkEngineering.Worlds;
 using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
+using TaskStatus = WCS.Entity.TaskStatus;
 
 namespace WCS.WorkEngineering.Systems.环形库
 {
@@ -34,19 +35,24 @@ namespace WCS.WorkEngineering.Systems.环形库
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
-
-                var TaskNoList = obj.Data5.GetTaskNoList().ToList();
-                var tasks = db.Queryable<WCS_TaskOld>().SplitTable(x => x.Take(2)).Where(x => TaskNoList.Contains(x.Id)).ToList();
-
-                var taskInfo = db.Queryable<WCS_TaskInfo>().Single(x => x.BarCode == "TPA0000001" && x.Status == Entity.TaskStatus.WaitingToExecute);
+                var taskNoList = obj.Data5.GetTaskNoList().ToList();
+                var tasks = db.Queryable<WCS_TaskOld>().SplitTable(x => x.Take(2)).Where(x => taskNoList.Contains(x.Id)).ToList();
+                var taskInfo = db.Queryable<WCS_TaskInfo>().Single(x => x.Type == TaskType.EnterDepot && x.AddrFrom == obj.Entity.Code);
                 if (taskInfo == null)
                 {
+                    //开始获取当前位置的空托盘搬运任务信息
+                    var cbrCode = db.Queryable<WCS_TaskInfo>().First(x => x.Status == TaskStatus.RgvCompleted && x.ID == obj.Data2.TaskNumber);
                     //开始绑盘
-                    WmsApi.BingPallet("TPA0000001", tasks.Select(x => x.BarCode).ToList(), tasks.First().WarehouseCode, obj.Entity.Code);
+                    WmsApi.BingPallet(cbrCode.BarCode, tasks.Select(x => x.BarCode).ToList(), tasks.First().WarehouseCode, obj.Entity.Code);
                     return;
                 }
                 if (taskInfo.Status != Entity.TaskStatus.WaitingToExecute) return;
-
+                var deliveryTask = db.Queryable<WCS_TaskInfo>().First(x => x.Status == TaskStatus.RgvCompleted && x.ID == obj.Data2.TaskNumber);
+                if (deliveryTask == null) return;
+                deliveryTask.Status = TaskStatus.Finish;
+                deliveryTask.EedTime = DateTime.Now;
+                db.Updateable(deliveryTask).ExecuteCommand();
+                deliveryTask.AddWCS_TASK_DTL(db, obj.Entity.Code, $"任务结束");
                 task = taskInfo;
             });
             if (task == null) return;

+ 4 - 6
WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

@@ -198,9 +198,8 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 task.EedTime = DateTime.Now;
                                 task.EditWho = req.User;
                                 task.ManualRemarks = req.ManualRemarks;
-                                task.AddWCS_TASK_DTL(db.Default, "未知", "任务取消");
                                 db.Default.Updateable(task).ExecuteCommand();
-                                task.CompleteOrCancelTasks(db.Default);
+                                task.AddWCS_TASK_DTL(db.Default, "未知", "任务取消");
                             }
                             else
                             {
@@ -284,9 +283,8 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                         task.EedTime = DateTime.Now;
                                         task.EditWho = req.User;
                                         task.ManualRemarks = req.ManualRemarks;
-                                        task.AddWCS_TASK_DTL(db.Default, "未知", "任务完成");
                                         db.Default.Updateable(task).ExecuteCommand();
-                                        task.CompleteOrCancelTasks(db.Default);
+                                        task.AddWCS_TASK_DTL(db.Default, "未知", "任务完成");
                                         break;
                                     }
                                 case TaskType.EnterDepot:
@@ -359,9 +357,9 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                         task.EedTime = DateTime.Now;
                                         task.EditWho = req.User;
                                         task.ManualRemarks = req.ManualRemarks;
-                                        task.AddWCS_TASK_DTL(db.Default, "未知", "任务完成");
+
                                         db.Default.Updateable(task).ExecuteCommand();
-                                        task.CompleteOrCancelTasks(db.Default);
+                                        task.AddWCS_TASK_DTL(db.Default, "未知", "任务完成");
                                         break;
                                     }
                                 case TaskType.SetPlate:

+ 1 - 0
WCS.WorkEngineering/WebApi/Controllers/WmsApi.cs

@@ -434,6 +434,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                 "2727" => "1S",
                 "2728" => "1S",
                 "1606" => "1N",
+                "1666" => "1NR",
                 _ => "",
             };
         }

+ 2 - 2
WCS.WorkEngineering/WorkStart.cs

@@ -28,7 +28,7 @@ namespace WCS.WorkEngineering
         {
             #region 无交互触发设备
 
-            var devs = new List<string>() { nameof(分线计算09), nameof(环形库码垛区补空托盘任务生成), nameof(桁架码垛区补空托盘任务生成) };
+            var devs = new List<string>() { nameof(分线计算09), nameof(桁架码垛区补空托盘任务生成) };
             foreach (var conv in devs.Select(code => new Device(code)))
             {
                 conv.AddProtocol<IStation520>(0, 520, "1");
@@ -552,7 +552,7 @@ namespace WCS.WorkEngineering
                 { DeviceFlags.桁架取货点, new List<string>(){ "461", "475", "489", "503","517","531" } },
                 { DeviceFlags.拆盘机09, new List<string>(){ "1606" } },
                 { DeviceFlags.拆盘机非09, new List<string>(){ "1602" } },
-                { DeviceFlags.码垛位09, new List<string>(){ "1670", "1671", "1672", "1673", "1674", "1675" } },
+                { DeviceFlags.桁架码垛位, new List<string>(){ "1670", "1671", "1672", "1673", "1674", "1675" } },
                 { DeviceFlags.环形库码垛工位, new List<string>(){ "1666" } },
                 { DeviceFlags.AGV取货站台口, new List<string>(){ "2533", "2534", "2734" } },
                 { DeviceFlags.Robot, new List<string>(){ "Robot1" } },