From 542da53fa206dce9a1347b938882ae889a433b15 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Mon, 18 Mar 2024 13:40:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/OutStockTaskService.cs | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index f85bc17c..e9c7129a 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -101,16 +101,18 @@ namespace WMS.Web.Domain.Services var erp_removeList = new List(); var SourceBillNo_list = erp_list.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList(); var data_list = await _outStockTaskRepositories.GetListBySourceBillNo(SourceBillNo_list); + List update_ids = new List(); if (data_list.Count != 0) { //2.1提取出wms任务单明细信息 foreach (var outStockTask in data_list) { + bool isUpdate = false; var sourcNos = outStockTask.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo).ToList(); //仓库不同 拆分成不同的任务单 var erps = erp_list.Where(w => sourcNos.Contains(w.SourceBillNo) && w.StockCode.Equals(outStockTask.StockCode)).ToList(); //比对数据 - SsynDateComparison(outStockTask, erps); + isUpdate = SsynDateComparison(outStockTask, erps); foreach (var erp in erps) { //仓库不同 拆分成不同的 @@ -122,6 +124,7 @@ namespace WMS.Web.Domain.Services var erpDetail = _mapper.Map(erp); detail.ErpDetails.Add(erpDetail); outStockTask.Details.Add(detail); + isUpdate = true; } else { @@ -131,21 +134,31 @@ namespace WMS.Web.Domain.Services { erpDetail = _mapper.Map(erp); detail.ErpDetails.Add(erpDetail); + isUpdate = true; } else - erpDetail.AccruedQty = erp.AccruedQty; + { + if (erpDetail.AccruedQty != erp.AccruedQty) + { + isUpdate = true; + erpDetail.AccruedQty = erp.AccruedQty; + } + } detail.AccruedQty = detail.ErpDetails.Sum(s => s.AccruedQty); } //操作完后剔除 erp_removeList.Add(erp); } + if (isUpdate) + update_ids.Add(outStockTask.Id); //执行完后重新计算一下状态 outStockTask.GenerateStatus(); } } + var update_date_list = data_list.Where(w => update_ids.Contains(w.Id)).ToList(); //2.2.提交修改 - var isSuccess = await _outStockTaskRepositories.EditEntityList(data_list, isTransaction); + var isSuccess = await _outStockTaskRepositories.EditEntityList(update_date_list, isTransaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); @@ -194,8 +207,9 @@ namespace WMS.Web.Domain.Services /// 金蝶单据明细行删除后wms明细数量调整为0 /// /// - public Result SsynDateComparison(OutStockTask outStockTask, List erp_list) + public bool SsynDateComparison(OutStockTask outStockTask, List erp_list) { + bool isUpdate = false; var erpDetails = outStockTask.Details.SelectMany(s => s.ErpDetails).ToList().Clone(); foreach (var d in outStockTask.Details) { @@ -211,10 +225,11 @@ namespace WMS.Web.Domain.Services //金蝶删除明细数据后 wms对应数据修改为0 ed.AccruedQty = 0; d.AccruedQty = d.ErpDetails.Sum(s => s.AccruedQty); + isUpdate = true; } } } - return Result.ReSuccess(); + return isUpdate; } ///