箱库存优化

This commit is contained in:
tongfei
2023-12-14 14:22:29 +08:00
parent 508d6c1349
commit 56320f924c
4 changed files with 180 additions and 116 deletions

View File

@@ -283,7 +283,7 @@ namespace WMS.Web.Domain.Services
if (current_entityDets != null && current_entityDets.Count != 0 && x.ErpDetailId == current_entityDets.FirstOrDefault().ErpDetailId)
{
var current_entityDet_matQty = current_entityDets.Sum(x => x.Qty);
x.DeliveredQty = x.DeliveredQty+ current_entityDet_matQty;
x.DeliveredQty = x.DeliveredQty + current_entityDet_matQty;
x.RealityQty = x.RealityQty + current_entityDet_matQty;
}
});
@@ -411,7 +411,7 @@ namespace WMS.Web.Domain.Services
if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError);
//同步金蝶后,反写任务单的已交数量
//反写:任务单的已交数量
if (task != null)
{
task.Details.ForEach(x =>
@@ -434,77 +434,80 @@ namespace WMS.Web.Domain.Services
//6.当按产品上架:就要调用改箱的操作;
if (dto.ShelfMethod == (int)ShelfMethod.Product)
{
//通过序列号,获取序列号对应的箱
var cureent_serialNumbs = await _serialNumbersRepositories.GetEntityList(dto.Boxs.SelectMany(x => x.Details).SelectMany(x => x.SerialNumbers).ToList());
var current_boxIds = cureent_serialNumbs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
////通过序列号,获取序列号对应的箱
//var cureent_serialNumbs = await _serialNumbersRepositories.GetEntityList(dto.Boxs.SelectMany(x => x.Details).SelectMany(x => x.SerialNumbers).ToList());
//var current_boxIds = cureent_serialNumbs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
//当前序列号对应的箱的集合信息
var current_boxs = await _boxRepositories.GetEntityList(current_boxIds);
////当前序列号对应的箱的集合信息
//var current_boxs = await _boxRepositories.GetEntityList(current_boxIds);
//要改箱的数据集合
var ganenrateChangeBoxs = new List<SaveChangeBoxRecordRequest>();
//当前按产品上架的箱子
var dto_box = dto.Boxs.FirstOrDefault();
////要改箱的数据集合
//var ganenrateChangeBoxs = new List<SaveChangeBoxRecordRequest>();
////当前按产品上架的箱子
//var dto_box = dto.Boxs.FirstOrDefault();
//其它还要拼装的物料明细
var tag_dto_erpDetIds = new List<int>();
////遍历:序列号对应多个箱
//foreach (var boxId in current_boxIds)
//{
// if (dto_box.BoxId != boxId)
// {
// var box = current_boxs.Where(x => x.Id == boxId).FirstOrDefault();
// //遍历:明细
// var changeBox = new SaveChangeBoxRecordRequest();
// changeBox.DestBoxId = dto_box.BoxId;
// changeBox.SubStockId = dto.SubStockId;
// foreach (var item in dto_box.Details)
// {
// var boxDet = box.Details.Where(t => t.MaterialId == item.MaterialId).FirstOrDefault();
// if (boxDet != null && boxDet.MaterialId == item.MaterialId)
// {
// var changeBoxRD = new SaveChangeBoxRecordDetailsRequest();
// changeBoxRD.MaterialId = item.MaterialId;
// changeBoxRD.Qty = item.Qty;
// changeBoxRD.SerialNumbers = item.SerialNumbers;
// changeBox.Details.Add(changeBoxRD);
// }
// }
// //当明细存在,则要有原箱的情况下进行改箱
// if (changeBox.Details.Count != 0)
// {
// changeBox.SrcBoxId = boxId;
// ganenrateChangeBoxs.Add(changeBox);
// }
// }
//}
////没有原箱的情况下,要改箱操作对象
//var serialNub_isNotHaveBOx = new List<string>();
//var serialNumbs = dto.Boxs.SelectMany(x => x.Details).SelectMany(x => x.SerialNumbers).ToList();
//foreach (var item in serialNumbs)
//{
// var current_IsHaveBox_serialNub = cureent_serialNumbs.Where(x => x.SerialNumber == item).Any();
// if (!current_IsHaveBox_serialNub)
// serialNub_isNotHaveBOx.Add(item);
//}
//遍历:序列号对应多个箱
foreach (var boxId in current_boxIds)
{
if (dto_box.BoxId != boxId)
{
var box = current_boxs.Where(x => x.Id == boxId).FirstOrDefault();
//遍历:明细
var changeBox = new SaveChangeBoxRecordRequest();
changeBox.DestBoxId = dto_box.BoxId;
changeBox.SubStockId = dto.SubStockId;
foreach (var item in dto_box.Details)
{
var boxDet= box.Details.Where(t => t.MaterialId == item.MaterialId).FirstOrDefault();
if (boxDet != null && boxDet.MaterialId == item.MaterialId)
{
var changeBoxRD = new SaveChangeBoxRecordDetailsRequest();
changeBoxRD.MaterialId = item.MaterialId;
changeBoxRD.Qty = item.Qty;
changeBoxRD.SerialNumbers = item.SerialNumbers;
changeBox.Details.Add(changeBoxRD);
}
else
tag_dto_erpDetIds.Add(item.ErpDetailId);
}
//当明细存在,则要有原箱的情况下进行改箱
if (changeBox.Details.Count != 0)
{
changeBox.SrcBoxId = boxId;
ganenrateChangeBoxs.Add(changeBox);
}
}
}
//去重复
var tagtag_dto_erpDetIds_new= tag_dto_erpDetIds.GroupBy(id => id).Select(x=>x.Key).ToList();
//没有原箱的情况下,要改箱操作对象
var changeBox_tag = new SaveChangeBoxRecordRequest();
changeBox_tag.DestBoxId = dto_box.BoxId;
changeBox_tag.SrcBoxId = 0;
changeBox_tag.SubStockId = dto.SubStockId;
foreach (var item in dto_box.Details)
{
var current_erp_detId= tagtag_dto_erpDetIds_new.Where(id => item.ErpDetailId == id).FirstOrDefault();
if (current_erp_detId != 0 && current_erp_detId == item.ErpDetailId)
{
//遍历:明细
var changeBoxRD = new SaveChangeBoxRecordDetailsRequest();
changeBoxRD.MaterialId = item.MaterialId;
changeBoxRD.Qty = item.Qty;
changeBoxRD.SerialNumbers = item.SerialNumbers;
changeBox_tag.Details.Add(changeBoxRD);
}
}
ganenrateChangeBoxs.Add(changeBox_tag);
//if (serialNub_isNotHaveBOx.Count != 0)
//{
// var changeBox_tag = new SaveChangeBoxRecordRequest();
// changeBox_tag.DestBoxId = dto_box.BoxId;
// changeBox_tag.SrcBoxId = 0;
// changeBox_tag.SubStockId = dto.SubStockId;
// foreach (var item in dto_box.Details)
// {
// //遍历:明细
// var changeBoxRD = new SaveChangeBoxRecordDetailsRequest();
// changeBoxRD.MaterialId = item.MaterialId;
// changeBoxRD.Qty = item.Qty;
// changeBoxRD.SerialNumbers = item.SerialNumbers;
// changeBox_tag.Details.Add(changeBoxRD);
// }
// ganenrateChangeBoxs.Add(changeBox_tag);
//}
//改箱保存操作
var changeBoxSave_Result = await _changeMoveBoxService.ChangeBoxSave(ganenrateChangeBoxs, loginInfo, isTransaction);
var changeBoxSave_Result = await _changeMoveBoxService.ChangeBox_InStock(entity, loginInfo, isTransaction);
if (!changeBoxSave_Result.IsSuccess)
return changeBoxSave_Result;
}