回退上架

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

@@ -6,6 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.BackRecord;
using WMS.Web.Core.Dto.ChangeBoxRecord;
using WMS.Web.Core.Dto.Inventory;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Internal.Results;
@@ -28,17 +29,23 @@ namespace WMS.Web.Domain.Services
private readonly ISerialNumberService _serialNumberService;
private readonly IBackRecordRepositories _backRecordRepositories;
private readonly IBoxInventoryService _boxInventoryService;
private readonly IChangeMoveBoxService _changeMoveBoxService;
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public BackRecordService(IMapper mapper, ILoginService loginService,
IBasicsRepositories basicsRepositories,
IBoxInventoryService boxInventoryService,
ISerialNumberService serialNumberService,
IChangeMoveBoxService changeMoveBoxService,
ISerialNumbersRepositories serialNumbersRepositories,
IBackRecordRepositories backRecordRepositories)
{
_mapper = mapper;
_loginService = loginService;
_changeMoveBoxService = changeMoveBoxService;
_serialNumberService = serialNumberService;
_boxInventoryService = boxInventoryService;
_basicsRepositories = basicsRepositories;
_serialNumbersRepositories = serialNumbersRepositories;
_backRecordRepositories = backRecordRepositories;
}
@@ -62,16 +69,16 @@ namespace WMS.Web.Domain.Services
var entity = new BackRecord();
entity.Type = type;
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)
x.OrgCode = stock.ErpOrgCode;
});
entity.Create(loginInfo.UserInfo.StaffId);
entity = await _backRecordRepositories.Add(entity, isTransaction);
if (entity == null)
return Result.ReFailure(ResultCodes.DateWriteError);
@@ -80,6 +87,52 @@ namespace WMS.Web.Domain.Services
if (!serialNumber_result.IsSuccess)
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>();
entitys.Add(entity);