1.0.145.sql 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. -- 1.0.145.sql
  2. -- S0-LINESKILLMASTER-ENTITY-SCHEMA-ALIGN-1
  3. -- 目标:回填 LineSkillMaster / LineSkillDetail 历史 NULL tenant_id 至 AIDOP 租户。
  4. -- 目标 tenant_id = 797403760988229(SysTenant.Id;SysOrg.Name='AIDOP';与 6 张 S0 兄弟表 Domain='8010' 取值一致)
  5. -- 证据来源:阶段 0.1 跨表比对 + UpdateScripts/1.0.132.sql:151 + UpdateScripts/1.0.109.sql:18,38
  6. -- 幂等性:
  7. -- * 仅 UPDATE WHERE tenant_id IS NULL;重复执行影响 0 行。
  8. -- * 无 schema 变更;无 DELETE。
  9. -- 安全边界:
  10. -- * 不依赖 line_skill_master_id(历史 257 行全为 0,链接断裂;本批仅治 tenant_id,不修关联)。
  11. -- * Domain='8010' 仅出现在前置校验和后置对账,用于说明本批回填数据均来自旧系统遗留域;
  12. -- 新系统数据隔离以 ITenantIdFilter 为准,不把 Domain='8010' 作为业务过滤口径。
  13. -- * 无破坏性操作;无生产库 schema 变更;无跨表 DELETE。
  14. -- 关联前置:
  15. -- * server/Plugins/Admin.NET.Plugin.AiDOP/Entity/S0/Manufacturing/AdoS0LineSkillMaster.cs
  16. -- 补齐 Site / Orderby / WType / RunCrew 4 列实体映射(DB 已存在列)。
  17. -- * 控制器 GetPagedAsync 取消强制 Domain 过滤;改 WhereIF 仅在请求显式传入时按 Domain 过滤。
  18. -- ===========================================================================
  19. -- 段 1:前置只读校验(不修改任何数据)
  20. -- ===========================================================================
  21. -- 校验 1.1:LineSkillMaster tenant_id IS NULL 数量(应 = 47,与阶段 0.1 证据一致;> 0 说明确有待回填)
  22. SELECT COUNT(*) AS master_null_total FROM LineSkillMaster WHERE tenant_id IS NULL;
  23. -- 校验 1.2:LineSkillDetail tenant_id IS NULL 数量(应 = 257)
  24. SELECT COUNT(*) AS detail_null_total FROM LineSkillDetail WHERE tenant_id IS NULL;
  25. -- 校验 1.3:NULL 数据的 Domain 分布(应只出现 '8010';其它 Domain 出现需停止人工评估)
  26. SELECT 'LineSkillMaster' AS src, Domain, COUNT(*) AS n
  27. FROM LineSkillMaster
  28. WHERE tenant_id IS NULL
  29. GROUP BY Domain
  30. UNION ALL
  31. SELECT 'LineSkillDetail' AS src, Domain, COUNT(*) AS n
  32. FROM LineSkillDetail
  33. WHERE tenant_id IS NULL
  34. GROUP BY Domain;
  35. -- 校验 1.4:兄弟 S0 表 Domain='8010' 唯一 tenant_id 候选确认
  36. -- (应全部返回 797403760988229;若出现多个 tenant_id,需停止人工评估,不得继续执行段 2)
  37. SELECT 'LineMaster_8010_tenants' AS src, tenant_id, COUNT(*) AS n FROM LineMaster WHERE Domain='8010' AND tenant_id IS NOT NULL GROUP BY tenant_id
  38. UNION ALL SELECT 'EmpSkills_8010_tenants', tenant_id, COUNT(*) FROM EmpSkills WHERE Domain='8010' AND tenant_id IS NOT NULL GROUP BY tenant_id
  39. UNION ALL SELECT 'WorkCtrMaster_8010_tenants', tenant_id, COUNT(*) FROM WorkCtrMaster WHERE Domain='8010' AND tenant_id IS NOT NULL GROUP BY tenant_id
  40. UNION ALL SELECT 'ProdLineDetail_8010_tenants',tenant_id, COUNT(*) FROM ProdLineDetail WHERE Domain='8010' AND tenant_id IS NOT NULL GROUP BY tenant_id
  41. UNION ALL SELECT 'EmployeeMaster_8010_tenants',tenant_id, COUNT(*) FROM EmployeeMaster WHERE Domain='8010' AND tenant_id IS NOT NULL GROUP BY tenant_id
  42. UNION ALL SELECT 'ItemMaster_8010_tenants', tenant_id, COUNT(*) FROM ItemMaster WHERE Domain='8010' AND tenant_id IS NOT NULL GROUP BY tenant_id;
  43. -- ===========================================================================
  44. -- 段 2:回填(UPDATE;幂等,重复执行影响 0 行)
  45. -- ===========================================================================
  46. UPDATE LineSkillMaster
  47. SET tenant_id = 797403760988229
  48. WHERE tenant_id IS NULL;
  49. UPDATE LineSkillDetail
  50. SET tenant_id = 797403760988229
  51. WHERE tenant_id IS NULL;
  52. -- ===========================================================================
  53. -- 段 3:执行后对账(只读)
  54. -- ===========================================================================
  55. -- 对账 3.1:LineSkillMaster tenant_id IS NULL 剩余数量(应 = 0)
  56. SELECT COUNT(*) AS master_null_remaining FROM LineSkillMaster WHERE tenant_id IS NULL;
  57. -- 对账 3.2:LineSkillDetail tenant_id IS NULL 剩余数量(应 = 0)
  58. SELECT COUNT(*) AS detail_null_remaining FROM LineSkillDetail WHERE tenant_id IS NULL;
  59. -- 对账 3.3:回填到 AIDOP 租户的行数(master 应 = 47,detail 应 = 257)
  60. SELECT 'LineSkillMaster_aidop' AS src, COUNT(*) AS n FROM LineSkillMaster WHERE tenant_id = 797403760988229
  61. UNION ALL SELECT 'LineSkillDetail_aidop', COUNT(*) FROM LineSkillDetail WHERE tenant_id = 797403760988229;
  62. -- 对账 3.4:回填后两表 tenant_id 分布(应只出现 797403760988229 一行)
  63. SELECT 'LineSkillMaster' AS src, tenant_id, COUNT(*) AS n FROM LineSkillMaster GROUP BY tenant_id
  64. UNION ALL SELECT 'LineSkillDetail', tenant_id, COUNT(*) FROM LineSkillDetail GROUP BY tenant_id;