diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 3aac70a1..3594c178 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/Controllers/ProductInventoryController.cs b/src/WMS.Web.Api/Controllers/ProductInventoryController.cs index 548b9acd..89fc3756 100644 --- a/src/WMS.Web.Api/Controllers/ProductInventoryController.cs +++ b/src/WMS.Web.Api/Controllers/ProductInventoryController.cs @@ -18,6 +18,7 @@ using Google.Protobuf.WellKnownTypes; using WMS.Web.Domain.Services; using Microsoft.Extensions.Options; using System.Linq; +using WMS.Web.Core.Dto; namespace WMS.Web.Api.Controllers { @@ -33,13 +34,16 @@ namespace WMS.Web.Api.Controllers private readonly IProductInventoryRepositories _repositories; private readonly QiniuOptions _option; private readonly IExportExcelService _exportExcelService; + private readonly IProductInventoryService _roductInventoryService; public ProductInventoryController(ILoginService loginService, IBasicsRepositories basicsRepositories, - IProductInventoryRepositories repositories, IOptions option, IExportExcelService exportExcelServic) { + IProductInventoryRepositories repositories, IOptions option, + IExportExcelService exportExcelServic, IProductInventoryService roductInventoryService) { _loginService = loginService; _basicsRepositories = basicsRepositories; _repositories = repositories; _option = option?.Value; _exportExcelService = exportExcelServic; + _roductInventoryService = roductInventoryService; } /// @@ -100,5 +104,19 @@ namespace WMS.Web.Api.Controllers return Task.FromResult(Result.ReSuccess(res)); } + /// + /// 刷新数据 + /// + /// + [HttpPost] + [Route("Refresh")] + public async Task Refresh() + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result.ReFailure(ResultCodes.Token_Invalid_Error); + + return await _roductInventoryService.Refresh(); + } } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 0e430568..f6c1bbe0 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -586,6 +586,12 @@ + + + 刷新数据 + + + 获取序列号信息 diff --git a/src/WMS.Web.Domain/IService/IProductInventoryService.cs b/src/WMS.Web.Domain/IService/IProductInventoryService.cs index 7acb4cc9..85b3aee9 100644 --- a/src/WMS.Web.Domain/IService/IProductInventoryService.cs +++ b/src/WMS.Web.Domain/IService/IProductInventoryService.cs @@ -12,5 +12,7 @@ namespace WMS.Web.Domain.IService Task LingXing(); Task Erp(); Task JuShuiTan(); + + Task Refresh(); } } diff --git a/src/WMS.Web.Domain/Services/ProductInventoryService.cs b/src/WMS.Web.Domain/Services/ProductInventoryService.cs index a0b82261..fce77817 100644 --- a/src/WMS.Web.Domain/Services/ProductInventoryService.cs +++ b/src/WMS.Web.Domain/Services/ProductInventoryService.cs @@ -1,5 +1,6 @@ using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using NPOI.POIFS.FileSystem; using System; using System.Collections.Generic; @@ -29,6 +30,7 @@ namespace WMS.Web.Domain.Services public readonly IBasicsRepositories _transactionRepositories; public readonly IJuShuiTanService _juShuiTanService; public readonly IErpInventoryService _erpInventoryService; + private readonly ILogger _logger; public ProductInventoryService(IErpService erpService, ISingleDataService singleDataService, IErpBasicDataExtendService erpBasicDataExtendService, @@ -37,7 +39,8 @@ namespace WMS.Web.Domain.Services IBasicsRepositories basicsRepositories, IBasicsRepositories transactionRepositories, IJuShuiTanService juShuiTanService, - IErpInventoryService erpInventoryService) + IErpInventoryService erpInventoryService, + ILogger logger) { _erpService = erpService; _singleDataService = singleDataService; @@ -48,6 +51,7 @@ namespace WMS.Web.Domain.Services _transactionRepositories = transactionRepositories; _juShuiTanService = juShuiTanService; _erpInventoryService = erpInventoryService; + _logger = logger; } /// @@ -273,5 +277,22 @@ namespace WMS.Web.Domain.Services return Result.ReSuccess(); } + + public async Task Refresh() + { + _logger.LogInformation($"同步成品仓库存->开始 {DateTime.Now}"); + + var res = await this.Erp(); + if(!res.IsSuccess)return res; + + res = await this.JuShuiTan(); + if (!res.IsSuccess) return res; + + res = await this.LingXing(); + if (!res.IsSuccess) return res; + + _logger.LogInformation($"同步成品仓库存->结束 {DateTime.Now}"); + return Result.ReSuccess(); + } } } diff --git a/src/WMS.Web.Domain/Services/Public/JuShuiTanService.cs b/src/WMS.Web.Domain/Services/Public/JuShuiTanService.cs index 7fdf76ca..ddf98708 100644 --- a/src/WMS.Web.Domain/Services/Public/JuShuiTanService.cs +++ b/src/WMS.Web.Domain/Services/Public/JuShuiTanService.cs @@ -12,7 +12,9 @@ using System.Net; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto.Erp; using WMS.Web.Core.Dto.JuShuiTan; +using WMS.Web.Core.Help; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.IService.Public; using WMS.Web.Domain.Options; @@ -26,7 +28,6 @@ namespace WMS.Web.Domain.Services.Public private readonly IMemoryCache _memoryCache; private int hours = 10;//过期时间 默认10小时 private readonly JuShuiTanOptions _option; - public JuShuiTanService(IHttpClientService httpClientService, ILogger logger, IMemoryCache memoryCache, IOptions option) { @@ -45,6 +46,10 @@ namespace WMS.Web.Domain.Services.Public public async Task>> GetStock() { + var stock_list = _memoryCache.Get>("jushuitan_stock"); + if (stock_list != null && stock_list.Count > 0) + return Result>.ReSuccess(stock_list); + List list = new List(); JuShuiTanStockRequst request = new JuShuiTanStockRequst(); @@ -70,6 +75,9 @@ namespace WMS.Web.Domain.Services.Public datas = JsonConvert.DeserializeObject>(json); list.AddRange(datas); } + + //设置缓存 + _memoryCache.Set("jushuitan_stock", list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(DateTimeUtil.GetTotalMinutesTimeSpan()))); return Result>.ReSuccess(list); } diff --git a/src/WMS.Web.Domain/Services/Public/LingXingService.cs b/src/WMS.Web.Domain/Services/Public/LingXingService.cs index fd75cfd9..44876dcc 100644 --- a/src/WMS.Web.Domain/Services/Public/LingXingService.cs +++ b/src/WMS.Web.Domain/Services/Public/LingXingService.cs @@ -24,6 +24,7 @@ using System.Reflection; using WMS.Web.Core.Help; using static System.Net.WebRequestMethods; using WMS.Web.Domain.Values; +using WMS.Web.Core.Dto.JuShuiTan; namespace WMS.Web.Domain.Services.Public { @@ -71,6 +72,10 @@ namespace WMS.Web.Domain.Services.Public /// public async Task>> GetStock() { + var stock_list = _memoryCache.Get>("lingxing_stock"); + if (stock_list != null && stock_list.Count > 0) + return Result>.ReSuccess(stock_list); + //默认获取本地仓库 如果需要海外仓 另外需传参数type var request = new LingXingRequest(); var resUrl = await GetStr("/erp/sc/data/local_inventory/warehouse", request); @@ -79,7 +84,11 @@ namespace WMS.Web.Domain.Services.Public var res = await _httpClientService.PostAsync(resUrl.Data, JsonConvert.SerializeObject(request), null); if (res.Code != 0) return Result>.ReFailure(ResultCodes.LingXingDataError); - return Result>.ReSuccess(JsonConvert.DeserializeObject>(res.Data.ToString())); + var list = JsonConvert.DeserializeObject>(res.Data.ToString()); + //设置缓存 + _memoryCache.Set("lingxing_stock", list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(DateTimeUtil.GetTotalMinutesTimeSpan()))); + + return Result>.ReSuccess(list); } /// @@ -89,6 +98,10 @@ namespace WMS.Web.Domain.Services.Public /// public async Task>> GetSeller() { + var seller_list = _memoryCache.Get>("lingxing_seller"); + if (seller_list != null && seller_list.Count > 0) + return Result>.ReSuccess(seller_list); + var request = new LingXingKongRequest(); var resUrl = await GetStr("/erp/sc/data/seller/lists", request); if (!resUrl.IsSuccess) return Result>.ReFailure(ResultCodes.LingXingUrlError); @@ -96,7 +109,11 @@ namespace WMS.Web.Domain.Services.Public var res = await _httpClientService.GetAsync(resUrl.Data); if (res.Code != 0) return Result>.ReFailure(ResultCodes.LingXingDataError); - return Result>.ReSuccess(JsonConvert.DeserializeObject>(res.Data.ToString())); + var list = JsonConvert.DeserializeObject>(res.Data.ToString()); + //设置缓存 + _memoryCache.Set("lingxing_seller", list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(DateTimeUtil.GetTotalMinutesTimeSpan()))); + + return Result>.ReSuccess(list); } ///