diff --git a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/BackFluConverter.cs b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/BackFluConverter.cs index 0f65ef1bd..91dd8d89a 100644 --- a/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/BackFluConverter.cs +++ b/be/DataExchange/Fawtyg/Win_in.Sfs.Wms.DataExchange.Fawtyg.MesAgent/Incoming/BackFluConverter.cs @@ -58,7 +58,7 @@ public class BackFluConverter : IIncomingConverter { await Task.CompletedTask.ConfigureAwait(false); var incomingToWmsList = new List(); - var groups = incomingDataList.GroupBy(p => new { p.SourceDataGroupCode,p.SourceDataDetailCode }); + var groups = incomingDataList.GroupBy(p => p.SourceDataGroupCode); foreach (var group in groups) { var first = group.First(); @@ -97,17 +97,13 @@ public class BackFluConverter : IIncomingConverter wmsBack.WarehouseCode = "jiekou"; wmsBack.Lot = "jiekou"; wmsBack.Details = new List(); - decimal Qty = 0; - foreach (var incomingFromExternal in group.ToList())//根据单据号和零件号汇总数量 + foreach (var incomingFromExternal in group.ToList()) { - var backflu = JsonSerializer.Deserialize(incomingFromExternal.DestinationDataContent); - var backfluDetail = _objectMapper.Map(backflu.Detail); - Qty = backfluDetail.Qty + Qty; - } - var back = JsonSerializer.Deserialize(first.DestinationDataContent); + var back = JsonSerializer.Deserialize(incomingFromExternal.DestinationDataContent); var wmsBackDetail = _objectMapper.Map(back.Detail); wmsBackDetail.Lot = ""; - var item = await _itemBasicAppService.GetByCodeAsync(wmsBackDetail.ItemCode).ConfigureAwait(false); + var item = await _itemBasicAppService.GetByCodeAsync(wmsBackDetail.ItemCode).ConfigureAwait(false); + if (item != null) { wmsBackDetail.ItemName = item.Name; @@ -118,7 +114,6 @@ public class BackFluConverter : IIncomingConverter wmsBackDetail.ItemName = ""; wmsBackDetail.Uom = ""; } - wmsBackDetail.Qty = Qty; var typesAndErpCodeAsync = await _locationAppService.GetListByTypesAndErpCodeAsync(new EditableList() { EnumLocationType.WIP }, wmsBackDetail.LocationErpCode).ConfigureAwait(false); var loctioncode = typesAndErpCodeAsync.First(); wmsBackDetail.LocationCode = loctioncode.Code; @@ -127,7 +122,7 @@ public class BackFluConverter : IIncomingConverter wmsBackDetail.LocationGroup = loctioncode.LocationGroupCode; wmsBackDetail.PackingCode = "jiekou"; wmsBack.Details.Add(wmsBackDetail); - //} + } incomingToWms.DataContent = JsonSerializer.Serialize(wmsBack); incomingToWmsList.Add(incomingToWms); } diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs index 5e915178c..d226dba96 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/IncomingToWmsWorker.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Text; @@ -17,6 +18,7 @@ using Volo.Abp.Threading; using Volo.Abp.Uow; using Win_in.Sfs.Wms.DataExchange.Domain; using Win_in.Sfs.Wms.DataExchange.Domain.Shared; +using Win_in.Sfs.Wms.DataExchange.Wms; using Win_in.Sfs.Wms.Store.Application.Contracts; using static IdentityServer4.Models.IdentityResources; @@ -156,8 +158,8 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase await incomingToWms.HandleInventoryLabelsAsync(workerContext).ConfigureAwait(false); break; case EnumIncomingDataType.BackFlush: - await incomingToWms.HandleBackFlushsAsync(workerContext).ConfigureAwait(false); - + // await incomingToWms.HandleBackFlushsAsync(workerContext).ConfigureAwait(false); + await SendBackFlush(workerContext, incomingToWms).ConfigureAwait(false); break; case EnumIncomingDataType.None: default: @@ -168,14 +170,57 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase incomingToWms.SetSuccess(); } } + private async Task SendBackFlush(PeriodicBackgroundWorkerContext workerContext, IncomingToWms incomingToWms) + { // 定义请求的 URL + // string apiUrl = "http://10.164.113.31:60085/api/wms/store/product-receipt-note"; + + string apiUrl = _options.Value.IncomingOptions.apiUrl+ "api/wms/store/backFlush-note/create-many"; + + if (!string.IsNullOrEmpty(_options.Value.IncomingOptions.apiUrl)) + { + var backflushJson = JsonSerializer.Deserialize(incomingToWms.DataContent); + List backflush = new List(); + backflush.Add(backflushJson); + try + { + + // 将参数转换为 JSON 格式 + string jsonContent = JsonSerializer.Serialize(backflush); + + // 创建请求的内容 + StringContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json"); + + + // 发送 POST 请求 + HttpResponseMessage response = await _httpClient.PostAsync(apiUrl, content).ConfigureAwait(false); + + // 确保响应成功 + response.EnsureSuccessStatusCode(); + // 读取响应内容并返回 + string responseBody = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + } + catch (HttpRequestException ex) + { + // 处理请求异常 + // 可以记录日志或者抛出异常 + Console.WriteLine(ex.Message); + incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, ex.Message); + } + } + else + { + Console.WriteLine("apiUrl未配置!"); + incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, "apiUrl未配置!"); + } + } private async Task SendProductReceipt(PeriodicBackgroundWorkerContext workerContext, IncomingToWms incomingToWms) { // 定义请求的 URL // string apiUrl = "http://10.164.113.31:60085/api/wms/store/product-receipt-note"; - string apiUrl = _options.Value.IncomingOptions.apiUrl; + string apiUrl = _options.Value.IncomingOptions.apiUrl + "api/wms/store/product-receipt-note"; - if (!string.IsNullOrEmpty(apiUrl)) + if (!string.IsNullOrEmpty(_options.Value.IncomingOptions.apiUrl)) { var productReceiptJson = JsonSerializer.Deserialize(incomingToWms.DataContent); try diff --git a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json index c3163280c..3ff6fe613 100644 --- a/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json +++ b/be/DataExchange/src/Win_in.Sfs.Wms.DataExchange.Agent/appsettings.json @@ -44,7 +44,7 @@ "PeriodSeconds": 10, "RetryTimes": 3, "BatchSize": 100, - "apiUrl": "http://10.164.113.31:60085/api/wms/store/product-receipt-note" + "apiUrl": "http://10.164.113.31:60085/" }, "OutgoingOptions": { "Active": false,