林豪 左 3 anni fa
parent
commit
64ebf6bb26

+ 0 - 6
Projects/永冠OPP/WCS.Service/DeviceExtentions.cs

@@ -59,14 +59,8 @@ namespace WCS.Service
         /// <returns></returns>
         public static WCS_DEVICE GetPath(this WCS_DEVICE source, string endAddr)
         {
-            if (source.CODE == "TY7" && endAddr == "1340")
-            {
-                var c = 0;
-            }
             var q = source.PATHS.Where(v => v.START == source && v.END.CODE.Contains(endAddr.ToUpper()))
                 .Select(v => v.PATH.Split('-').Select(v => Device.Find(v)).ToList());
-            var a = source.PATHS.Where(v => v != null && v.START != null && v.END != null && v.START == source && v.END.CODE.Contains(endAddr.ToUpper()));
-            var b = a.Select(v => v.PATH.Split('-').Select(v => Device.Find(v)).ToList());
 
             return q.FirstOrDefault().FirstOrDefault();
         }

+ 72 - 1
Projects/永冠OPP/WCS.Service/Works/Station/涂布入库.cs

@@ -110,6 +110,77 @@ namespace WCS.Service.Works.Station
         }
     }
 
+    /// <summary>
+    /// 涂布扫码入库
+    /// </summary>
+    [WorkTitle(typeof(CoatingHandler), "涂布入库")]
+    public class 涂布扫码入库 : DeviceWork<StationDevice>
+    {
+        protected override void Do(StationDevice obj)
+        {
+            obj.EX(dev =>
+            {
+                var code = dev.Entity.CODE;
+                if (dev.Data.VoucherNo != dev.Data2.VoucherNo)
+                    throw new WarnException($"等待任务[{dev.Data2.Tasknum}]执行--凭证号不一致[{dev.Data.VoucherNo}][{dev.Data2.VoucherNo}]");
+                if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态)) throw new DoException("无光电");
+                if (dev.Data3.Status.HasFlag(StationStatus.运行状态位)) throw new DoException("设备运行中");
+                if (!dev.Data3.Status.HasFlag(StationStatus.低位)) throw new DoException("不在低位");
+                if (dev.Data2.Request != IstationRequest.扫码入库) throw new WarnException("有光电无请求");
+                if (dev.Data2.Tasknum > 10000) throw new WarnException("有光电有请求,但已生产任务");
+
+                var bcr = dev.Entity.BCR();
+                var barcode = bcr.Content.Trim('\r');
+                if (barcode == "") throw new WarnException("扫码失败");
+
+                var info = WMS.I_WCS_GetInTask(barcode, dev.Entity.CODE);
+                var next = dev.Entity.GetPath("SRM");
+                var station = dev.Entity.CODE;
+                DB.Do(db =>
+                {
+                    var arr = db.Default.Set<WCS_AGVTask>().Where(v => v.TaskType == AGVTaskType.入库 && v.Status == AGVTaskStatus.完成).Where(v => v.Station == station).ToArray();
+
+                    foreach (var t in arr)
+                    {
+                        t.Status = AGVTaskStatus.完成扫码;
+                        t.UpdateTime = DateTime.Now;
+                    }
+                    db.Default.SaveChanges();
+
+                    var task = new WCS_TASK();
+                    task.BARCODE = info.ContainerCode;
+                    task.TYPE = TaskType.入库;
+                    task.STATUS = TaskStatus.执行中;
+                    task.ADDRFROM = dev.Entity.CODE;
+                    task.ADDRTO = info.EndPostion;
+                    task.STARTTIME = DateTime.Now;
+                    task.UPDATEUSER = "WCS";
+                    task.UPDATETIME = DateTime.Now;
+                    task.WMSTASK = int.Parse(info.WMSTaskNum);
+                    task.TaskGroupKey = info.TaskGroupKey;
+                    task.ADDRNEXT = next.CODE;
+
+                    db.Default.Set<WCS_TASK>().Add(task);
+                    db.Default.SaveChanges();
+
+                    dev.Data.Tasknum = task.ID;
+                    dev.Data.Goodsstart = task.ADDRFROM.ToShort();
+                    dev.Data.Goodsend = task.ADDRNEXT.ToShort();
+                    dev.Data.CmdType = IstationCmdType.扫码入库;
+                    dev.Data.VoucherNo++;
+                    var msg = $"下达从{dev.Entity.CODE}移动至{next}的PLC指令。";
+                    msg += $"[{dev.Data.Tasknum}][{dev.Data.Goodsstart}][{dev.Data.Goodsend}][{dev.Data.VoucherNo}[{dev.Data2.VoucherNo}]";
+                    task.CreateStatusLog(db, msg, this.GetType());
+                });
+            });
+        }
+
+        protected override bool SelectDevice(WCS_DEVICE dev)
+        {
+            return dev.CODE == "1386" || dev.CODE == "1387" || dev.CODE == "1394" || dev.CODE == "1395";
+        }
+    }
+
     /// <summary>
     /// 涂布入库分配巷道
     /// </summary>
@@ -213,7 +284,7 @@ namespace WCS.Service.Works.Station
     /// <summary>
     /// 涂布入库分配巷道
     /// </summary>
-    [WorkTitle(typeof(CoatingHandler), "涂布入库分配巷道")]
+    //[WorkTitle(typeof(CoatingHandler), "涂布入库分配巷道")]
     public class 涂布入库旋转台二次分配巷道 : Work<StationDeviceGroup>
     {
         protected override void Do(StationDeviceGroup obj)