From 57e2b755ded07c8107d3e5ca92ba703adb0bdd50 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Thu, 23 Nov 2023 16:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=B1=E5=BA=93=E5=AD=98-=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SysConfigController.cs | 4 + src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 5 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 13 +++ src/WMS.Web.Core/Dto/EnumStatusResponse.cs | 6 +- src/WMS.Web.Domain/Entitys/InStock.cs | 4 + .../Services/BoxInventoryService.cs | 86 +++++++++++++++++++ src/WMS.Web.Domain/Services/InStockService.cs | 2 + .../BoxInventoryRepositories.cs | 2 +- 8 files changed, 120 insertions(+), 2 deletions(-) diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index 345af100..4a2ea814 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -106,6 +106,10 @@ namespace WMS.Web.Api.Controllers { response.ExportStatus.Add((int)enumv, enumv.GetRemark()); } + foreach (InventoryInOutMethod enumv in Enum.GetValues(typeof(InventoryInOutMethod))) + { + response.InventoryInOutMethod.Add((int)enumv, enumv.GetRemark()); + } //2 //1 return Task.FromResult(Result.ReSuccess(response)); diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 465d3a91..d154cfe6 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -525,6 +525,11 @@ 下载导出状态 + + + 出入库方式:按箱或者按产品 + + 客户 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 4fa25925..3c4fd84f 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -486,6 +486,11 @@ 入库类型 + + + 入库方式:1按箱,2按产品 + + 创建人 @@ -3331,6 +3336,14 @@ + + + 入库单-箱库存的变更 + + + + + 处理箱库存变更:出入库 diff --git a/src/WMS.Web.Core/Dto/EnumStatusResponse.cs b/src/WMS.Web.Core/Dto/EnumStatusResponse.cs index d24b3bc9..129769ed 100644 --- a/src/WMS.Web.Core/Dto/EnumStatusResponse.cs +++ b/src/WMS.Web.Core/Dto/EnumStatusResponse.cs @@ -54,7 +54,11 @@ namespace WMS.Web.Core.Dto /// 下载导出状态 /// public Dictionary ExportStatus { get; set; } = new Dictionary(); + /// + /// 出入库方式:按箱或者按产品 + /// + public Dictionary InventoryInOutMethod { get; set; } = new Dictionary(); + - } } diff --git a/src/WMS.Web.Domain/Entitys/InStock.cs b/src/WMS.Web.Domain/Entitys/InStock.cs index 9538d27b..9d78c4cb 100644 --- a/src/WMS.Web.Domain/Entitys/InStock.cs +++ b/src/WMS.Web.Domain/Entitys/InStock.cs @@ -27,6 +27,10 @@ namespace WMS.Web.Domain.Entitys /// public InstockType Type { get; set; } /// + /// 入库方式:1按箱,2按产品 + /// + public InventoryInOutMethod Method { get; set; } + /// /// 创建人 /// public int CreatorId { get; set; } diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index dfff0ebf..4d9e7e24 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -799,6 +799,92 @@ namespace WMS.Web.Domain.Services return Result.ReSuccess(); } + /// + /// 入库单-箱库存的变更 + /// + /// + /// + /// + public async Task GenerateInStockBox(List dtoDatas, bool isTransaction) + { + //1.判断来源数据是否存在 + if (dtoDatas == null || dtoDatas.Count == 0) + return Result.ReFailure(ResultCodes.InventoryNoSourceError); + + var update_entitys = new List(); + var add_entitys = new List(); + var InventoryDetailsGenerateDto = new List(); + + //2.组装-按箱入库 + var dtoDatas_details_Method_box = dtoDatas.Where(x => x.Method == InventoryInOutMethod.Box).SelectMany(x => x.Details).ToList(); + var generateDtoList_Metod_Box = dtoDatas_details_Method_box.GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }) + .Select(x=>new BoxInventoryGenerateDto() + { + BoxId=x.Key.BoxId, + OrgCode=x.Key.OrgCode, + StockCode=x.Key.StockCode, + SubStockId=x.Key.SubStockId, + InventoryInOutMethod= (int)InventoryInOutMethod.Box, + InventoryInOutType=(int)InventoryInOutType.In + }).ToList(); + + //2.1.遍历:组装明细 + generateDtoList_Metod_Box.ForEach(x => + { + foreach (var detItem in dtoDatas_details_Method_box) + { + //2.1箱是当前的 + if (detItem.BoxId == x.BoxId) + { + //2.2组装明细 + var det = new BoxInventoryGenerateDetailsDto(); + det.MaterialId = detItem.MaterialId; + det.Qty = detItem.Qty; + det.SerialNumbers = detItem.SerialNumbers; + x.Details.Add(det); + } + } + }); + + //3.组装-按产品入库 + var dtoDatas_details_Method_Product = dtoDatas.Where(x => x.Method == InventoryInOutMethod.Box).SelectMany(x => x.Details).ToList(); + var generateDtoList_Metod_Product = dtoDatas_details_Method_Product.GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }) + .Select(x => new BoxInventoryGenerateDto() + { + BoxId = x.Key.BoxId, + OrgCode = x.Key.OrgCode, + StockCode = x.Key.StockCode, + SubStockId = x.Key.SubStockId, + InventoryInOutMethod = (int)InventoryInOutMethod.Product, + InventoryInOutType = (int)InventoryInOutType.In + }).ToList(); + + //3.1.遍历:组装明细 + generateDtoList_Metod_Product.ForEach(x => + { + foreach (var detItem in dtoDatas_details_Method_Product) + { + //3.1箱是当前的 + if (detItem.BoxId == x.BoxId) + { + //3.2组装明细 + var det = new BoxInventoryGenerateDetailsDto(); + det.MaterialId = detItem.MaterialId; + det.Qty = detItem.Qty; + det.SerialNumbers = detItem.SerialNumbers; + x.Details.Add(det); + } + } + }); + + //整合一起 + var generateDtoList = new List(); + generateDtoList.AddRange(generateDtoList_Metod_Box); + generateDtoList.AddRange(generateDtoList_Metod_Product); + //提交处理 + return null; + } + /// /// 处理箱库存变更:出入库 diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index b4528007..c984f3eb 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -196,6 +196,7 @@ namespace WMS.Web.Domain.Services { var entity = new InStock(); entity.Type = type; + entity.Method = InventoryInOutMethod.Box; entity.Details = _mapper.Map>(dto.Details); entity.Create(loginInfo.UserInfo.StaffId); @@ -275,6 +276,7 @@ namespace WMS.Web.Domain.Services //2.生成:入库单 var entity = new InStock(); entity.Type = task.Type; + entity.Method = dto.ShelfMethod == (int)ShelfMethod.Box ? InventoryInOutMethod.Box : InventoryInOutMethod.Product; entity.Details = new List(); var temps = new List(); diff --git a/src/WMS.Web.Repositories/BoxInventoryRepositories.cs b/src/WMS.Web.Repositories/BoxInventoryRepositories.cs index 3321f738..d6bdd4c7 100644 --- a/src/WMS.Web.Repositories/BoxInventoryRepositories.cs +++ b/src/WMS.Web.Repositories/BoxInventoryRepositories.cs @@ -146,7 +146,7 @@ namespace WMS.Web.Repositories /// public async Task> GetList(List ids) { - return await _context.BoxInventory.Include(x => x.Details).Where(x => ids.Contains(x.Id)).ToListAsync(); + return await _context.BoxInventory.Include(x => x.Details).Where(x => ids.Contains(x.BoxId)).ToListAsync(); } ///