出库-箱库存-优化
This commit is contained in:
@@ -3509,11 +3509,12 @@
|
|||||||
<param name="isTransaction"></param>
|
<param name="isTransaction"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WMS.Web.Domain.Services.BoxInventoryService.ExeOutStockBox(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.BoxInventoryGenerateDto},System.Boolean)">
|
<member name="M:WMS.Web.Domain.Services.BoxInventoryService.ExeOutStockBox(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.BoxInventoryGenerateDto},System.Collections.Generic.List{WMS.Web.Domain.Entitys.BoxInventory},System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
出库单-箱库存变更
|
出库单-箱库存变更
|
||||||
</summary>
|
</summary>
|
||||||
<param name="dtoDatas"></param>
|
<param name="dtoDatas"></param>
|
||||||
|
<param name="boxInventorys"></param>
|
||||||
<param name="isTransaction"></param>
|
<param name="isTransaction"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
|||||||
@@ -564,14 +564,19 @@ namespace WMS.Web.Domain.Services
|
|||||||
//物料收发明细dtos
|
//物料收发明细dtos
|
||||||
var InventoryInOutDetailsGenerateDtoList = new List<InventoryInOutDetailsGenerateDto>();
|
var InventoryInOutDetailsGenerateDtoList = new List<InventoryInOutDetailsGenerateDto>();
|
||||||
|
|
||||||
|
//找出所有的箱库存
|
||||||
|
var boxIds = dtoData.Details.SelectMany(x => x.BoxsDetails).GroupBy(x=>x.BoxId).Select(x => x.Key).ToList();
|
||||||
|
var boxInventorys = await _boxInventoryRepositories.GetList(boxIds);
|
||||||
|
//判断箱库存是否存在
|
||||||
|
var isNotHaveBoxInvetory = boxInventorys.All(x => boxIds.Any(bid => bid != x.Id));
|
||||||
|
if(isNotHaveBoxInvetory)
|
||||||
|
return Result.ReFailure(ResultCodes.BoxInventoryNoDataError);
|
||||||
|
|
||||||
//2.组装
|
//2.组装
|
||||||
var generateDtoList = dtoData.Details.SelectMany(x => x.BoxsDetails).GroupBy(x => new { x.BoxId, x.SubStockId })
|
var generateDtoList = dtoData.Details.SelectMany(x => x.BoxsDetails).GroupBy(x => new { x.BoxId })
|
||||||
.Select(x => new BoxInventoryGenerateDto()
|
.Select(x => new BoxInventoryGenerateDto()
|
||||||
{
|
{
|
||||||
BoxId = x.Key.BoxId,
|
BoxId = x.Key.BoxId,
|
||||||
OrgCode = dtoData.OrgCode,
|
|
||||||
StockCode = dtoData.StockCode,
|
|
||||||
SubStockId = x.Key.SubStockId,
|
|
||||||
InventoryInOutMethod = (int)dtoData.Method,
|
InventoryInOutMethod = (int)dtoData.Method,
|
||||||
InventoryInOutType = (int)InventoryInOutType.Out
|
InventoryInOutType = (int)InventoryInOutType.Out
|
||||||
|
|
||||||
@@ -579,6 +584,14 @@ namespace WMS.Web.Domain.Services
|
|||||||
//3.组装明细
|
//3.组装明细
|
||||||
generateDtoList.ForEach(x =>
|
generateDtoList.ForEach(x =>
|
||||||
{
|
{
|
||||||
|
//从箱库存找到:组织、仓库、仓位、进行赋值;
|
||||||
|
var current_box_invetory = boxInventorys.Where(t => t.BoxId == x.BoxId).FirstOrDefault();
|
||||||
|
if (current_box_invetory != null && current_box_invetory.BoxId==x.BoxId)
|
||||||
|
{
|
||||||
|
x.OrgCode = current_box_invetory.OrgCode;
|
||||||
|
x.StockCode = current_box_invetory.StockCode;
|
||||||
|
x.SubStockId = current_box_invetory.SubStockId;
|
||||||
|
}
|
||||||
//3.1先通过中间层的明细的箱明细找到中间层明细的IDS
|
//3.1先通过中间层的明细的箱明细找到中间层明细的IDS
|
||||||
var current_materialDetails_ids = dtoData.Details.SelectMany(t => t.BoxsDetails).Where(t => t.BoxId == x.BoxId).GroupBy(t => t.DetailId).Select(t => t.Key).ToList();
|
var current_materialDetails_ids = dtoData.Details.SelectMany(t => t.BoxsDetails).Where(t => t.BoxId == x.BoxId).GroupBy(t => t.DetailId).Select(t => t.Key).ToList();
|
||||||
//3.2再通过找到的IDS获取中间层的明细
|
//3.2再通过找到的IDS获取中间层的明细
|
||||||
@@ -599,7 +612,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
});
|
});
|
||||||
|
|
||||||
//提交处理
|
//提交处理
|
||||||
var result = await this.ExeOutStockBox(generateDtoList, isTransaction);
|
var result = await this.ExeOutStockBox(generateDtoList, boxInventorys, isTransaction);
|
||||||
if (!result.IsSuccess)
|
if (!result.IsSuccess)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
@@ -1419,9 +1432,10 @@ namespace WMS.Web.Domain.Services
|
|||||||
/// 出库单-箱库存变更
|
/// 出库单-箱库存变更
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="dtoDatas"></param>
|
/// <param name="dtoDatas"></param>
|
||||||
|
/// <param name="boxInventorys"></param>
|
||||||
/// <param name="isTransaction"></param>
|
/// <param name="isTransaction"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<Result> ExeOutStockBox(List<BoxInventoryGenerateDto> dtoDatas, bool isTransaction)
|
private async Task<Result> ExeOutStockBox(List<BoxInventoryGenerateDto> dtoDatas,List<BoxInventory> boxInventorys, bool isTransaction)
|
||||||
{
|
{
|
||||||
//1.判断来源数据是否存在
|
//1.判断来源数据是否存在
|
||||||
if (dtoDatas == null || dtoDatas.Count == 0)
|
if (dtoDatas == null || dtoDatas.Count == 0)
|
||||||
@@ -1430,11 +1444,6 @@ namespace WMS.Web.Domain.Services
|
|||||||
var delete_ids = new List<int>();
|
var delete_ids = new List<int>();
|
||||||
var update_entitys = new List<BoxInventory>();
|
var update_entitys = new List<BoxInventory>();
|
||||||
var InventoryDetailsGenerateDto = new List<InventoryDetailsGenerateDto>();
|
var InventoryDetailsGenerateDto = new List<InventoryDetailsGenerateDto>();
|
||||||
|
|
||||||
//1.1通过箱IDS获取箱库存
|
|
||||||
var boxIds = dtoDatas.Select(x => x.BoxId).ToList();
|
|
||||||
var boxInventorys = await _boxInventoryRepositories.GetList(boxIds);
|
|
||||||
|
|
||||||
//2.遍历
|
//2.遍历
|
||||||
foreach (var dto in dtoDatas)
|
foreach (var dto in dtoDatas)
|
||||||
{
|
{
|
||||||
@@ -1524,17 +1533,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
|
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
|
||||||
}
|
}
|
||||||
//5.即时库存:变更处理
|
//5.即时库存:变更处理
|
||||||
//5.1先合并相同的数据
|
var invDetGenDtos = InventoryDetailsGenerateDto.Where(x => x.InventoryInOutType == (int)InventoryInOutType.Out).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,
|
|
||||||
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()
|
|
||||||
{
|
{
|
||||||
OrgCode = x.Key.OrgCode,
|
OrgCode = x.Key.OrgCode,
|
||||||
StockCode = x.Key.StockCode,
|
StockCode = x.Key.StockCode,
|
||||||
@@ -1543,10 +1542,6 @@ namespace WMS.Web.Domain.Services
|
|||||||
InventoryInOutType = (int)InventoryInOutType.Out,
|
InventoryInOutType = (int)InventoryInOutType.Out,
|
||||||
Qty = x.Sum(t => t.Qty)
|
Qty = x.Sum(t => t.Qty)
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
var invDetGenDtos = new List<InventoryDetailsGenerateDto>();
|
|
||||||
invDetGenDtos.AddRange(invDetGenDtos_in);
|
|
||||||
invDetGenDtos.AddRange(invDetGenDtos_out);
|
|
||||||
if (invDetGenDtos.Count != 0)
|
if (invDetGenDtos.Count != 0)
|
||||||
{
|
{
|
||||||
var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
|
var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
|
||||||
|
|||||||
Reference in New Issue
Block a user