改箱支持多个

This commit is contained in:
18942506660
2023-11-27 11:54:41 +08:00
parent 1198e01805
commit f2e4d125ce
3 changed files with 48 additions and 36 deletions

View File

@@ -95,7 +95,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
return await _changeMoveBoxService.ChangeBoxSave(dto, loginInfo);
return await _changeMoveBoxService.ChangeBoxSave(new List<SaveChangeBoxRecordRequest>() { dto }, loginInfo);
}
}
}

View File

@@ -17,7 +17,7 @@ namespace WMS.Web.Domain.IService
public interface IChangeMoveBoxService
{
//改箱保存
Task<Result> ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction=true);
Task<Result> ChangeBoxSave(List<SaveChangeBoxRecordRequest> dto, LoginInDto loginInfo, bool isTransaction=true);
//移箱保存
Task<Result> MoveBoxSave(List<SaveMoveBoxRecordRequest> dto, bool IsUp, LoginInDto loginInfo);

View File

@@ -51,12 +51,16 @@ namespace WMS.Web.Domain.Services
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
public async Task<Result> ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction = false)
public async Task<Result> ChangeBoxSave(List<SaveChangeBoxRecordRequest> dto, LoginInDto loginInfo, bool isTransaction = false)
{
//1.有原箱时 需要判断 物料对应的序列号是否存在
if (dto.SrcBoxId != 0)
var srcIds = dto.Select(s => s.SrcBoxId).ToList();
var destIds = dto.Select(s => s.DestBoxId).ToList();
var boxs = await _boxInventoryRepositories.GetList(srcIds);
foreach (var d in dto)
{
var box = await _boxInventoryRepositories.Get(dto.SrcBoxId);
if (d.SrcBoxId == 0) continue;
var box = boxs.FirstOrDefault(f => f.BoxId == d.SrcBoxId);
//原箱在库存中的话 进行验证
if (box != null)
{
@@ -74,11 +78,15 @@ namespace WMS.Web.Domain.Services
List<Box> boxList = new List<Box>();
//原箱有可能没有
var srcBox = await _boxRepositories.Get(dto.SrcBoxId);
var destBox = await _boxRepositories.Get(dto.DestBoxId);
var srcBoxs = await _boxRepositories.GetEntityList(srcIds);
var destBoxs = await _boxRepositories.GetEntityList(destIds);
//if (srcBox == null) return Result.ReFailure(ResultCodes.BoxNoData);
if (destBox == null) return Result.ReFailure(ResultCodes.BoxNoData);
var l = dto.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList();
if (destBoxs.Count() != destIds.Count()) return Result.ReFailure(ResultCodes.BoxNoData);
foreach (var d in dto)
{
var l = d.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList();
var srcBox = srcBoxs.FirstOrDefault(f => f.Id == d.SrcBoxId);
var destBox = srcBoxs.FirstOrDefault(f => f.Id == d.DestBoxId);
//原箱移出
Result res;
if (srcBox != null)
@@ -93,23 +101,27 @@ namespace WMS.Web.Domain.Services
boxList.Add(srcBox);
if (destBox != null)
boxList.Add(destBox);
}
var subStock = await _basbicsRepositories.GetSubUcStockAsync(dto.SubStockId, loginInfo.UserInfo.CompanyId);
var boxInventory = await _boxInventoryRepositories.Get(dto.SrcBoxId);
List<ChangeBoxRecord> list = new List<ChangeBoxRecord>();
foreach (var d in dto.Details)
foreach (var dt in dto)
{
var subStock = await _basbicsRepositories.GetSubUcStockAsync(dt.SubStockId, loginInfo.UserInfo.CompanyId);
var boxi = boxs.FirstOrDefault(f => f.BoxId == dt.SrcBoxId);
foreach (var d in dt.Details)
{
ChangeBoxRecord entity = new ChangeBoxRecord();
entity.Create(loginInfo.UserInfo.StaffId, d.Qty, d.MaterialId, d.SerialNumbers, dto.SrcBoxId, dto.DestBoxId);
entity.SrcSubStockId = boxInventory?.SubStockId ?? 0;//原乡仓位需要去拉一下库存获取
entity.Create(loginInfo.UserInfo.StaffId, d.Qty, d.MaterialId, d.SerialNumbers, dt.SrcBoxId, dt.DestBoxId);
entity.SrcSubStockId = boxi?.SubStockId ?? 0;//原乡仓位需要去拉一下库存获取
if (subStock != null)
{
entity.DestSubStockId = dto.SubStockId;
entity.DestSubStockId = dt.SubStockId;
entity.DestBoxOrgCode = subStock.ErpOrgCode;
entity.DestStockCode = subStock.StockCode;
}
list.Add(entity);
}
}
IDbContextTransaction _transaction = null;
if (isTransaction)