增加接口
This commit is contained in:
Binary file not shown.
@@ -10,6 +10,12 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class SaveChangeBoxRecordRequest
|
public class SaveChangeBoxRecordRequest
|
||||||
{
|
{
|
||||||
|
public SaveChangeBoxRecordRequest() { }
|
||||||
|
public SaveChangeBoxRecordRequest(int srcBoxId, int destBoxId)
|
||||||
|
{
|
||||||
|
this.SrcBoxId = srcBoxId;
|
||||||
|
this.DestBoxId = destBoxId;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 原箱子ID
|
/// 原箱子ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -34,6 +40,19 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class SaveChangeBoxRecordDetailsRequest
|
public class SaveChangeBoxRecordDetailsRequest
|
||||||
{
|
{
|
||||||
|
public SaveChangeBoxRecordDetailsRequest() { }
|
||||||
|
public SaveChangeBoxRecordDetailsRequest(int materialId, decimal qty, List<string> serialNumbers)
|
||||||
|
{
|
||||||
|
this.MaterialId = materialId;
|
||||||
|
this.Qty = qty;
|
||||||
|
this.SerialNumbers = serialNumbers;
|
||||||
|
}
|
||||||
|
public SaveChangeBoxRecordDetailsRequest(int materialId, decimal qty, string serialNumber)
|
||||||
|
{
|
||||||
|
this.MaterialId = materialId;
|
||||||
|
this.Qty = qty;
|
||||||
|
this.SerialNumbers.Add(serialNumber);
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 物料ID
|
/// 物料ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using WMS.Web.Core.Dto.ChangeBoxRecord;
|
|||||||
using WMS.Web.Core.Dto.Login;
|
using WMS.Web.Core.Dto.Login;
|
||||||
using WMS.Web.Core.Dto.MoveBoxRecord;
|
using WMS.Web.Core.Dto.MoveBoxRecord;
|
||||||
using WMS.Web.Core.Internal.Results;
|
using WMS.Web.Core.Internal.Results;
|
||||||
|
using WMS.Web.Domain.Entitys;
|
||||||
using WMS.Web.Domain.Services;
|
using WMS.Web.Domain.Services;
|
||||||
|
|
||||||
namespace WMS.Web.Domain.IService
|
namespace WMS.Web.Domain.IService
|
||||||
@@ -20,6 +21,10 @@ namespace WMS.Web.Domain.IService
|
|||||||
Task<Result> ChangeBoxSave(List<SaveChangeBoxRecordRequest> dto, LoginInDto loginInfo, bool isTransaction=true,bool IsInventory=true);
|
Task<Result> ChangeBoxSave(List<SaveChangeBoxRecordRequest> dto, LoginInDto loginInfo, bool isTransaction=true,bool IsInventory=true);
|
||||||
//移箱保存
|
//移箱保存
|
||||||
Task<Result> MoveBoxSave(List<SaveMoveBoxRecordRequest> dto, bool IsUp, LoginInDto loginInfo);
|
Task<Result> MoveBoxSave(List<SaveMoveBoxRecordRequest> dto, bool IsUp, LoginInDto loginInfo);
|
||||||
|
//出库回退
|
||||||
|
Task<Result> ChangeBox_BackRecord(BackRecord BackRecord, LoginInDto loginInfo, bool isTransaction = true);
|
||||||
|
//出库回退
|
||||||
|
Task<Result> ChangeBox_InStock(InStock InStocks, LoginInDto loginInfo, bool isTransaction = true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using WMS.Web.Core.Dto.ChangeBoxRecord;
|
|||||||
using WMS.Web.Core.Dto.Inventory;
|
using WMS.Web.Core.Dto.Inventory;
|
||||||
using WMS.Web.Core.Dto.Login;
|
using WMS.Web.Core.Dto.Login;
|
||||||
using WMS.Web.Core.Dto.MoveBoxRecord;
|
using WMS.Web.Core.Dto.MoveBoxRecord;
|
||||||
|
using WMS.Web.Core.Help;
|
||||||
using WMS.Web.Core.Internal.Results;
|
using WMS.Web.Core.Internal.Results;
|
||||||
using WMS.Web.Domain.Entitys;
|
using WMS.Web.Domain.Entitys;
|
||||||
using WMS.Web.Domain.Infrastructure;
|
using WMS.Web.Domain.Infrastructure;
|
||||||
@@ -232,5 +233,84 @@ namespace WMS.Web.Domain.Services
|
|||||||
|
|
||||||
return Result.ReSuccess();
|
return Result.ReSuccess();
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 出入库回退改箱
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="backRecord"></param>
|
||||||
|
/// <param name="loginInfo"></param>
|
||||||
|
/// <param name="isTransaction"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task<Result> ChangeBox_BackRecord(BackRecord backRecord, LoginInDto loginInfo, bool isTransaction = true)
|
||||||
|
{
|
||||||
|
List<SaveChangeBoxRecordRequest> dtoList = new List<SaveChangeBoxRecordRequest>();
|
||||||
|
//目标箱
|
||||||
|
var destIds = backRecord.Details.GroupBy(g => g.BoxId);
|
||||||
|
var serialNumbers = backRecord.Details.SelectMany(s => s.SerialNumbers).ToList();
|
||||||
|
var serialNumberList = await _serialNumbersRepositories.GetEntityList(serialNumbers);
|
||||||
|
foreach (var detail in backRecord.Details)
|
||||||
|
{
|
||||||
|
if (detail.Qty == 0) continue;
|
||||||
|
var detailClone = detail.Clone();
|
||||||
|
//处理序列号
|
||||||
|
var sList = serialNumberList.Where(w => detailClone.SerialNumbers.Contains(w.SerialNumber)).ToList();
|
||||||
|
foreach (var s in sList)
|
||||||
|
{
|
||||||
|
//原箱和目标箱一样不处理
|
||||||
|
if (s.BoxId == detailClone.BoxId)
|
||||||
|
{
|
||||||
|
detailClone.Qty = detailClone.Qty - 1;
|
||||||
|
detailClone.SerialNumbers.Remove(s.SerialNumber);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var d = dtoList.FirstOrDefault(f => f.DestBoxId == detailClone.BoxId && f.SrcBoxId == s.BoxId);
|
||||||
|
if (d == null)
|
||||||
|
{
|
||||||
|
d = new SaveChangeBoxRecordRequest(0, detail.BoxId);
|
||||||
|
d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detail.MaterialId, 1, s.SerialNumber));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dtoDetail = d.Details.FirstOrDefault(f => f.MaterialId == detail.MaterialId);
|
||||||
|
if (dtoDetail == null)
|
||||||
|
d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detail.MaterialId, 1, s.SerialNumber));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dtoDetail.Qty += 1;
|
||||||
|
dtoDetail.SerialNumbers.Add(s.SerialNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
detailClone.Qty = detailClone.Qty - 1;
|
||||||
|
detailClone.SerialNumbers.Remove(s.SerialNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
//处理非序列号的数据
|
||||||
|
if (detailClone.Qty <= 0) continue;
|
||||||
|
var dto = dtoList.FirstOrDefault(f => f.DestBoxId == detail.BoxId && f.SrcBoxId == 0);
|
||||||
|
if (dto == null)
|
||||||
|
{
|
||||||
|
dto = new SaveChangeBoxRecordRequest(0, detailClone.BoxId);
|
||||||
|
dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var dtoDetail = dto.Details.FirstOrDefault(f => f.MaterialId == detailClone.MaterialId);
|
||||||
|
if (dtoDetail == null)
|
||||||
|
dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dtoDetail.Qty += detailClone.Qty;
|
||||||
|
dtoDetail.SerialNumbers.AddRange(detailClone.SerialNumbers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return await ChangeBoxSave(dtoList, loginInfo, isTransaction, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task<Result> ChangeBox_InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user