From 7546e656b1b5ba1f67b7dfd593a3ccf5b050d4ac Mon Sep 17 00:00:00 2001 From: lvzb <35200379@qq.com> Date: Tue, 15 Aug 2023 22:25:12 +0800 Subject: [PATCH 1/4] =?UTF-8?q?wms=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IncomingToWmsWorker.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 dcd78cc32..5e915178c 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 @@ -163,8 +163,10 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase default: throw new ArgumentOutOfRangeException(); } - - incomingToWms.SetSuccess(); + if( incomingToWms.Status != EnumExchangeDataStatus.Error) + { + incomingToWms.SetSuccess(); + } } private async Task SendProductReceipt(PeriodicBackgroundWorkerContext workerContext, IncomingToWms incomingToWms) @@ -200,13 +202,13 @@ public class IncomingToWmsWorker : AsyncPeriodicBackgroundWorkerBase // 处理请求异常 // 可以记录日志或者抛出异常 Console.WriteLine(ex.Message); - //incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, ex.Message); + incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, ex.Message); } } else { Console.WriteLine("apiUrl未配置!"); - + incomingToWms.SetError(EnumExchangeDataErrorCode.Exception, "apiUrl未配置!"); } //finally //{ From a99f641f598f5c71dd554c6feb970cbfa2c838e2 Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Wed, 16 Aug 2023 09:37:09 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Balances/DTOs/BalanceSerialDto.cs | 2 +- .../Transactions/TransactionAppService.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceSerialDto.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceSerialDto.cs index cead0d4df..3b524b101 100644 --- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceSerialDto.cs +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/Balances/DTOs/BalanceSerialDto.cs @@ -48,7 +48,7 @@ public class ReportErpLocationSerialDto public class ReportLocationSerialDto { - public string LocatioCode { get; set; } + public string LocationCode { get; set; } /// /// 期初库存 小于开始时间 diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs index be185de5b..d77b7acce 100644 --- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs @@ -203,6 +203,7 @@ public class TransactionAppService reportLocationSerialDto.FirstQty = tempFirstSum; reportLocationSerialDto.NowQty = tempNowSum; reportLocationSerialDto.LastQty = tempLastSum; + reportLocationSerialDto.LocationCode = locationDto.Code; #endregion reportErpLocationSerialDto.ReportLocationSerialDtos.Add(reportLocationSerialDto); From 4d0ace828b14cf9b28aadce894e8aade4ee5f5ef Mon Sep 17 00:00:00 2001 From: lvzb <35200379@qq.com> Date: Wed, 16 Aug 2023 22:28:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BC=9A=E5=86=B2=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=BAhttp=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Incoming/BackFluConverter.cs | 17 +++--- .../IncomingToWmsWorker.cs | 53 +++++++++++++++++-- .../appsettings.json | 2 +- 3 files changed, 56 insertions(+), 16 deletions(-) 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, From a7cb53cf226abdade56efd285418201676c11563 Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Fri, 18 Aug 2023 10:51:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Transactions/TransactionAppService.cs | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs index d77b7acce..43b0c5a74 100644 --- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Transactions/TransactionAppService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Volo.Abp; using Volo.Abp.ObjectMapping; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Shared.Application.Contracts; @@ -128,7 +129,7 @@ public class TransactionAppService /// /// /// - [HttpGet("item-serial-list")] + [HttpPost("item-serial-list")] public virtual async Task> GetItemSerialList(List itemCodes,DateTime startDateTime,DateTime endDateTime) { var itemSerialDtos = new List(); @@ -137,6 +138,11 @@ public class TransactionAppService var itemSerialDto = new ReportItemSerialDto(); var itemBasicDto = await _itemBasicAppService.GetByCodeAsync(itemCode).ConfigureAwait(false); + if (itemBasicDto==null) + { + throw new UserFriendlyException($"物品代码{itemCode}不存在"); + } + itemSerialDto.ItemCode = itemBasicDto.Code; itemSerialDto.ItemDesc1 = itemBasicDto.Desc1; itemSerialDto.ItemDesc2 = itemBasicDto.Desc2; @@ -191,8 +197,18 @@ public class TransactionAppService //期初库存 var tempFirstSum = transactions.Where(p => p.LocationCode == locationDto.Code && p.CreationTimep.Qty); //当前库存 - var balanceDtos= await _balanceAppService.GetListByLocationCodeAndItemCodeAsync(locationDto.Code, itemSerialDto.ItemCode).ConfigureAwait(false); - var tempNowSum = balanceDtos.Sum(p => p.Qty); + decimal tempNowSum = 0; + try + { + var balanceDtos = await _balanceAppService + .GetListByLocationCodeAndItemCodeAsync(locationDto.Code, itemSerialDto.ItemCode) + .ConfigureAwait(false); + tempNowSum = balanceDtos.Sum(p => p.Qty); + } + catch + { + } + //期末库存 var tempLastSum = transactions.Where(p => p.LocationCode == locationDto.Code && p.CreationTime < endDateTime).Sum(p => p.Qty);