增加缓存
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
获取序列号信息
|
||||
|
||||
@@ -12,5 +12,7 @@ namespace WMS.Web.Domain.IService
|
||||
Task<Result> LingXing();
|
||||
Task<Result> Erp();
|
||||
Task<Result> JuShuiTan();
|
||||
|
||||
Task<Result> Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user