回退上架

This commit is contained in:
tongfei
2023-11-28 16:50:27 +08:00
parent e427b9c9b5
commit 1acfcf71b1
3 changed files with 70 additions and 5 deletions

View File

@@ -207,7 +207,12 @@
</member> </member>
<member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordDetailsRequest.BoxId"> <member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordDetailsRequest.BoxId">
<summary> <summary>
所属箱号ID 扫的箱号ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordDetailsRequest.SerialNumberBoxId">
<summary>
序列号所属箱不能为空
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordDetailsRequest.MaterialId"> <member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordDetailsRequest.MaterialId">

View File

@@ -11,10 +11,17 @@ namespace WMS.Web.Core.Dto.BackRecord
public class SaveBackRecordDetailsRequest public class SaveBackRecordDetailsRequest
{ {
/// <summary> /// <summary>
/// 所属箱号ID /// 扫的箱号ID
/// </summary> /// </summary>
[Required(ErrorMessage = "箱号不能为空")] [Required(ErrorMessage = "箱号不能为空")]
public int BoxId { get; set; } public int BoxId { get; set; }
/// <summary>
/// 序列号所属箱不能为空
/// </summary>
[Required(ErrorMessage = "序列号所属箱不能为空")]
public int SerialNumberBoxId { get; set; }
/// <summary> /// <summary>
/// 物料ID /// 物料ID
/// </summary> /// </summary>

View File

@@ -6,6 +6,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using WMS.Web.Core.Dto.BackRecord; using WMS.Web.Core.Dto.BackRecord;
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.Internal.Results; using WMS.Web.Core.Internal.Results;
@@ -28,17 +29,23 @@ namespace WMS.Web.Domain.Services
private readonly ISerialNumberService _serialNumberService; private readonly ISerialNumberService _serialNumberService;
private readonly IBackRecordRepositories _backRecordRepositories; private readonly IBackRecordRepositories _backRecordRepositories;
private readonly IBoxInventoryService _boxInventoryService; private readonly IBoxInventoryService _boxInventoryService;
private readonly IChangeMoveBoxService _changeMoveBoxService;
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public BackRecordService(IMapper mapper, ILoginService loginService, public BackRecordService(IMapper mapper, ILoginService loginService,
IBasicsRepositories basicsRepositories, IBasicsRepositories basicsRepositories,
IBoxInventoryService boxInventoryService, IBoxInventoryService boxInventoryService,
ISerialNumberService serialNumberService, ISerialNumberService serialNumberService,
IChangeMoveBoxService changeMoveBoxService,
ISerialNumbersRepositories serialNumbersRepositories,
IBackRecordRepositories backRecordRepositories) IBackRecordRepositories backRecordRepositories)
{ {
_mapper = mapper; _mapper = mapper;
_loginService = loginService; _loginService = loginService;
_changeMoveBoxService = changeMoveBoxService;
_serialNumberService = serialNumberService; _serialNumberService = serialNumberService;
_boxInventoryService = boxInventoryService; _boxInventoryService = boxInventoryService;
_basicsRepositories = basicsRepositories; _basicsRepositories = basicsRepositories;
_serialNumbersRepositories = serialNumbersRepositories;
_backRecordRepositories = backRecordRepositories; _backRecordRepositories = backRecordRepositories;
} }
@@ -64,7 +71,7 @@ namespace WMS.Web.Domain.Services
entity.Details = _mapper.Map<List<BackRecordDetails>>(dto.Details); entity.Details = _mapper.Map<List<BackRecordDetails>>(dto.Details);
entity.Details.ForEach(x => entity.Details.ForEach(x =>
{ {
var stock= stocks.Where(t => t.Code == x.StockCode).FirstOrDefault(); var stock = stocks.Where(t => t.Code == x.StockCode).FirstOrDefault();
if (stock != null) if (stock != null)
x.OrgCode = stock.ErpOrgCode; x.OrgCode = stock.ErpOrgCode;
}); });
@@ -80,6 +87,52 @@ namespace WMS.Web.Domain.Services
if (!serialNumber_result.IsSuccess) if (!serialNumber_result.IsSuccess)
return serialNumber_result; return serialNumber_result;
#region
//获取目标箱和原箱信息
var current_box_about = dto.Details.GroupBy(x => new { x.BoxId, x.SubStockId, x.StockCode }).Select(x => new { x.Key.BoxId, x.Key.SubStockId, x.Key.StockCode }).ToList();
var current_sernub_box = dto.Details.GroupBy(x => x.SerialNumberBoxId).Select(x => x.Key).ToList();
//要改箱的数据集合
var ganenrateChangeBoxs = new List<SaveChangeBoxRecordRequest>();
//遍历组装改箱dto的头部集合
foreach (var boxAbout in current_box_about)
{
foreach (var serBoxId in current_sernub_box)
{
if (boxAbout.BoxId != serBoxId)
{
var changeBox = new SaveChangeBoxRecordRequest();
changeBox.SrcBoxId = serBoxId;
changeBox.DestBoxId = boxAbout.BoxId;
changeBox.SubStockId = boxAbout.SubStockId;
ganenrateChangeBoxs.Add(changeBox);
}
}
}
//遍历组装明细改箱dto的明细集合
foreach (var detItem in dto.Details)
{
ganenrateChangeBoxs.ForEach(x =>
{
if (x.SrcBoxId == detItem.SerialNumberBoxId && x.DestBoxId == detItem.BoxId)
{
var changeBoxRD = new SaveChangeBoxRecordDetailsRequest();
changeBoxRD.MaterialId = detItem.MaterialId;
changeBoxRD.Qty = detItem.Qty;
changeBoxRD.SerialNumbers = detItem.SerialNumbers;
x.Details.Add(changeBoxRD);
}
});
}
//改箱保存操作:这里不需要在改箱的操作-进行库存的变更(因为会有问题),下面会去更新库存的
var changeBoxSave_Result = await _changeMoveBoxService.ChangeBoxSave(ganenrateChangeBoxs, loginInfo, isTransaction,false);
if (!changeBoxSave_Result.IsSuccess)
return changeBoxSave_Result;
#endregion
//保存成功后:变更库存 //保存成功后:变更库存
var entitys = new List<BackRecord>(); var entitys = new List<BackRecord>();
entitys.Add(entity); entitys.Add(entity);