增加缓存

This commit is contained in:
18942506660
2024-10-21 10:00:57 +08:00
parent 9ac131f286
commit c7134674e3
7 changed files with 77 additions and 5 deletions

View File

@@ -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<QiniuOptions> option, IExportExcelService exportExcelServic) {
IProductInventoryRepositories repositories, IOptions<QiniuOptions> option,
IExportExcelService exportExcelServic, IProductInventoryService roductInventoryService) {
_loginService = loginService;
_basicsRepositories = basicsRepositories;
_repositories = repositories;
_option = option?.Value;
_exportExcelService = exportExcelServic;
_roductInventoryService = roductInventoryService;
}
/// <summary>
@@ -100,5 +104,19 @@ namespace WMS.Web.Api.Controllers
return Task.FromResult(Result<string>.ReSuccess(res));
}
/// <summary>
/// 刷新数据
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("Refresh")]
public async Task<Result> 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();
}
}
}

View File

@@ -586,6 +586,12 @@
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.ProductInventoryController.Refresh">
<summary>
刷新数据
</summary>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.SerialNumberController.Get(System.String)">
<summary>
获取序列号信息

View File

@@ -12,5 +12,7 @@ namespace WMS.Web.Domain.IService
Task<Result> LingXing();
Task<Result> Erp();
Task<Result> JuShuiTan();
Task<Result> Refresh();
}
}

View File

@@ -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<ProductInventoryService> _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<ProductInventoryService> logger)
{
_erpService = erpService;
_singleDataService = singleDataService;
@@ -48,6 +51,7 @@ namespace WMS.Web.Domain.Services
_transactionRepositories = transactionRepositories;
_juShuiTanService = juShuiTanService;
_erpInventoryService = erpInventoryService;
_logger = logger;
}
/// <summary>
@@ -273,5 +277,22 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
public async Task<Result> 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();
}
}
}

View File

@@ -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<JuShuiTanService> logger,
IMemoryCache memoryCache, IOptions<JuShuiTanOptions> option)
{
@@ -45,6 +46,10 @@ namespace WMS.Web.Domain.Services.Public
public async Task<Result<List<JuShuiTanStockResponse>>> GetStock()
{
var stock_list = _memoryCache.Get<List<JuShuiTanStockResponse>>("jushuitan_stock");
if (stock_list != null && stock_list.Count > 0)
return Result<List<JuShuiTanStockResponse>>.ReSuccess(stock_list);
List<JuShuiTanStockResponse> list = new List<JuShuiTanStockResponse>();
JuShuiTanStockRequst request = new JuShuiTanStockRequst();
@@ -70,6 +75,9 @@ namespace WMS.Web.Domain.Services.Public
datas = JsonConvert.DeserializeObject<List<JuShuiTanStockResponse>>(json);
list.AddRange(datas);
}
//设置缓存
_memoryCache.Set("jushuitan_stock", list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(DateTimeUtil.GetTotalMinutesTimeSpan())));
return Result<List<JuShuiTanStockResponse>>.ReSuccess(list);
}

View File

@@ -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
/// <returns></returns>
public async Task<Result<List<LingXingStockResponse>>> GetStock()
{
var stock_list = _memoryCache.Get<List<LingXingStockResponse>>("lingxing_stock");
if (stock_list != null && stock_list.Count > 0)
return Result<List<LingXingStockResponse>>.ReSuccess(stock_list);
//默认获取本地仓库 如果需要海外仓 另外需传参数type
var request = new LingXingRequest();
var resUrl = await GetStr<LingXingRequest>("/erp/sc/data/local_inventory/warehouse", request);
@@ -79,7 +84,11 @@ namespace WMS.Web.Domain.Services.Public
var res = await _httpClientService.PostAsync<LingXingResponse>(resUrl.Data, JsonConvert.SerializeObject(request), null);
if (res.Code != 0) return Result<List<LingXingStockResponse>>.ReFailure(ResultCodes.LingXingDataError);
return Result<List<LingXingStockResponse>>.ReSuccess(JsonConvert.DeserializeObject<List<LingXingStockResponse>>(res.Data.ToString()));
var list = JsonConvert.DeserializeObject<List<LingXingStockResponse>>(res.Data.ToString());
//设置缓存
_memoryCache.Set("lingxing_stock", list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(DateTimeUtil.GetTotalMinutesTimeSpan())));
return Result<List<LingXingStockResponse>>.ReSuccess(list);
}
/// <summary>
@@ -89,6 +98,10 @@ namespace WMS.Web.Domain.Services.Public
/// <exception cref="NotImplementedException"></exception>
public async Task<Result<List<LingXingSellerResponse>>> GetSeller()
{
var seller_list = _memoryCache.Get<List<LingXingSellerResponse>>("lingxing_seller");
if (seller_list != null && seller_list.Count > 0)
return Result<List<LingXingSellerResponse>>.ReSuccess(seller_list);
var request = new LingXingKongRequest();
var resUrl = await GetStr<LingXingKongRequest>("/erp/sc/data/seller/lists", request);
if (!resUrl.IsSuccess) return Result<List<LingXingSellerResponse>>.ReFailure(ResultCodes.LingXingUrlError);
@@ -96,7 +109,11 @@ namespace WMS.Web.Domain.Services.Public
var res = await _httpClientService.GetAsync<LingXingResponse>(resUrl.Data);
if (res.Code != 0) return Result<List<LingXingSellerResponse>>.ReFailure(ResultCodes.LingXingDataError);
return Result<List<LingXingSellerResponse>>.ReSuccess(JsonConvert.DeserializeObject<List<LingXingSellerResponse>>(res.Data.ToString()));
var list = JsonConvert.DeserializeObject<List<LingXingSellerResponse>>(res.Data.ToString());
//设置缓存
_memoryCache.Set("lingxing_seller", list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromMinutes(DateTimeUtil.GetTotalMinutesTimeSpan())));
return Result<List<LingXingSellerResponse>>.ReSuccess(list);
}
/// <summary>