|
@@ -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)
|