소스 검색

feat(s0): UATTEST_CHL 租户补 3 条客户主数据

从 AIDOP 租户复制 Cust=10000000/10000002/10000004(瑞贝德/通广/岛包,
Class 分别为 1/2/3)到 UATTEST_CHL 租户,客户信息维护页由 2 条增至 5 条。

作用域列必须改写:唯一键 uk_CustMaster_factory_cust=(factory_ref_id, Cust)
不含 tenant_id,沿用源租户 factory_ref_id=1000 会与源行撞唯一键。故
company_ref_id / factory_ref_id / Domain 取目标租户既有口径
(838257186320453 / 838257186320453 / '2410'),不照搬源租户的 1000/'8010'。

仅复制源库有值的列(Cust/SortName/Class/TaxClass/TaxIn)。币种 Curr、
销售员 Salesperson1/Slspsn2、发至 ShipTo、全称 CustFullName 在全部租户的
CustMaster 中均为空,属全局数据现状,不臆造填充。

源/目标租户按 SysOrg.Code 解析,不硬编码租户 Id;幂等,同 Cust 已存在则跳过。

chore: bump version server 1.0.387
YY968XX 10 시간 전
부모
커밋
c7e8fe9b2a

+ 9 - 3
server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj

@@ -11,9 +11,9 @@
     <GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
     <Copyright>Admin.NET</Copyright>
     <Description>Admin.NET 通用权限开发平台</Description>
-    <AssemblyVersion>1.0.386</AssemblyVersion>
-    <FileVersion>1.0.386</FileVersion>
-    <Version>1.0.386</Version>
+    <AssemblyVersion>1.0.387</AssemblyVersion>
+    <FileVersion>1.0.387</FileVersion>
+    <Version>1.0.387</Version>
   </PropertyGroup>
 
   <ItemGroup>
@@ -496,6 +496,12 @@
     <None Update="UpdateScripts\1.0.386.verify.sql">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
+    <None Update="UpdateScripts\1.0.387.sql">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Update="UpdateScripts\1.0.387.verify.sql">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
     <None Update="UpdateScripts\1.0.364.verify.sql">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>

+ 49 - 0
server/Admin.NET.Web.Entry/UpdateScripts/1.0.387.sql

@@ -0,0 +1,49 @@
+-- 1.0.387: 从 AIDOP 租户复制 3 条客户主数据到 UATTEST_CHL 租户,充实 S0 客户信息维护页演示数据。
+--
+-- 源:AIDOP 租户(org code = 'AIDOP')CustMaster 中 Cust = 10000000 / 10000002 / 10000004
+--     (瑞贝德 / 通广 / 岛包,Class 分别为 1 / 2 / 3,覆盖三种客户分类)
+-- 目标:UATTEST_CHL 租户(org code = 'UATTEST_CHL')
+--
+-- 作用域列改写(必须):
+--   唯一键 uk_CustMaster_factory_cust = UNIQUE(factory_ref_id, Cust),**不含 tenant_id**。
+--   若沿用源租户的 factory_ref_id 会与源行撞唯一键,故 company_ref_id / factory_ref_id / Domain
+--   一律取目标租户既有行的口径(当前为 838257186320453 / 838257186320453 / '2410'),
+--   而不是照搬源租户的 1000 / 1000 / '8010'。
+--
+-- 只复制源库确实有值的列(Cust / SortName / Class / TaxClass / TaxIn)。
+--   币种 Curr、销售员 Salesperson1/Slspsn2、发至 ShipTo、全称 CustFullName 在**所有租户**
+--   的 CustMaster 中均为空,属全局数据现状,本脚本不臆造填充,页面对应列仍为空白。
+--
+-- 幂等:目标租户已存在同 Cust 则跳过;源租户或目标租户不存在的库上为空操作。
+
+SET @uat_cust_src_tenant := (
+  SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
+  WHERE o.Code = 'AIDOP' AND t.Status = 1 LIMIT 1);
+
+SET @uat_cust_dst_tenant := (
+  SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
+  WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1 LIMIT 1);
+
+-- 目标租户既有作用域口径(取现存行,保持与该租户其它客户一致)
+SET @uat_cust_company := (SELECT company_ref_id FROM CustMaster WHERE tenant_id = @uat_cust_dst_tenant LIMIT 1);
+SET @uat_cust_factory := (SELECT factory_ref_id FROM CustMaster WHERE tenant_id = @uat_cust_dst_tenant LIMIT 1);
+SET @uat_cust_domain  := (SELECT Domain         FROM CustMaster WHERE tenant_id = @uat_cust_dst_tenant LIMIT 1);
+
+INSERT INTO CustMaster
+  (company_ref_id, factory_ref_id, tenant_id, Domain, Cust, SortName,
+   Class, TaxClass, TaxIn, IsActive, IsConfirm, CreateUser, CreateTime)
+SELECT @uat_cust_company, @uat_cust_factory, @uat_cust_dst_tenant, @uat_cust_domain,
+       src.Cust, src.SortName, src.Class, src.TaxClass, src.TaxIn,
+       1, 1, 'UAT-CUST-SEED', NOW()
+FROM CustMaster src
+WHERE src.tenant_id = @uat_cust_src_tenant
+  AND src.Cust IN ('10000000', '10000002', '10000004')
+  AND @uat_cust_src_tenant IS NOT NULL
+  AND @uat_cust_dst_tenant IS NOT NULL
+  AND @uat_cust_factory   IS NOT NULL
+  AND NOT EXISTS (
+    SELECT 1 FROM CustMaster x
+    WHERE x.tenant_id = @uat_cust_dst_tenant
+      AND x.factory_ref_id = @uat_cust_factory
+      AND x.Cust = src.Cust
+  );

+ 31 - 0
server/Admin.NET.Web.Entry/UpdateScripts/1.0.387.verify.sql

@@ -0,0 +1,31 @@
+-- 1.0.387 verify: UATTEST_CHL 租户应已补入 3 条客户。
+--
+-- 约定:AutoVersionUpdate 取每条语句「首行首列」当布尔断言,必须为真。
+--   返回 0 行会得到 NULL 判假并中断启动,故断言一律返回标量真值。
+-- 环境容错:源/目标租户不存在的库上主脚本为空操作,断言短路为真。
+
+-- 1) 3 条目标客户均已落到 UATTEST_CHL 租户
+SELECT IF(
+  (SELECT COUNT(*) FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
+    WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1) = 0
+  OR (SELECT COUNT(*) FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
+       WHERE o.Code = 'AIDOP' AND t.Status = 1) = 0,
+  1,
+  (SELECT COUNT(*) FROM CustMaster c
+    WHERE c.tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
+                          WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1 LIMIT 1)
+      AND c.Cust IN ('10000000', '10000002', '10000004'))
+) AS ok_seeded;
+
+-- 2) 未破坏唯一键:目标租户内 (factory_ref_id, Cust) 无重复
+SELECT IF(
+  (SELECT COUNT(*) FROM (
+     SELECT c.factory_ref_id, c.Cust
+       FROM CustMaster c
+      WHERE c.tenant_id = (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
+                            WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1 LIMIT 1)
+      GROUP BY c.factory_ref_id, c.Cust
+     HAVING COUNT(*) > 1
+   ) dup) = 0,
+  1, 0
+) AS ok_no_duplicate;