From 2bf441733c6a4ebb0de7c91bf431d47665b24084 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Thu, 14 Mar 2024 14:05:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/InStockTaskService.cs | 123 +++++++++++------- 1 file changed, 78 insertions(+), 45 deletions(-) diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 82b4166f..0a2e07a8 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -485,55 +485,88 @@ namespace WMS.Web.Domain.Services //2.遍历已有的任务单 if (data_list.Count != 0) { - //2.1遍历任务单明细:改变已有的值和要添加的明细 - foreach (var data_item in data_list) + + foreach (var b in data_list) { - foreach (var det in data_item.Details) + foreach (var a in erp_list.Where(a => a.BillNo == b.BillNo)) { - var erp_data = erp_list.FirstOrDefault(a => a.ErpDetailId == det.ErpDetailId && a.BillNo==data_item.SourceBillNo); - if (erp_data != null) + var matchingC = b.Details.FirstOrDefault(c => c.ErpDetailId == a.ErpDetailId && c.MaterialId == a.MaterialId); + if (matchingC != null) { - if (erp_data.MaterialId == det.MaterialId) - { - //物料相同的,就改变数值 - det.Remark = erp_data.Remark; - det.AccruedQty = erp_data.Qty; - det.FactoryPrice = erp_data.FactoryPrice; - det.DeliveredQty = erp_data.DeliveredQty; - } - else - { - //老物料,应收数量修改为0 - det.AccruedQty = 0; - } - //操作完后剔除 - erp_removeList.Add(erp_data); + //物料相同的,就改变数值 + matchingC.Remark = a.Remark; + matchingC.AccruedQty = a.Qty; + matchingC.FactoryPrice = a.FactoryPrice; + matchingC.DeliveredQty = a.DeliveredQty; + } + else + { + var addDetails = _mapper.Map(a); + b.Details.Add(addDetails); } - } - } - //2.1.1当物料相同,仓库不同或者物料不同,就新增一条明细 - foreach (var erp_data in erp_list) - { - // if (det.MaterialId != erp_data.MaterialId || (det.MaterialId == erp_data.MaterialId && det.StockCode != erp_data.StockCode)) - var IsHaveNewMaterial = data_list.SelectMany(s => s.Details).Where(x => x.ErpDetailId == erp_data.ErpDetailId && erp_data.MaterialId==x.MaterialId).Any(); - if(!IsHaveNewMaterial) - //当物料相同,仓库不同或者物料不同,就新增一条明细 - erp_addDetailsList.Add(erp_data); - } - - //2.2遍历任务单:添加新的明细 - data_list.ForEach(order => - { - //2.1.任务单添加明细 - var addErpDetails= erp_addDetailsList.Where(x => x.BillNo == order.SourceBillNo).ToList(); - if (addErpDetails.Count != 0) + foreach (var c in b.Details) { - var addDetails = _mapper.Map>(addErpDetails); - order.Details.AddRange(addDetails); - } - }); + var matchingA = erp_list.FirstOrDefault(a => a.BillNo == b.BillNo && a.ErpDetailId == c.ErpDetailId && a.MaterialId == c.MaterialId); + if (matchingA == null) + { + c.AccruedQty = 0; + } + } + + // 移除已操作的 A 集合数据 + erp_list.RemoveAll(a => a.BillNo == b.BillNo); + } + ////2.1遍历任务单明细:改变已有的值和要添加的明细 + //foreach (var data_item in data_list) + //{ + // foreach (var det in data_item.Details) + // { + // var erp_data = erp_list.FirstOrDefault(a => a.ErpDetailId == det.ErpDetailId && a.BillNo==data_item.SourceBillNo); + // if (erp_data != null) + // { + // if (erp_data.MaterialId == det.MaterialId) + // { + // //物料相同的,就改变数值 + // det.Remark = erp_data.Remark; + // det.AccruedQty = erp_data.Qty; + // det.FactoryPrice = erp_data.FactoryPrice; + // det.DeliveredQty = erp_data.DeliveredQty; + // } + // else + // { + // //老物料,应收数量修改为0 + // det.AccruedQty = 0; + // } + // //操作完后剔除 + // erp_removeList.Add(erp_data); + // } + + // } + //} + + ////2.1.1当物料相同,仓库不同或者物料不同,就新增一条明细 + //foreach (var erp_data in erp_list) + //{ + // // if (det.MaterialId != erp_data.MaterialId || (det.MaterialId == erp_data.MaterialId && det.StockCode != erp_data.StockCode)) + // var IsHaveNewMaterial = data_list.SelectMany(s => s.Details).Where(x => x.ErpDetailId == erp_data.ErpDetailId && erp_data.MaterialId==x.MaterialId).Any(); + // if(!IsHaveNewMaterial) + // //当物料相同,仓库不同或者物料不同,就新增一条明细 + // erp_addDetailsList.Add(erp_data); + //} + + ////2.2遍历任务单:添加新的明细 + //data_list.ForEach(order => + //{ + // //2.1.任务单添加明细 + // var addErpDetails= erp_addDetailsList.Where(x => x.BillNo == order.SourceBillNo).ToList(); + // if (addErpDetails.Count != 0) + // { + // var addDetails = _mapper.Map>(addErpDetails); + // order.Details.AddRange(addDetails); + // } + //}); //2.3遍历任务单:改变任务单的状态 data_list.ForEach(order => @@ -559,9 +592,9 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); - //2.4剔除:已修改的单据 - foreach (var item in erp_removeList.Distinct().ToList()) - erp_list.Remove(item); + ////2.4剔除:已修改的单据 + //foreach (var item in erp_removeList.Distinct().ToList()) + // erp_list.Remove(item); //3.wms任务单的来源单据编号不存在于erp中,那么就新增 if (erp_list.Count != 0)