From 457b75b642a1fdaa7158e5b047cabc5d7ae16333 Mon Sep 17 00:00:00 2001 From: xxyy <cathay_xy@163.com> Date: 星期一, 10 三月 2025 10:10:13 +0800 Subject: [PATCH] 修复和优化 Dt_TaskService.cs 中的任务请求逻辑 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs | 71 +++++++++++++++++++++++++++++++++-- 1 files changed, 67 insertions(+), 4 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs index 90c4c55..4bcf385 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs @@ -19,6 +19,14 @@ using WIDESEA_Core.Core; using Swashbuckle.AspNetCore.SwaggerGen; using Microsoft.OpenApi.Models; +using WIDESEA_StorageTaskServices; +using Autofac.Core; +using WIDESEA_Cache; +using SimpleRedis; +using WIDESEA_DTO.WMS; +using static NewLife.Remoting.ApiHttpClient; +using NewLife.Windows; +using WIDESEA_Core.Enums; var builder = WebApplication.CreateBuilder(args); @@ -109,20 +117,55 @@ } }); +builder.Services.AddHostedService<MyBackgroundService>(); + +//缓存设置配置转实体 +builder.Services.AddConfigurableOptions<CacheSettingsOptions>(); +//禁止在主机启动时通过 App.GetOptions<TOptions> 获取选项,如需获取配置选项理应通过 App.GetConfig<TOptions>("配置节点", true)。 +var cacheSettings = AppSettings.Configuration.GetSection("CacheSettings").Get<CacheSettingsOptions>(); +//如果有redis连接字符串 +if (cacheSettings.UseRedis) +{ + var connectionString = + $"server={cacheSettings.RedisSettings.Address};db={cacheSettings.RedisSettings.Db}"; + //注入redis + builder.Services.AddSimpleRedis(connectionString); + builder.Services.AddScoped<ISimpleCacheService, RedisCacheService>(); +} +else +{ + builder.Services.AddScoped<ISimpleCacheService, MemoryCacheService>(); +} + var app = builder.Build(); + +// 验证 Redis 服务是否成功注册 +using (var scope = app.Services.CreateScope()) +{ + var services = scope.ServiceProvider; + var redisService = services.GetService<ISimpleCacheService>(); + if (redisService == null) + { + WIDESEA_Core.Helper.ConsoleHelper.WriteErrorLine("Redis 服务未成功注册"); + } + else + { + WIDESEA_Core.Helper.ConsoleHelper.WriteSuccessLine("Redis 服务已成功注册"); + } +} // 3、配置中间件 app.UseMiniProfiler();//性能分析器 app.ConfigureApplication();//配置文件 app.UseApplicationSetup();//启动配置 app.UseSession(); -if (app.Environment.IsDevelopment()) -{ +//if (app.Environment.IsDevelopment()) +//{ //todo //app.UseSwaggerAuthorized(); app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html")); -}//判断是否需要打开swagger +//}//判断是否需要打开swagger app.UseIpLimitMiddle(); app.UseApiLogMiddleware(); @@ -146,8 +189,28 @@ app.UseAuthorization(); - app.MapControllers(); +//通过 App.GetOptions<TOptions> 获取选项 +var cacheSettingsb = App.GetOptions<CacheSettingsOptions>(); +//如果需要清除缓存 +if (cacheSettingsb.UseRedis && cacheSettingsb.RedisSettings.ClearRedis) +{ + var redis = app.Services.CreateScope().ServiceProvider.GetService<ISimpleCacheService>(); //获取redis服务 + // 删除redis的key + redis.DelByPattern(CacheConst.Cache_Prefix); + + WIDESEA_Core.Helper.ConsoleHelper.WriteInfoLine("正在缓存库存信息"); + var stockInfoList = await SqlSugarHelper.DbWMS.Queryable<DtStockInfo>() + .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).IncludesAllFirstLayer().ToListAsync(); + // 缓存库存信息 + foreach (var item in stockInfoList) + { + item.StockInfoDetails = new List<DtStockInfoDetail>() { { item.StockInfoDetails[0] } }; + redis.HashAdd(CacheConst.Cache_DtStockInfo, item.PalletCode, item); + } + WIDESEA_Core.Helper.ConsoleHelper.WriteInfoLine("缓存库存信息完成"); +} + app.Run(); -- Gitblit v1.9.3