diff --git a/src/WMS.Web.Api/Controllers/InStockTaskController.cs b/src/WMS.Web.Api/Controllers/InStockTaskController.cs index 3bae980f..fef94a34 100644 --- a/src/WMS.Web.Api/Controllers/InStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/InStockTaskController.cs @@ -134,10 +134,10 @@ namespace WMS.Web.Api.Controllers var sourcesBillNos = tasks.Select(x => x.SourceBillNo).ToList(); //2.同步金蝶 - await _inStockTaskService.Sysn(sourcesBillNos); + return await _inStockTaskService.Sysn(sourcesBillNos); - //再刷新3天内所有的 - return await _inStockTaskService.Sysn(null); + ////再刷新3天内所有的 + //return await _inStockTaskService.Sysn(null); } /// diff --git a/src/WMS.Web.Domain/Services/InStockTaskService.cs b/src/WMS.Web.Domain/Services/InStockTaskService.cs index 0a2e07a8..fc8a7bb5 100644 --- a/src/WMS.Web.Domain/Services/InStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/InStockTaskService.cs @@ -486,87 +486,87 @@ namespace WMS.Web.Domain.Services if (data_list.Count != 0) { - foreach (var b in data_list) - { - foreach (var a in erp_list.Where(a => a.BillNo == b.BillNo)) - { - var matchingC = b.Details.FirstOrDefault(c => c.ErpDetailId == a.ErpDetailId && c.MaterialId == a.MaterialId); - if (matchingC != null) - { - //物料相同的,就改变数值 - 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); - } - } - - foreach (var c in b.Details) - { - 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 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 => @@ -592,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)