From 430f8dfdfcaf55b84387cffc0522a63ac53a2dd1 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Tue, 5 Mar 2024 15:11:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=BA=93=E4=BF=AE=E6=94=B9=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Domain/Entitys/Box.cs | 14 +++++++ .../IService/IChangeMoveBoxService.cs | 2 + .../Services/ChangeMoveBoxService.cs | 42 +++++++++++++++++++ .../Services/OutStockService.cs | 10 ++++- 4 files changed, 67 insertions(+), 1 deletion(-) diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs index a381663f..2c8f391e 100644 --- a/src/WMS.Web.Domain/Entitys/Box.cs +++ b/src/WMS.Web.Domain/Entitys/Box.cs @@ -146,5 +146,19 @@ namespace WMS.Web.Domain.Entitys return Result.ReSuccess(); } + /// + /// 出库 + /// + /// + /// + /// + public Result OutStock(int materialId, decimal qty) + { + var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId); + if (d != null) + d.Qty = (d.Qty - qty) > 0 ? (d.Qty - qty) : 0; + + return Result.ReSuccess(); + } } } diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs index efe25e22..52daf3c2 100644 --- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs @@ -25,6 +25,8 @@ namespace WMS.Web.Domain.IService Task ChangeBox_BackRecord(BackRecord BackRecord, LoginInDto loginInfo, bool isTransaction = true); //非采购入库 Task ChangeBox_InStock(InStock InStocks, LoginInDto loginInfo, bool isTransaction = true); + //出库 + Task ChangeBox_OutStock(OutStock outStock, bool isTransaction = true); } } diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index 43d0f269..44fdf1a1 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -427,5 +427,47 @@ namespace WMS.Web.Domain.Services return await ChangeBoxSave(dtoList, loginInfo, isTransaction, false); } + /// + /// 出库 + /// + /// + /// + /// + public async Task ChangeBox_OutStock(OutStock outStock, bool isTransaction = true) + { + if (outStock.Method == InventoryInOutMethod.Box) return Result.ReSuccess(); + List dtoList = new List(); + var boxDetails = outStock.Details.SelectMany(s => s.BoxsDetails); + var boxIds = boxDetails.Select(s => s.BoxId).Distinct().ToList(); + var boxs = await _boxRepositories.GetEntityList(boxIds); + foreach (var d in outStock.Details) + { + foreach (var db in d.BoxsDetails) + { + var box = boxs.FirstOrDefault(f => f.Id == db.BoxId); + if (box == null) continue; + box.OutStock(d.MaterialId, db.Qty); + } + } + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _basbicsRepositories.GetTransaction(); + Result res_Rollback = Result.ReSuccess(); + bool isSuccess = true; + if (res_Rollback.IsSuccess) + { + isSuccess = await _boxRepositories.EditEntityList(boxs, false); + if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError); + } + //提交事务 + if (isTransaction) + { + isSuccess = _basbicsRepositories.CommitTransaction(res_Rollback.IsSuccess ? false : true, _transaction); + if (!res_Rollback.IsSuccess) return res_Rollback; + if (!isSuccess) + return Result.ReFailure(ResultCodes.DateWriteError); + } + return Result.ReSuccess(); + } } } diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index e25d90e9..fc4b3d81 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -48,13 +48,15 @@ namespace WMS.Web.Domain.Services private readonly ISingleDataService _singleDataService; private readonly IServiceScopeFactory _serviceScopeFactory; private readonly IInStockTaskBoxService _inStockTaskService; + private readonly IChangeMoveBoxService _changeMoveBoxService; public OutStockService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IErpService erpService, ISerialNumberService serialNumberService, IBoxInventoryService boxInventoryService, IInventoryInOutDetailsService inventoryInOutDetailsService, IBoxInventoryRepositories boxInventoryRepositories, ILogger logger, IBoxRepositories boxRepositories, - ISingleDataService singleDataService, IServiceScopeFactory serviceScopeFactory, IInStockTaskBoxService inStockTaskService) + ISingleDataService singleDataService, IServiceScopeFactory serviceScopeFactory, IInStockTaskBoxService inStockTaskService, + IChangeMoveBoxService changeMoveBoxService) { _mapper = mapper; _loginService = loginService; @@ -72,6 +74,7 @@ namespace WMS.Web.Domain.Services _singleDataService = singleDataService; _serviceScopeFactory = serviceScopeFactory; _inStockTaskService = inStockTaskService; + _changeMoveBoxService = changeMoveBoxService; } /// /// 出库单 @@ -195,6 +198,11 @@ namespace WMS.Web.Domain.Services if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory; } if (res_Rollback.IsSuccess) + { + var res_changeMoveBox = await _changeMoveBoxService.ChangeBox_OutStock(entity, false); + if (!res_changeMoveBox.IsSuccess) res_Rollback = res_changeMoveBox; + } + if (res_Rollback.IsSuccess) { boxIds = entity.Details.SelectMany(s => s.BoxsDetails).Select(s => s.BoxId).ToList(); var res_InStockTask = await _inStockTaskService.UnBind(boxIds, false);