优化
This commit is contained in:
@@ -234,11 +234,10 @@ namespace WMS.Web.Domain.Services
|
||||
box_task_detail.ReceiveQty = current_task_det.ReceiveQty;
|
||||
box_task_detail.AccruedQty = current_task_det.AccruedQty;
|
||||
box_task_detail.ErpDetailId = item.ErpDetailId;
|
||||
box_task_detail.MaterialId = item.MaterialId;
|
||||
box_task_detail.BoxMaterialQty = item.ReceiveQty;
|
||||
box_task_detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, item.MaterialId);
|
||||
box_task_detail.MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, item.MaterialId);
|
||||
box_task_detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, item.MaterialId);
|
||||
box_task_detail.MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, item.MaterialNumber);
|
||||
box_task_detail.MaterialNumber = item.MaterialNumber;
|
||||
box_task_detail.Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, item.MaterialNumber);
|
||||
result.Details.Add(box_task_detail);
|
||||
}
|
||||
|
||||
@@ -271,15 +270,6 @@ namespace WMS.Web.Domain.Services
|
||||
if (tasks == null || tasks.Count==0)
|
||||
return Result<InStock>.ReFailure(ResultCodes.SourceBillNoDateError);
|
||||
|
||||
////1.1.2判断上架数量不能超过应入库数量
|
||||
//var dtoTotalDetails = dto.Details.GroupBy(x => new { x.ErpDetailId }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, Qty = x.Sum(t => t.Qty) }).ToList();
|
||||
//foreach (var item in tasks.SelectMany(x => x.Details).ToList())
|
||||
//{
|
||||
// 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<InStock>.ReFailure(ResultCodes.ShelfNoPurchaseSave_Qty_Error);
|
||||
//}
|
||||
|
||||
// 组织集合
|
||||
var orgs = new List<ErpOrgDto>();
|
||||
var orgs_result = await _erpService.BillQueryForOrg();
|
||||
@@ -292,17 +282,17 @@ namespace WMS.Web.Domain.Services
|
||||
entity.OrgId = currentOrg == null ? 0 : currentOrg.Id;
|
||||
entity.StockCode = dto.StockCode;
|
||||
entity.OrgCode = dto.OrgCode;
|
||||
entity.SubStockId = dto.SubStockId;
|
||||
entity.SubStockCode = dto.SubStockCode;
|
||||
entity.Method = InventoryInOutMethod.Box;
|
||||
entity.Details = _mapper.Map<List<InStockDetails>>(dto.Details);
|
||||
entity.Create(loginInfo.UserInfo.StaffId);
|
||||
|
||||
//组装:erp明细
|
||||
entity.ErpDetails = dto.Details.GroupBy(x => new { x.ErpDetailId, x.MaterialId, x.SourceBillNo })
|
||||
entity.ErpDetails = dto.Details.GroupBy(x => new { x.ErpDetailId, x.MaterialNumber, x.SourceBillNo })
|
||||
.Select(x => new InStockErpDetails
|
||||
{
|
||||
ErpDetailId = x.Key.ErpDetailId,
|
||||
MaterialId = x.Key.MaterialId,
|
||||
MaterialNumber = x.Key.MaterialNumber,
|
||||
SourceBillNo = x.Key.SourceBillNo,
|
||||
Qty = x.Sum(t => t.Qty)
|
||||
}).ToList();
|
||||
@@ -316,7 +306,7 @@ namespace WMS.Web.Domain.Services
|
||||
var current_box_serNums = serialNumbers.Where(t => t.BoxId == x.BoxId).ToList();
|
||||
if (current_box_serNums != null)
|
||||
{
|
||||
var current_box_mat_serNums = current_box_serNums.Where(t => t.MaterialId == x.MaterialId).Select(t => t.SerialNumber).ToList();
|
||||
var current_box_mat_serNums = current_box_serNums.Where(t => t.MaterialNumber == x.MaterialNumber).Select(t => t.SerialNumber).ToList();
|
||||
x.SerialNumbers.AddRange(current_box_mat_serNums);
|
||||
}
|
||||
});
|
||||
@@ -326,14 +316,14 @@ namespace WMS.Web.Domain.Services
|
||||
return Result<InStock>.ReFailure(ResultCodes.DateWriteError);
|
||||
|
||||
//处理添加入库汇总明细
|
||||
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.MaterialNumber })
|
||||
.Select(x => new InStockTotalDetails
|
||||
{
|
||||
InStockId = entity.Id,
|
||||
TaskId = x.Key.TaskId,
|
||||
SourceBillNo = x.Key.SourceBillNo,
|
||||
SupplierId = x.Key.SupplierId,
|
||||
MaterialId = x.Key.MaterialId,
|
||||
MaterialNumber = x.Key.MaterialNumber,
|
||||
Qty = x.Sum(t => t.Qty),
|
||||
SerialNumbers = x.SelectMany(t => t.SerialNumbers).ToList()
|
||||
}).ToList();
|
||||
@@ -348,7 +338,7 @@ namespace WMS.Web.Domain.Services
|
||||
{
|
||||
task.Details.ForEach(x =>
|
||||
{
|
||||
var current_entityDets = dto.Details.Where(t => t.ErpDetailId == x.ErpDetailId && t.MaterialId==x.MaterialId).ToList();
|
||||
var current_entityDets = dto.Details.Where(t => t.ErpDetailId == x.ErpDetailId && t.MaterialNumber == x.MaterialNumber).ToList();
|
||||
if (current_entityDets != null && current_entityDets.Count != 0 && x.ErpDetailId == current_entityDets.FirstOrDefault().ErpDetailId)
|
||||
{
|
||||
var current_entityDet_matQty = current_entityDets.Sum(x => x.Qty);
|
||||
@@ -407,10 +397,10 @@ 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,x.MaterialId }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, MaterialId=x.Key.MaterialId, Qty = x.Sum(t => t.Qty) }).ToList();
|
||||
var dtoTotalDetails = dtoDetails.GroupBy(x => new { x.ErpDetailId,x.MaterialNumber }).Select(x => new { ErpDetailId = x.Key.ErpDetailId, MaterialNumber = x.Key.MaterialNumber, Qty = x.Sum(t => t.Qty) }).ToList();
|
||||
foreach (var item in task.Details)
|
||||
{
|
||||
var current_det = dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialId==item.MaterialId).FirstOrDefault();
|
||||
var current_det = dtoTotalDetails.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).FirstOrDefault();
|
||||
if (current_det != null && current_det.ErpDetailId == item.ErpDetailId && (item.AccruedQty - item.RealityQty) < current_det.Qty)
|
||||
return Result.ReFailure(ResultCodes.ShelfNoPurchaseSave_Qty_Error);
|
||||
}
|
||||
@@ -421,7 +411,7 @@ namespace WMS.Web.Domain.Services
|
||||
entity.OrgId = task.Details.Select(x => x.OrgId).FirstOrDefault();
|
||||
entity.StockCode = dto.StockCode;
|
||||
entity.OrgCode = dto.OrgCode;
|
||||
entity.SubStockId = dto.SubStockId;
|
||||
entity.SubStockCode = dto.SubStockCode;
|
||||
entity.Method = dto.ShelfMethod == (int)ShelfMethod.Box ? InventoryInOutMethod.Box : InventoryInOutMethod.Product;
|
||||
entity.Details = new List<InStockDetails>();
|
||||
|
||||
@@ -437,10 +427,6 @@ namespace WMS.Web.Domain.Services
|
||||
item.TaskId = dto.TaskId;
|
||||
item.SourceBillNo = task.SourceBillNo;
|
||||
item.BoxId = box.BoxId;
|
||||
//item.SubStockId = dto.SubStockId;
|
||||
//item.StockCode = dto.StockCode;
|
||||
//item.OrgCode = dto.OrgCode;
|
||||
//item.OrgId = task.Details.Select(x => x.OrgId).FirstOrDefault();
|
||||
});
|
||||
//3.3添加到临时集合中
|
||||
temps.AddRange(dets);
|
||||
@@ -461,7 +447,7 @@ namespace WMS.Web.Domain.Services
|
||||
var current_box_serNums = serialNumbers.Where(t => t.BoxId == x.BoxId).ToList();
|
||||
if (current_box_serNums != null)
|
||||
{
|
||||
var current_box_mat_serNums = current_box_serNums.Where(t => t.MaterialId == x.MaterialId).Select(t => t.SerialNumber).ToList();
|
||||
var current_box_mat_serNums = current_box_serNums.Where(t => t.MaterialNumber == x.MaterialNumber).Select(t => t.SerialNumber).ToList();
|
||||
x.SerialNumbers.AddRange(current_box_mat_serNums);
|
||||
}
|
||||
});
|
||||
@@ -473,13 +459,13 @@ 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.MaterialNumber })
|
||||
.Select(x => new InStockTotalDetails
|
||||
{
|
||||
InStockId = entity.Id,
|
||||
TaskId = dto.TaskId,
|
||||
SourceBillNo = task.SourceBillNo,
|
||||
MaterialId = x.Key.MaterialId,
|
||||
MaterialNumber = x.Key.MaterialNumber,
|
||||
Qty = x.Sum(t => t.Qty),
|
||||
SerialNumbers = x.SelectMany(t => t.SerialNumbers).ToList()
|
||||
}).ToList();
|
||||
@@ -493,7 +479,7 @@ namespace WMS.Web.Domain.Services
|
||||
{
|
||||
task.Details.ForEach(x =>
|
||||
{
|
||||
var current_entityDets = entity.Details.Where(t => t.ErpDetailId == x.ErpDetailId && t.MaterialId==x.MaterialId).ToList();
|
||||
var current_entityDets = entity.Details.Where(t => t.ErpDetailId == x.ErpDetailId && t.MaterialNumber == x.MaterialNumber).ToList();
|
||||
if (current_entityDets != null && current_entityDets.Count != 0 && x.ErpDetailId == current_entityDets.FirstOrDefault().ErpDetailId)
|
||||
{
|
||||
var current_entityDet_matQty = current_entityDets.Sum(x => x.Qty);
|
||||
@@ -508,87 +494,6 @@ namespace WMS.Web.Domain.Services
|
||||
return Result.ReFailure(ResultCodes.DateWriteError);
|
||||
}
|
||||
|
||||
//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 current_boxs = await _boxRepositories.GetEntityList(current_boxIds);
|
||||
|
||||
////要改箱的数据集合
|
||||
//var ganenrateChangeBoxs = new List<SaveChangeBoxRecordRequest>();
|
||||
////当前按产品上架的箱子
|
||||
//var dto_box = dto.Boxs.FirstOrDefault();
|
||||
|
||||
////遍历:序列号对应多个箱
|
||||
//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);
|
||||
//}
|
||||
|
||||
//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.ChangeBox_InStock(entity, loginInfo, isTransaction);
|
||||
//if (!changeBoxSave_Result.IsSuccess)
|
||||
// return changeBoxSave_Result;
|
||||
}
|
||||
|
||||
//6.1序列号跟踪流程添加;备注:和上面的改箱操作后会记录序列号轨迹不冲突;
|
||||
var serialNumber_result = await _serialNumberService.InStock(entity, loginInfo, isTransaction);
|
||||
if (!serialNumber_result.IsSuccess)
|
||||
@@ -630,7 +535,7 @@ namespace WMS.Web.Domain.Services
|
||||
{
|
||||
//当前明细收货的明细:可以通过erp明细ID获取唯一一个;并变更收货数量
|
||||
var current_dto_det = dto.Details.Where(t => t.ErpDetailId == x.ErpDetailId).FirstOrDefault();
|
||||
if (current_dto_det != null && x.ErpDetailId == current_dto_det.ErpDetailId && x.MaterialId==current_dto_det.MaterialId)
|
||||
if (current_dto_det != null && x.ErpDetailId == current_dto_det.ErpDetailId && x.MaterialNumber == current_dto_det.MaterialNumber)
|
||||
x.ReceiveQty = x.ReceiveQty + current_dto_det.ReceiveQty;
|
||||
});
|
||||
|
||||
@@ -727,16 +632,16 @@ namespace WMS.Web.Domain.Services
|
||||
return Result<ContrastMaterialsResponse>.ReFailure(ResultCodes.BoxInventoryHaveInventoryError);
|
||||
|
||||
//合并多个箱明细的数据:相同物料数量合并
|
||||
var boxDetails = boxs.SelectMany(x => x.Details).GroupBy(x => x.MaterialId).Select(x => new { MaterialId = x.Key, Qty = x.Sum(t => t.Qty) }).ToList();
|
||||
var boxDetails = boxs.SelectMany(x => x.Details).GroupBy(x => x.MaterialNumber).Select(x => new { MaterialNumber = x.Key, Qty = x.Sum(t => t.Qty) }).ToList();
|
||||
|
||||
//采购单:要对比数量
|
||||
if (task.Type == InstockType.Purchase)
|
||||
{
|
||||
//3.比对:false为比对失败;
|
||||
bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty >= x.Qty)) && boxDetails.Count <= task_details.Count;
|
||||
bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialNumber == x.MaterialNumber && t.AccruedQty >= x.Qty)) && boxDetails.Count <= task_details.Count;
|
||||
if (!isRight)
|
||||
{
|
||||
var qtyIsError = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId && t.AccruedQty < x.Qty));
|
||||
var qtyIsError = boxDetails.All(x => task_details.Any(t => t.MaterialNumber == x.MaterialNumber && t.AccruedQty < x.Qty));
|
||||
if (boxDetails.Count > task_details.Count && qtyIsError)
|
||||
return Result<ContrastMaterialsResponse>.ReFailure(ResultCodes.Contrast_Purchase_Error);
|
||||
else if (qtyIsError)
|
||||
@@ -750,7 +655,7 @@ namespace WMS.Web.Domain.Services
|
||||
else
|
||||
{
|
||||
//3.比对:false为比对失败;
|
||||
bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialId == x.MaterialId)) && boxDetails.Count <= task_details.Count;
|
||||
bool isRight = boxDetails.All(x => task_details.Any(t => t.MaterialNumber == x.MaterialNumber)) && boxDetails.Count <= task_details.Count;
|
||||
if (!isRight)
|
||||
return Result<ContrastMaterialsResponse>.ReFailure(ResultCodes.Contrast_Count_Error);
|
||||
}
|
||||
@@ -803,7 +708,7 @@ namespace WMS.Web.Domain.Services
|
||||
//然后刷选出对应金蝶明细和物料和wms的任务单的明细和物料是一致的就同步下推
|
||||
foreach (var item in erpDetails_tags)
|
||||
{
|
||||
var isHave= erp_purchase_result.Data.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialId == item.MaterialId).Any();
|
||||
var isHave= erp_purchase_result.Data.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialNumber == item.MaterialNumber).Any();
|
||||
if (isHave)
|
||||
erpDetails.Add(item);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user