1.0.407.sql 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. -- ============================================================================
  2. -- S0-FULL-DEMO-COVERAGE-CLOSURE-1 · STEP 2A · QUALITY DOMAIN
  3. --
  4. -- 目标:为 UATTEST_CHL 补齐 14 张 qms_* 质量主数据,解锁质量建模 15 个页面。
  5. -- 覆盖率预期 19/58 → 34/58。
  6. --
  7. -- 口径(CTO 2026-08-28 拍板):
  8. -- PURE COPY 37 行(9 张配置表,无外部业务键)
  9. -- COPY + FK CLOSED 7 行(qms_jygf,按 UAT A 现有物料闭合)
  10. -- CONSTRUCT 15 行(4 张物料/供应商键控表,797 侧与 UAT A 零 FK 交集)
  11. -- ─────────────────────────
  12. -- INSERT 语句 14 条 · INSERT 行 59 · UPDATE 0 · DELETE 0 · DDL 0
  13. --
  14. -- 关键物理事实(详见 lwb/memory/modules/S0/CURRENT.md F-06):
  15. -- · 14 张表 id 均为 PRIMARY KEY;13 张**不是** auto_increment(仅 qms_quality_base_type 是)
  16. -- → 本脚本对 13 张表使用**固定确定性 ID 区间**,见下方 ID BLOCK
  17. -- · 14 张表**无任何业务唯一键**,DB 层不防重 → 幂等只能靠逻辑业务键 NOT EXISTS
  18. -- · 无 company_ref_id / factory_ref_id / Domain 列;但存在改名的组织外键
  19. -- FCREATEORGID / FUSEORGID,797 侧值为 AIDOP 根组织,必须改写为目标租户组织
  20. -- · 域内 FK:qms_inspectionitems.FCHECKMETHOD → qms_inspection_method.id
  21. -- → method 必须先插;映射经业务键 FNUMBER 回绑,**不用 id 算术猜映射**
  22. --
  23. -- 明确不碰(另批 S0-DEFAULT-TENANT-SEED-CONTAMINATION-CLEANUP-1 处理):
  24. -- · 默认租户 1300000000001 的 47 行 [AI测试] 质量数据
  25. -- · qms_quality_base_type 的 TEST_CAT_1777008124562
  26. -- · 797 侧 qms_gcjygf 的 3 行 [AI测试](id 9250024001-9250024003)
  27. -- 本脚本对源租户与默认租户 WRITE = 0。
  28. --
  29. -- ⚠️ WIP:不占正式版本号,AutoVersionUpdate 不会自动应用。
  30. -- ============================================================================
  31. -- ---------------------------------------------------------------------------
  32. -- ID BLOCK(固定确定性区间,已实测 13/13 表在该区间 collision = 0,仓内亦无同区间字面量)
  33. -- base = 3000000000000000000
  34. -- 每表 = base + 表序号*1000 + 行序号
  35. -- 3000000000000014004 < bigint max 9223372036854775807,安全
  36. -- ---------------------------------------------------------------------------
  37. SET @src := (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
  38. WHERE o.Code = 'AIDOP' AND t.Status = 1 LIMIT 1);
  39. SET @dst := (SELECT t.Id FROM SysTenant t JOIN SysOrg o ON o.Id = t.OrgId
  40. WHERE o.Code = 'UATTEST_CHL' AND t.Status = 1 LIMIT 1);
  41. SET @org_dst := (SELECT t.OrgId FROM SysTenant t WHERE t.Id = @dst LIMIT 1);
  42. -- 任一变量为 NULL 时,下方每条语句的 guard 使全脚本降为空操作。
  43. -- ===========================================================================
  44. -- 01 · qms_inspection_method PURE COPY 5 ★ 必须最先(qms_inspectionitems 依赖)
  45. -- QM-001..005 → 3000000000000001001..1005
  46. -- ===========================================================================
  47. INSERT INTO qms_inspection_method
  48. (id, tenant_id, FNUMBER, FNAME, FCTRLSTRATEGY, FSTATUS, FENABLE, FCOMMENT, FCREATETIME, FMODIFYTIME)
  49. SELECT CASE s.FNUMBER
  50. WHEN 'QM-001' THEN 3000000000000001001
  51. WHEN 'QM-002' THEN 3000000000000001002
  52. WHEN 'QM-003' THEN 3000000000000001003
  53. WHEN 'QM-004' THEN 3000000000000001004
  54. WHEN 'QM-005' THEN 3000000000000001005
  55. END,
  56. @dst, s.FNUMBER, s.FNAME, s.FCTRLSTRATEGY, s.FSTATUS, s.FENABLE, s.FCOMMENT, s.FCREATETIME, s.FMODIFYTIME
  57. FROM qms_inspection_method s
  58. WHERE s.tenant_id = @src
  59. AND s.FNUMBER IN ('QM-001','QM-002','QM-003','QM-004','QM-005')
  60. AND @src IS NOT NULL AND @dst IS NOT NULL
  61. AND NOT EXISTS (SELECT 1 FROM qms_inspection_method x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  62. -- ===========================================================================
  63. -- 02 · qms_inspectionitems PURE COPY 5
  64. -- QI-001..005 → 3000000000000002001..2005
  65. -- FCHECKMETHOD 经 FNUMBER 回绑目标 method(禁止直接复制 source id、禁止 id offset)
  66. -- 预期映射:QI-001→QM-003 · QI-002→QM-001 · QI-003→QM-003 · QI-004→QM-005 · QI-005→QM-001
  67. -- FCHECKBASIS:797 侧 5/5 为 NULL,原样带过,无需映射
  68. -- ===========================================================================
  69. INSERT INTO qms_inspectionitems
  70. (id, tenant_id, FNUMBER, FNAME, FCHECKMETHOD, FCHECKBASIS, FCHECKINSTRUCT,
  71. FRADIOGROUPFIELD, FRADIOGROUPFIELD1, zblx, FSTATUS, FENABLE, FCOMMENT, FCREATETIME, FMODIFYTIME)
  72. SELECT CASE s.FNUMBER
  73. WHEN 'QI-001' THEN 3000000000000002001
  74. WHEN 'QI-002' THEN 3000000000000002002
  75. WHEN 'QI-003' THEN 3000000000000002003
  76. WHEN 'QI-004' THEN 3000000000000002004
  77. WHEN 'QI-005' THEN 3000000000000002005
  78. END,
  79. @dst, s.FNUMBER, s.FNAME,
  80. (SELECT t.id FROM qms_inspection_method t
  81. WHERE t.tenant_id = @dst AND t.FNUMBER = m.FNUMBER LIMIT 1),
  82. s.FCHECKBASIS, s.FCHECKINSTRUCT,
  83. s.FRADIOGROUPFIELD, s.FRADIOGROUPFIELD1, s.zblx,
  84. s.FSTATUS, s.FENABLE, s.FCOMMENT, s.FCREATETIME, s.FMODIFYTIME
  85. FROM qms_inspectionitems s
  86. LEFT JOIN qms_inspection_method m ON m.id = s.FCHECKMETHOD AND m.tenant_id = @src
  87. WHERE s.tenant_id = @src
  88. AND s.FNUMBER IN ('QI-001','QI-002','QI-003','QI-004','QI-005')
  89. AND @src IS NOT NULL AND @dst IS NOT NULL
  90. AND NOT EXISTS (SELECT 1 FROM qms_inspectionitems x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  91. -- ===========================================================================
  92. -- 03 · qms_inspectioninstru PURE COPY 5 QG-001..005 → ...003001..3005
  93. -- ===========================================================================
  94. INSERT INTO qms_inspectioninstru
  95. (id, tenant_id, FNUMBER, FNAME, FMODEL, FSPECIFICATION, FMANUFACTURER,
  96. FSTATUS, FENABLE, FCOMMENT, FCREATETIME, FMODIFYTIME,
  97. gauge_category, calibration_cycle_days, next_calibration_date)
  98. SELECT CASE s.FNUMBER
  99. WHEN 'QG-001' THEN 3000000000000003001
  100. WHEN 'QG-002' THEN 3000000000000003002
  101. WHEN 'QG-003' THEN 3000000000000003003
  102. WHEN 'QG-004' THEN 3000000000000003004
  103. WHEN 'QG-005' THEN 3000000000000003005
  104. END,
  105. @dst, s.FNUMBER, s.FNAME, s.FMODEL, s.FSPECIFICATION, s.FMANUFACTURER,
  106. s.FSTATUS, s.FENABLE, s.FCOMMENT, s.FCREATETIME, s.FMODIFYTIME,
  107. s.gauge_category, s.calibration_cycle_days, s.next_calibration_date
  108. FROM qms_inspectioninstru s
  109. WHERE s.tenant_id = @src
  110. AND s.FNUMBER IN ('QG-001','QG-002','QG-003','QG-004','QG-005')
  111. AND @src IS NOT NULL AND @dst IS NOT NULL
  112. AND NOT EXISTS (SELECT 1 FROM qms_inspectioninstru x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  113. -- ===========================================================================
  114. -- 04 · qms_inspectionfreq PURE COPY 4 JYPC-001..004 → ...004001..4004
  115. -- ===========================================================================
  116. INSERT INTO qms_inspectionfreq
  117. (id, tenant_id, FNUMBER, FNAME, FREMARK, FSTATUS, FENABLE, FCREATETIME, FMODIFYTIME)
  118. SELECT CASE s.FNUMBER
  119. WHEN 'JYPC-001' THEN 3000000000000004001
  120. WHEN 'JYPC-002' THEN 3000000000000004002
  121. WHEN 'JYPC-003' THEN 3000000000000004003
  122. WHEN 'JYPC-004' THEN 3000000000000004004
  123. END,
  124. @dst, s.FNUMBER, s.FNAME, s.FREMARK, s.FSTATUS, s.FENABLE, s.FCREATETIME, s.FMODIFYTIME
  125. FROM qms_inspectionfreq s
  126. WHERE s.tenant_id = @src
  127. AND s.FNUMBER IN ('JYPC-001','JYPC-002','JYPC-003','JYPC-004')
  128. AND @src IS NOT NULL AND @dst IS NOT NULL
  129. AND NOT EXISTS (SELECT 1 FROM qms_inspectionfreq x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  130. -- ===========================================================================
  131. -- 05 · qms_sampscheme PURE COPY 4 QS-001..004 → ...005001..5004
  132. -- FINSPECTORGID / FINSPECTUSERID:797 侧全 NULL,原样带过
  133. -- ===========================================================================
  134. INSERT INTO qms_sampscheme
  135. (id, tenant_id, FNUMBER, FNAME, FSAMPLINGTYPE, FINSPECTIONLEVEL, FSTRICTNESS, FAQLVALUE,
  136. FINSPECTIONTYPE, FINSPECTORGID, FINSPECTUSERID, FSTATUS, FENABLE, FCOMMENT,
  137. FCREATETIME, FMODIFYTIME, FFIXEDRATE)
  138. SELECT CASE s.FNUMBER
  139. WHEN 'QS-001' THEN 3000000000000005001
  140. WHEN 'QS-002' THEN 3000000000000005002
  141. WHEN 'QS-003' THEN 3000000000000005003
  142. WHEN 'QS-004' THEN 3000000000000005004
  143. END,
  144. @dst, s.FNUMBER, s.FNAME, s.FSAMPLINGTYPE, s.FINSPECTIONLEVEL, s.FSTRICTNESS, s.FAQLVALUE,
  145. s.FINSPECTIONTYPE, s.FINSPECTORGID, s.FINSPECTUSERID, s.FSTATUS, s.FENABLE, s.FCOMMENT,
  146. s.FCREATETIME, s.FMODIFYTIME, s.FFIXEDRATE
  147. FROM qms_sampscheme s
  148. WHERE s.tenant_id = @src
  149. AND s.FNUMBER IN ('QS-001','QS-002','QS-003','QS-004')
  150. AND @src IS NOT NULL AND @dst IS NOT NULL
  151. AND NOT EXISTS (SELECT 1 FROM qms_sampscheme x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  152. -- ===========================================================================
  153. -- 06 · qms_quality_base_type PURE COPY 4 ★ 唯一 auto_increment 表,不给 id
  154. -- 逻辑键 (tenant_id, type_category, type_code)
  155. -- ===========================================================================
  156. INSERT INTO qms_quality_base_type
  157. (tenant_id, type_category, type_code, short_name, full_name, is_active, remark, create_time, modify_time)
  158. SELECT @dst, s.type_category, s.type_code, s.short_name, s.full_name, s.is_active, s.remark, s.create_time, s.modify_time
  159. FROM qms_quality_base_type s
  160. WHERE s.tenant_id = @src
  161. AND @src IS NOT NULL AND @dst IS NOT NULL
  162. AND NOT EXISTS (SELECT 1 FROM qms_quality_base_type x
  163. WHERE x.tenant_id = @dst AND x.type_category = s.type_category AND x.type_code = s.type_code);
  164. -- ===========================================================================
  165. -- 07 · qms_inspectioncrit PURE COPY 3 JYYJ-001..003 → ...007001..7003
  166. -- ★ FCREATEORGID:797 根组织 → 目标租户组织
  167. -- ===========================================================================
  168. INSERT INTO qms_inspectioncrit
  169. (id, tenant_id, FNUMBER, FNAME, FCTRLSTRATEGY, FCREATEORGID, FUSEORG,
  170. FCOMMENT, FSTATUS, FENABLE, FCREATETIME, FMODIFYTIME)
  171. SELECT CASE s.FNUMBER
  172. WHEN 'JYYJ-001' THEN 3000000000000007001
  173. WHEN 'JYYJ-002' THEN 3000000000000007002
  174. WHEN 'JYYJ-003' THEN 3000000000000007003
  175. END,
  176. @dst, s.FNUMBER, s.FNAME, s.FCTRLSTRATEGY,
  177. CASE WHEN s.FCREATEORGID IS NULL THEN NULL ELSE @org_dst END,
  178. s.FUSEORG, s.FCOMMENT, s.FSTATUS, s.FENABLE, s.FCREATETIME, s.FMODIFYTIME
  179. FROM qms_inspectioncrit s
  180. WHERE s.tenant_id = @src
  181. AND s.FNUMBER IN ('JYYJ-001','JYYJ-002','JYYJ-003')
  182. AND @src IS NOT NULL AND @dst IS NOT NULL AND @org_dst IS NOT NULL
  183. AND NOT EXISTS (SELECT 1 FROM qms_inspectioncrit x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  184. -- ===========================================================================
  185. -- 08 · qms_inspectionstd PURE COPY 3 JYBZ-001..003 → ...008001..8003
  186. -- ★ FCREATEORGID 改写
  187. -- ===========================================================================
  188. INSERT INTO qms_inspectionstd
  189. (id, tenant_id, FNUMBER, FNAME, FCOMMENT, FCTRLSTRATEGY, FCREATEORGID, FUSEORG, FSTATUS, FENABLE)
  190. SELECT CASE s.FNUMBER
  191. WHEN 'JYBZ-001' THEN 3000000000000008001
  192. WHEN 'JYBZ-002' THEN 3000000000000008002
  193. WHEN 'JYBZ-003' THEN 3000000000000008003
  194. END,
  195. @dst, s.FNUMBER, s.FNAME, s.FCOMMENT, s.FCTRLSTRATEGY,
  196. CASE WHEN s.FCREATEORGID IS NULL THEN NULL ELSE @org_dst END,
  197. s.FUSEORG, s.FSTATUS, s.FENABLE
  198. FROM qms_inspectionstd s
  199. WHERE s.tenant_id = @src
  200. AND s.FNUMBER IN ('JYBZ-001','JYBZ-002','JYBZ-003')
  201. AND @src IS NOT NULL AND @dst IS NOT NULL AND @org_dst IS NOT NULL
  202. AND NOT EXISTS (SELECT 1 FROM qms_inspectionstd x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  203. -- ===========================================================================
  204. -- 09 · qms_inspectpro PURE COPY 4 PLAN-* → ...009001..9004
  205. -- ★ FCREATEORGID + FUSEORGID 双改写
  206. -- FBIZSTYPEID 是字符串码(IQC/PQC/FQC/OQC),不是 id,原样带过
  207. -- ===========================================================================
  208. INSERT INTO qms_inspectpro
  209. (id, tenant_id, FNUMBER, FNAME, FBIZSTYPEID, FCOMMENT, FCTRLSTRATEGY,
  210. FCREATEORGID, FUSEORGID, FSTATUS, FENABLE, FCREATETIME, FMODIFYTIME)
  211. SELECT CASE s.FNUMBER
  212. WHEN 'PLAN-FQC-001' THEN 3000000000000009001
  213. WHEN 'PLAN-IQC-001' THEN 3000000000000009002
  214. WHEN 'PLAN-OQC-001' THEN 3000000000000009003
  215. WHEN 'PLAN-PQC-001' THEN 3000000000000009004
  216. END,
  217. @dst, s.FNUMBER, s.FNAME, s.FBIZSTYPEID, s.FCOMMENT, s.FCTRLSTRATEGY,
  218. CASE WHEN s.FCREATEORGID IS NULL THEN NULL ELSE @org_dst END,
  219. CASE WHEN s.FUSEORGID IS NULL THEN NULL ELSE @org_dst END,
  220. s.FSTATUS, s.FENABLE, s.FCREATETIME, s.FMODIFYTIME
  221. FROM qms_inspectpro s
  222. WHERE s.tenant_id = @src
  223. AND s.FNUMBER IN ('PLAN-FQC-001','PLAN-IQC-001','PLAN-OQC-001','PLAN-PQC-001')
  224. AND @src IS NOT NULL AND @dst IS NOT NULL AND @org_dst IS NOT NULL
  225. AND NOT EXISTS (SELECT 1 FROM qms_inspectpro x WHERE x.tenant_id = @dst AND x.FNUMBER = s.FNUMBER);
  226. -- ===========================================================================
  227. -- 10 · qms_jygf COPY + FK CLOSED 7 → ...010001..10007
  228. -- 仅取 wlbm ∈ UAT A 现有 56 物料的行(797 共 4704 行,禁止整表迁移)
  229. -- ★ 逻辑键必须含版本 bb:Y101-1-11 存在 A.1 与 X.1 两版,两者都要保留
  230. -- ===========================================================================
  231. INSERT INTO qms_jygf
  232. (id, tenant_id, wjbh, bb, th, yclmc, wlbm, sxrq, tzbb, czclph, xm, fj, filename, title, isEnable)
  233. SELECT CASE CONCAT(s.wjbh, '|', s.bb)
  234. WHEN 'F03-1-21|A.0' THEN 3000000000000010001
  235. WHEN 'F101-1-39|A.0' THEN 3000000000000010002
  236. WHEN 'M05-1-19|A.4' THEN 3000000000000010003
  237. WHEN 'U01-1-63|A.1' THEN 3000000000000010004
  238. WHEN 'Y101-1-11|A.1' THEN 3000000000000010005
  239. WHEN 'Y101-1-11|X.1' THEN 3000000000000010006
  240. WHEN 'Y101-1-36|X.1' THEN 3000000000000010007
  241. END,
  242. @dst, s.wjbh, s.bb, s.th, s.yclmc, s.wlbm, s.sxrq, s.tzbb, s.czclph, s.xm,
  243. s.fj, s.filename, s.title, s.isEnable
  244. FROM qms_jygf s
  245. WHERE s.tenant_id = @src
  246. AND @src IS NOT NULL AND @dst IS NOT NULL
  247. AND EXISTS (SELECT 1 FROM ItemMaster i WHERE i.tenant_id = @dst AND i.ItemNum = s.wlbm)
  248. AND NOT EXISTS (SELECT 1 FROM qms_jygf x
  249. WHERE x.tenant_id = @dst AND x.wjbh = s.wjbh AND x.bb <=> s.bb);
  250. -- ===========================================================================
  251. -- 11 · qms_gcjygf CONSTRUCT 5 UATD-GC-001..005 → ...011001..11005
  252. -- 797 侧 263 行与 UAT A 物料零交集(且含 3 行 [AI测试])→ 不复制,按 UAT A 自有制造件构造
  253. -- provenance:业务键前缀 UATD-(展示字段不带前缀)
  254. -- ===========================================================================
  255. INSERT INTO qms_gcjygf (id, tenant_id, syxh, wjbh, bb, sxrj, fj, wlbm, fj2, version)
  256. SELECT c.new_id, @dst, c.syxh, c.wjbh, 'A.0', CURDATE(), NULL, c.wlbm, NULL, 1
  257. FROM (
  258. SELECT 3000000000000011001 AS new_id, 'UATD-GC-001' AS wjbh, '91HC0497' AS wlbm, '集控备机' AS syxh
  259. UNION ALL SELECT 3000000000000011002, 'UATD-GC-002', '3124C0015', 'IFT45PULB'
  260. UNION ALL SELECT 3000000000000011003, 'UATD-GC-003', '3221C0031', '压(FBE6035B)'
  261. UNION ALL SELECT 3000000000000011004, 'UATD-GC-004', '3121C0035', '上底(45PUL)'
  262. UNION ALL SELECT 3000000000000011005, 'UATD-GC-005', '322AD001', '上底(6035B)'
  263. ) c
  264. WHERE @dst IS NOT NULL
  265. AND EXISTS (SELECT 1 FROM ItemMaster i WHERE i.tenant_id = @dst AND i.ItemNum = c.wlbm)
  266. AND NOT EXISTS (SELECT 1 FROM qms_gcjygf x WHERE x.tenant_id = @dst AND x.wjbh = c.wjbh);
  267. -- ===========================================================================
  268. -- 12 · qms_fqcjygf CONSTRUCT 3 UATD-FQC-001..003 → ...012001..12003
  269. -- 797 侧 3 行物料 1AB6753/91HC0857/1AB6755 均不在 UAT A → 不复制
  270. -- ===========================================================================
  271. INSERT INTO qms_fqcjygf (id, tenant_id, syxh, wjbh, bb, sxrj, fj, wlbm, fj2, version)
  272. SELECT c.new_id, @dst, c.syxh, c.wjbh, 'A.0', CURDATE(), NULL, c.wlbm, NULL, 1
  273. FROM (
  274. SELECT 3000000000000012001 AS new_id, 'UATD-FQC-001' AS wjbh, '91HC0497' AS wlbm, '集控备机' AS syxh
  275. UNION ALL SELECT 3000000000000012002, 'UATD-FQC-002', '3124C0015', 'IFT45PULB'
  276. UNION ALL SELECT 3000000000000012003, 'UATD-FQC-003', '3221C0031', '压(FBE6035B)'
  277. ) c
  278. WHERE @dst IS NOT NULL
  279. AND EXISTS (SELECT 1 FROM ItemMaster i WHERE i.tenant_id = @dst AND i.ItemNum = c.wlbm)
  280. AND NOT EXISTS (SELECT 1 FROM qms_fqcjygf x WHERE x.tenant_id = @dst AND x.wjbh = c.wjbh);
  281. -- ===========================================================================
  282. -- 13 · qms_oqcjygf CONSTRUCT 3 UATD-OQC-001..003 → ...013001..13003
  283. -- ===========================================================================
  284. INSERT INTO qms_oqcjygf (id, tenant_id, syxh, wjbh, bb, sxrj, fj, wlbm, fj2, version)
  285. SELECT c.new_id, @dst, c.syxh, c.wjbh, 'A.0', CURDATE(), NULL, c.wlbm, NULL, 1
  286. FROM (
  287. SELECT 3000000000000013001 AS new_id, 'UATD-OQC-001' AS wjbh, '91HC0497' AS wlbm, '集控备机' AS syxh
  288. UNION ALL SELECT 3000000000000013002, 'UATD-OQC-002', '3124C0015', 'IFT45PULB'
  289. UNION ALL SELECT 3000000000000013003, 'UATD-OQC-003', '3221C0031', '压(FBE6035B)'
  290. ) c
  291. WHERE @dst IS NOT NULL
  292. AND EXISTS (SELECT 1 FROM ItemMaster i WHERE i.tenant_id = @dst AND i.ItemNum = c.wlbm)
  293. AND NOT EXISTS (SELECT 1 FROM qms_oqcjygf x WHERE x.tenant_id = @dst AND x.wjbh = c.wjbh);
  294. -- ===========================================================================
  295. -- 14 · qms_lymjbmd CONSTRUCT 4 → ...014001..14004
  296. -- 797 侧 4 行的供应商 10000000/10000001/10000002 与物料 91CC0136/1A03G87
  297. -- 均不在 UAT A → 不复制;改用 UAT A 自有真实供应商与物料组合白名单。
  298. -- 本表无任何 provenance 字段,且 gysbm/wlbm 必须是真实编码 → 不写 UATD 标记,
  299. -- provenance 由本注释、S0 Memory 与执行回执承载(CTO 2026-08-28 批准)。
  300. -- ===========================================================================
  301. INSERT INTO qms_lymjbmd (id, tenant_id, gysbm, gysmc, wlbm, wlmc, dim_type)
  302. SELECT c.new_id, @dst, c.gysbm, c.gysmc, c.wlbm, c.wlmc, c.dim_type
  303. FROM (
  304. SELECT 3000000000000014001 AS new_id, '10003232' AS gysbm, '珩睿' AS gysmc, NULL AS wlbm, NULL AS wlmc, 'supplier' AS dim_type
  305. UNION ALL SELECT 3000000000000014002, '10000015', '怡祥', NULL, NULL, 'supplier'
  306. UNION ALL SELECT 3000000000000014003, NULL, NULL, '91C0D2C', '管组件-新EE2305H', 'material'
  307. UNION ALL SELECT 3000000000000014004, '10001597', '奥博特', '91HC0497', '集控备机', 'material_supplier'
  308. ) c
  309. WHERE @dst IS NOT NULL
  310. AND (c.gysbm IS NULL OR EXISTS (SELECT 1 FROM SuppMaster s WHERE s.tenant_id = @dst AND s.Supp = c.gysbm))
  311. AND (c.wlbm IS NULL OR EXISTS (SELECT 1 FROM ItemMaster i WHERE i.tenant_id = @dst AND i.ItemNum = c.wlbm))
  312. AND NOT EXISTS (SELECT 1 FROM qms_lymjbmd x
  313. WHERE x.tenant_id = @dst AND x.dim_type = c.dim_type
  314. AND IFNULL(x.gysbm,'') = IFNULL(c.gysbm,'')
  315. AND IFNULL(x.wlbm,'') = IFNULL(c.wlbm,''));