非采购上架-改箱操作

This commit is contained in:
tongfei
2023-12-11 16:20:30 +08:00
parent 737742925f
commit cd27e66302

View File

@@ -223,7 +223,7 @@ namespace WMS.Web.Domain.Services
var orgs_result = await _erpService.BillQueryForOrg(); var orgs_result = await _erpService.BillQueryForOrg();
if (orgs_result.IsSuccess) if (orgs_result.IsSuccess)
orgs = orgs_result.Data.ToList(); orgs = orgs_result.Data.ToList();
var currentOrg= orgs.Where(x => x.Number == dto.OrgCode).FirstOrDefault(); var currentOrg = orgs.Where(x => x.Number == dto.OrgCode).FirstOrDefault();
var entity = new InStock(); var entity = new InStock();
entity.Type = type; entity.Type = type;
@@ -256,24 +256,24 @@ namespace WMS.Web.Domain.Services
//处理添加入库汇总明细 //处理添加入库汇总明细
var totalDetails = dto.Details.GroupBy(x => new { x.TaskId, x.SourceBillNo, x.SupplierId, x.MaterialId }) var totalDetails = dto.Details.GroupBy(x => new { x.TaskId, x.SourceBillNo, x.SupplierId, x.MaterialId })
.Select(x => new InStockTotalDetails .Select(x => new InStockTotalDetails
{ {
InStockId= entity.Id, InStockId = entity.Id,
TaskId=x.Key.TaskId, TaskId = x.Key.TaskId,
SourceBillNo=x.Key.SourceBillNo, SourceBillNo = x.Key.SourceBillNo,
SupplierId=x.Key.SupplierId, SupplierId = x.Key.SupplierId,
MaterialId=x.Key.MaterialId, MaterialId = x.Key.MaterialId,
Qty=x.Sum(t=>t.Qty), Qty = x.Sum(t => t.Qty),
SerialNumbers= x.SelectMany(t=>t.SerialNumbers).ToList() SerialNumbers = x.SelectMany(t => t.SerialNumbers).ToList()
}).ToList(); }).ToList();
var isSuccess= await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction); var isSuccess = await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction);
if (!isSuccess) if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReFailure(ResultCodes.DateWriteError);
//同步金蝶后,反写任务单的已交数量 //同步金蝶后,反写任务单的已交数量
var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList(); var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList();
var tasks = await _inStockTaskRepositories.GetList(taskIds); var tasks = await _inStockTaskRepositories.GetList(taskIds);
if (tasks != null && tasks.Count!=0) if (tasks != null && tasks.Count != 0)
{ {
foreach (var task in tasks) foreach (var task in tasks)
{ {
@@ -289,7 +289,7 @@ namespace WMS.Web.Domain.Services
}); });
task.Shelf(loginInfo.UserInfo.StaffId); task.Shelf(loginInfo.UserInfo.StaffId);
} }
isSuccess = await _inStockTaskRepositories.UpdateRange(tasks, isTransaction); isSuccess = await _inStockTaskRepositories.UpdateRange(tasks, isTransaction);
if (!isSuccess) if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReFailure(ResultCodes.DateWriteError);
@@ -330,11 +330,11 @@ namespace WMS.Web.Domain.Services
//1.1.2判断上架数量不能超过应入库数量 //1.1.2判断上架数量不能超过应入库数量
var dtoDetails = dto.Boxs.SelectMany(x => x.Details).ToList(); var dtoDetails = dto.Boxs.SelectMany(x => x.Details).ToList();
var dtoTotalDetails=dtoDetails.GroupBy(x => new { x.ErpDetailId }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, Qty = x.Sum(t => t.Qty) }).ToList(); var dtoTotalDetails = dtoDetails.GroupBy(x => new { x.ErpDetailId }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, Qty = x.Sum(t => t.Qty) }).ToList();
foreach (var item in task.Details) foreach (var item in task.Details)
{ {
var current_det= dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId).FirstOrDefault(); var current_det = dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId).FirstOrDefault();
if(current_det!=null && current_det.ErpDetailId==item.ErpDetailId && (item.AccruedQty-item.RealityQty)<current_det.Qty) if (current_det != null && current_det.ErpDetailId == item.ErpDetailId && (item.AccruedQty - item.RealityQty) < current_det.Qty)
return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_Qty_Error); return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_Qty_Error);
} }
@@ -396,11 +396,11 @@ namespace WMS.Web.Domain.Services
return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReFailure(ResultCodes.DateWriteError);
//处理添加入库汇总明细 //处理添加入库汇总明细
var totalDetails = dto.Boxs.SelectMany(x=>x.Details).GroupBy(x => new { x.MaterialId }) var totalDetails = dto.Boxs.SelectMany(x => x.Details).GroupBy(x => new { x.MaterialId })
.Select(x => new InStockTotalDetails .Select(x => new InStockTotalDetails
{ {
InStockId = entity.Id, InStockId = entity.Id,
TaskId =dto.TaskId, TaskId = dto.TaskId,
SourceBillNo = task.SourceBillNo, SourceBillNo = task.SourceBillNo,
MaterialId = x.Key.MaterialId, MaterialId = x.Key.MaterialId,
Qty = x.Sum(t => t.Qty), Qty = x.Sum(t => t.Qty),
@@ -438,32 +438,70 @@ namespace WMS.Web.Domain.Services
var cureent_serialNumbs = await _serialNumbersRepositories.GetEntityList(dto.Boxs.SelectMany(x => x.Details).SelectMany(x => x.SerialNumbers).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_boxIds = cureent_serialNumbs.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
//当前序列号对应的箱的集合信息
var current_boxs = await _boxRepositories.GetEntityList(current_boxIds);
//要改箱的数据集合 //要改箱的数据集合
var ganenrateChangeBoxs = new List<SaveChangeBoxRecordRequest>(); var ganenrateChangeBoxs = new List<SaveChangeBoxRecordRequest>();
//当前按产品上架的箱子 //当前按产品上架的箱子
var dto_box = dto.Boxs.FirstOrDefault(); var dto_box = dto.Boxs.FirstOrDefault();
//其它还要拼装的物料明细
var tag_dto_erpDetIds = new List<int>();
//遍历:序列号对应多个箱 //遍历:序列号对应多个箱
foreach (var boxId in current_boxIds) foreach (var boxId in current_boxIds)
{ {
if (dto_box.BoxId != boxId) if (dto_box.BoxId != boxId)
{ {
var box = current_boxs.Where(x => x.Id == boxId).FirstOrDefault();
//遍历:明细 //遍历:明细
var changeBox = new SaveChangeBoxRecordRequest(); var changeBox = new SaveChangeBoxRecordRequest();
changeBox.DestBoxId = dto_box.BoxId; changeBox.DestBoxId = dto_box.BoxId;
changeBox.SrcBoxId = boxId;
changeBox.SubStockId = dto.SubStockId; changeBox.SubStockId = dto.SubStockId;
foreach (var item in dto_box.Details) foreach (var item in dto_box.Details)
{ {
var changeBoxRD = new SaveChangeBoxRecordDetailsRequest(); var boxDet= box.Details.Where(t => t.MaterialId == item.MaterialId).FirstOrDefault();
changeBoxRD.MaterialId = item.MaterialId; if (boxDet != null && boxDet.MaterialId == item.MaterialId)
changeBoxRD.Qty = item.Qty; {
changeBoxRD.SerialNumbers = item.SerialNumbers; var changeBoxRD = new SaveChangeBoxRecordDetailsRequest();
changeBox.Details.Add(changeBoxRD); 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);
} }
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);
//改箱保存操作 //改箱保存操作
var changeBoxSave_Result = await _changeMoveBoxService.ChangeBoxSave(ganenrateChangeBoxs, loginInfo, isTransaction); var changeBoxSave_Result = await _changeMoveBoxService.ChangeBoxSave(ganenrateChangeBoxs, loginInfo, isTransaction);