using DBHelper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WCS.Core; using WCS.Entity; using WCS.Entity.Protocol; namespace WCS.Service.Works.Stations { [WorkTitle(typeof(ProductHandler), "RGV放货",true)] class RGV放货 : DeviceWork> { protected override bool SelectDevice(WCS_DEVICE dev) { var b = Device.Where(v => v.IsRGV()).Where(v => v.ROUTES.Any(d => d.NEXT == dev)).Any(); return b && !dev.Is(DF.拆盘) && dev.CODE != "2202"; return dev.Is(DF.RGV放货) && !dev.Is(DF.拆盘) && dev.CODE != "2202"; } protected override void Do(Device dev) { if (Ltc.Do(dev, v => v.Data2.CONFIRM == true)) { return; } if (Ltc.Do(dev, v => v.Data.REQUEST == false)) return; if (Ltc.Do(dev, v => v.Data.TASKNUM == 0)) throw new Exception("无任务号"); var taskid = dev.Data.TASKNUM; DB.Do(db => { var task = db.Default.Set().Find(taskid); if (task == null) throw new Exception("任务:" + taskid + "不存在"); //task.ADDRCURRENT = dev.Entity.CODE; db.Default.SaveChanges(); if (task.TYPE == TaskType.出库) { if (task.STATUS < WCS.Entity.TaskStatus.出库RGV执行) { task.STATUS = WCS.Entity.TaskStatus.出库RGV执行; task.UPDATETIME = DateTime.Now; db.Default.SaveChanges(); Uploader.Upload(db); } } if (task.ADDRTO == dev.Entity.CODE && task.TYPE == TaskType.输送) { task.STATUS = WCS.Entity.TaskStatus.已完成; task.UPDATETIME = DateTime.Now; task.ENDTIME = DateTime.Now; db.Default.SaveChanges(); } var next = Ltc.Do(dev, v => v.Entity.GetNext(task.TYPE == TaskType.出库 ? task.ADDRNEXT : task.ADDRTO)); short nextCode = 0; if (next == null) nextCode = dev.Entity.Code(); else nextCode = next.Code(); dev.Data2.GOODSEND = nextCode; dev.Data2.TASKNUM = taskid; dev.Data2.GOODSCODE = task.DOCID; dev.Data2.GOODSSIZE = task.FULLQTY; dev.Data2.GOODSTYPE = task.PALLETTYPE; dev.Data2.HEIGHT = task.HEIGHT; dev.Data2.CONFIRM = true; }); } } }