From 8aee4380fe3c422ef59001eb6631d7c004f82b52 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Thu, 23 Nov 2023 11:38:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/InventoryController.cs | 2 + src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 5 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 8 +++ .../Inventory/BoxInventoryDetailsResponse.cs | 5 ++ .../IService/IBoxInventoryService.cs | 11 +++- .../Services/BackRecordService.cs | 24 +------- .../Services/BoxInventoryService.cs | 55 ++++++++++++++++--- .../BoxInventoryRepositories.cs | 1 + 8 files changed, 81 insertions(+), 30 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/InventoryController.cs b/src/WMS.Web.Api/Controllers/InventoryController.cs index 4329c7cc..cb3079eb 100644 --- a/src/WMS.Web.Api/Controllers/InventoryController.cs +++ b/src/WMS.Web.Api/Controllers/InventoryController.cs @@ -177,6 +177,8 @@ namespace WMS.Web.Api.Controllers if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); var result = await _boxInventoryRepositories.GetInfoBy(boxBillNo); + if(result==null) + return Result.ReFailure(ResultCodes.BoxInventoryNoDataError); return Result .ReSuccess(result); } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 7c34f5df..26d68353 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -2265,6 +2265,11 @@ 仓位名称 + + + 总数 + + 明细 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 578ce693..9dc71ea5 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -2213,6 +2213,14 @@ + + + 入库回退上下架-箱库存的变更 + + + + + 改箱 移箱服务 diff --git a/src/WMS.Web.Core/Dto/Inventory/BoxInventoryDetailsResponse.cs b/src/WMS.Web.Core/Dto/Inventory/BoxInventoryDetailsResponse.cs index 7608cae5..6e69b2a2 100644 --- a/src/WMS.Web.Core/Dto/Inventory/BoxInventoryDetailsResponse.cs +++ b/src/WMS.Web.Core/Dto/Inventory/BoxInventoryDetailsResponse.cs @@ -39,6 +39,11 @@ namespace WMS.Web.Core.Dto.Inventory /// public string SubStock { get; set; } + /// + /// 总数 + /// + public decimal TotalCount { get; set; } + /// /// 明细 /// diff --git a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs index 80572389..8400c83c 100644 --- a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs +++ b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs @@ -44,6 +44,15 @@ namespace WMS.Web.Domain.IService /// /// Task GenerateBackBox(List dtoDatas, bool isTransaction); - + + /// + /// 入库回退上下架-箱库存的变更 + /// + /// + /// + /// + Task GenerateBackBox(List dtoDatas, bool isTransaction); + + } } diff --git a/src/WMS.Web.Domain/Services/BackRecordService.cs b/src/WMS.Web.Domain/Services/BackRecordService.cs index 07252ae3..87d970a8 100644 --- a/src/WMS.Web.Domain/Services/BackRecordService.cs +++ b/src/WMS.Web.Domain/Services/BackRecordService.cs @@ -73,27 +73,9 @@ namespace WMS.Web.Domain.Services return serialNumber_result; //保存成功后:变更库存 - var boxInventoryBackGenerateDto = dto.Details.GroupBy(x =>new { x.BoxId,x.StockCode,x.SubStockId}).Select(x => new BoxInventoryBackGenerateDto() - { - BoxId=x.Key.BoxId, - StockCode=x.Key.StockCode, - SubStockId=x.Key.SubStockId, - InventoryInOutType= type== BackRecordType.OutstockOn? (int)InventoryInOutType.In:(int)InventoryInOutType.Out, - }).ToList(); - foreach (var item in dto.Details) - { - var current= boxInventoryBackGenerateDto.Where(x => x.BoxId == item.BoxId).FirstOrDefault(); - if (current != null) - { - var detail = new BoxInventoryBackDetailsGenerateDto(); - detail.MaterialId = item.MaterialId; - detail.Qty = item.Qty; - detail.SerialNumbers = item.SerialNumbers; - current.Details.Add(detail); - } - } - - var boxInventoryResult= await _boxInventoryService.GenerateBackBox(boxInventoryBackGenerateDto, isTransaction); + var entitys = new List(); + entitys.Add(entity); + var boxInventoryResult= await _boxInventoryService.GenerateBackBox(entitys, isTransaction); if (!boxInventoryResult.IsSuccess) return boxInventoryResult; diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index 05ff53c0..661b1d60 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -495,31 +495,32 @@ namespace WMS.Web.Domain.Services var boxs = await _boxRepositories.GetEntityList(boxIds); var serialNumbers = await _serialNumbersRepositories.GetEntityListByBoxIds(boxIds); - // + var generateDtoList = new List(); + + #region 入库组装 + //入库的明细 var dtoDetails_in = dtoDatas.Where(x => x.Type == BackRecordType.OutstockOn).SelectMany(x => x.Details).ToList(); //2.1组织:头部 - var generateDtoList = dtoDatas.SelectMany(x => x.Details).GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }) + var generateDtoList_in = dtoDetails_in.GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }) .Select(x=>new BoxInventoryBackGenerateDto() { BoxId=x.Key.BoxId, OrgCode=x.Key.OrgCode, StockCode=x.Key.StockCode, - SubStockId=x.Key.SubStockId + SubStockId=x.Key.SubStockId, + InventoryInOutType = (int)InventoryInOutType.In }).ToList(); //3.遍历:组装明细 - generateDtoList.ForEach(x => + generateDtoList_in.ForEach(x => { - foreach (var detItem in dtoDatas.SelectMany(x=>x.Details).ToList()) + foreach (var detItem in dtoDetails_in) { //3.1箱是当前的 if (detItem.BoxId == x.BoxId) { - var dtoCurrent = dtoDatas.Where(x => x.Id == detItem.Fid).FirstOrDefault(); - if (dtoCurrent != null) - x.InventoryInOutType = dtoCurrent.Type == BackRecordType.InstockOff ? (int)InventoryInOutType.Out : (int)InventoryInOutType.In; //3.2组装明细 var det = new BoxInventoryBackDetailsGenerateDto(); det.MaterialId = detItem.MaterialId; @@ -529,6 +530,44 @@ namespace WMS.Web.Domain.Services } } }); + #endregion + + #region 出库组装 + //出库的明细 + var dtoDetails_out = dtoDatas.Where(x => x.Type == BackRecordType.InstockOff).SelectMany(x => x.Details).ToList(); + + //2.1组织:头部 + var generateDtoList_out = dtoDetails_out.GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }) + .Select(x => new BoxInventoryBackGenerateDto() + { + BoxId = x.Key.BoxId, + OrgCode = x.Key.OrgCode, + StockCode = x.Key.StockCode, + SubStockId = x.Key.SubStockId, + InventoryInOutType = (int)InventoryInOutType.Out + }).ToList(); + + + //3.遍历:组装明细 + generateDtoList_out.ForEach(x => + { + foreach (var detItem in dtoDetails_out) + { + //3.1箱是当前的 + if (detItem.BoxId == x.BoxId) + { + //3.2组装明细 + var det = new BoxInventoryBackDetailsGenerateDto(); + det.MaterialId = detItem.MaterialId; + det.Qty = detItem.Qty; + det.SerialNumbers = detItem.SerialNumbers; + x.Details.Add(det); + } + } + }); + #endregion + generateDtoList.AddRange(generateDtoList_in); + generateDtoList.AddRange(generateDtoList_out); //4.提交处理 return await this.GenerateBackBox(generateDtoList, isTransaction); } diff --git a/src/WMS.Web.Repositories/BoxInventoryRepositories.cs b/src/WMS.Web.Repositories/BoxInventoryRepositories.cs index 068a686c..92b21480 100644 --- a/src/WMS.Web.Repositories/BoxInventoryRepositories.cs +++ b/src/WMS.Web.Repositories/BoxInventoryRepositories.cs @@ -120,6 +120,7 @@ namespace WMS.Web.Repositories response.Stock = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, _loginRepositories.CompanyId, response.StockCode + response.OrgCode); response.SubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, response.SubStockId); response.Details = _mapper.Map>(entity.Details); + response.TotalCount = response.Details.Count(); } return response;