|
@@ -148,4 +148,61 @@ namespace WCS.Service.Works.Station
|
|
|
|
|
|
private List<string> devCodes = new List<string>() { "G1469", "G1561", "G1538", "G1574", "G1509" };
|
|
|
}
|
|
|
+
|
|
|
+ [WorkTitle(typeof(ProductHandler), "转圈交互点分配目标地址")]
|
|
|
+ public class 转圈交互点分配目标地址 : Work<StationDeviceGroup>
|
|
|
+ {
|
|
|
+ protected override void Do(StationDeviceGroup obj)
|
|
|
+ {
|
|
|
+ obj.EX(obj =>
|
|
|
+ {
|
|
|
+ if (obj.Items.Any(v => v.Data3.Status.HasFlag(StationStatus.运行状态位))) throw new DoException("运行中");
|
|
|
+ if (obj.Items.Any(v => v.Data.VoucherNo != v.Data2.VoucherNo)) throw new WarnException($"等待任务执行--凭证号不一致");
|
|
|
+
|
|
|
+ DB.Do(db =>
|
|
|
+ {
|
|
|
+ var devs = new List<FinishTaskList<string>>();
|
|
|
+ foreach (var dev in obj.Items)
|
|
|
+ {
|
|
|
+ //没有请求
|
|
|
+ if (dev.Data2.Request != IstationRequest.请求分配目标地址)
|
|
|
+ {
|
|
|
+ InfoLog.INFO_INFO($"{obj.Entity.CODE}无请求-分配目标地址--2");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //没有光电
|
|
|
+ if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
|
|
|
+ {
|
|
|
+ InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求无光电", obj.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
|
|
|
+ continue;
|
|
|
+ };
|
|
|
+ if (dev.Data2.Tasknum < 10000)
|
|
|
+ {
|
|
|
+ InfoLog.INFO_WarnDb($"{dev.Entity.CODE}有请求有光电无任务", obj.Entity.CODE, WCS_EXCEPTIONTYPE.设备异常);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ devs.Add(new FinishTaskList<string>(dev.Entity.CODE, dev.Entity.Create<StationDevice>()));
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var dev in devs)
|
|
|
+ {
|
|
|
+ var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.ID == dev.Station.Data2.Tasknum) ?? throw new WarnException("无任务");
|
|
|
+ var tasks = db.Default.Set<WCS_TASK>().Where(v => v.TaskGroupKey == task.TaskGroupKey);
|
|
|
+ if (devs.Count != tasks.Count()) throw new WarnException($"可执行任务数{devs.Count},实际任务数{tasks.Count()}");
|
|
|
+ dev.Station.Data.Tasknum = task.ID;
|
|
|
+ dev.Station.Data.Goodsstart = dev.Station.Entity.CODE.ToShort();
|
|
|
+ dev.Station.Data.Goodsend = task.ADDRNEXT.ToShort();
|
|
|
+ dev.Station.Data.Goodsnum = devs.Count.ToShort();
|
|
|
+ dev.Station.Data.CmdType = IstationCmdType.分配目标地址;
|
|
|
+ dev.Station.Data.VoucherNo++;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ protected override bool SelectDevice(WCS_DEVICE dev)
|
|
|
+ {
|
|
|
+ return dev.CODE == "G1389";
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|