51 lines
2.2 KiB
PowerShell
51 lines
2.2 KiB
PowerShell
# 为已有桌面端 SQLite 库补「密炼物料皮重策略」菜单(幂等)
|
|
$dbPath = Join-Path $env:LOCALAPPDATA "YY.Admin\Data\Admin.NET.db"
|
|
if (-not (Test-Path $dbPath)) {
|
|
Write-Host "未找到数据库: $dbPath"
|
|
exit 1
|
|
}
|
|
|
|
$proj = Join-Path $PSScriptRoot "MenuFixTemp"
|
|
New-Item -ItemType Directory -Force -Path $proj | Out-Null
|
|
|
|
@'
|
|
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>Exe</OutputType>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.0" />
|
|
</ItemGroup>
|
|
</Project>
|
|
'@ | Set-Content "$proj\MenuFixTemp.csproj" -Encoding UTF8
|
|
|
|
@'
|
|
using Microsoft.Data.Sqlite;
|
|
var dbPath = args[0];
|
|
using var conn = new SqliteConnection($"Data Source={dbPath}");
|
|
conn.Open();
|
|
using var tx = conn.BeginTransaction();
|
|
void Exec(string sql) {
|
|
using var cmd = conn.CreateCommand();
|
|
cmd.Transaction = tx;
|
|
cmd.CommandText = sql;
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
Exec(@"INSERT INTO sys_menu (id, pid, type, name, path, component, title, icon, is_iframe, is_hide, is_keep_alive, is_affix, order_no, status, create_time)
|
|
SELECT 1300150011101, 1300150000101, 2, 'mesXslMixerMaterialTareStrategy', '/xslmes/mesXslMixerMaterialTareStrategy', 'MixerMaterialTareStrategyListView', '密炼物料皮重策略', '', 0, 0, 1, 0, 110, 1, datetime('now')
|
|
WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE id = 1300150011101 OR name = 'mesXslMixerMaterialTareStrategy');");
|
|
Exec(@"INSERT INTO sys_tenant_menu (id, tenant_id, menu_id)
|
|
SELECT 1300150011101, 1300000000001, 1300150011101
|
|
WHERE NOT EXISTS (SELECT 1 FROM sys_tenant_menu WHERE tenant_id = 1300000000001 AND menu_id = 1300150011101);");
|
|
Exec(@"INSERT INTO sys_role_menu (id, role_id, menu_id)
|
|
SELECT (SELECT IFNULL(MAX(id),0)+1 FROM sys_role_menu), (SELECT id FROM sys_role ORDER BY id LIMIT 1), 1300150011101
|
|
WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = (SELECT id FROM sys_role ORDER BY id LIMIT 1) AND rm.menu_id = 1300150011101);");
|
|
tx.Commit();
|
|
Console.WriteLine("菜单补全完成");
|
|
'@ | Set-Content "$proj\Program.cs" -Encoding UTF8
|
|
|
|
dotnet run --project "$proj\MenuFixTemp.csproj" -- "$dbPath"
|