出库单-物料收发明细

This commit is contained in:
tongfei
2023-11-24 14:57:56 +08:00
parent 5f71e20802
commit c023f3eb11

View File

@@ -38,7 +38,7 @@ namespace WMS.Web.Domain.Services
_inventoryInOutDetailsService = inventoryInOutDetailsService;
}
/// <summary>
/// 改箱-箱库存的变更
@@ -89,7 +89,7 @@ namespace WMS.Web.Domain.Services
}
});
//4.开始处理
var result= await this.ExeChangeBox(generateDtos, sourceBoxInventorys, targetBoxInventorys, isTransaction);
var result = await this.ExeChangeBox(generateDtos, sourceBoxInventorys, targetBoxInventorys, isTransaction);
if (!result.IsSuccess)
return result;
@@ -112,9 +112,9 @@ namespace WMS.Web.Domain.Services
}
//5.3组装:目标箱物料收发明细;有箱库存就需要创建物料收发明细;
var tagBox = targetBoxInventorys.Where(x => x.BoxId == item.DestBoxId).FirstOrDefault();
if (tagBox != null)
if (tagBox != null)
{
var inventoryInOutDet=_inventoryInOutDetailsService.GenerateDto(
var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto(
item.DestBoxId, item.MaterialId,
item.DestBoxOrgCode, item.DestStockCode,
item.DestSubStockId, OrderType.ChangeBox,
@@ -122,17 +122,17 @@ namespace WMS.Web.Domain.Services
InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
}
}
//5.提交物料收发明细:新增
if (InventoryInOutDetailsGenerateDtoList.Count != 0)
{
var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList,isTransaction);
var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList, isTransaction);
if (!inout_result.IsSuccess)
return inout_result;
}
return Result.ReSuccess();
}
}
/// <summary>
/// 移箱-箱库存的变更
@@ -187,13 +187,13 @@ namespace WMS.Web.Domain.Services
item.OrgCode, item.StockCode,
SubStockId, OrderType.MoveBox,
item.BillNo, item.Qty, InOutType);
InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
}
}
}
//4.开始处理
var result= await this.ExeMoveBox(generateDtoList, boxInventorys, boxs, isTransaction);
var result = await this.ExeMoveBox(generateDtoList, boxInventorys, boxs, isTransaction);
if (!result.IsSuccess)
return result;
@@ -206,7 +206,7 @@ namespace WMS.Web.Domain.Services
}
return Result.ReSuccess();
}
}
/// <summary>
/// 入库回退上下架-箱库存的变更
@@ -296,12 +296,12 @@ namespace WMS.Web.Domain.Services
generateDtoList.AddRange(generateDtoList_in);
generateDtoList.AddRange(generateDtoList_out);
//4.提交处理
var result= await this.ExeBackBox(generateDtoList, isTransaction);
var result = await this.ExeBackBox(generateDtoList, isTransaction);
if (!result.IsSuccess)
return result;
//5.组装物料收发明细dto
foreach (var item in dtoDatas.SelectMany(x=>x.Details).ToList())
foreach (var item in dtoDatas.SelectMany(x => x.Details).ToList())
{
var entity = dtoDatas.Where(x => x.Id == item.Fid).FirstOrDefault();
if (entity != null)
@@ -310,7 +310,7 @@ namespace WMS.Web.Domain.Services
item.BoxId, item.MaterialId,
item.OrgCode, item.StockCode,
item.SubStockId, OrderType.Back,
entity.BillNo, item.Qty, (entity.Type== BackRecordType.InstockOff?InventoryInOutType.Out:InventoryInOutType.In));
entity.BillNo, item.Qty, (entity.Type == BackRecordType.InstockOff ? InventoryInOutType.Out : InventoryInOutType.In));
InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
}
}
@@ -401,7 +401,7 @@ namespace WMS.Web.Domain.Services
generateDtoList.AddRange(generateDtoList_in);
generateDtoList.AddRange(generateDtoList_out);
//提交处理
var result= await this.ExeTakeBox(generateDtoList, isTransaction);
var result = await this.ExeTakeBox(generateDtoList, isTransaction);
if (!result.IsSuccess)
return result;
@@ -423,7 +423,7 @@ namespace WMS.Web.Domain.Services
return inout_result;
}
return Result.ReSuccess();
}
}
/// <summary>
/// 入库单-箱库存的变更
@@ -511,7 +511,7 @@ namespace WMS.Web.Domain.Services
generateDtoList.AddRange(generateDtoList_Metod_Box);
generateDtoList.AddRange(generateDtoList_Metod_Product);
//提交处理
var result= await this.ExeInStockBox(generateDtoList, isTransaction);
var result = await this.ExeInStockBox(generateDtoList, isTransaction);
if (!result.IsSuccess)
return result;
@@ -538,7 +538,7 @@ namespace WMS.Web.Domain.Services
}
return Result.ReSuccess();
}
}
/// <summary>
/// 出库单-箱库存变更
@@ -552,6 +552,9 @@ namespace WMS.Web.Domain.Services
if (dtoData == null)
return Result.ReFailure(ResultCodes.InventoryNoSourceError);
//物料收发明细dtos
var InventoryInOutDetailsGenerateDtoList = new List<InventoryInOutDetailsGenerateDto>();
//2.组装
var generateDtoList = dtoData.Details.SelectMany(x => x.BoxsDetails).GroupBy(x => new { x.BoxId, x.SubStockId })
.Select(x => new BoxInventoryGenerateDto()
@@ -587,7 +590,37 @@ namespace WMS.Web.Domain.Services
});
//提交处理
return await this.ExeOutStockBox(generateDtoList, isTransaction);
var result = await this.ExeOutStockBox(generateDtoList, isTransaction);
if (!result.IsSuccess)
return result;
//5.组装物料收发明细dto
//3.1明细的IDS
var current_materialDetails_ids = dtoData.Details.SelectMany(t => t.BoxsDetails).GroupBy(t => t.DetailId).Select(t => t.Key).ToList();
//3.2再通过找到的IDS获取中间层的明细
var current_materialDetails = dtoData.Details.Where(t => current_materialDetails_ids.Contains(t.Id)).ToList();
foreach (var item in dtoData.Details.SelectMany(x => x.BoxsDetails).ToList())
{
//找到当前box对应的物料明细
var currentDet= current_materialDetails.Where(x => x.Id == item.DetailId).FirstOrDefault();
var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto(
item.BoxId, currentDet.MaterialId,
dtoData.OrgCode, dtoData.StockCode,
item.SubStockId, OutStockTypeConvert(dtoData.Type),
dtoData.BillNo, item.Qty, InventoryInOutType.Out);
InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
}
//5.提交物料收发明细:新增
if (InventoryInOutDetailsGenerateDtoList.Count != 0)
{
var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList, isTransaction);
if (!inout_result.IsSuccess)
return inout_result;
}
return Result.ReSuccess();
}
/// <summary>
@@ -598,7 +631,7 @@ namespace WMS.Web.Domain.Services
/// <param name="targetBoxInventorys"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
private async Task<Result> ExeChangeBox(List<BoxInventoryChangeGenerateDto> dtoDatas,List<BoxInventory> sourceBoxInventorys, List<BoxInventory> targetBoxInventorys, bool isTransaction)
private async Task<Result> ExeChangeBox(List<BoxInventoryChangeGenerateDto> dtoDatas, List<BoxInventory> sourceBoxInventorys, List<BoxInventory> targetBoxInventorys, bool isTransaction)
{
//1.判断来源数据是否存在
if (dtoDatas == null || dtoDatas.Count == 0)
@@ -733,7 +766,7 @@ namespace WMS.Web.Domain.Services
/// <param name="boxs"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
private async Task<Result> ExeMoveBox(List<BoxInventoryMoveGenerateDto> dtoDatas, List<BoxInventory> boxInventorys,List<Box> boxs, bool isTransaction)
private async Task<Result> ExeMoveBox(List<BoxInventoryMoveGenerateDto> dtoDatas, List<BoxInventory> boxInventorys, List<Box> boxs, bool isTransaction)
{
//1.判断来源数据是否存在
if (dtoDatas == null || dtoDatas.Count == 0)