diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index b444af75..fdf94ddb 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -2771,6 +2771,31 @@
类型:1为入库,2为出库
+
+
+ 明细
+
+
+
+
+ 明细
+
+
+
+
+ 物料Id
+
+
+
+
+ 数量
+
+
+
+
+ 序列号
+
+
非采购上架-箱库存处理对象
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 009db77d..99b9dba1 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -3741,7 +3741,7 @@
-
+
移箱-箱库存的变更
diff --git a/src/WMS.Web.Core/Dto/Inventory/BoxInventoryMoveGenerateDto.cs b/src/WMS.Web.Core/Dto/Inventory/BoxInventoryMoveGenerateDto.cs
index d5fa4c61..06f98581 100644
--- a/src/WMS.Web.Core/Dto/Inventory/BoxInventoryMoveGenerateDto.cs
+++ b/src/WMS.Web.Core/Dto/Inventory/BoxInventoryMoveGenerateDto.cs
@@ -33,5 +33,31 @@ namespace WMS.Web.Core.Dto.Inventory
/// 类型:1为入库,2为出库
///
public int InventoryInOutType { get; set; }
+
+ ///
+ /// 明细
+ ///
+ public List Details { get; set; } = new List();
+
+
+ }
+
+ ///
+ /// 明细
+ ///
+ public class BoxInventoryMoveDetailsGenerateDto
+ {
+ ///
+ /// 物料Id
+ ///
+ public int MaterialId { get; set; }
+ ///
+ /// 数量
+ ///
+ public decimal Qty { get; set; }
+ ///
+ /// 序列号
+ ///
+ public List SerialNumbers { get; set; } = new List();
}
}
diff --git a/src/WMS.Web.Domain/Mappers/InventoryMapper.cs b/src/WMS.Web.Domain/Mappers/InventoryMapper.cs
index 9c3acc2f..d5751773 100644
--- a/src/WMS.Web.Domain/Mappers/InventoryMapper.cs
+++ b/src/WMS.Web.Domain/Mappers/InventoryMapper.cs
@@ -17,10 +17,12 @@ namespace WMS.Web.Domain.Mappers
//改箱映射
CreateMap();
- //移箱映射
+ //移箱映射
+
CreateMap();
- CreateMap()
- .ForMember(x => x.Id, ops => ops.Ignore());
+ CreateMap()
+ .ForMember(x => x.Id, ops => ops.Ignore())
+ .ForMember(x => x.Fid, ops => ops.Ignore());
//出入库回退上下架映射
CreateMap();
diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs
index 9ace9e6a..84dd9ea6 100644
--- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs
+++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs
@@ -158,9 +158,6 @@ namespace WMS.Web.Domain.Services
var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
var boxInventorys = await _boxInventoryRepositories.GetList(boxIds);
- //2.1箱基本信息
- var boxs = await _boxRepositories.GetEntityList(boxIds);
-
//2.2组合要生成的dto
var generateDtoList = new List();
foreach (var item in dtoDatas)
@@ -172,6 +169,15 @@ namespace WMS.Web.Domain.Services
generateDto.StockCode = item.StockCode;
generateDto.SubStockId = item.Type == MoveBoxType.Up ? item.DestSubStockId : item.SrcSubStockId;
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);
//2.2.2物料收发明dto-组装
@@ -183,9 +189,7 @@ namespace WMS.Web.Domain.Services
//下架-箱库存是存在的情况下,生成物料收发明细
if ((!ishave && item.Type == MoveBoxType.Up) || (ishave && item.Type == MoveBoxType.Down))
{
- //5.1.1取箱信息
- var box = boxs.Where(x => x.Id == item.BoxId).FirstOrDefault();
- foreach (var boxDet in box.Details)
+ foreach (var boxDet in item.Details)
{
var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto(
item.BoxId, boxDet.MaterialId,
@@ -198,7 +202,7 @@ namespace WMS.Web.Domain.Services
}
//4.开始处理
- var result = await this.ExeMoveBox(generateDtoList, boxInventorys, boxs, isTransaction);
+ var result = await this.ExeMoveBox(generateDtoList, boxInventorys, isTransaction);
if (!result.IsSuccess)
return result;
@@ -647,9 +651,30 @@ namespace WMS.Web.Domain.Services
//2.2.1这里为了重新上架,改变仓库和仓位的需求
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.SubStockId = dto.SubStockId.Value;
tag_update_entity.OrgCode = dto.TargetBoxOrgCode;
+
+
}
tag_update_entity.Details = tagBox.Details;
//2.2.1遍历改变的明细
@@ -748,7 +773,7 @@ namespace WMS.Web.Domain.Services
///
///
///
- private async Task ExeMoveBox(List dtoDatas, List boxInventorys, List boxs, bool isTransaction)
+ private async Task ExeMoveBox(List dtoDatas, List boxInventorys,bool isTransaction)
{
//1.判断来源数据是否存在
if (dtoDatas == null || dtoDatas.Count == 0)
@@ -758,10 +783,6 @@ namespace WMS.Web.Domain.Services
var add_entitys = new List();
var InventoryDetailsGenerateDto = new List();
- //2.获取“箱库存集合”和“箱基本信息集合”
- var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
- var serialNumbers = await _serialNumbersRepositories.GetEntityListByBoxIds(boxIds);
-
//3.遍历:dto
foreach (var dto in dtoDatas)
{
@@ -771,30 +792,17 @@ namespace WMS.Web.Domain.Services
//3.1上架的时候:箱一定是不存在于箱库存当中的,有则返回提示“已有箱库存,不需要再扫上架”
var ishave = boxInventorys.Where(x => x.BoxId == dto.BoxId).Any();
if (ishave)
- 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();
-
+ return Result.ReFailure(ResultCodes.BoxInventoryHaveInventoryError);
+
//3.2组装要新增的箱库存信息:箱和明细
var addEntity = _mapper.Map(dto);
- addEntity.Details = _mapper.Map>(box.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);
- }
+ addEntity.Details = _mapper.Map>(dto.Details);
+
//3.4箱库存:要新增的集合
add_entitys.Add(addEntity);
//4.1即时库存:组装入库
- foreach (var item in box.Details)
+ foreach (var item in dto.Details)
{
//3.2.2组装即时库存dto
var inventoryDet = new InventoryDetailsGenerateDto();
diff --git a/src/WMS.Web.Repositories/BoxInventoryRepositories.cs b/src/WMS.Web.Repositories/BoxInventoryRepositories.cs
index df4c8e58..2cc3dd18 100644
--- a/src/WMS.Web.Repositories/BoxInventoryRepositories.cs
+++ b/src/WMS.Web.Repositories/BoxInventoryRepositories.cs
@@ -79,7 +79,7 @@ namespace WMS.Web.Repositories
.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 })
.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))
query = query.Where(w => EF.Functions.Like(w.box.BoxBillNo, "%" + dto.BoxBillNo + "%"));