移箱-箱库存变更-优化
This commit is contained in:
@@ -2771,6 +2771,31 @@
|
|||||||
类型:1为入库,2为出库
|
类型:1为入库,2为出库
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryMoveGenerateDto.Details">
|
||||||
|
<summary>
|
||||||
|
明细
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:WMS.Web.Core.Dto.Inventory.BoxInventoryMoveDetailsGenerateDto">
|
||||||
|
<summary>
|
||||||
|
明细
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryMoveDetailsGenerateDto.MaterialId">
|
||||||
|
<summary>
|
||||||
|
物料Id
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryMoveDetailsGenerateDto.Qty">
|
||||||
|
<summary>
|
||||||
|
数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryMoveDetailsGenerateDto.SerialNumbers">
|
||||||
|
<summary>
|
||||||
|
序列号
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:WMS.Web.Core.Dto.Inventory.BoxInventoryNoPurchaseGenerateDto">
|
<member name="T:WMS.Web.Core.Dto.Inventory.BoxInventoryNoPurchaseGenerateDto">
|
||||||
<summary>
|
<summary>
|
||||||
非采购上架-箱库存处理对象
|
非采购上架-箱库存处理对象
|
||||||
|
|||||||
@@ -3741,7 +3741,7 @@
|
|||||||
<param name="isTransaction"></param>
|
<param name="isTransaction"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:WMS.Web.Domain.Services.BoxInventoryService.ExeMoveBox(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.BoxInventoryMoveGenerateDto},System.Collections.Generic.List{WMS.Web.Domain.Entitys.BoxInventory},System.Collections.Generic.List{WMS.Web.Domain.Entitys.Box},System.Boolean)">
|
<member name="M:WMS.Web.Domain.Services.BoxInventoryService.ExeMoveBox(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.BoxInventoryMoveGenerateDto},System.Collections.Generic.List{WMS.Web.Domain.Entitys.BoxInventory},System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
移箱-箱库存的变更
|
移箱-箱库存的变更
|
||||||
</summary>
|
</summary>
|
||||||
|
|||||||
@@ -33,5 +33,31 @@ namespace WMS.Web.Core.Dto.Inventory
|
|||||||
/// 类型:1为入库,2为出库
|
/// 类型:1为入库,2为出库
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int InventoryInOutType { get; set; }
|
public int InventoryInOutType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 明细
|
||||||
|
/// </summary>
|
||||||
|
public List<BoxInventoryMoveDetailsGenerateDto> Details { get; set; } = new List<BoxInventoryMoveDetailsGenerateDto>();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 明细
|
||||||
|
/// </summary>
|
||||||
|
public class BoxInventoryMoveDetailsGenerateDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 物料Id
|
||||||
|
///</summary>
|
||||||
|
public int MaterialId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 数量
|
||||||
|
/// </summary>
|
||||||
|
public decimal Qty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 序列号
|
||||||
|
/// </summary>
|
||||||
|
public List<string> SerialNumbers { get; set; } = new List<string>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,10 +17,12 @@ namespace WMS.Web.Domain.Mappers
|
|||||||
//改箱映射
|
//改箱映射
|
||||||
CreateMap<BoxInventoryDetailsChangeGenerateDto, BoxInventoryDetails>();
|
CreateMap<BoxInventoryDetailsChangeGenerateDto, BoxInventoryDetails>();
|
||||||
|
|
||||||
//移箱映射
|
//移箱映射
|
||||||
|
|
||||||
CreateMap<BoxInventoryMoveGenerateDto, BoxInventory>();
|
CreateMap<BoxInventoryMoveGenerateDto, BoxInventory>();
|
||||||
CreateMap<BoxDetails, BoxInventoryDetails>()
|
CreateMap<BoxInventoryMoveDetailsGenerateDto, BoxInventoryDetails>()
|
||||||
.ForMember(x => x.Id, ops => ops.Ignore());
|
.ForMember(x => x.Id, ops => ops.Ignore())
|
||||||
|
.ForMember(x => x.Fid, ops => ops.Ignore());
|
||||||
|
|
||||||
//出入库回退上下架映射
|
//出入库回退上下架映射
|
||||||
CreateMap<BoxInventoryBackGenerateDto, BoxInventory>();
|
CreateMap<BoxInventoryBackGenerateDto, BoxInventory>();
|
||||||
|
|||||||
@@ -158,9 +158,6 @@ namespace WMS.Web.Domain.Services
|
|||||||
var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
|
var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
|
||||||
var boxInventorys = await _boxInventoryRepositories.GetList(boxIds);
|
var boxInventorys = await _boxInventoryRepositories.GetList(boxIds);
|
||||||
|
|
||||||
//2.1箱基本信息
|
|
||||||
var boxs = await _boxRepositories.GetEntityList(boxIds);
|
|
||||||
|
|
||||||
//2.2组合要生成的dto
|
//2.2组合要生成的dto
|
||||||
var generateDtoList = new List<BoxInventoryMoveGenerateDto>();
|
var generateDtoList = new List<BoxInventoryMoveGenerateDto>();
|
||||||
foreach (var item in dtoDatas)
|
foreach (var item in dtoDatas)
|
||||||
@@ -172,6 +169,15 @@ namespace WMS.Web.Domain.Services
|
|||||||
generateDto.StockCode = item.StockCode;
|
generateDto.StockCode = item.StockCode;
|
||||||
generateDto.SubStockId = item.Type == MoveBoxType.Up ? item.DestSubStockId : item.SrcSubStockId;
|
generateDto.SubStockId = item.Type == MoveBoxType.Up ? item.DestSubStockId : item.SrcSubStockId;
|
||||||
generateDto.InventoryInOutType = item.Type == MoveBoxType.Down ? (int)InventoryInOutType.Out : (int)InventoryInOutType.In;
|
generateDto.InventoryInOutType = item.Type == MoveBoxType.Down ? (int)InventoryInOutType.Out : (int)InventoryInOutType.In;
|
||||||
|
//2.2.2箱库存dto-组装明细
|
||||||
|
foreach (var detItem in item.Details)
|
||||||
|
{
|
||||||
|
var genDetDto = new BoxInventoryMoveDetailsGenerateDto();
|
||||||
|
genDetDto.MaterialId = detItem.MaterialId;
|
||||||
|
genDetDto.Qty = detItem.Qty;
|
||||||
|
genDetDto.SerialNumbers = detItem.SerialNumbers;
|
||||||
|
generateDto.Details.Add(genDetDto);
|
||||||
|
}
|
||||||
generateDtoList.Add(generateDto);
|
generateDtoList.Add(generateDto);
|
||||||
|
|
||||||
//2.2.2物料收发明dto-组装
|
//2.2.2物料收发明dto-组装
|
||||||
@@ -183,9 +189,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
//下架-箱库存是存在的情况下,生成物料收发明细
|
//下架-箱库存是存在的情况下,生成物料收发明细
|
||||||
if ((!ishave && item.Type == MoveBoxType.Up) || (ishave && item.Type == MoveBoxType.Down))
|
if ((!ishave && item.Type == MoveBoxType.Up) || (ishave && item.Type == MoveBoxType.Down))
|
||||||
{
|
{
|
||||||
//5.1.1取箱信息
|
foreach (var boxDet in item.Details)
|
||||||
var box = boxs.Where(x => x.Id == item.BoxId).FirstOrDefault();
|
|
||||||
foreach (var boxDet in box.Details)
|
|
||||||
{
|
{
|
||||||
var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto(
|
var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto(
|
||||||
item.BoxId, boxDet.MaterialId,
|
item.BoxId, boxDet.MaterialId,
|
||||||
@@ -198,7 +202,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
|
|
||||||
}
|
}
|
||||||
//4.开始处理
|
//4.开始处理
|
||||||
var result = await this.ExeMoveBox(generateDtoList, boxInventorys, boxs, isTransaction);
|
var result = await this.ExeMoveBox(generateDtoList, boxInventorys, isTransaction);
|
||||||
if (!result.IsSuccess)
|
if (!result.IsSuccess)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
@@ -647,9 +651,30 @@ namespace WMS.Web.Domain.Services
|
|||||||
//2.2.1这里为了重新上架,改变仓库和仓位的需求
|
//2.2.1这里为了重新上架,改变仓库和仓位的需求
|
||||||
if (!string.IsNullOrEmpty(dto.StockCode) && dto.SubStockId.HasValue)
|
if (!string.IsNullOrEmpty(dto.StockCode) && dto.SubStockId.HasValue)
|
||||||
{
|
{
|
||||||
|
//2.2.2仓位和原来的目标箱的仓位不一致的情况下-》》把目标箱原来仓位的物料进行-即时库存的变更-(减库存)
|
||||||
|
if (dto.SubStockId.Value != tag_update_entity.SubStockId)
|
||||||
|
{
|
||||||
|
foreach (var item in tag_update_entity.Details)
|
||||||
|
{
|
||||||
|
//2.2.2组装即时库存dto
|
||||||
|
var inventoryDet = new InventoryDetailsGenerateDto();
|
||||||
|
inventoryDet.MaterialId = item.MaterialId;
|
||||||
|
inventoryDet.OrgCode = tag_update_entity.OrgCode;
|
||||||
|
inventoryDet.StockCode = tag_update_entity.StockCode;
|
||||||
|
inventoryDet.SubStockId = tag_update_entity.SubStockId;
|
||||||
|
inventoryDet.Qty = item.Qty;
|
||||||
|
inventoryDet.InventoryInOutType = (int)InventoryInOutType.Out;
|
||||||
|
//2.2.2即时库存:修改箱库存的集合
|
||||||
|
InventoryDetailsGenerateDto.Add(inventoryDet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//2.2.3.在变更目标箱的-仓库-仓位-组织
|
||||||
tag_update_entity.StockCode = dto.StockCode;
|
tag_update_entity.StockCode = dto.StockCode;
|
||||||
tag_update_entity.SubStockId = dto.SubStockId.Value;
|
tag_update_entity.SubStockId = dto.SubStockId.Value;
|
||||||
tag_update_entity.OrgCode = dto.TargetBoxOrgCode;
|
tag_update_entity.OrgCode = dto.TargetBoxOrgCode;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
tag_update_entity.Details = tagBox.Details;
|
tag_update_entity.Details = tagBox.Details;
|
||||||
//2.2.1遍历改变的明细
|
//2.2.1遍历改变的明细
|
||||||
@@ -748,7 +773,7 @@ namespace WMS.Web.Domain.Services
|
|||||||
/// <param name="boxs"></param>
|
/// <param name="boxs"></param>
|
||||||
/// <param name="isTransaction"></param>
|
/// <param name="isTransaction"></param>
|
||||||
/// <returns></returns>
|
/// <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,bool isTransaction)
|
||||||
{
|
{
|
||||||
//1.判断来源数据是否存在
|
//1.判断来源数据是否存在
|
||||||
if (dtoDatas == null || dtoDatas.Count == 0)
|
if (dtoDatas == null || dtoDatas.Count == 0)
|
||||||
@@ -758,10 +783,6 @@ namespace WMS.Web.Domain.Services
|
|||||||
var add_entitys = new List<BoxInventory>();
|
var add_entitys = new List<BoxInventory>();
|
||||||
var InventoryDetailsGenerateDto = new List<InventoryDetailsGenerateDto>();
|
var InventoryDetailsGenerateDto = new List<InventoryDetailsGenerateDto>();
|
||||||
|
|
||||||
//2.获取“箱库存集合”和“箱基本信息集合”
|
|
||||||
var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
|
|
||||||
var serialNumbers = await _serialNumbersRepositories.GetEntityListByBoxIds(boxIds);
|
|
||||||
|
|
||||||
//3.遍历:dto
|
//3.遍历:dto
|
||||||
foreach (var dto in dtoDatas)
|
foreach (var dto in dtoDatas)
|
||||||
{
|
{
|
||||||
@@ -771,30 +792,17 @@ namespace WMS.Web.Domain.Services
|
|||||||
//3.1上架的时候:箱一定是不存在于箱库存当中的,有则返回提示“已有箱库存,不需要再扫上架”
|
//3.1上架的时候:箱一定是不存在于箱库存当中的,有则返回提示“已有箱库存,不需要再扫上架”
|
||||||
var ishave = boxInventorys.Where(x => x.BoxId == dto.BoxId).Any();
|
var ishave = boxInventorys.Where(x => x.BoxId == dto.BoxId).Any();
|
||||||
if (ishave)
|
if (ishave)
|
||||||
return Result.ReFailure(ResultCodes.BoxInventoryHaveInventoryError);
|
return Result.ReFailure(ResultCodes.BoxInventoryHaveInventoryError);
|
||||||
//3.1.1取箱信息
|
|
||||||
var box = boxs.Where(x => x.Id == dto.BoxId).FirstOrDefault();
|
|
||||||
if (box == null)
|
|
||||||
return Result.ReFailure(ResultCodes.BoxNoData);
|
|
||||||
//3.1.2去箱对应的序列号信息
|
|
||||||
var box_serialNumbers = serialNumbers.Where(x => x.BoxId == dto.BoxId).Select(x => new { x.MaterialId, x.SerialNumber }).ToList();
|
|
||||||
|
|
||||||
//3.2组装要新增的箱库存信息:箱和明细
|
//3.2组装要新增的箱库存信息:箱和明细
|
||||||
var addEntity = _mapper.Map<BoxInventory>(dto);
|
var addEntity = _mapper.Map<BoxInventory>(dto);
|
||||||
addEntity.Details = _mapper.Map<List<BoxInventoryDetails>>(box.Details);
|
addEntity.Details = _mapper.Map<List<BoxInventoryDetails>>(dto.Details);
|
||||||
|
|
||||||
//3.3组装要新增的箱库存:明细中的序列号
|
|
||||||
foreach (var item in addEntity.Details)
|
|
||||||
{
|
|
||||||
var box_serialNubs = box_serialNumbers.Where(x => x.MaterialId == item.MaterialId).Select(x=>x.SerialNumber).ToList();
|
|
||||||
if (box_serialNubs != null && box_serialNubs.Count!=0)
|
|
||||||
item.SerialNumbers.AddRange(box_serialNubs);
|
|
||||||
}
|
|
||||||
//3.4箱库存:要新增的集合
|
//3.4箱库存:要新增的集合
|
||||||
add_entitys.Add(addEntity);
|
add_entitys.Add(addEntity);
|
||||||
|
|
||||||
//4.1即时库存:组装入库
|
//4.1即时库存:组装入库
|
||||||
foreach (var item in box.Details)
|
foreach (var item in dto.Details)
|
||||||
{
|
{
|
||||||
//3.2.2组装即时库存dto
|
//3.2.2组装即时库存dto
|
||||||
var inventoryDet = new InventoryDetailsGenerateDto();
|
var inventoryDet = new InventoryDetailsGenerateDto();
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ namespace WMS.Web.Repositories
|
|||||||
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
|
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
|
||||||
.GroupJoin(_context.Box, p => p.order.BoxId, t => t.Id, (p, ts) => new { p.detail,p.order, ts })
|
.GroupJoin(_context.Box, p => p.order.BoxId, t => t.Id, (p, ts) => new { p.detail,p.order, ts })
|
||||||
.SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box })
|
.SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box })
|
||||||
.Where(adv => 1 == 1 && adv.detail.Qty!=0);
|
.Where(adv => 1 == 1 && adv.detail.Qty!=0 );
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(dto.BoxBillNo))
|
if (!string.IsNullOrEmpty(dto.BoxBillNo))
|
||||||
query = query.Where(w => EF.Functions.Like(w.box.BoxBillNo, "%" + dto.BoxBillNo + "%"));
|
query = query.Where(w => EF.Functions.Like(w.box.BoxBillNo, "%" + dto.BoxBillNo + "%"));
|
||||||
|
|||||||
Reference in New Issue
Block a user