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), "堆垛机放货",true)] class 堆垛机放货 : DeviceWork> { protected override bool SelectDevice(WCS_DEVICE dev) { return "2056,2057,2041,2042,2027,2028".Split(',').Contains(dev.CODE) || dev.Is(DF.SC放货); } protected override void Do(Device dev) { if (Ltc.Do(dev, v => v.Data2.CONFIRM == true)) return; if (Ltc.Do(dev, v => v.Data.PH_STATUS == false)) return; if (Ltc.Do(dev, v => v.Data.TASKNUM > 0)) return; if (Ltc.Do(dev, v => v.Data2.TASKNUM == 0)) return; if (Ltc.Do(dev, v => v.Data.REQUEST == false)) { var msg = $"{dev.Entity.CODE}有货但无请求信号"; throw new Exception(msg); } var taskid = dev.Data2.TASKNUM; bool flag = false; DB.Do(db => { var task = db.Default.Set().Find(taskid); if (task == null) return; if (Ltc.Do(task, task => task.TYPE != TaskType.出库)) return; if (Ltc.Do(task, task => task.STATUS < WCS.Entity.TaskStatus.堆垛机完成)) { return; } if (Ltc.Do(task, task => task.WMSTASK > 0)) { if (task.PALLETTYPE == 0 && task.AgvTask == 0 && task.STATUS < WCS.Entity.TaskStatus.已完成) { task.STATUS = WCS.Entity.TaskStatus.已完成; task.UPDATETIME = DateTime.Now; task.ENDTIME = DateTime.Now; db.Default.SaveChanges(); Uploader.Upload(db); } } flag = true; }); if (flag) dev.Data2.CONFIRM = true; } } }