林豪 左 11 months ago
parent
commit
ba33ec49a1

+ 3 - 5
ServiceCenter/SqlSugars/SqlSugarHelper.cs

@@ -1,4 +1,6 @@
-using SqlSugar;
+using Microsoft.Data.SqlClient;
+using Newtonsoft.Json.Linq;
+using SqlSugar;
 using System.Data;
 
 namespace ServiceCenter.SqlSugars
@@ -154,10 +156,6 @@ namespace ServiceCenter.SqlSugars
             try
             {
                 db.Connect.BeginTran();//开始事务
-                if (_Default != "")
-                {
-                    //db.Default.Ado.CommandTimeOut = 60;
-                }
                 act(db);//执行委托
                 db.Connect.CommitTran();//提交事务
             }

+ 1 - 0
业务工程/分拣库/WCS.WorkEngineering/Extensions/FlagExtension.cs

@@ -21,6 +21,7 @@ namespace WCS.WorkEngineering.Extensions
                 if (typeof(T) == typeof(int)) device.AddFlag(key, default(int).ToString());
                 else if (typeof(T) == typeof(short)) device.AddFlag(key, default(bool).ToString());
                 else if (typeof(T) == typeof(bool)) device.AddFlag(key, default(bool).ToString());
+                else if (typeof(T) == typeof(string)) device.AddFlag(key, default);
             }
             var valeu = device.GetFlags(key).FirstOrDefault();
 

+ 23 - 6
业务工程/分拣库/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs

@@ -1,6 +1,5 @@
 using Newtonsoft.Json;
 using ServiceCenter.Extensions;
-using ServiceCenter.Logs;
 using ServiceCenter.SqlSugars;
 using System.ComponentModel;
 using WCS.Core;
@@ -184,6 +183,22 @@ namespace WCS.WorkEngineering.Systems
                 return;
             }
 
+            ////判断本次周期应该优先取哪一侧的任务
+            //var warehouseCode = obj.Entity.GetFlag<string>("warehouseCode"); //获取对应的Key
+            //if (warehouseCode == default(string)) //如果获取结果为默认值表示系统初始化,系统初始化时默认优先北侧
+            //{
+            //    warehouseCode = "N";
+            //    obj.Entity.SetFlag<string>("warehouseCode", "N");
+            //}
+            //var quantity = obj.Entity.GetFlag<int>(warehouseCode); //获取当前侧执行的次数
+            //var maxQuantity = 3; //南北库的周期检查比为3:3
+            //if (quantity >= quantity) //如果当前侧检查周期大于等于最大检查周期,切换到另一侧
+            //{
+            //    obj.Entity.SetFlag(warehouseCode, 0);
+            //    warehouseCode = warehouseCode == "N" ? "S" : "N"; //如果是北侧切换到南侧  如果是南侧切换到北侧
+            //    quantity = obj.Entity.GetFlag<int>(warehouseCode); //获取南库的侧执行的次数
+            //}
+
             List<WCS_PalletizingRow> palletizingRowList = null;
             WCS_Palletizing palletizing = null;
             SqlSugarHelper.Do(_db =>
@@ -191,7 +206,7 @@ namespace WCS.WorkEngineering.Systems
                 var db = _db.Default;
                 //找到当前桁架所属所有还有层没结束的码垛记录信息,有对应托盘
                 var palletizingLsit = db.Queryable<WCS_Palletizing>().Includes(x => x.Layers, r => r.Rows, l => l.Locs)
-                    .Where(x => !x.Finish && x.DeviceCode == obj.Entity.Code)
+                    .Where(x => !x.Finish && x.DeviceCode == obj.Entity.Code /*&& x.WarehouseCode.Contains(warehouseCode)*/)
                     .Where(x => x.Layers.Any(l => !l.Finish) && x.PalletizingStation != null).ToList();
                 //筛选出目标位置有光电的码垛记录信息
                 var devCode = palletizingLsit.Select(x => x.PalletizingStation);
@@ -203,6 +218,7 @@ namespace WCS.WorkEngineering.Systems
                 if (!devCode.Any())
                 {
                     World.Log($"无可用放货码垛位,请检查实际有货位置的光电是否正常");
+                    //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                     return;
                 }
 
@@ -224,6 +240,7 @@ namespace WCS.WorkEngineering.Systems
                 if (!cacheLines.Any())
                 {
                     World.Log($"无可用取货线体");
+                    //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                     return;
                 }
                 World.Log($"物理可用取货线体:{JsonConvert.SerializeObject(pickUpDevices.Select(x => x.key).ToList())}");
@@ -239,6 +256,7 @@ namespace WCS.WorkEngineering.Systems
                 if (!palletizingLsit.Any())
                 {
                     World.Log($"没有可用取货点,码垛信息是否正常");
+                    //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                     return;
                 }
 
@@ -326,8 +344,6 @@ namespace WCS.WorkEngineering.Systems
                         }
                     }
 
-                    rowList = rowList!.Take(1).ToList();
-
                     var palletizingRows = new List<WCS_PalletizingRow>();
 
                     foreach (var row in rowList)
@@ -362,9 +378,10 @@ namespace WCS.WorkEngineering.Systems
             if (palletizingRowList == null || !palletizingRowList.Any())
             {
                 World.Log($"没有可用任务");
+                //obj.Entity.SetFlag(warehouseCode, maxQuantity + 1); //当前侧无满足抓取条件的码垛信息直接进行切侧
                 return;
             }
-
+            //obj.Entity.SetFlag(warehouseCode, quantity + 1); //满足抓取条件,当前侧的执行周期加一
             for (var i = 0; i < palletizingRowList.Count; i++)
             {
                 var palletizingRow = palletizingRowList[i];
@@ -533,4 +550,4 @@ namespace WCS.WorkEngineering.Systems
             }
         }
     }
-}
+}