using System.Diagnostics; using Admin.NET.Plugin.AiDOP.Entity; using Admin.NET.Plugin.AiDOP.Entity.S0.Manufacturing; using Admin.NET.Plugin.AiDOP.Entity.S0.Sales; using Admin.NET.Plugin.AiDOP.Entity.S0.Supply; using Admin.NET.Plugin.AiDOP.Infrastructure; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using SqlSugar; namespace Admin.NET.Plugin.AiDOP; /// /// AiDOP 插件启动配置(按需扩展 DI) /// [AppStartup(900)] public class Startup : AppStartup { public void ConfigureServices(IServiceCollection services) { services.AddScoped(); services.AddScoped(); services.Configure(options => { options.Filters.AddService(); options.Filters.AddService(); }); } /// /// 开发环境下为 Demo 表执行 CodeFirst(表已存在则跳过变更,行为取决于 SqlSugar 配置)。 /// public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { try { AidopMenuLinkSync.EnsureLinked(app.ApplicationServices); } catch (Exception ex) { Trace.TraceWarning("Ai-DOP AidopMenuLinkSync: " + ex); } try { using var scopeS4 = app.ApplicationServices.CreateScope(); var dbS4 = scopeS4.ServiceProvider.GetRequiredService(); dbS4.CodeFirst.InitTables(typeof(AdoSmartOpsLayoutItem), typeof(AdoSmartOpsHomeModule), typeof(AdoSmartOpsKpiMaster)); AidopTenantMigration.MigrateOldTenantId(dbS4); AidopKpiMasterSeed.EnsureSeed(dbS4); AidopKpiMasterSeed.EnsureSeed(dbS4, 1300000000888); } catch (Exception ex) { Trace.TraceWarning("Ai-DOP CodeFirst/S4 seed: " + ex); } if (!env.IsDevelopment()) return; // 客户/物料/优先级等;前处理要素/前处理要素参数现为独立表 PreprocessElement / PreprocessElementParam。 using var scope = app.ApplicationServices.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); db.CodeFirst.InitTables( typeof(AdoS0CustMaster), typeof(AdoS0ItemMaster), typeof(AdoS0ItemSubstituteDetail), typeof(AdoS0PriorityCode), typeof(AdoS0ProductStructureMaster), typeof(AdoS0ProductStructureOp), typeof(AdoS0StdOpMaster), typeof(AdoS0LineMaster), typeof(AdoS0MfgRoutingOpDetail), typeof(AdoS0MfgPersonSkillAssignment), typeof(AdoS0MfgWorkOrderControl), typeof(AdoS0MfgPersonSkill), typeof(AdoS0MfgLinePost), typeof(AdoS0MfgLinePostSkill), typeof(AdoS0MfgWorkCenter), typeof(AdoS0MfgLineMaterial), typeof(AdoS0MfgElementParam), typeof(AdoS0MfgMaterialProcessElement), typeof(AdoS0MfgPreprocessElement), typeof(AdoS0MfgPreprocessElementParam), typeof(AdoS0ImageType), typeof(AdoS0QualitySegmentImage), typeof(AdoS0SrmPurchase) ); } }