123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using DBHelper;
- using System;
- using System.Linq;
- using WCS.Core;
- using WCS.Entity;
- using WCS.Entity.Protocol;
- namespace WCS.Service.Works.Stations
- {
- [WorkTitle(typeof(ProductHandler), "成品外检")]
- public class 成品外检 : DeviceWork<Device<IStation521, IStation520>>
- {
- protected override bool SelectDevice(WCS_DEVICE dev)
- {
- return dev.CODE == "2181";
- }
- protected override void Do(Device<IStation521, IStation520> dev)
- {
- if (dev.Data2.CONFIRM)
- return;
- var code = dev.Entity.Code();
- if (Ltc.Do(dev, v => v.Data.REQUEST == false && v.Data.GOODSEND != code))
- return;
- var rgv = Device.Find("RGV2");
- var arr = rgv.ROUTES.Select(v => v.NEXT).Where(v => v.ROUTES.Any(d => d.NEXT.IsTunnel())).ToArray();
- var endStations = arr.Select(v => v.Device<IStation521, IStation520>()).ToArray();
- endStations = Ltc.Do(endStations, arr => arr.Where(v => v.Data.TASKNUM == 0 && v.Data.PH_STATUS == false).ToArray());
- if (endStations.Length == 0)
- {
- return;
- }
- DB.Do(db =>
- {
- var task = db.Default.Set<WCS_TASK>().Find(dev.Data.TASKNUM);
- if (task == null)
- {
- Ltc.Log("任务号:" + dev.Data.TASKNUM + "不存在");
- return;
- }
- //task.ADDRCURRENT = dev.Entity.CODE;
- task.UPDATETIME = DateTime.Now;
- db.Default.SaveChanges();
- if (Ltc.Do(task, task => task.TYPE == TaskType.入库))
- {
- if (Ltc.Do(task, task => string.IsNullOrEmpty(task.TUNNEL)))
- {
- var res = WMS.GetTunnelList(task.WMSTASK, dev.Entity.CODE);
- if (Ltc.Do(res, v => v.ResType == false))
- throw new Exception(res.ResMessage);
- var target = res.TunnelNum.Split(',').Select(v => endStations.FirstOrDefault(d => d.Entity.TunnelNum().ToString() == v))
- .Where(v => v != null)
- .Select(v => new { Conv = v, SC = v.Entity.ROUTES.First().NEXT.ROUTES.Where(v => v.NEXT.IsSC()).First().NEXT.Device<ISC521>() })
- .OrderBy(v =>
- {
- try
- {
- return v.SC.Data.Tunnel == v.Conv.Entity.TunnelNum() ? 0 : 1;
- }
- catch
- {
- return 99;
- }
- })
- .Select(v => v.Conv)
- .FirstOrDefault();
- if (target == null)
- throw new Exception($"巷道分配失败,{res.TunnelNum}");
- task.TUNNEL = target.Entity.Tunnel();
- task.ADDRTO = target.Entity.CODE;
- task.UPDATETIME = DateTime.Now;
- db.Default.SaveChanges();
- dev.Data2.TASKNUM = dev.Data.TASKNUM;
- dev.Data2.GOODSEND = target.Entity.Code();
- dev.Data2.GOODSSIZE = task.FULLQTY;
- dev.Data2.GOODSTYPE = task.PALLETTYPE;
- dev.Data2.CONFIRM = true;
- }
- }
- });
- }
- }
- }
|