diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index f19c666e..b6169e7f 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -4440,7 +4440,7 @@ - + 下推 diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index afca00b4..f13a93d9 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -766,7 +766,25 @@ namespace WMS.Web.Domain.Services if (entity.Type != InstockType.Purchase) return Result.ReSuccess(); if (entity.SuccessSync == SyncStatus.Success) return Result.ReSuccess(); - var erpDetails = entity.ErpDetails.Where(w => w.SuccessSync == SyncStatus.SyncIng).ToList(); + var erpDetails_tags = entity.ErpDetails.Where(w => w.SuccessSync == SyncStatus.SyncIng).ToList(); + + //要下推的明细 + var erpDetails = new List(); + var sc_erpService = scope.ServiceProvider.GetRequiredService(); + + //找到金蝶最新的采购订单数据 + var erp_purchase_result =await sc_erpService.BillQueryForPurchaseInStock(entity.ErpDetails.GroupBy(x=>x.SourceBillNo).Select(x=>x.Key).ToList()); + if (!erp_purchase_result.IsSuccess) + return erp_purchase_result; + //然后刷选出对应金蝶明细和物料和wms的任务单的明细和物料是一致的就同步下推 + foreach (var item in erpDetails_tags) + { + var isHave= erp_purchase_result.Data.Where(x => x.ErpDetailId == item.ErpDetailId && x.MaterialId == item.MaterialId).Any(); + if (isHave) + erpDetails.Add(item); + } + + foreach (var s in erpDetails) { var erp_details = entity.ErpDetails @@ -780,7 +798,7 @@ namespace WMS.Web.Domain.Services IsDraftWhenSaveFail=true }; //下推金蝶 - var res = await this.Push(erpDto, s, entity.BillNo, scope); + var res = await this.Push(erpDto, s, entity.BillNo, sc_erpService); if (res.result.IsSuccess) entity.SyncSuccess(s.ErpDetailId, loginInfo?.UserInfo?.StaffId ?? 0, res.erpBillNo); else @@ -799,10 +817,10 @@ namespace WMS.Web.Domain.Services /// /// /// - private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> Push(ErpPushDto dto, InStockErpDetails erpDetail, string billNo, IServiceScope scope) - { - var sc_erpService = scope.ServiceProvider.GetRequiredService(); + private async Task<(Result result, SyncStatus syncStatus, string erpBillNo)> Push(ErpPushDto dto, InStockErpDetails erpDetail, string billNo, IErpService sc_erpService) + { + //下推动作 var res = await sc_erpService.Push(dto); if (!res.IsSuccess) {