diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 0d5e5243..c1edc966 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1649,51 +1649,6 @@ 同步状态 - - - 箱Id - - - - - 物料ID - - - - - 组织编码 - - - - - 仓库 - - - - - 仓位 - - - - - 子仓库(跟金蝶交互字段) - - - - - 系统库存 - - - - - 盘点数量 - - - - - 盈亏数量 - - 盘点结果类型:1为盘盈,2位盘亏 @@ -1710,12 +1665,12 @@ 同步到金蝶后金蝶的单据Id - + - 序列号 + 明细 - + 创建 @@ -1758,39 +1713,44 @@ 物料ID - + - 仓库ID + 组织编码 + + + + + 仓库 - 仓位ID + 仓位 + + + + + 子仓库(跟金蝶交互字段) - 盘点前数量(wms系统数量) + 系统库存 - 盘点实际数量(实际仓库数量) + 盘点数量 - 盘点后数量 + 盈亏数量 - + - 盘点结果类型:1为盘盈,2位盘亏 - - - - - 备注 + 序列号 diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index 7a0d61d3..528dad6d 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -341,8 +341,10 @@ namespace WMS.Web.Domain.Services //物料收发明细dtos var InventoryInOutDetailsGenerateDtoList = new List(); + var dtoDetails_in = dtoDatas.Where(x => x.ResultType == TakeStockType.Profit).SelectMany(x => x.Details).ToList(); + //2.组装:入库数据 - var generateDtoList_in = dtoDatas.Where(x => x.ResultType == TakeStockType.Profit).GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }).Select(x => new BoxInventoryTakeGenerateDto() + var generateDtoList_in = dtoDetails_in.GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }).Select(x => new BoxInventoryTakeGenerateDto() { BoxId = x.Key.BoxId, OrgCode = x.Key.OrgCode, @@ -354,7 +356,7 @@ namespace WMS.Web.Domain.Services //2.1.遍历:组装明细 generateDtoList_in.ForEach(x => { - foreach (var detItem in dtoDatas) + foreach (var detItem in dtoDetails_in) { //3.1箱是当前的 if (detItem.BoxId == x.BoxId) @@ -370,7 +372,8 @@ namespace WMS.Web.Domain.Services }); //3.组装:出库数据 - var generateDtoList_out = dtoDatas.Where(x => x.ResultType == TakeStockType.Loss).GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }).Select(x => new BoxInventoryTakeGenerateDto() + var dtoDetails_out = dtoDatas.Where(x => x.ResultType == TakeStockType.Loss).SelectMany(x => x.Details).ToList(); + var generateDtoList_out = dtoDetails_out.GroupBy(x => new { x.BoxId, x.OrgCode, x.StockCode, x.SubStockId }).Select(x => new BoxInventoryTakeGenerateDto() { BoxId = x.Key.BoxId, OrgCode = x.Key.OrgCode, @@ -382,7 +385,7 @@ namespace WMS.Web.Domain.Services //3.1遍历:组装明细 generateDtoList_in.ForEach(x => { - foreach (var detItem in dtoDatas) + foreach (var detItem in dtoDetails_out) { //3.1箱是当前的 if (detItem.BoxId == x.BoxId) @@ -407,14 +410,19 @@ namespace WMS.Web.Domain.Services return result; //5.组装物料收发明细 - foreach (var item in dtoDatas) + foreach (var item in dtoDatas.SelectMany(x => x.Details).ToList()) { - var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto( + var entity = dtoDatas.Where(x => x.Id == item.Fid).FirstOrDefault(); + if (entity != null) + { + var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto( item.BoxId, item.MaterialId, item.OrgCode, item.StockCode, item.SubStockId, OrderType.Take, - item.BillNo, item.FinalQty, (item.ResultType == TakeStockType.Loss ? InventoryInOutType.Out : InventoryInOutType.In)); - InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet); + entity.BillNo, item.FinalQty, (entity.ResultType == TakeStockType.Loss ? InventoryInOutType.Out : InventoryInOutType.In)); + InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet); + } + } //5.提交物料收发明细:新增 if (InventoryInOutDetailsGenerateDtoList.Count != 0) @@ -603,7 +611,7 @@ namespace WMS.Web.Domain.Services foreach (var item in dtoData.Details.SelectMany(x => x.BoxsDetails).ToList()) { //找到当前box对应的物料明细 - var currentDet= current_materialDetails.Where(x => x.Id == item.DetailId).FirstOrDefault(); + var currentDet = current_materialDetails.Where(x => x.Id == item.DetailId).FirstOrDefault(); var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto( item.BoxId, currentDet.MaterialId, @@ -895,13 +903,13 @@ namespace WMS.Web.Domain.Services } //5.即时库存:处理 //5.1先合并相同的数据 - var invDetGenDtos_in = InventoryDetailsGenerateDto.Where(x=>x.InventoryInOutType==(int)InventoryInOutType.In).GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() + var invDetGenDtos_in = InventoryDetailsGenerateDto.Where(x => x.InventoryInOutType == (int)InventoryInOutType.In).GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() { OrgCode = x.Key.OrgCode, StockCode = x.Key.StockCode, MaterialId = x.Key.MaterialId, SubStockId = x.Key.SubStockId, - InventoryInOutType=(int)InventoryInOutType.In, + InventoryInOutType = (int)InventoryInOutType.In, Qty = x.Sum(t => t.Qty) }).ToList(); var invDetGenDtos_out = InventoryDetailsGenerateDto.Where(x => x.InventoryInOutType == (int)InventoryInOutType.Out).GroupBy(x => new { x.OrgCode, x.MaterialId, x.StockCode, x.SubStockId }).Select(x => new InventoryDetailsGenerateDto() @@ -914,7 +922,7 @@ namespace WMS.Web.Domain.Services Qty = x.Sum(t => t.Qty) }).ToList(); - var invDetGenDtos=new List(); + var invDetGenDtos = new List(); invDetGenDtos.AddRange(invDetGenDtos_in); invDetGenDtos.AddRange(invDetGenDtos_out); @@ -962,7 +970,7 @@ namespace WMS.Web.Domain.Services addEntity.Details = _mapper.Map>(dto.Details); add_entitys.Add(addEntity); } - else + else { var update_entity = boxInventory; update_entity.OrgCode = dto.OrgCode; @@ -976,12 +984,12 @@ namespace WMS.Web.Domain.Services var updateDetail = update_entity.Details.Where(x => x.MaterialId == dtoItem.MaterialId).FirstOrDefault(); if (updateDetail == null) { - var det =_mapper.Map(dtoItem); + var det = _mapper.Map(dtoItem); update_entity.Details.Add(det); } - else + else { - updateDetail.Qty = updateDetail.Qty + dtoItem.Qty; + updateDetail.Qty = updateDetail.Qty + dtoItem.Qty; updateDetail.SerialNumbers.AddRange(dtoItem.SerialNumbers); } }