林豪 左 2 роки тому
батько
коміт
4691e78b42

+ 33 - 21
Projects/永冠OPP/WCS.Service/Works/Station/涂布出库.cs

@@ -228,11 +228,6 @@ namespace WCS.Service.Works.Station
                 //获取需要执行的设备信息
                 foreach (var dev in stationDeviceGroup.Items)
                 {
-                    if (!dev.Data3.Status.HasFlag(StationStatus.低位))
-                    {
-                        InfoLog.INFO_INFO($"{dev.Entity.CODE}--不在低位");
-                        continue;
-                    }
                     if (!dev.Data2.Status.HasFlag(IstationStatus.光电状态))
                     {
                         InfoLog.INFO_INFO($"{dev.Entity.CODE}--没有光电");
@@ -270,35 +265,52 @@ namespace WCS.Service.Works.Station
 
                     var stationList = new List<FinishTaskList<WCS_TASK>>();
 
-                    //开始处理需要分配目标地址的设备
-                    foreach (var dev in devise)
+                    var G1340 = Device.Find("1340", "1341").Select(v => v.Create<StationDevice>());
+                    var G1343 = Device.Find("1343", "1344").Select(v => v.Create<StationDevice>());
+                    List<StationDevice> station = new List<StationDevice>();
+                    if (G1340.Any(v => v.Data3.Status.HasFlag(StationStatus.自动)
+                              && !v.Data3.Status.HasFlag(StationStatus.运行状态位)
+                              && !v.Data3.Status.HasFlag(StationStatus.有货状态位)
+                              && !v.Data2.Status.HasFlag(IstationStatus.光电状态)
+                              && v.Data2.Tasknum < 10000))
+                    {
+                        station.AddRange(G1340);
+                    }
+                    else if (G1343.Any(v => v.Data3.Status.HasFlag(StationStatus.自动)
+                              && !v.Data3.Status.HasFlag(StationStatus.运行状态位)
+                              && !v.Data3.Status.HasFlag(StationStatus.有货状态位)
+                              && !v.Data2.Status.HasFlag(IstationStatus.光电状态)
+                              && v.Data2.Tasknum < 10000))
                     {
-                        var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.ID == dev.Station.Data2.Tasknum) ?? throw new WarnException($"WCS无[{dev.Station.Data2.Tasknum}]任务信息");
+                        station.AddRange(G1343);
+                    }
+
+                    //先判断1340是否可以放货
+                    foreach (var dev in stationDeviceGroup.Items)
+                    {
+                        var task = db.Default.Set<WCS_TASK>().FirstOrDefault(v => v.ID == dev.Data2.Tasknum) ?? throw new WarnException($"WCS无[{dev.Data2.Tasknum}]任务信息");
                         var addNext = "";
-                        switch (dev.Station.Entity.CODE)
+                        switch (dev.Entity.CODE)
                         {
-                            case "1340":
+                            case "1337":
                                 {
                                     var station1343 = Device.Find("1343").Create<StationDevice>();
-                                    addNext = "1343";
-                                    if (!station1343.Data3.Status.HasFlag(StationStatus.自动) || station1343.Data2.Tasknum > 10000)
-                                        addNext = "1340";
+                                    addNext = station.OrderBy(v => v.Entity.CODE).FirstOrDefault().Entity.CODE;
+
                                     break;
                                 }
-                            case "1341":
+                            case "1338":
                                 {
                                     var station1344 = Device.Find("1344").Create<StationDevice>();
-                                    addNext = "1344";
-                                    if (!station1344.Data3.Status.HasFlag(StationStatus.自动) || station1344.Data2.Tasknum > 10000)
-                                        addNext = "1341";
+                                    addNext = station.OrderByDescending(v => v.Entity.CODE).FirstOrDefault().Entity.CODE;
                                     break;
                                 }
                         }
 
                         task.ADDRNEXT = addNext;
                         task.CreateStatusLog(db, $"涂布出库分配AGV取货点{addNext}", this.GetType());
-                        finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Station));
-                        stationList.Add(new FinishTaskList<WCS_TASK>(task, dev.Station));
+                        finishTaskList.Add(new FinishTaskList<int>(task.ID, dev.Entity.Create<StationDevice>()));
+                        stationList.Add(new FinishTaskList<WCS_TASK>(task, dev.Entity.Create<StationDevice>()));
                     }
 
                     #region 校验两个地址是否一致
@@ -319,7 +331,7 @@ namespace WCS.Service.Works.Station
                             default:
                                 {
                                     var devise1 = stationList.Select(v => v.Station);
-                                    foreach (var dev in devise1)
+                                    foreach (var dev in devise1)                                                    
                                     {
                                         if (!dev.Data3.Status.HasFlag(StationStatus.自动)) throw new WarnException($"{dev.Entity.CODE}--不是自动");
                                         if (dev.Data2.Tasknum > 10000) throw new WarnException($"{dev.Entity.CODE}--已有任务");
@@ -356,7 +368,7 @@ namespace WCS.Service.Works.Station
 
         protected override bool SelectDevice(WCS_DEVICE dev)
         {
-            return dev.CODE == "G1340";
+            return dev.CODE == "G1337";
         }
     }