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;
// 客户/物料/优先级:ado_s0_sales_cust_master、ado_s0_sales_item_master、ado_s0_sales_priority_code(旧表可 DROP 后重启)。
using var scope = app.ApplicationServices.CreateScope();
var db = scope.ServiceProvider.GetRequiredService();
db.CodeFirst.InitTables(
typeof(AdoOrder),
typeof(AdoPlan),
typeof(AdoWorkOrder),
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)
);
}
}