From 5693ef6ed2cd3efdfacb7c41940b92c1fed4cb52 Mon Sep 17 00:00:00 2001 From: majian <780924089@qq.com> Date: Thu, 1 Aug 2024 13:57:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=9F=E6=9D=90=E6=96=99=E4=BB=93=E3=80=81?= =?UTF-8?q?=E4=B8=AD=E5=82=A8=E4=BB=93=E5=87=BA=E5=85=A5=E5=BA=93=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.WarehouseMgr/BaseWareHouseService.cs | 3 ++ .../Tnb.WarehouseMgr/DeviceProviderService.cs | 9 +----- .../Tnb.WarehouseMgr/WareHouseService.cs | 15 ++++++++++ .../WmsEmptyInstockService.cs | 8 +++++ .../WmsEmptyOutstockService .cs | 9 +++++- .../WmsMaterialTransferService.cs | 12 ++++---- .../WmsPDAEmptyInstockService.cs | 9 +++++- .../WmsPDAEmptyOutstockService .cs | 8 +++++ .../Tnb.WarehouseMgr/WmsPrdInstockHService.cs | 29 ++++++++++++++++++- 9 files changed, 85 insertions(+), 17 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs index 977a1e94..4a97c259 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/BaseWareHouseService.cs @@ -52,6 +52,9 @@ namespace Tnb.WarehouseMgr public static SemaphoreSlim _s_taskExecuteSemaphore_YCLOutstock = new(1); + public static SemaphoreSlim _s_taskExecuteSemaphore_F1ZCCInstock = new(1); + public static SemaphoreSlim _s_taskExecuteSemaphore_F1ZCCOutstock = new(1); + protected static Dictionary _s_eleUseStatusDic; protected IEventPublisher? EventPublisher { set; get; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs index 44a4019e..7e580996 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/DeviceProviderService.cs @@ -698,14 +698,7 @@ namespace Tnb.WarehouseMgr { var disTask = await _db.Queryable().FirstAsync(it => it.bill_code == input.taskCode); - /* 20240627 记录异常情况: WCS给我们发取货完成信号之后,如果我们返回了异常 WCS会一直重试20次,但是AGV已经取货走了,并成功送到库位,此时会给我们反馈放货信号, - * 但是由于取货信号一直返回异常,WCS还是会一直重试,会出现我们收到到货信号后又会收到取货信号的异常情况,这里加个任务执行状态判断,用于避免这种情况 - */ - //if (disTask.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID) - //{ - // return await ToApiResult(HttpStatusCode.OK, "此任务"); - //} - + Logger.Information($"【TaskCallback】 【接收】{input.taskCode} WCS信号 任务状态上报->接收参数:{JsonConvert.SerializeObject(input)}"); try { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index d36b6cb1..e844aa43 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -98,6 +98,17 @@ namespace Tnb.WarehouseMgr get { return _s_taskExecuteSemaphore_YCLOutstock; } } + public SemaphoreSlim s_taskExecuteSemaphore_F1ZCCInstock + { + get { return _s_taskExecuteSemaphore_F1ZCCInstock; } + } + + public SemaphoreSlim s_taskExecuteSemaphore_F1ZCCOutstock + { + get { return _s_taskExecuteSemaphore_F1ZCCOutstock; } + } + + public WareHouseService(ISqlSugarRepository repository, IDictionaryDataService dictionaryDataService, StackExRedisHelper redisData, IBillRullService billRullService, IUserManager userManager, ICacheManager cacheManager, IElevatorControlService elevatorControlService, IWmsCarryBindService wmsCarryBindService, @@ -3226,6 +3237,9 @@ namespace Tnb.WarehouseMgr BasLocation startLocation = null; int index = 0; + + await _s_taskExecuteSemaphore_F1ZCCInstock.WaitAsync(); + await _db.Ado.BeginTranAsync(); foreach (WmsCarryD wmsCarryD in wmsCarryCodes) { @@ -3316,6 +3330,7 @@ namespace Tnb.WarehouseMgr } finally { + _s_taskExecuteSemaphore_F1ZCCInstock.Release(); s_floor2CreatePretask.Release(); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs index 39295b61..c1c8d476 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyInstockService.cs @@ -68,6 +68,10 @@ namespace Tnb.WarehouseMgr } public async Task WmsEmptyIn(VisualDevModelDataCrInput input) { + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + await _s_taskExecuteSemaphore_F1ZCCInstock.WaitAsync(); + } try { await _db.Ado.BeginTranAsync(); @@ -217,6 +221,10 @@ namespace Tnb.WarehouseMgr } finally { + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + _s_taskExecuteSemaphore_F1ZCCInstock.Release(); + } //向队列写入消息 await InvokeGenPretaskExcute(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs index 0dc25481..aface6f8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs @@ -65,7 +65,10 @@ namespace Tnb.WarehouseMgr public async Task WmsEmptyOut(VisualDevModelDataCrInput input) { - + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + await _s_taskExecuteSemaphore_F1ZCCOutstock.WaitAsync(); + } try { await _db.Ado.BeginTranAsync(); @@ -257,6 +260,10 @@ namespace Tnb.WarehouseMgr } finally { + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + _s_taskExecuteSemaphore_F1ZCCOutstock.Release(); + } await InvokeGenPretaskExcute(); } return Task.FromResult(true); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 94f7b913..101b9668 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -468,7 +468,7 @@ namespace Tnb.WarehouseMgr } }); - await s_taskDistributeYCL2ZCC.WaitAsync(); + await _s_taskExecuteSemaphore_F1ZCCInstock.WaitAsync(); WmsMaterialTransferD wmsMaterialTransferD = await _db.Queryable().FirstAsync(it => it.id == input.source_id); WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().FirstAsync(it => it.id == wmsMaterialTransferD.bill_id); @@ -561,7 +561,7 @@ namespace Tnb.WarehouseMgr } finally { - _ = s_taskDistributeYCL2ZCC.Release(); + _s_taskExecuteSemaphore_F1ZCCInstock.Release(); InvokeGenPretaskExcute(); } @@ -1111,7 +1111,7 @@ namespace Tnb.WarehouseMgr [HttpPost, NonUnify, AllowAnonymous] public async Task DistributeToZCC(MaterialTransferDistributeToZCCInput input) { - s_taskDistributeToZCC.Wait(); + await _s_taskExecuteSemaphore_F1ZCCOutstock.WaitAsync(); try { @@ -1239,7 +1239,7 @@ namespace Tnb.WarehouseMgr } finally { - s_taskDistributeToZCC.Release(); + _s_taskExecuteSemaphore_F1ZCCOutstock.Release(); InvokeGenPretaskExcute(); } return await ToApiResult(HttpStatusCode.OK, "成功"); @@ -1254,7 +1254,7 @@ namespace Tnb.WarehouseMgr [HttpPost, NonUnify, AllowAnonymous] public async Task DistributeZCCToYCL(MaterialTransferDistributeToZCCInput input) { - s_taskDistributeZCCToYCL.Wait(); + await _s_taskExecuteSemaphore_F1ZCCOutstock.WaitAsync(); try { @@ -1375,7 +1375,7 @@ namespace Tnb.WarehouseMgr } finally { - s_taskDistributeZCCToYCL.Release(); + _s_taskExecuteSemaphore_F1ZCCOutstock.Release(); ; InvokeGenPretaskExcute(); } return await ToApiResult(HttpStatusCode.OK, "成功"); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs index 387af090..1b46ef5e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyInstockService.cs @@ -57,7 +57,10 @@ namespace Tnb.WarehouseMgr private async Task PDAWmsEmptyIn(VisualDevModelDataCrInput input) { - + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + await _s_taskExecuteSemaphore_F1ZCCInstock.WaitAsync(); + } try { await _db.Ado.BeginTranAsync(); @@ -178,6 +181,10 @@ namespace Tnb.WarehouseMgr } finally { + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + _s_taskExecuteSemaphore_F1ZCCInstock.Release(); + } await InvokeGenPretaskExcute(); } return Task.FromResult(true); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs index 8a95534d..1c580d87 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs @@ -59,6 +59,10 @@ namespace Tnb.WarehouseMgr private async Task PDAWmsEmptyOut(VisualDevModelDataCrInput input) { + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + await _s_taskExecuteSemaphore_F1ZCCOutstock.WaitAsync(); + } try { Logger.Information("开始PDA空载具出库"); @@ -231,6 +235,10 @@ namespace Tnb.WarehouseMgr } finally { + if (input.data[nameof(OutStockStrategyQuery.warehouse_id)].ToString() == WmsWareHouseConst.WAREHOUSE_ZC_ID) + { + _s_taskExecuteSemaphore_F1ZCCOutstock.Release(); + } await InvokeGenPretaskExcute(); } return Task.FromResult(true); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs index 4868a0e2..43ac200e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs @@ -60,6 +60,8 @@ namespace Tnb.WarehouseMgr var db = _db; if (dbConn != null) db = dbConn; + + string type = ""; try { await db.Ado.BeginTranAsync(); @@ -67,7 +69,6 @@ namespace Tnb.WarehouseMgr WmsPrdInstockH prdInstockH = db.Queryable().Where(r => r.prd_bill_code == input.prd_bill_code).First(); string prd_instock_code_id = ""; - string type = ""; // 新建主表 if (prdInstockH == null) { @@ -142,6 +143,19 @@ namespace Tnb.WarehouseMgr await db.Insertable(WmsPrdInstockCodes).ExecuteCommandAsync(); + if (type == "25019163616533") + { + await _s_taskExecuteSemaphore_F1ZCCInstock.WaitAsync(); + } + else if (type == "25019172714005") + { + await _s_taskExecuteSemaphore_F1ZCCInstock.WaitAsync(); + } + else if (type == "25019191681045") + { + + } + foreach (WmsPrdInstockD wmsPrdInstockD in WmsPrdInstockDs) { //入库取终点 @@ -275,6 +289,19 @@ namespace Tnb.WarehouseMgr } finally { + if (type == "25019163616533") + { + _s_taskExecuteSemaphore_F1ZCCInstock.Release(); + } + else if (type == "25019172714005") + { + _s_taskExecuteSemaphore_F1ZCCInstock.Release(); + } + else if (type == "25019191681045") + { + + } + _wareHouseService.GenTaskExecute(); }