Program.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. using Autofac;
  2. using Autofac.Core;
  3. using Autofac.Extensions.DependencyInjection;
  4. using AutoMapper;
  5. using CSRedis;
  6. using MessagePack.Resolvers;
  7. using MessagePack;
  8. using Microsoft.OpenApi.Models;
  9. using SqlSugar;
  10. using Wms.Screen.DataService.Impl;
  11. using Wms.Screen.Service.Mapper;
  12. using Wms.Screen.SqlSugar;
  13. using zt.screen.api;
  14. using zt.screen.api.Extensions;
  15. using Wms.Screen.Dto.ZhongTian.Response;
  16. using System.Configuration;
  17. var builder = WebApplication.CreateBuilder(args);
  18. // Add services to the container.
  19. builder.Services.AddControllers();
  20. builder.Services.AddEndpointsApiExplorer();
  21. //builder.Services.AddCors(options =>
  22. //{
  23. // options.AddPolicy(name: "cors", builders => builders.AllowAnyOrigin().AllowAnyHeader().WithMethods("GET", "POST", "HEAD", "PUT", "DELETE", "OPTIONS").WithExposedHeaders("X-Pagination"));
  24. //})
  25. builder.Services.Configure<Wms.Screen.Dto.ZhongTian.MySettings>(builder.Configuration.GetSection("MySettings"));
  26. builder.Services.AddCors(policy =>
  27. {
  28. policy.AddPolicy("CorsPolicy", opt => opt
  29. .AllowAnyOrigin()
  30. .AllowAnyHeader()
  31. .AllowAnyMethod()
  32. .WithExposedHeaders("X-Pagination"));
  33. });
  34. builder.Services.AddSwaggerGen(c =>
  35. {
  36. c.SwaggerDoc("v1", new OpenApiInfo
  37. {
  38. Title = "看板接口文档",
  39. Version = "1.0",
  40. Description = "看板接口文档"
  41. });
  42. var file = Path.Combine(AppContext.BaseDirectory, "Wms.Screen.Dto.xml"); // xml文档绝对路径
  43. var file1 = Path.Combine(AppContext.BaseDirectory, "zt.screen.api.xml");
  44. var path = Path.Combine(AppContext.BaseDirectory, file);
  45. var path1 = Path.Combine(AppContext.BaseDirectory, file1);
  46. c.IncludeXmlComments(path, true); // true : 显示dto注释
  47. c.IncludeXmlComments(path1, true); // true : 显示控制器层注释
  48. c.OrderActionsBy(o => o.RelativePath);
  49. });
  50. builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
  51. builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder =>
  52. {
  53. containerBuilder.RegisterModule(new AutofacModuleRegister());
  54. });
  55. var sqlSugarConfig = SqlSugarConfig.GetConnectionString(builder.Configuration);
  56. builder.Services.AddSqlSugarClient<SqlSugarClient>(config =>
  57. {
  58. config.ConnectionString = sqlSugarConfig.Item2;
  59. config.DbType = sqlSugarConfig.Item1;
  60. config.IsAutoCloseConnection = true;
  61. config.InitKeyType = InitKeyType.Attribute;
  62. //config.IsShardSameThread = true;
  63. });
  64. builder.Services.AddHostedService<HostedServiceExtension>();
  65. RedisHelper.Initialization(new CSRedisClient(builder.Configuration["CSRedisConnectString"].ToString()));
  66. builder.Services.AddAutoMapper(typeof(MyProfile));
  67. if (builder.Configuration["CSRedisConnectString2"] != null && !string.IsNullOrWhiteSpace(builder.Configuration["CSRedisConnectString2"].ToString()))
  68. {
  69. CSRedisClient CSRedisClient = new CSRedisClient(builder.Configuration["CSRedisConnectString2"].ToString());
  70. builder.Services.AddSingleton(CSRedisClient);
  71. builder.Services.AddSingleton(provider =>
  72. {
  73. MessagePackSerializer.DefaultOptions = StandardResolver.Options.WithCompression(MessagePackCompression.Lz4Block);
  74. return
  75. new FreeRedis.RedisClient(builder.Configuration["CSRedisConnectString2"].ToString())
  76. {
  77. Serialize = obj =>
  78. {
  79. var bytes = MessagePackSerializer.Serialize(obj);
  80. return bytes;
  81. },
  82. DeserializeRaw = (bytes, type) =>
  83. {
  84. var obj = MessagePackSerializer.Deserialize(type, bytes);
  85. return obj;
  86. }
  87. };
  88. });
  89. }
  90. //分拣库
  91. Dictionary<string, RangeChecker> dicRangeChecker = new Dictionary<string, RangeChecker>();
  92. var first = new RangeChecker();
  93. first.AddRange(new IntRange(38, 38));
  94. first.AddRange(new IntRange(138, 138));
  95. first.AddRange(new IntRange(1, 22));
  96. first.AddRange(new IntRange(101, 122));
  97. first.AddRange(new IntRange(301, 317));
  98. first.AddRange(new IntRange(401, 599));
  99. first.AddRange(new IntRange(601, 799));
  100. first.AddRange(new IntRange(1601, 1620));
  101. first.AddRange(new IntRange(1661, 1690));
  102. first.AddRange(new IntRange(2501, 2540));
  103. first.AddRange(new IntRange(2701, 2740));
  104. var second = new RangeChecker();
  105. second.AddRange(new IntRange(38, 38));
  106. second.AddRange(new IntRange(138, 138));
  107. second.AddRange(new IntRange(23, 41));
  108. second.AddRange(new IntRange(123, 141));
  109. second.AddRange(new IntRange(321, 324));
  110. second.AddRange(new IntRange(801, 999));
  111. second.AddRange(new IntRange(1001, 1199));
  112. second.AddRange(new IntRange(1621, 1640));
  113. second.AddRange(new IntRange(1691, 1720));
  114. second.AddRange(new IntRange(3101, 3140));
  115. second.AddRange(new IntRange(2901, 2940));
  116. var three = new RangeChecker();
  117. three.AddRange(new IntRange(38, 38));
  118. three.AddRange(new IntRange(138, 138));
  119. three.AddRange(new IntRange(42, 61));
  120. three.AddRange(new IntRange(142, 161));
  121. three.AddRange(new IntRange(331, 337));
  122. three.AddRange(new IntRange(1201, 1399));
  123. three.AddRange(new IntRange(1401, 1599));
  124. three.AddRange(new IntRange(1641, 1660));
  125. three.AddRange(new IntRange(1721, 1750));
  126. three.AddRange(new IntRange(3301, 3340));
  127. three.AddRange(new IntRange(3501, 3540));
  128. dicRangeChecker.Add("1", first);
  129. dicRangeChecker.Add("2", second);
  130. dicRangeChecker.Add("3", three);
  131. builder.Services.AddSingleton(dicRangeChecker);
  132. //分拣库
  133. Dictionary<string, List<string>> _dicDevice = new Dictionary<string, List<string>>()
  134. {
  135. {"1",new List<string>() { "SRM1","SRM2", "RGV1", "RGV2","Robot1","Robot2" ,"Truss1"}},
  136. {"2",new List<string>() { "SRM3","SRM4", "RGV3", "RGV4","Robot3","Robot4", "Truss2"}},
  137. {"3",new List<string>() { "SRM5","SRM6", "RGV5", "RGV6","Robot5","Robot6", "Truss3"}},
  138. };
  139. builder.Services.AddSingleton(_dicDevice);
  140. var app = builder.Build();
  141. app.UseCors("CorsPolicy");
  142. // Configure the HTTP request pipeline.
  143. if (app.Environment.IsDevelopment())
  144. {
  145. }
  146. app.UseSwagger();
  147. app.UseSwaggerUI();
  148. app.UseHttpsRedirection();
  149. app.UseRouting();
  150. app.UseAuthorization();
  151. app.MapControllers();
  152. app.Run();