diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs index 8c48664c..f32e02a8 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -117,6 +117,8 @@ namespace Tnb.ProductionMgr public SemaphoreSlim s_taskF2KTPsupplement = new(1); public SemaphoreSlim s_taskYCLInternalTransfer = new(1); + public SemaphoreSlim s_elevatortask = new(1); + private StackExRedisHelper _redisData; private readonly IPrdInstockService _prdInstockService; private readonly ISqlSugarRepository _repository; @@ -1909,7 +1911,9 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA { try { - await _wareHouseService._s_GenTaskExecute.WaitAsync(); + if (s_elevatortask.CurrentCount == 0) + return; + await s_elevatortask.WaitAsync(); List elevatorTasks = db_ElevatorTaskExceptionHandle.Queryable() .Where(r => r.startlocation_code.Contains("DT") && r.endlocation_code.Contains("DT") && r.act_start_date == null && r.act_end_date == null && r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList(); @@ -1965,7 +1969,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA } else { - LoggerElevatorTask.LogError($"电梯 {e.elevator_code} 待执行的电梯任务数异常 目前是{group.Count()} 超过了两托"); + LoggerElevatorTask.LogError($"【ElevatorTaskExceptionHandle】电梯 {e.elevator_code} 待执行的电梯任务数异常 目前是{group.Count()} 超过了两托"); } } else @@ -1990,7 +1994,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA } finally { - _wareHouseService._s_GenTaskExecute.Release(); + s_elevatortask.Release(); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockD .cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockD .cs index 5c622694..4cd263bf 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockD .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockD .cs @@ -104,8 +104,6 @@ public partial class WmsTransferInstockD : BaseEntity     ///      public string? pi_code { get; set; } - - /// /// 库存地点 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockH.cs index eac49c41..d455c63c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsTransferInstockH.cs @@ -75,8 +75,6 @@ public partial class WmsTransferInstockH : BaseEntity     ///      public string? status { get; set; } - - /// /// 出库组织id /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index d9be781a..979f7db3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -747,9 +747,9 @@ namespace Tnb.WarehouseMgr { string number = devName.Replace("Elevator", ""); List elevatorTasks = _db.Queryable() - .Where(r => r.startlocation_code.Contains($"DT-1-{number}") && r.endlocation_code.Contains($"RC") && r.act_start_date == null && r.act_end_date == null + .Where(r => r.startlocation_code.Contains($"DT-1-{number}") && r.end_floor == 1 && r.start_floor == 1 && r.act_start_date == null && r.act_end_date == null && r.status != WmsWareHouseConst.TASK_BILL_STATUS_CANCEL_ID && r.status != WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID).ToList(); - Logger.Information($"【TaskCallback】{devName.Match(@"\d+")}#梯 仍有未取货任务{elevatorTasks}条 {string.Join(',', elevatorTasks.Select(r => r.bill_code))}"); + Logger.Information($"【TaskCallback】{devName.Match(@"\d+")}#梯 仍有未取货任务{elevatorTasks.Count}条 {string.Join(',', elevatorTasks.Select(r => r.bill_code))}"); if (elevatorTasks.Count == 0) { await _db.Updateable().SetColumns(r => new WmsElevatorH diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index dfa24234..95a9dfae 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -2436,33 +2436,34 @@ namespace Tnb.WarehouseMgr public async Task TaskExecuteAfter(TaskExecuteAfterUpInput input) { //更新任务执行表单据状态 + var db = _db.CopyNew(); try { - await _db.Ado.BeginTranAsync(); - _ = await _db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID, act_start_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); + await db.Ado.BeginTranAsync(); + + _ = await db.Updateable().SetColumns(it => new WmsDistaskH { status = WmsWareHouseConst.TASK_BILL_STATUS_RUNING_ID, act_start_date = DateTime.Now }).Where(it => input.disTaskIds.Contains(it.id)).ExecuteCommandAsync(); //清空载具库位数据 - var carryAndLocIds = await _db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).Select(it => new { it.carry_id, it.startlocation_id }).ToListAsync(); + var carryAndLocIds = await db.Queryable().Where(it => input.disTaskIds.Contains(it.id)).Select(it => new { it.carry_id, it.startlocation_id }).ToListAsync(); if (carryAndLocIds?.Count > 0) { List carryIds = carryAndLocIds.Select(x => x.carry_id).ToList(); - _ = await _db.Updateable().SetColumns(it => new WmsCarryH { location_id = null, location_code = null }).Where(it => carryIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await db.Updateable().SetColumns(it => new WmsCarryH { location_id = null, location_code = null }).Where(it => carryIds.Contains(it.id)).ExecuteCommandAsync(); } //更新起始库位,状态改为空闲、锁定状态,未锁定 if (carryAndLocIds?.Count > 0) { List startLocationIds = carryAndLocIds.Select(x => x.startlocation_id).ToList(); - _ = await _db.Updateable().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString(), is_lock = 0 }).Where(it => startLocationIds.Contains(it.id)).ExecuteCommandAsync(); + _ = await db.Updateable().SetColumns(it => new BasLocation { is_use = ((int)EnumCarryStatus.空闲).ToString(), is_lock = 0 }).Where(it => startLocationIds.Contains(it.id)).ExecuteCommandAsync(); } - await _db.Ado.CommitTranAsync(); - + await db.Ado.CommitTranAsync(); } catch (Exception ex) { Logger.Error("设备取返回操作失败", ex); - await _db.Ado.RollbackTranAsync(); + await db.Ado.RollbackTranAsync(); } } ///