改箱支持多个

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) if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error); 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 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); 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="dto"></param>
/// <param name="loginInfo"></param> /// <param name="loginInfo"></param>
/// <returns></returns> /// <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.有原箱时 需要判断 物料对应的序列号是否存在 //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) if (box != null)
{ {
@@ -74,41 +78,49 @@ namespace WMS.Web.Domain.Services
List<Box> boxList = new List<Box>(); List<Box> boxList = new List<Box>();
//原箱有可能没有 //原箱有可能没有
var srcBox = await _boxRepositories.Get(dto.SrcBoxId); var srcBoxs = await _boxRepositories.GetEntityList(srcIds);
var destBox = await _boxRepositories.Get(dto.DestBoxId); var destBoxs = await _boxRepositories.GetEntityList(destIds);
//if (srcBox == null) return Result.ReFailure(ResultCodes.BoxNoData); //if (srcBox == null) return Result.ReFailure(ResultCodes.BoxNoData);
if (destBox == null) return Result.ReFailure(ResultCodes.BoxNoData); if (destBoxs.Count() != destIds.Count()) return Result.ReFailure(ResultCodes.BoxNoData);
var l = dto.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList(); foreach (var d in dto)
//原箱移出
Result res;
if (srcBox != null)
{ {
res = srcBox.Out(l); var l = d.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList();
if (!res.IsSuccess) return res; var srcBox = srcBoxs.FirstOrDefault(f => f.Id == d.SrcBoxId);
} var destBox = srcBoxs.FirstOrDefault(f => f.Id == d.DestBoxId);
//目标箱移 //箱移
res = destBox.In(l); Result res;
if (!res.IsSuccess) return res; if (srcBox != null)
if (srcBox != null)
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)
{
ChangeBoxRecord entity = new ChangeBoxRecord();
entity.Create(loginInfo.UserInfo.StaffId, d.Qty, d.MaterialId, d.SerialNumbers, dto.SrcBoxId, dto.DestBoxId);
entity.SrcSubStockId = boxInventory?.SubStockId ?? 0;//原乡仓位需要去拉一下库存获取
if (subStock != null)
{ {
entity.DestSubStockId = dto.SubStockId; res = srcBox.Out(l);
entity.DestBoxOrgCode = subStock.ErpOrgCode; if (!res.IsSuccess) return res;
entity.DestStockCode = subStock.StockCode; }
//目标箱移入
res = destBox.In(l);
if (!res.IsSuccess) return res;
if (srcBox != null)
boxList.Add(srcBox);
if (destBox != null)
boxList.Add(destBox);
}
List<ChangeBoxRecord> list = new List<ChangeBoxRecord>();
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, dt.SrcBoxId, dt.DestBoxId);
entity.SrcSubStockId = boxi?.SubStockId ?? 0;//原乡仓位需要去拉一下库存获取
if (subStock != null)
{
entity.DestSubStockId = dt.SubStockId;
entity.DestBoxOrgCode = subStock.ErpOrgCode;
entity.DestStockCode = subStock.StockCode;
}
list.Add(entity);
} }
list.Add(entity);
} }
IDbContextTransaction _transaction = null; IDbContextTransaction _transaction = null;