Pārlūkot izejas kodu

Merge branch '分拣库' of http://120.77.11.229:3000/zuolinhao/WcsFramework into 分拣库

林豪 左 1 mēnesi atpakaļ
vecāks
revīzija
671faa549f

+ 14 - 0
YWGC/FJK/WCS.WorkEngineering/Extensions/DeviceExtension.cs

@@ -261,6 +261,20 @@ namespace WCS.WorkEngineering.Extensions
             data.VoucherNo = voucherNo;
         }
 
+        /// <summary>
+        ///  写入凭证
+        /// </summary>
+        /// <param name="data">写入凭证号的线体</param>
+        public static void SetVoucherNoForRobot(this IRobot530 data)
+        {
+            var voucherNo = data.VoucherNo;
+            if (voucherNo == -32767 || voucherNo == -32768) voucherNo = 1;
+            else voucherNo = (data.VoucherNo + 1).ToShort();
+
+            data.VoucherNo = voucherNo;
+            data.VoucherNo = voucherNo;
+        }
+
         /// <summary>
         ///  通过仓库编码获取对应堆垛机信息
         /// </summary>

+ 64 - 27
YWGC/FJK/WCS.WorkEngineering/Systems/RGVSystems.cs

@@ -85,35 +85,72 @@ namespace WCS.WorkEngineering.Systems
                                 var db = _db.Default;
 
                                 //检查库存表是否有残留库存信息
-                                if (db.Queryable<BillInvnow>().Any(x => x.ContGrpBarCode == bcrCode))
+                                var inv = db.Queryable<BillInvnow>().OrderByDescending(x => x.AddTime).First(x => x.ContGrpBarCode == bcrCode);
+                                if (inv != null && inv.IsTorsChk)
                                 {
-                                    //删除库存
-                                    var invNow = db.Queryable<BillInvnow>().Where(x => x.ContGrpBarCode == bcrCode).OrderByDescending(x => x.AddTime).First();
-                                    if (invNow.IsTorsChk) //是一楼码垛入库
+                                    switch (inv.InvStateCode)
                                     {
-                                        db.DeleteableRowLock(invNow).ExecuteCommand(); //删除库存
-
-                                        var invInit = db.Queryable<BillInvinit>().Where(x => x.ContGrpBarCode == bcrCode).OrderByDescending(x => x.AddTime).First();
-                                        db.DeleteableRowLock(invInit).ExecuteCommand();//删除条码
-
-                                        var taskInfos = db.Queryable<WCS_TaskInfo>().Where(x => x.BarCode == bcrCode && x.Status == TaskStatus.NewBuild && x.BusType == "人工满托入库"
-                                        || (x.BusType == "重绕满托入库" && x.Status == TaskStatus.WaitingToExecute)).ToList();
-                                        if (!taskInfos.Any())
-                                        {
-                                            World.Log($"未找到托盘条码{bcrCode}对应任务,请联系智能制造组人员确认", LogLevelEnum.Mid);
-                                            return;
-                                        }
-                                        foreach (var task in taskInfos)
-                                        {
-                                            //取消任务
-                                            task.Status = TaskStatus.Cancel;
-                                            task.ManualRemarks = "托盘已使用,需在二楼组盘";
-                                            db.Updateable(task).ExecuteCommand();
-                                            task.AddWCS_TASK_DTL(db, obj.Entity.Code, "", "取消任务");
-                                        }
+                                        case "InvEcecState_BuildUp":
+                                            db.DeleteableRowLock(inv).ExecuteCommand(); //删除库存
+
+                                            var invInit = db.Queryable<BillInvinit>().Where(x => x.ContGrpBarCode == bcrCode).OrderByDescending(x => x.AddTime).First();
+                                            db.DeleteableRowLock(invInit).ExecuteCommand();//删除条码
+
+                                            var taskInfos = db.Queryable<WCS_TaskInfo>().Where(x => x.BarCode == bcrCode && x.Status == TaskStatus.NewBuild && x.BusType == "人工满托入库"
+                                            || (x.BusType == "重绕满托入库" && x.Status == TaskStatus.WaitingToExecute)).ToList();
+                                            if (!taskInfos.Any())
+                                            {
+                                                World.Log($"未找到托盘条码{bcrCode}对应任务,请联系智能制造组人员确认", LogLevelEnum.Mid);
+                                                return;
+                                            }
+                                            foreach (var task in taskInfos)
+                                            {
+                                                //取消任务
+                                                task.Status = TaskStatus.Cancel;
+                                                task.ManualRemarks = "托盘已使用,需在二楼组盘";
+                                                db.Updateable(task).ExecuteCommand();
+                                                task.AddWCS_TASK_DTL(db, obj.Entity.Code, "", "取消任务");
+                                            }
+                                            break;
+                                        case "InvEcecState_In":
+                                            World.Log($"托盘条码{bcrCode}已有对应库存信息,请确认条码是否重复并更换!", LogLevelEnum.Mid);
+                                            break;
+                                        case "InvEcecState_OutGoing":
+                                            World.Log($"【{obj.Entity.Code}】上的托盘 【{bcrCode}】存在出库中库存信息,请检查对应托盘条码是否存在未完成的出库任务!!!!!", LogLevelEnum.High);
+                                            break;
                                     }
-
-                                    World.Log($"【{obj.Entity.Code}】上的托盘 【{bcrCode}】存在历史库存信息,请检查对应托盘条码是否存在未完成的出库任务!!!!!", LogLevelEnum.High);
+#region 1
+                                    //删除库存
+                                    //var invNow = db.Queryable<BillInvnow>().Where(x => x.ContGrpBarCode == bcrCode).OrderByDescending(x => x.AddTime).First();
+                                    //if (invNow.IsTorsChk) //是一楼码垛入库
+                                    //{
+                                    //    db.DeleteableRowLock(invNow).ExecuteCommand(); //删除库存
+
+                                    //    var invInit = db.Queryable<BillInvinit>().Where(x => x.ContGrpBarCode == bcrCode).OrderByDescending(x => x.AddTime).First();
+                                    //    db.DeleteableRowLock(invInit).ExecuteCommand();//删除条码
+
+                                    //    var taskInfos = db.Queryable<WCS_TaskInfo>().Where(x => x.BarCode == bcrCode && x.Status == TaskStatus.NewBuild && x.BusType == "人工满托入库"
+                                    //    || (x.BusType == "重绕满托入库" && x.Status == TaskStatus.WaitingToExecute)).ToList();
+                                    //    if (!taskInfos.Any())
+                                    //    {
+                                    //        World.Log($"未找到托盘条码{bcrCode}对应任务,请联系智能制造组人员确认", LogLevelEnum.Mid);
+                                    //        return;
+                                    //    }
+                                    //    foreach (var task in taskInfos)
+                                    //    {
+                                    //        //取消任务
+                                    //        task.Status = TaskStatus.Cancel;
+                                    //        task.ManualRemarks = "托盘已使用,需在二楼组盘";
+                                    //        db.Updateable(task).ExecuteCommand();
+                                    //        task.AddWCS_TASK_DTL(db, obj.Entity.Code, "", "取消任务");
+                                    //    }
+                                    //}                                
+                                    //return;
+#endregion
+                                }
+                                else if(inv != null)
+                                {
+                                    World.Log($"【{obj.Entity.Code}】上的托盘 【{bcrCode}】存在对应库存信息,请检查确认!!!", LogLevelEnum.High);
                                     return;
                                 }
 
@@ -278,7 +315,7 @@ namespace WCS.WorkEngineering.Systems
                                         var dest = new Device<IRobot530>(destPosition!, World);
                                         dest.Data.MaxQuantity = countQty;
                                         dest.Data.Type = shortCode;
-                                        dest.Data.VoucherNo++;
+                                        dest.Data.SetVoucherNoForRobot();
                                         World.Log($"任务处理:写入码垛信息-码垛位[{dest.Entity.Code}]最大码垛数量[{dest.Data.MaxQuantity}]垛形[{dest.Data.Type}]凭证号[{dest.Data.VoucherNo}]");
                                     }
                                 }