This commit is contained in:
tongfei
2024-04-18 14:33:25 +08:00
parent a79893ffb5
commit a23321e1d2
6 changed files with 53 additions and 14 deletions

View File

@@ -32,12 +32,12 @@ namespace WMS.Web.Api.Controllers
private readonly IInStockRepositories _inStockRepositories;
private readonly IExportExcelService _exportExcelService;
private readonly IRedisConcurrentProcessService _redisConcurrentProcessService;
public InStockController(IOptions<QiniuOptions> option,
public InStockController(IOptions<QiniuOptions> option,
ILoginService loginService,
IInStockRepositories inStockRepositories,
IInStockRepositories inStockRepositories,
IInStockService inStockService,
IExportExcelService exportExcelService,
IRedisConcurrentProcessService redisConcurrentProcessService)
IRedisConcurrentProcessService redisConcurrentProcessService)
{
_option = option?.Value;
this._redisConcurrentProcessService = redisConcurrentProcessService;
@@ -59,9 +59,9 @@ namespace WMS.Web.Api.Controllers
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
if (loginInfo == null || loginInfo.UserInfo == null)
return ResultPagedList<InStockQueryResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
var (list, count) = await _inStockRepositories.GetPagedList(dto,loginInfo.UserInfo.CompanyId);
var (list, count) = await _inStockRepositories.GetPagedList(dto, loginInfo.UserInfo.CompanyId);
return ResultPagedList<InStockQueryResponse>.ReSuccess(list, count);
}
/// <summary>
@@ -163,7 +163,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
return await _inStockService.Sync(dto,loginInfo);
return await _inStockService.Sync(dto, loginInfo);
}
}
}

View File

@@ -52,12 +52,14 @@ namespace WMS.Web.Api.Controllers
private readonly ISendMessageService _sendMessageService;
private readonly IMaterialService _materialService;
private readonly IMemoryCache _memoryCache;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories,
private readonly IRedisConcurrentProcessService _redisConcurrentProcessService;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, IRedisConcurrentProcessService redisConcurrentProcessService,
IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories basicsRepositories, IMemoryCache memoryCache,
IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOptions<AppOptions> options, ILoginService loginService, ISendMessageService sendMessageService,
ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService, IInStockTaskRepositories inStockTaskRepositories,
IWebHostEnvironment env, IMaterialService materialService, IOutStockRepositories outStockRepositories)
{
_redisConcurrentProcessService = redisConcurrentProcessService;
_memoryCache = memoryCache;
_materialService = materialService;
_loginService = loginService;
@@ -88,7 +90,7 @@ namespace WMS.Web.Api.Controllers
await _outStockRepositories.GetEntityListBySerialNumbers(new List<string>() { "131VU-32C5A" });
//await _outStockRepositories.GetEntityListByBoxBillNos(new List<string>() { "CTN0002187" });
//list[0].Details[0].ErpDetails[0].AccruedQty = 2;
//list[0].Details[0].ErpDetails.Add(new OutStockTaskErpDetails()
@@ -349,7 +351,7 @@ namespace WMS.Web.Api.Controllers
/// <returns></returns>
[HttpGet]
[Route("Send")]
public async Task<Result> Send()
public async Task<Result> Send()
{
return await _sendMessageService.Execute();
}
@@ -360,7 +362,7 @@ namespace WMS.Web.Api.Controllers
/// <returns></returns>
[HttpGet]
[Route("SyscMats")]
public async Task<Result> SyscMats()
public async Task<Result> SyscMats()
{
return await _materialService.SyncNewMaterials();
}
@@ -371,7 +373,7 @@ namespace WMS.Web.Api.Controllers
/// <returns></returns>
[HttpGet]
[Route("getmt")]
public async Task<bool> GetMaterial()
public async Task<bool> GetMaterial()
{
var materials_result = await _erpService.BillQueryForMaterial();
var materials = materials_result.Data.ToList();
@@ -386,7 +388,7 @@ namespace WMS.Web.Api.Controllers
/// <returns></returns>
[HttpGet]
[Route("ClearCache")]
public Result ClearCache()
public Result ClearCache()
{
//通过反射调用清空缓存方法
PropertyInfo prop = _memoryCache.GetType().GetProperty("EntriesCollection", BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.NonPublic | BindingFlags.Public);
@@ -395,5 +397,24 @@ namespace WMS.Web.Api.Controllers
clearMethod.Invoke(innerCache, null);
return Result.ReSuccess();
}
/// <summary>
///
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("binfa")]
public Result<bool> BinFa()
{
var cacheKey = "instock_shelf_" + 1;
var IscanAccess = _redisConcurrentProcessService.GetRedisKeyValue(cacheKey);
if (IscanAccess)
return Result<bool>.ReFailure(ResultCodes.Concurrent_Instock);
Console.WriteLine("process..."+ IscanAccess);
_redisConcurrentProcessService.UpdateAccessStatus(cacheKey, true);
var tt2 = _redisConcurrentProcessService.GetRedisKeyValue(cacheKey);
Console.WriteLine("redis1:" + tt2);
return Result<bool>.ReSuccess(tt2);
}
}
}

View File

@@ -824,5 +824,11 @@
</summary>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.TestController.BinFa">
<summary>
</summary>
<returns></returns>
</member>
</members>
</doc>

View File

@@ -8,6 +8,8 @@ namespace WMS.Web.Domain.IService.Public
{
bool CanAccessMethod(string cacheKey);
bool GetRedisKeyValue(string cacheKey);
void UpdateAccessStatus(string cacheKey, bool canAccess);
}
}

View File

@@ -17,13 +17,21 @@ namespace WMS.Web.Domain.Services.Public
public bool CanAccessMethod(string cacheKey)
{
// 使用 Redis 来存储并发控制标记
return _redisClientService.SetStringKey(cacheKey, "true", TimeSpan.FromMinutes(1));
return _redisClientService.SetStringKey<bool>(cacheKey, true, TimeSpan.FromMinutes(1));
}
public bool GetRedisKeyValue(string cacheKey)
{
// 使用 Redis 来存储并发控制标记
var isSuccess= _redisClientService.GetStringKey<bool>(cacheKey);
return isSuccess;
}
public void UpdateAccessStatus(string cacheKey, bool canAccess)
{
// 更新 Redis 缓存项的值
_redisClientService.SetStringKey(cacheKey, canAccess.ToString(), TimeSpan.FromMinutes(1));
_redisClientService.SetStringKey<bool>(cacheKey, canAccess, TimeSpan.FromMinutes(1));
}
}
}

View File

@@ -24,6 +24,8 @@ namespace WMS.Web.Domain.Values
public static ValueTuple<int, string> NoDateError = (40005, "数据不存在");
public static ValueTuple<int, string> SourceBillNoDateError = (40005, "来源单不存在,请核对后再试");
public static ValueTuple<int, string> Concurrent_Instock = (80005, "该任务单正在处理中");
/// <summary>
/// 没有菜单权限,无法登录
/// </summary>