diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index 0cdcefb5..6ab7acc5 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -421,7 +421,7 @@ namespace WMS.Web.Api.Controllers [Route("lst3")] public async Task lst3() { - var data=await _erpService.BillQueryForPurchaseInStockBy("1541693"); + var data=await _erpService.BillQueryForPurchaseInStockBy("1541693",null); return true; } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 023d0bb6..0abb9ef3 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -2866,6 +2866,13 @@ + + + + + + + @@ -3917,7 +3924,7 @@ - + diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index 523c3013..dcf8d793 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -32,7 +32,7 @@ namespace WMS.Web.Domain.IService.Public /// /// /// - Task>> BillQueryForPurchaseInStockBy(string purchaseDetailId); + Task>> BillQueryForPurchaseInStockBy(string purchaseDetailId, List sourceBillNos); /// /// erp:单据查询-采购入库单 diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs index 1b0c9bbf..cde4fce4 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs @@ -108,6 +108,14 @@ namespace WMS.Web.Domain.Infrastructure /// Task> GetDetailsList(List ids); + + /// + /// + /// + /// + /// + Task> GetErpDetails(List sourceBillNos); + /// /// /// diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 0251e001..a70a48c5 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -854,11 +854,12 @@ namespace WMS.Web.Domain.Services erpDetails.Add(item); } + var sourceBillNos= entity.ErpDetails.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList(); + var erp_InStockErpDetails = await sc_inStockRepositories.GetErpDetails(sourceBillNos); + foreach (var det in erpDetails) - { - var erp_details = entity.ErpDetails - .Where(w => w.SourceBillNo.Equals(det)).Select(t => t.ErpDetailId).ToList(); + { var erpDto = new ErpPushDto() { RuleId = "PUR_PurchaseOrder-STK_InStock",//转换规则内码 采购订单下推采购入库单 @@ -868,13 +869,14 @@ namespace WMS.Web.Domain.Services IsDraftWhenSaveFail = true//是否需要暂存 }; + var erp_InStockBillNos = erp_InStockErpDetails.Where(x => x.SourceBillNo == det.SourceBillNo).Select(x => x.ErpSyncBillNo).ToList(); List details = new List(); - var resPurchaseInStockDetails_result = await sc_erpService.BillQueryForPurchaseInStockBy(det.ErpDetailId.ToString()); + var resPurchaseInStockDetails_result = await sc_erpService.BillQueryForPurchaseInStockBy(det.ErpDetailId.ToString(), erp_InStockBillNos); if (resPurchaseInStockDetails_result.IsSuccess) details = resPurchaseInStockDetails_result.Data; //金蝶已有的单;进行金蝶不同操作处理:保存,提交,审核 - var currentDet = details.Where(x => x.Qty == det.Qty && x.OrderBillNo!=det.ErpSyncBillNo).FirstOrDefault(); + var currentDet = details.Where(x => x.Qty == det.Qty).FirstOrDefault(); if (currentDet != null) { var res = await this.QueryFirst(currentDet, erpDto.TargetFormId, entity.BillNo, det, sc_erpService); diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index ca1f489d..4bc3219d 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -2510,7 +2510,7 @@ namespace WMS.Web.Domain.Services.Public } } - public async Task>> BillQueryForPurchaseInStockBy(string purchaseDetailId) + public async Task>> BillQueryForPurchaseInStockBy(string purchaseDetailId,List sourceBillNos) { try { @@ -2527,6 +2527,25 @@ namespace WMS.Web.Domain.Services.Public param.Limit = 10000; param.FilterString = $"FPOORDERENTRYID={purchaseDetailId}"; + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + param.FilterString = param.FilterString + " and FBillNo not in ("; + + var bill_str = ""; + int bill_index = 0; + //var srt_b = JsonConvert.SerializeObject(sourceBillNos); + foreach (var bill in sourceBillNos) + { + bill_index++; + if (bill_index == sourceBillNos.Count) + bill_str = bill_str + $"'{bill}'"; + else + bill_str = bill_str + $"'{bill}'" + ","; + } + param.FilterString = param.FilterString + bill_str + ")"; + } + query.Data = JsonConvert.SerializeObject(param); var json = JsonConvert.SerializeObject(query); diff --git a/src/WMS.Web.Repositories/InStockRepositories.cs b/src/WMS.Web.Repositories/InStockRepositories.cs index f3393e09..6e82958d 100644 --- a/src/WMS.Web.Repositories/InStockRepositories.cs +++ b/src/WMS.Web.Repositories/InStockRepositories.cs @@ -414,6 +414,17 @@ namespace WMS.Web.Repositories return entity; } + /// + /// + /// + /// + /// + public async Task> GetErpDetails(List sourceBillNos) + { + var entity = await _context.InStockErpDetails.Where(x => sourceBillNos.Contains(x.SourceBillNo) && x.SuccessSync == SyncStatus.Success).ToListAsync(); + return entity.Clone() ; + } + /// /// ///