From 03775c8a125ff161071e9c1e304442f06509b765 Mon Sep 17 00:00:00 2001 From: majian <780924089@qq.com> Date: Wed, 17 Jul 2024 11:23:23 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=99=E7=BD=AE=E4=BB=93=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E7=BC=96=E5=86=99=EF=BC=8C=E8=BF=94=E5=9B=9E=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20bug=EF=BC=8C=E5=8C=85=E6=9D=90=E5=87=BA?= =?UTF-8?q?=E5=BA=93=E9=80=BB=E8=BE=91=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.ProductionMgr/RedisBackGround.cs | 132 +++++++--- .../Consts/ModuleConsts.cs | 4 + .../Consts/WmsWareHouseConst.cs | 5 + ...terialTransferGetMaterialInventoryInput.cs | 6 + .../Entity/WmsPurchaseD.cs | 5 - .../Entity/WmsPurchaseH.cs | 10 - .../IWareHouseService.cs | 6 + .../IWmsEmptycarryInstockLogService.cs | 2 +- .../Tnb.WarehouseMgr/WareHouseService.cs | 30 +++ .../WmsEmptycarryInstockLogService.cs | 7 +- .../WmsMaterialTransferService.cs | 234 ++++++++++++++++-- .../WmsPDACarryBindService.cs | 12 +- .../Tnb.WarehouseMgr/WmsPDADeliveryService.cs | 5 +- .../Tnb.WarehouseMgr/WmsPackInstockService.cs | 10 +- .../Tnb.WarehouseMgr/WmsPrdInstockHService.cs | 4 +- .../Tnb.WarehouseMgr/WmsPrdReturnService.cs | 16 +- .../Tnb.WarehouseMgr/WmsSaleReleaseService.cs | 12 +- .../WmsSterilizationInstockHService.cs | 74 ++++++ 18 files changed, 467 insertions(+), 107 deletions(-) create mode 100644 WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs diff --git a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs index d4c8c0bb..24956a87 100644 --- a/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs +++ b/ProductionMgr/Tnb.ProductionMgr/RedisBackGround.cs @@ -102,7 +102,7 @@ namespace Tnb.ProductionMgr public SemaphoreSlim s_task送满托到下升降区 = new(1); public SemaphoreSlim s_task移走上升降区未生成预任务且满托的料架 = new(1); public SemaphoreSlim s_task移走下升降区未生成预任务且空托的料架 = new(1); - public SemaphoreSlim s_taskPackOutstockService = new(1); + //public SemaphoreSlim s_taskPackOutstockService = new(1); public SemaphoreSlim s_taskFloor4DMJ2MJXService = new(1); public SemaphoreSlim s_taskFloor4MJX2MJCService = new(1); public SemaphoreSlim s_taskFloor4DMC2CPKService = new(1); @@ -1490,7 +1490,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA { LoggerFloor2RackDelivery.LogWarning($"【移走上升降区满托的料架】找不到转库单{wmsMechanicalArmH.outbill}"); } - bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走上升降区未生成预任务且满托的料架, true, wmsMaterialTransferId); + bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走上升降区未生成预任务且满托的料架, "erp_qtrk", wmsMaterialTransferId); if (!result) { LoggerFloor2RackDelivery.LogError($"【移走上升降区满托的料架】 未成功生成预任务 起点{wmsMechanicalArmH.location_code} 终点{endLocation.location_code} 料架 {wmsMechanicalArmH.rackcode}"); @@ -1623,7 +1623,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA LoggerFloor2RackDelivery.LogInformation($"【移走下升降区空托的料架】 开始执行预任务生成: 料架区为{wmsMechanicalArmH.name}{wmsMechanicalArmH.stackingposition} 料架为{wmsMechanicalArmH.rackcode}"); - bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走下升降区未生成预任务且空托的料架, true); + bool result = await createPretask(wmsMechanicalArmH.location_id, endLocation.id, wmsMechanicalArmH.rackid, wmsMechanicalArmH.rackcode, LoggerFloor2RackDelivery, db_Floor2timer移走下升降区未生成预任务且空托的料架); if (!result) { LoggerFloor2RackDelivery.LogInformation($"【移走下升降区空托的料架】 未成功生成预任务 起点{wmsMechanicalArmH.location_code} 终点{endLocation.location_code} 料架 {wmsMechanicalArmH.rackcode}"); @@ -1672,7 +1672,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA } // 上下升降机生成预任务(补充料架、上升降机取货到料架、上升降机满托运走,下升降机拿货到输送线、下升降机空托运走) - private async Task createPretask(string startlocation_id, string endlocation_id, string carry_id, string carry_code, ILogger logger, ISqlSugarClient dbConn, bool isSync2Erp = false, string source_id = "") + private async Task createPretask(string startlocation_id, string endlocation_id, string carry_id, string carry_code, ILogger logger, ISqlSugarClient dbConn, string biz_type = "", string source_id = "", string require_id = "") { CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput(); commonCreatePretaskInput.startlocation_id = startlocation_id; @@ -1680,8 +1680,8 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA commonCreatePretaskInput.carry_id = carry_id; commonCreatePretaskInput.carry_code = carry_code; commonCreatePretaskInput.task_type = WmsWareHouseConst.BIZTYPE_WMSTRANSFER_ID; - commonCreatePretaskInput.biz_type = isSync2Erp ? "erp_qtrk" : ""; - commonCreatePretaskInput.require_id = ""; + commonCreatePretaskInput.biz_type = biz_type; + commonCreatePretaskInput.require_id = require_id; commonCreatePretaskInput.source_id = source_id; commonCreatePretaskInput.isExcuteMission = false; @@ -1700,35 +1700,35 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA /// 四楼包材自动到二楼包材库 /// /// - public async void PackOutstockService(object? args) - { - if (s_taskPackOutstockService.CurrentCount == 0) - return; - await s_taskPackOutstockService.WaitAsync(); - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - try - { - Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼包材自动到二楼包材库"); - LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼包材自动到二楼包材库"); + //public async void PackOutstockService(object? args) + //{ + // if (s_taskPackOutstockService.CurrentCount == 0) + // return; + // await s_taskPackOutstockService.WaitAsync(); + // Stopwatch stopwatch = new Stopwatch(); + // stopwatch.Start(); + // try + // { + // Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼包材自动到二楼包材库"); + // LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼包材自动到二楼包材库"); - await _wmsPackOutstockService.Distribute(); - } - catch (Exception ex) - { - Console.WriteLine("【四楼包材自动到二楼包材库】" + ex.Message); - LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.Message}"); - LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.StackTrace}"); - } - finally - { - s_taskPackOutstockService.Release(); + // await _wmsPackOutstockService.Distribute(); + // } + // catch (Exception ex) + // { + // Console.WriteLine("【四楼包材自动到二楼包材库】" + ex.Message); + // LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.Message}"); + // LoggerFloor2RackDelivery.LogError($"【四楼包材自动到二楼包材库】{ex.StackTrace}"); + // } + // finally + // { + // s_taskPackOutstockService.Release(); - stopwatch.Stop(); - Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束四楼包材自动到二楼包材库 {stopwatch.ElapsedMilliseconds} ms"); - LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束执行四楼包材自动到二楼包材库 {stopwatch.ElapsedMilliseconds} ms"); - } - } + // stopwatch.Stop(); + // Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束四楼包材自动到二楼包材库 {stopwatch.ElapsedMilliseconds} ms"); + // LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 结束执行四楼包材自动到二楼包材库 {stopwatch.ElapsedMilliseconds} ms"); + // } + //} async void ElevatorTaskExceptionHandle(object args) @@ -2063,7 +2063,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA wmsSterilizationInstockH.org_id = WmsWareHouseConst.AdministratorOrgId; wmsSterilizationInstockH.xl_location_id = startlocation.id; wmsSterilizationInstockH.xl_location_code = startlocation.location_code; - wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ON_ID; + wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ADD_ID; int row = await db_Floor4MJX2MJC.Insertable(wmsSterilizationInstockH).ExecuteCommandAsync(); if (row > 0) @@ -2120,20 +2120,73 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼灭菌仓到成品库"); LoggerTimer.LogInformation($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")} 开始执行四楼灭菌仓到成品库"); + WmsFloor4stewingConfig wmsFloor4StewingConfig = await db_Floor4DMC2CPK.Queryable() + .Where(r => r.name == "静置时间(小时)").FirstAsync(); + + if (wmsFloor4StewingConfig == null) + { + LoggerFloor4MJX2MJC.LogWarning($"【四楼灭菌仓到成品库】 未在静置仓配置中配置 静置时间(小时)"); + return; + } int hours = 168; + + if (!int.TryParse(wmsFloor4StewingConfig.value, out hours)) + { + LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 静置时间(小时) 配置有误,错误值为 {wmsFloor4StewingConfig.value}"); + return; + } + List wmsSterilizationInstockHs = db_Floor4DMC2CPK.Queryable() .Where(r => DateTime.Now.Subtract(r.instock_time.Value).TotalHours > hours && r.status == WmsWareHouseConst.BILLSTATUS_ON_ID).ToList(); foreach (WmsSterilizationInstockH wmsSterilizationInstockH in wmsSterilizationInstockHs) { + WmsCarryH wmsCarryH = await db_Floor4DMC2CPK.Queryable().Where(r => r.id == wmsSterilizationInstockH.carry_id).FirstAsync(); + + if (wmsCarryH.location_id != wmsSterilizationInstockH.location_id) + { + LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】载具{wmsCarryH.carry_code}实际位置与灭菌入库记录位置不一致"); + continue; + } + + await db_Floor4DMC2CPK.Ado.BeginTranAsync(); + BasLocation startlocation = await db_Floor4DMJ2MJX.Queryable().Where(r => r.id == wmsCarryH.location_id).FirstAsync(); + + InStockStrategyQuery inStockStrategyInput = new() + { + warehouse_id = WmsWareHouseConst.WAREHOUSE_CP_ID, + Size = 1 + }; + List items = await _wareHouseService.InStockStrategy(inStockStrategyInput); + + if (items.Count < 1) + { + LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 没有可以入库的库位"); + break; + } + BasLocation endlocation = items[0]; + + //锁定起点库位 + await db_Floor4MJX2MJC.Updateable().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == startlocation.id).ExecuteCommandAsync(); + //锁定终点库位 + await db_Floor4MJX2MJC.Updateable().SetColumns(r => new BasLocation { is_lock = 1 }).Where(r => r.id == endlocation.id).ExecuteCommandAsync(); + + bool result_createPretask = await createPretask(startlocation.id, endlocation.id, wmsCarryH.id, wmsCarryH.carry_code, + LoggerFloor4DMC2CPK, db_Floor4DMC2CPK, WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID, "", wmsSterilizationInstockH.id); + if (!result_createPretask) + { + LoggerFloor4DMC2CPK.LogWarning($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败"); + throw new Exception($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成失败"); + } + LoggerFloor4DMC2CPK.LogInformation($"【四楼灭菌仓到成品库】 {startlocation.location_code} 到 {endlocation.location_code} 预任务生成成功"); + + wmsSterilizationInstockH.status = WmsWareHouseConst.BILLSTATUS_ON_ID; + await db_Floor4DMC2CPK.Updateable(wmsSterilizationInstockH).UpdateColumns(r => new { r.status }).ExecuteCommandAsync(); + + await db_Floor4DMC2CPK.Ado.CommitTranAsync(); } - - await db_Floor4DMC2CPK.Ado.BeginTranAsync(); - - - await db_Floor4DMC2CPK.Ado.CommitTranAsync(); } catch (ObjectDisposedException ex) { @@ -2190,6 +2243,7 @@ where carry_code = '{coderesult}' and status = '{WmsWareHouseConst.TASK_BILL_STA GenTaskExecutetimer = new Timer(GenTaskExecute, null, TimeSpan.Zero, TimeSpan.FromSeconds(30)); + // 停用 //PackOutstockServicetimer = new Timer(PackOutstockService, null, TimeSpan.Zero, TimeSpan.FromSeconds(60)); ElevatorTaskExceptionHandleThread = new Thread(ElevatorTaskExceptionHandle); diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs index df27ba8e..4e65aa20 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs @@ -145,6 +145,10 @@ public class ModuleConsts /// public const string MODULE_WMSTRANSFER_ID = "26125750270757"; /// + /// 模块标识-灭菌入库 todo + /// + public const string MODULE_WMSSTERILIZATIONINSTOCKCHID = "MODULE_WMSSTERILIZATIONINSTOCKCHID"; + /// /// 模块标识-载具移出 /// public const string MODULE_WMSCARRYMOOUTSTK_ID = "26123262586661"; diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs index 1260e665..e31bca80 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs @@ -311,6 +311,11 @@ /// public const string BIZTYPE_WMSPRDINSTOCK_ID = "34840264160277"; + /// + /// 灭菌入库 todo + /// + public const string BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID = "BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID"; + /// /// 条码打印状态-已完成 /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferGetMaterialInventoryInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferGetMaterialInventoryInput.cs index 8ab35dca..95af78fd 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferGetMaterialInventoryInput.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/MaterialTransferGetMaterialInventoryInput.cs @@ -17,5 +17,11 @@ /// 批次 /// public string? code_batch { get; set; } + /// + /// 仓库 + /// + public string? warehouse_id { get; set; } + + } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseD.cs index d704983e..7d721ba0 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseD.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseD.cs @@ -108,9 +108,4 @@ public partial class WmsPurchaseD : BaseEntity /// [SugarColumn(IsIgnore = true)] public string? container_no { get; set; } - - /// - /// - /// - public string? erp_line_pk { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseH.cs index 2a6a9ecd..37f5aae1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsPurchaseH.cs @@ -144,16 +144,6 @@ public partial class WmsPurchaseH : BaseEntity, IPurchaseAndSaleAuitEnti /// 审核状态 /// public int? audit_status { get; set; } - - /// - /// - /// - public string? erp_pk { get; set; } - - /// - /// erp采购订单号 - /// - public string? erp_bill_code { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs index 192323cb..25efa97f 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWareHouseService.cs @@ -22,6 +22,12 @@ namespace Tnb.WarehouseMgr.Interfaces /// Task> InStockStrategy([FromQuery] InStockStrategyQuery input); /// + /// 入库策略(包材库) + /// + /// + /// + Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input); + /// /// 包材库2楼入库策略 /// /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsEmptycarryInstockLogService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsEmptycarryInstockLogService.cs index d2bbb5e0..55ff806c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsEmptycarryInstockLogService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmsEmptycarryInstockLogService.cs @@ -10,6 +10,6 @@ namespace Tnb.WarehouseMgr.Interfaces public interface IWmsEmptycarryInstockLogService { - Task Instock(WmsEmptycarryInstockServiceInstockInput input); + Task Instock(WmsEmptycarryInstockServiceInstockInput input); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 07769124..988c443c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -234,6 +234,36 @@ namespace Tnb.WarehouseMgr } return items.Take(input.Size).ToList(); } + /// + /// 入库策略 + /// + /// + [HttpGet] + public async Task> InStockStrategyBCK([FromQuery] InStockStrategyQuery input) + { + List items = new(); + try + { + WmsInstockPolicies policy = await _db.CopyNew().Queryable().Where(it => it.status == 1).FirstAsync(); + if (policy == null) + { + throw new AppFriendlyException("没有可用的策略", 500); + } + + Expression> whereExp = Expressionable.Create() + .And(it => it.wh_id == input.warehouse_id) + .And(it => it.is_lock == 0) + .And(it => it.is_type == ((int)EnumLocationType.分拣库位).ToString()) + .And(it => it.is_use == ((int)EnumCarryStatus.空闲).ToString()) + .ToExpression(); + items = await _db.CopyNew().Queryable().Where(whereExp).OrderBy(policy.policy).ToListAsync(); + } + catch (Exception) + { + throw; + } + return items.Take(input.Size).ToList(); + } /// /// 包材库2楼入库策略 diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptycarryInstockLogService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptycarryInstockLogService.cs index 42b1b5a8..3cc46700 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptycarryInstockLogService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptycarryInstockLogService.cs @@ -48,7 +48,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost] - public async Task Instock(WmsEmptycarryInstockServiceInstockInput input) + public async Task Instock(WmsEmptycarryInstockServiceInstockInput input) { try { @@ -107,14 +107,15 @@ namespace Tnb.WarehouseMgr await _db.Insertable(wmsEmptycarryInstockLog).ExecuteCommandAsync(); await _db.Ado.CommitTranAsync(); - return await ToApiResult(HttpStatusCode.OK, "成功"); + + return await Task.FromResult(true); } catch (Exception ex) { Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.Message); Logger.LogInformation("【WmsEmptycarryInstockService-Instock】" + ex.StackTrace); await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 991b0816..c5ddf4e8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -298,7 +298,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task Distribute(MaterialTransferDistributeInput input) + public async Task Distribute(MaterialTransferDistributeInput input) { try { @@ -421,7 +421,7 @@ namespace Tnb.WarehouseMgr await _db.Ado.RollbackTranAsync(); Logger.LogError("【Distribute】" + ex.Message); Logger.LogError("【Distribute】" + ex.StackTrace); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } finally { @@ -429,7 +429,7 @@ namespace Tnb.WarehouseMgr InvokeGenPretaskExcute(); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } /// @@ -439,7 +439,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task DistributeHCC(MaterialTransferDistributeInput input) + public async Task DistributeHCC(MaterialTransferDistributeInput input) { try { @@ -571,7 +571,7 @@ namespace Tnb.WarehouseMgr await _db.Ado.RollbackTranAsync(); Logger.LogError("【Distribute】" + ex.Message); Logger.LogError("【Distribute】" + ex.StackTrace); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } finally { @@ -579,7 +579,195 @@ namespace Tnb.WarehouseMgr InvokeGenPretaskExcute(); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); + } + + /// + /// 获取物料库存(通用) + /// + /// + /// + /// + [HttpPost, NonUnify, AllowAnonymous] + public async Task MaterialInventoryCommon(MaterialTransferGetMaterialInventoryInput input) + { + try + { + if (input.palletCount <= 0) + { + throw new AppFriendlyException("托盘数必须大于0", 500); + } + if (string.IsNullOrEmpty(input.material_id)) + { + throw new AppFriendlyException("物料id不可为空", 500); + } + //if (string.IsNullOrEmpty(input.code_batch)) + //{ + // throw new AppFriendlyException("批号不可为空", 500); + //} + if (string.IsNullOrEmpty(input.warehouse_id)) + { + throw new AppFriendlyException("仓库不可为空", 500); + } + + //入库取终点 //出库起点 + OutStockStrategyQuery inStockStrategyInput = new() + { + warehouse_id = input.warehouse_id, + material_id = input.material_id, + code_batch = input.code_batch, + Size = input.palletCount + }; + List items = await _wareHouseService.OutStockStrategy(inStockStrategyInput); + + if (string.IsNullOrEmpty(input.code_batch)) + input.code_batch = null; + + decimal qty = _db.Queryable().Where(r => items.Select(a => a.id).Contains(r.carry_id) && r.material_id == input.material_id && r.code_batch == input.code_batch).Sum(r => r.codeqty); + + JObject keyValuePairs = new JObject(); + keyValuePairs["realPalletCount"] = items.Count; + keyValuePairs["realInvQty"] = qty; + + return await ToApiResult(HttpStatusCode.OK, "成功", keyValuePairs); + } + catch (Exception ex) + { + await _db.Ado.RollbackTranAsync(); + return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + } + } + + /// + /// 按料架下发(包材库) + /// + /// + /// + /// + [HttpPost, NonUnify, AllowAnonymous] + public async Task DistributeBCK(MaterialTransferDistributeInput input) + { + try + { + if (string.IsNullOrEmpty(input.source_id)) + { + throw new AppFriendlyException("来源单据id不可为空", 500); + } + if (input.palletCount <= 0) + { + throw new AppFriendlyException("料架数必须大于0", 500); + } + if (input.qty <= 0) + { + throw new AppFriendlyException("数量必须大于0", 500); + } + //if (string.IsNullOrEmpty(input.code_batch)) + //{ + // throw new AppFriendlyException("批号不可为空", 500); + //} + if (string.IsNullOrEmpty(input.code_batch)) + input.code_batch = null; + + WmsMaterialTransferD wmsMaterialTransferD = await _db.Queryable().FirstAsync(it => it.id == input.source_id); + WmsMaterialTransfer wmsMaterialTransfer = await _db.Queryable().FirstAsync(it => it.id == wmsMaterialTransferD.bill_id); + + if (wmsMaterialTransferD.yxfqty == wmsMaterialTransferD.qty) + { + throw new AppFriendlyException("已下发数量已达到转库数量", 500); + } + + if (wmsMaterialTransfer.warehouse_outstock != WmsWareHouseConst.WAREHOUSE_BCK_ID) + { + throw new AppFriendlyException($@"转库单{wmsMaterialTransfer.bill_code}入库仓库不是四楼包材库,请检查!", HttpStatusCode.InternalServerError); + } + if (wmsMaterialTransfer.warehouse_instock != WmsWareHouseConst.WAREHOUSE_F2BCQ_ID) + { + throw new AppFriendlyException($@"转库单{wmsMaterialTransfer.bill_code}入库仓库不是二楼包材库,请检查!", HttpStatusCode.InternalServerError); + } + + await s_taskExecuteSemaphore.WaitAsync(); + await _db.Ado.BeginTranAsync(); + + //入库取终点 //出库起点 + OutStockStrategyQuery outStockStrategyInput = new() { warehouse_id = WmsWareHouseConst.WAREHOUSE_BCK_ID, material_id = wmsMaterialTransferD.material_id, code_batch = input.code_batch, Size = input.palletCount }; + List items = await _wareHouseService.OutStockStrategy(outStockStrategyInput); + + if (items.Count == 0) + { + throw new AppFriendlyException($@"没有可以出库的载具", 500); + } + + decimal qty = _db.Queryable().Where(r => items.Select(a => a.id).Contains(r.carry_id) && r.material_id == wmsMaterialTransferD.material_id && r.code_batch == input.code_batch).Sum(r => r.codeqty); + + // 暂定PDA上查询到的物料批次和库存数量与提交时获取的不一致时,需要前台重新获取库存接口 + if (input.palletCount != items.Count || input.qty != qty) + { + throw new AppFriendlyException($@"当前实际料架数量为{input.palletCount} 实际库存数量为{qty},与前台数据不一致,请重新获取库存", HttpStatusCode.InternalServerError); + } + + InStockStrategyQuery inStockStrategyInput = new() + { + warehouse_id = WmsWareHouseConst.WAREHOUSE_F2BCQ_ID, + Size = input.palletCount + }; + List endlocations = await _wareHouseService.InStockStrategyBCK(inStockStrategyInput); + + if (endlocations.Count < 1) + { + throw new AppFriendlyException($@"没有可以入库的库位", 500); + } + + if (items.Count == 0) + { + throw new AppFriendlyException($@"没有可以出库的载具", 500); + } + + int index = 0; + foreach (var wmsCarryH in items) + { + WmsCarryCode wmsCarryCode = await _db.Queryable().Where(r => r.carry_id == wmsCarryH.id).FirstAsync(); + BasLocation startLocation = await _db.Queryable().Where(r => r.id == wmsCarryH.location_id).FirstAsync(); + + CommonCreatePretaskInput commonCreatePretaskInput = new CommonCreatePretaskInput(); + commonCreatePretaskInput.startlocation_id = startLocation.id; + commonCreatePretaskInput.endlocation_id = endlocations[index].id; + commonCreatePretaskInput.task_type = WmsWareHouseConst.WMS_PRETASK_TRANSFER_TYPE_ID; + commonCreatePretaskInput.biz_type = WmsWareHouseConst.BIZTYPE_WMSMATERIALTRANSFER_ID; + // 转库单id + commonCreatePretaskInput.source_id = input.source_id; + commonCreatePretaskInput.carry_id = wmsCarryH.id; + commonCreatePretaskInput.carry_code = wmsCarryH.carry_code; + commonCreatePretaskInput.isExcuteMission = false; + + Entities.Dto.Outputs.Result res = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput); + + if (res.code != HttpStatusCode.OK) + { + Logger.LogInformation($@"生成预任务失败"); + throw new AppFriendlyException($@"生成预任务失败", 500); + } + index++; + } + + // 更新子表已下发数量 + await _db.Updateable().SetColumns(r => r.yxfqty == r.yxfqty + input.qty).Where(r => r.id == input.source_id).ExecuteCommandAsync(); + + await _db.Ado.CommitTranAsync(); + } + catch (Exception ex) + { + await _db.Ado.RollbackTranAsync(); + Logger.LogError("【Distribute】" + ex.Message); + Logger.LogError("【Distribute】" + ex.StackTrace); + throw Oops.Bah(ex.Message); + } + finally + { + _ = s_taskExecuteSemaphore.Release(); + InvokeGenPretaskExcute(); + } + + return await Task.FromResult(true); } @@ -723,7 +911,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task DistributeToZCC(MaterialTransferDistributeToZCCInput input) + public async Task DistributeToZCC(MaterialTransferDistributeToZCCInput input) { s_taskDistributeToZCC.Wait(); @@ -849,14 +1037,14 @@ namespace Tnb.WarehouseMgr await _db.Ado.RollbackTranAsync(); Logger.LogError("【DistributeToZCC】" + ex.Message); Logger.LogError("【DistributeToZCC】" + ex.StackTrace); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } finally { s_taskDistributeToZCC.Release(); InvokeGenPretaskExcute(); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } /// @@ -866,7 +1054,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input) + public async Task CallRackToProductionLine(MaterialTransferCallRackToProductionLineInput input) { try { @@ -968,10 +1156,10 @@ namespace Tnb.WarehouseMgr { Logger.LogError("【CallRackToProductionLine】" + ex.Message); Logger.LogError("【CallRackToProductionLine】" + ex.StackTrace); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } /// @@ -981,7 +1169,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input) + public async Task RackAndMatByWorkstation(MaterialTransferGetRackAndMatByWorkStationInput input) { try { @@ -1035,13 +1223,13 @@ namespace Tnb.WarehouseMgr pairs["details"] = JArray.Parse(JsonConvert.SerializeObject(matCodes)); jArray.Add(pairs); } - return await ToApiResult(HttpStatusCode.OK, "成功", jArray); + return Task.FromResult(true); } catch (Exception ex) { Logger.LogError("【RackAndMatByWorkstation】" + ex.Message); Logger.LogError("【RackAndMatByWorkstation】" + ex.StackTrace); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + return Oops.Bah(ex.Message); } } @@ -1051,7 +1239,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task RackInstock(MaterialTransferRackInstockInput input) + public async Task RackInstock(MaterialTransferRackInstockInput input) { WmsCarryH wmsCarryH = await _db.Queryable().Where(r => r.carry_code == input.carry_code).FirstAsync(); @@ -1068,11 +1256,11 @@ namespace Tnb.WarehouseMgr else { Logger.LogError($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); - return await ToApiResult(HttpStatusCode.InternalServerError, $"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); + return Oops.Bah($"【RackInstock】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); } } - async Task RackInstock_到暂存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH) + async Task RackInstock_到暂存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH) { try { @@ -1175,12 +1363,12 @@ namespace Tnb.WarehouseMgr Logger.LogError("【RackInstock】" + ex.Message); Logger.LogError("【RackInstock】" + ex.StackTrace); await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } - async Task RackInstock_到缓存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH) + async Task RackInstock_到缓存仓(MaterialTransferRackInstockInput input, WmsCarryH wmsCarryH) { try { @@ -1234,9 +1422,9 @@ namespace Tnb.WarehouseMgr Logger.LogError("【RackInstock】" + ex.Message); Logger.LogError("【RackInstock】" + ex.StackTrace); await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } /// diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs index a1878300..084bd538 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs @@ -163,7 +163,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task OutsourcedPartsInstock(OutsourcedPartsInstockInput input) + public async Task OutsourcedPartsInstock(OutsourcedPartsInstockInput input) { try { @@ -360,7 +360,7 @@ namespace Tnb.WarehouseMgr catch (Exception ex) { await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } finally { @@ -368,7 +368,7 @@ namespace Tnb.WarehouseMgr await InvokeGenPretaskExcute(); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } /// @@ -377,7 +377,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task FinishproductOutstockSign(FinishproductOutstockSignInput input) + public async Task FinishproductOutstockSign(FinishproductOutstockSignInput input) { Logger.LogInformation($"【FinishproductOutstockSign】载具签收 {input.carry_code}"); if (string.IsNullOrEmpty(input.carry_code)) @@ -458,10 +458,10 @@ namespace Tnb.WarehouseMgr Logger.Error($"【FinishproductOutstockSign】 {ex.Message}"); Logger.Error($"【FinishproductOutstockSign】 {ex.StackTrace}"); await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs index 7e3d2c6b..9d4cd5a4 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs @@ -9,6 +9,7 @@ using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.BasicData.Interfaces; @@ -197,8 +198,10 @@ namespace Tnb.WarehouseMgr await _db.Ado.CommitTranAsync(); } - catch (Exception) + catch (Exception ex) { + Logger.LogError($"【PDADelivery】{ex.Message}"); + Logger.LogError($"【PDADelivery】{ex.StackTrace}"); await _db.Ado.RollbackTranAsync(); throw; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPackInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPackInstockService.cs index 63f33a0d..b431e7a3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPackInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPackInstockService.cs @@ -118,7 +118,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task PackInstock(OutsourcedPartsInstockInput input) + public async Task PackInstock(OutsourcedPartsInstockInput input) { try { @@ -180,6 +180,10 @@ namespace Tnb.WarehouseMgr } ePoint = await _db.Queryable().FirstAsync(it => it.location_id == endLocations[0].id); + if (ePoint == null) + { + throw new AppFriendlyException($"{endLocations[0].location_code}终点未配置点位", 500); + } } else { @@ -314,7 +318,7 @@ namespace Tnb.WarehouseMgr Logger.LogError($"【PackInstock】 {ex.Message}"); Logger.LogError($"【PackInstock】 {ex.StackTrace}"); await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } finally { @@ -322,7 +326,7 @@ namespace Tnb.WarehouseMgr await InvokeGenPretaskExcute(); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs index 6dbe05c5..86e88833 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs @@ -244,7 +244,7 @@ namespace Tnb.WarehouseMgr Logger.LogInformation($"【PrdInstock】包装车间生产提报"); WmsCarryH wmsCarryH = await db.Queryable().Where(r => r.id == wmsPrdInstockD.carry_id).FirstAsync(); - // 生成到中储仓任务 + // 生成任务 CommonCreatePretaskInput commonCreatePretaskInput2 = new CommonCreatePretaskInput(); commonCreatePretaskInput2.startlocation_id = startLocation.id; commonCreatePretaskInput2.endlocation_id = endLocation.id; @@ -258,7 +258,7 @@ namespace Tnb.WarehouseMgr Entities.Dto.Outputs.Result res2 = await _wareHouseService.CommonCreatePretask(commonCreatePretaskInput2, db); if (res2.code != HttpStatusCode.OK) { - throw new Exception($"包装车间生成到中储仓的任务失败 {res2.msg}"); + throw new Exception($"包装车间生成任务失败 {res2.msg}"); } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdReturnService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdReturnService.cs index 875f1349..20db9a73 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdReturnService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdReturnService.cs @@ -59,7 +59,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task PrdReturn(PrdReturnInput input) + public async Task PrdReturn(PrdReturnInput input) { WmsPrdReturnH wmsPrdReturnH = await _db.Queryable().Where(r => r.id == input.source_id).FirstAsync(); if (wmsPrdReturnH == null) @@ -93,12 +93,12 @@ namespace Tnb.WarehouseMgr else { Logger.LogError($"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); - return await ToApiResult(HttpStatusCode.InternalServerError, $"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); + return Oops.Bah($"【PrdReturn】当前载具的规格id是{wmsCarryH.carrystd_id} 无法处理此类型的载具!"); } } - async Task Return_到暂存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH) + async Task Return_到暂存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH) { try { @@ -228,12 +228,12 @@ namespace Tnb.WarehouseMgr Logger.LogError("【PrdReturn】" + ex.Message); Logger.LogError("【PrdReturn】" + ex.StackTrace); await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } - async Task Return_到缓存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH) + async Task Return_到缓存仓(PrdReturnInput input, WmsCarryH wmsCarryH, WmsPrdReturnH wmsPrdReturnH) { try { @@ -335,9 +335,9 @@ namespace Tnb.WarehouseMgr Logger.LogError("【PrdReturn】" + ex.Message); Logger.LogError("【PrdReturn】" + ex.StackTrace); await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } public override async Task ModifyAsync(WareHouseUpInput input) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs index 5f57f044..e36b2395 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSaleReleaseService.cs @@ -145,7 +145,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task Distribute(SaleReleaseDistributeInput input) + public async Task Distribute(SaleReleaseDistributeInput input) { Logger.LogInformation($"【Distribute】 销售出库下发"); try @@ -359,7 +359,7 @@ namespace Tnb.WarehouseMgr await _db.Ado.RollbackTranAsync(); Logger.LogError($"【Distribute】 销售出库 {ex.Message}"); Logger.LogError($"【Distribute】 销售出库 {ex.StackTrace}"); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } finally { @@ -367,7 +367,7 @@ namespace Tnb.WarehouseMgr await InvokeGenPretaskExcute(); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } /// @@ -376,7 +376,7 @@ namespace Tnb.WarehouseMgr /// /// [HttpPost, NonUnify, AllowAnonymous] - public async Task Sort(FinishproductOutstockSortInput input) + public async Task Sort(FinishproductOutstockSortInput input) { if (string.IsNullOrEmpty(input.source_id)) { @@ -413,10 +413,10 @@ namespace Tnb.WarehouseMgr catch (Exception ex) { await _db.Ado.RollbackTranAsync(); - return await ToApiResult(HttpStatusCode.InternalServerError, ex.Message); + throw Oops.Bah(ex.Message); } - return await ToApiResult(HttpStatusCode.OK, "成功"); + return await Task.FromResult(true); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs new file mode 100644 index 00000000..69c98de7 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs @@ -0,0 +1,74 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Dtos.VisualDev; +using JNPF.Common.Enums; +using JNPF.Common.Extension; +using JNPF.Common.Security; +using JNPF.EventBus; +using JNPF.FriendlyException; +using JNPF.Systems.Interfaces.System; +using JNPF.VisualDev; +using JNPF.VisualDev.Entitys; +using JNPF.VisualDev.Interfaces; +using Microsoft.CodeAnalysis; +using SqlSugar; +using Tnb.BasicData.Entities; +using Tnb.WarehouseMgr.Entities; +using Tnb.WarehouseMgr.Entities.Attributes; +using Tnb.WarehouseMgr.Entities.Consts; +using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Entity; +using Tnb.WarehouseMgr.Entities.Enums; +using Tnb.WarehouseMgr.Interfaces; +namespace Tnb.WarehouseMgr +{ + + /// + /// 库内转移 + /// + [OverideVisualDev(ModuleConsts.MODULE_WMSSTERILIZATIONINSTOCKCHID)] + [ServiceModule(BizTypeId)] + public class WmsSterilizationInstockHService : BaseWareHouseService + { + private const string BizTypeId = WmsWareHouseConst.BIZTYPE_WMSSTERILIZATIONINSTOCKCH_ID; + private readonly ISqlSugarClient _db; + private readonly IRunService _runService; + private readonly IVisualDevService _visualDevService; + private readonly IWareHouseService _wareHouseService; + private readonly IBillRullService _billRullService; + private readonly IUserManager _userManager; + + public WmsSterilizationInstockHService( + ISqlSugarRepository repository, + IRunService runService, + IVisualDevService visualDevService, + IWareHouseService wareHouseService, + IUserManager userManager, + IBillRullService billRullService, + IEventPublisher publisher) + { + _db = repository.AsSugarClient(); + _runService = runService; + _visualDevService = visualDevService; + _wareHouseService = wareHouseService; + _userManager = userManager; + _billRullService = billRullService; + + } + + public override async Task ModifyAsync(WareHouseUpInput input) + { + if (input == null) + { + throw new ArgumentNullException(nameof(input)); + } + + bool isOk = await _db.Updateable().SetColumns(it => new WmsSterilizationInstockH { status = WmsWareHouseConst.BILLSTATUS_COMPLETE_ID }) + .Where(it => it.id == input.requireId).ExecuteCommandHasChangeAsync(); + if (!isOk) + { + throw Oops.Oh(ErrorCode.COM1001); + } + } + } + +}