改箱支持多个
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user