非采购上架-改箱操作
This commit is contained in:
@@ -223,7 +223,7 @@ namespace WMS.Web.Domain.Services
|
||||
var orgs_result = await _erpService.BillQueryForOrg();
|
||||
if (orgs_result.IsSuccess)
|
||||
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();
|
||||
entity.Type = type;
|
||||
@@ -258,22 +258,22 @@ namespace WMS.Web.Domain.Services
|
||||
var totalDetails = dto.Details.GroupBy(x => new { x.TaskId, x.SourceBillNo, x.SupplierId, x.MaterialId })
|
||||
.Select(x => new InStockTotalDetails
|
||||
{
|
||||
InStockId= entity.Id,
|
||||
TaskId=x.Key.TaskId,
|
||||
SourceBillNo=x.Key.SourceBillNo,
|
||||
SupplierId=x.Key.SupplierId,
|
||||
MaterialId=x.Key.MaterialId,
|
||||
Qty=x.Sum(t=>t.Qty),
|
||||
SerialNumbers= x.SelectMany(t=>t.SerialNumbers).ToList()
|
||||
InStockId = entity.Id,
|
||||
TaskId = x.Key.TaskId,
|
||||
SourceBillNo = x.Key.SourceBillNo,
|
||||
SupplierId = x.Key.SupplierId,
|
||||
MaterialId = x.Key.MaterialId,
|
||||
Qty = x.Sum(t => t.Qty),
|
||||
SerialNumbers = x.SelectMany(t => t.SerialNumbers).ToList()
|
||||
}).ToList();
|
||||
|
||||
var isSuccess= await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction);
|
||||
var isSuccess = await _inStockRepositories.AddRangeTotalDetails(totalDetails, isTransaction);
|
||||
if (!isSuccess)
|
||||
return Result.ReFailure(ResultCodes.DateWriteError);
|
||||
//同步金蝶后,反写任务单的已交数量
|
||||
var taskIds = dto.Details.GroupBy(x => x.TaskId).Select(x => x.Key).ToList();
|
||||
var tasks = await _inStockTaskRepositories.GetList(taskIds);
|
||||
if (tasks != null && tasks.Count!=0)
|
||||
if (tasks != null && tasks.Count != 0)
|
||||
{
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
@@ -330,11 +330,11 @@ namespace WMS.Web.Domain.Services
|
||||
|
||||
//1.1.2判断上架数量不能超过应入库数量
|
||||
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)
|
||||
{
|
||||
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)
|
||||
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)
|
||||
return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_Qty_Error);
|
||||
}
|
||||
|
||||
@@ -396,11 +396,11 @@ namespace WMS.Web.Domain.Services
|
||||
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
|
||||
{
|
||||
InStockId = entity.Id,
|
||||
TaskId =dto.TaskId,
|
||||
TaskId = dto.TaskId,
|
||||
SourceBillNo = task.SourceBillNo,
|
||||
MaterialId = x.Key.MaterialId,
|
||||
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 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 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.SrcBoxId = boxId;
|
||||
changeBox.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.Details.Add(changeBoxRD);
|
||||
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);
|
||||
}
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user