Browse Source

桁架单侧最大抓取数量改为可配置

林豪 左 9 months ago
parent
commit
8581200024
1 changed files with 51 additions and 16 deletions
  1. 51 16
      YWGC/FJK/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs

+ 51 - 16
YWGC/FJK/WCS.WorkEngineering/Systems/桁架码垛/桁架.cs

@@ -195,28 +195,63 @@ 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 >= maxQuantity) //如果当前侧检查周期大于等于最大检查周期,切换到另一侧
-            {
-                obj.Entity.SetFlag(warehouseCode, 0);
-                warehouseCode = warehouseCode == "N" ? "S" : "N"; //如果是北侧切换到南侧  如果是南侧切换到北侧
-                quantity = obj.Entity.GetFlag<int>(warehouseCode); //获取南库的侧执行的次数
-                obj.Entity.SetFlag<string>("warehouseCode", warehouseCode);
-            }
+            var warehouseCodeKey = "warehouseCode";
+            var warehouseCode = obj.Entity.GetFlag<string>(warehouseCodeKey); //获取当前侧对应的Key
+            // 获取当前侧的执行次数
+            var quantity = obj.Entity.GetFlag<int>(warehouseCode);
+            //南北库的默认周期检查比为3:3
+            var maxQuantity = 3; 
 
             List<WCS_PalletizingRow> palletizingRowList = null;
             WCS_Palletizing palletizing = null;
             SqlSugarHelper.Do(_db =>
             {
                 var db = _db.Default;
+
+                #region 获取当前优先执行侧
+
+                // 定义常量以避免魔法字符串
+                const string NORTH = "N";
+                const string SOUTH = "S";
+
+                // 判断当前仓库代码是否为空,若为空则初始化为北侧
+                if (string.IsNullOrEmpty(warehouseCode))
+                {
+                    warehouseCode = NORTH;
+                    obj.Entity.SetFlag(warehouseCodeKey, NORTH);
+                }
+                // 获取实体代码的最后一个字符
+                char lastCodeChar = obj.Entity.Code.Last();
+
+                // 构建配置代码
+                string configCode = $"FjHjNSMaxQuantity{lastCodeChar}{warehouseCode}";
+
+                // 从数据库中获取对应的配置项
+                var fjHjMaxQuantity = db.Queryable<fjSysConfig>().NoLock().First(x => x.Code==configCode);
+
+                maxQuantity = fjHjMaxQuantity != null 
+                    ? Convert.ToInt32(fjHjMaxQuantity.SContent)
+                    : maxQuantity; // 设置一个默认值,以防配置未找到
+
+                // 检查当前侧的执行次数是否达到或超过最大值
+                if (quantity >= maxQuantity)
+                {
+                    // 重置当前侧的执行次数
+                    obj.Entity.SetFlag(warehouseCode, 0);
+    
+                    // 切换到另一侧
+                    warehouseCode = (warehouseCode == NORTH) ? SOUTH : NORTH;
+    
+                    // 获取新侧的执行次数
+                    quantity = obj.Entity.GetFlag<int>(warehouseCode);
+    
+                    // 更新仓库代码标志
+                    obj.Entity.SetFlag(warehouseCodeKey, warehouseCode);
+                }
+
+
+                #endregion
+
                 //找到当前桁架所属所有还有层没结束的码垛记录信息,有对应托盘
                 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 && x.WarehouseCode.Contains(warehouseCode))