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