S1S4_UAT_P0_试导数据填充_20260604.sql 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. -- =============================================================================
  2. -- S1-S4 P0 试导数据填充(dopdemorq 实抽 → tmp 表)
  3. -- 批次:S1S4_UAT_20260604_RQ_V1 | 租户:797403760988229
  4. -- 抽数记录:doc/plan/S1S4_UAT_P0_抽数记录_20260604.md
  5. --
  6. -- 用法:
  7. -- 1) 仅验证 tmp:执行 Section A(含末尾 ROLLBACK 的试跑块)
  8. -- 2) 正式写库:人工确认后执行 Section B(取消注释),勿执行 ROLLBACK
  9. -- =============================================================================
  10. -- -----------------------------------------------------------------------------
  11. -- Section A:变量 + 映射 + tmp 实数据(可先单独执行到 SELECT 校验)
  12. -- -----------------------------------------------------------------------------
  13. SET @tenant_id := 797403760988229;
  14. SET @batch_no := 'S1S4_UAT_20260604_RQ_V1';
  15. SET @operator_id := 1300000000111;
  16. SET @operator_name := 'UAT数据导入';
  17. SET @now := NOW();
  18. SET @factory_id := 797403760988229;
  19. SET @id_base := 9106000400000001;
  20. DROP TEMPORARY TABLE IF EXISTS tmp_s1s4_uat_id_map;
  21. CREATE TEMPORARY TABLE tmp_s1s4_uat_id_map (
  22. batch_no VARCHAR(64) NOT NULL,
  23. entity_name VARCHAR(64) NOT NULL,
  24. source_key VARCHAR(128) NOT NULL,
  25. target_id BIGINT NOT NULL,
  26. ref_key VARCHAR(128) NULL,
  27. PRIMARY KEY (batch_no, entity_name, source_key)
  28. );
  29. -- 销售订单(5 单;第 5 单用 MPO482025011300004 替换不存在的 010800003)
  30. INSERT INTO tmp_s1s4_uat_id_map (batch_no, entity_name, source_key, target_id, ref_key) VALUES
  31. (@batch_no,'crm_seorder','MPO482024102300001',@id_base+1,'MPO482024102300001'),
  32. (@batch_no,'crm_seorder','MPO482025010900002',@id_base+2,'MPO482025010900002'),
  33. (@batch_no,'crm_seorder','MPO482024120200003',@id_base+3,'MPO482024120200003'),
  34. (@batch_no,'crm_seorder','MPO482025012100001',@id_base+4,'MPO482025012100001'),
  35. (@batch_no,'crm_seorder','MPO482025011300004',@id_base+5,'MPO482025011300004');
  36. -- 订单明细(旧库 soentry Id → 新 Id)
  37. INSERT INTO tmp_s1s4_uat_id_map VALUES
  38. (@batch_no,'crm_seorderentry','604078133665861',@id_base+101,'MPO482024102300001'),
  39. (@batch_no,'crm_seorderentry','604078133665862',@id_base+102,'MPO482024102300001'),
  40. (@batch_no,'crm_seorderentry','631771616395333',@id_base+103,'MPO482025010900002'),
  41. (@batch_no,'crm_seorderentry','631771616399429',@id_base+104,'MPO482025010900002'),
  42. (@batch_no,'crm_seorderentry','618329124159557',@id_base+105,'MPO482024120200003'),
  43. (@batch_no,'crm_seorderentry','636029208526917',@id_base+106,'MPO482025012100001'),
  44. (@batch_no,'crm_seorderentry','636029208526918',@id_base+107,'MPO482025012100001'),
  45. (@batch_no,'crm_seorderentry','633180644831301',@id_base+108,'MPO482025011300004'),
  46. (@batch_no,'crm_seorderentry','633180644831302',@id_base+109,'MPO482025011300004');
  47. -- 工单(保留旧库 morder_no 作 ref_key)
  48. INSERT INTO tmp_s1s4_uat_id_map VALUES
  49. (@batch_no,'mes_morder','M500029406',@id_base+201,'604078133665861'),
  50. (@batch_no,'mes_morder','M500029407',@id_base+202,'604078133665862'),
  51. (@batch_no,'mes_morder','M500067189',@id_base+203,'631771616395333'),
  52. (@batch_no,'mes_morder','M500067190',@id_base+204,'631771616399429'),
  53. (@batch_no,'mes_morder','M500053856',@id_base+205,'618329124159557'),
  54. (@batch_no,'mes_morder','M500077552',@id_base+206,'636029208526917'),
  55. (@batch_no,'mes_morder','M500077553',@id_base+207,'636029208526918'),
  56. (@batch_no,'mes_morder','M500070779',@id_base+208,'633180644831301'),
  57. (@batch_no,'mes_morder','M500070780',@id_base+209,'633180644831302');
  58. -- 采购订单(合成 PO,按销售订单分组)
  59. INSERT INTO tmp_s1s4_uat_id_map VALUES
  60. (@batch_no,'PurOrdMaster','PO-UAT-20260604-01',@id_base+301,'MPO482024102300001'),
  61. (@batch_no,'PurOrdMaster','PO-UAT-20260604-02',@id_base+302,'MPO482025010900002'),
  62. (@batch_no,'PurOrdMaster','PO-UAT-20260604-03',@id_base+303,'MPO482024120200003'),
  63. (@batch_no,'PurOrdMaster','PO-UAT-20260604-04',@id_base+304,'MPO482025012100001'),
  64. (@batch_no,'PurOrdMaster','PO-UAT-20260604-05',@id_base+305,'MPO482025011300004');
  65. -- S1 订单头
  66. DROP TEMPORARY TABLE IF EXISTS tmp_s1_uat_so;
  67. CREATE TEMPORARY TABLE tmp_s1_uat_so (
  68. bill_no VARCHAR(64) NOT NULL PRIMARY KEY,
  69. target_id BIGINT NOT NULL,
  70. custom_no VARCHAR(64) NULL,
  71. custom_name VARCHAR(128) NULL,
  72. order_date DATETIME NULL,
  73. delivery_date DATETIME NULL,
  74. urgent INT DEFAULT 0
  75. );
  76. INSERT INTO tmp_s1_uat_so VALUES
  77. ('MPO482024102300001',@id_base+1,'CUST0005','WKQXGFYXGE','2024-10-23','2024-10-23',1),
  78. ('MPO482025010900002',@id_base+2,'CUST0005','WKQXGFYXGE','2025-01-09','2025-01-09',1),
  79. ('MPO482024120200003',@id_base+3,'CUST0005','WKQXGFYXGE','2024-12-02','2024-12-02',1),
  80. ('MPO482025012100001',@id_base+4,'CUST0005','WKQXGFYXGE','2025-01-21','2025-01-21',1),
  81. ('MPO482025011300004',@id_base+5,'CUST0005','WKQXGFYXGE','2025-01-13','2025-01-13',1);
  82. -- S1 订单明细(dopdemorq 实抽)
  83. DROP TEMPORARY TABLE IF EXISTS tmp_s1_uat_so_line;
  84. CREATE TEMPORARY TABLE tmp_s1_uat_so_line (
  85. target_id BIGINT NOT NULL PRIMARY KEY,
  86. source_entry VARCHAR(32) NOT NULL,
  87. bill_no VARCHAR(64) NOT NULL,
  88. entry_seq INT NOT NULL,
  89. item_number VARCHAR(64) NULL,
  90. qty DECIMAL(18,4) NULL,
  91. plan_date DATETIME NULL
  92. );
  93. INSERT INTO tmp_s1_uat_so_line VALUES
  94. (@id_base+101,'604078133665861','MPO482024102300001',1,'3121C0035',1500,'2024-10-29 00:00:00'),
  95. (@id_base+102,'604078133665862','MPO482024102300001',2,'1A0C885',3500,'2024-10-29 00:00:00'),
  96. (@id_base+103,'631771616395333','MPO482025010900002',1,'3121C0035',850,'2025-01-18 00:00:00'),
  97. (@id_base+104,'631771616399429','MPO482025010900002',2,'3124C0015',850,'2025-01-21 00:00:00'),
  98. (@id_base+105,'618329124159557','MPO482024120200003',1,'1AB9275',800,'2024-12-03 00:00:00'),
  99. (@id_base+106,'636029208526917','MPO482025012100001',1,'91C0D2C',600,'2025-02-13 00:00:00'),
  100. (@id_base+107,'636029208526918','MPO482025012100001',2,'91CC0231',100,'2025-02-13 00:00:00'),
  101. (@id_base+108,'633180644831301','MPO482025011300004',1,'322AD001',5500,'2025-02-11 00:00:00'),
  102. (@id_base+109,'633180644831302','MPO482025011300004',2,'3221C0031',5500,'2025-02-18 00:00:00');
  103. -- S2 工单(dopdemorq 实抽)
  104. DROP TEMPORARY TABLE IF EXISTS tmp_s2_uat_morder;
  105. CREATE TEMPORARY TABLE tmp_s2_uat_morder (
  106. target_mo_id BIGINT NOT NULL PRIMARY KEY,
  107. target_me_id BIGINT NOT NULL,
  108. source_entry VARCHAR(32) NOT NULL,
  109. bill_no VARCHAR(64) NOT NULL,
  110. morder_no VARCHAR(128) NOT NULL,
  111. product_code VARCHAR(128) NULL,
  112. need_number DECIMAL(23,10) NULL
  113. );
  114. INSERT INTO tmp_s2_uat_morder VALUES
  115. (@id_base+201,@id_base+401,'604078133665861','MPO482024102300001','M500029406','32100035',1500),
  116. (@id_base+202,@id_base+402,'604078133665862','MPO482024102300001','M500029407','1000885',3500),
  117. (@id_base+203,@id_base+403,'631771616395333','MPO482025010900002','M500067189','32100035',850),
  118. (@id_base+204,@id_base+404,'631771616399429','MPO482025010900002','M500067190','32400015',850),
  119. (@id_base+205,@id_base+405,'618329124159557','MPO482024120200003','M500053856','1009275',800),
  120. (@id_base+206,@id_base+406,'636029208526917','MPO482025012100001','M500077552','93000230',600),
  121. (@id_base+207,@id_base+407,'636029208526918','MPO482025012100001','M500077553','93000231',100),
  122. (@id_base+208,@id_base+408,'633180644831301','MPO482025011300004','M500070779','32100001',5500),
  123. (@id_base+209,@id_base+409,'633180644831302','MPO482025011300004','M500070780','32100031',5500);
  124. -- S3 采购申请(每工单 1 条,物料编码取工单 product_code)
  125. DROP TEMPORARY TABLE IF EXISTS tmp_s3_uat_pr;
  126. CREATE TEMPORARY TABLE tmp_s3_uat_pr (
  127. voucher BIGINT NOT NULL PRIMARY KEY,
  128. pr_billno VARCHAR(64) NOT NULL,
  129. morder_no VARCHAR(128) NOT NULL,
  130. bill_no VARCHAR(64) NOT NULL,
  131. icitem_code VARCHAR(64) NULL,
  132. pr_rqty DECIMAL(18,4) NULL
  133. );
  134. INSERT INTO tmp_s3_uat_pr VALUES
  135. (@id_base+501,'PR-UAT-20260604-01','M500029406','MPO482024102300001','32100035',1500),
  136. (@id_base+502,'PR-UAT-20260604-02','M500029407','MPO482024102300001','1000885',3500),
  137. (@id_base+503,'PR-UAT-20260604-03','M500067189','MPO482025010900002','32100035',850),
  138. (@id_base+504,'PR-UAT-20260604-04','M500067190','MPO482025010900002','32400015',850),
  139. (@id_base+505,'PR-UAT-20260604-05','M500053856','MPO482024120200003','1009275',800),
  140. (@id_base+506,'PR-UAT-20260604-06','M500077552','MPO482025012100001','93000230',600),
  141. (@id_base+507,'PR-UAT-20260604-07','M500077553','MPO482025012100001','93000231',100),
  142. (@id_base+508,'PR-UAT-20260604-08','M500070779','MPO482025011300004','32100001',5500),
  143. (@id_base+509,'PR-UAT-20260604-09','M500070780','MPO482025011300004','32100031',5500);
  144. -- S3 采购订单行(每 PO 2 行:成品料号 + 原料占位)
  145. DROP TEMPORARY TABLE IF EXISTS tmp_s3_uat_po_line;
  146. CREATE TEMPORARY TABLE tmp_s3_uat_po_line (
  147. pur_ord VARCHAR(48) NOT NULL,
  148. line_no INT NOT NULL,
  149. sales_ord VARCHAR(64) NOT NULL,
  150. work_ord VARCHAR(128) NULL,
  151. item_num VARCHAR(60) NOT NULL,
  152. qty DECIMAL(15,5) NOT NULL,
  153. PRIMARY KEY (pur_ord, line_no)
  154. );
  155. INSERT INTO tmp_s3_uat_po_line VALUES
  156. ('PO-UAT-20260604-01',1,'MPO482024102300001','M500029406','3121C0035',1500),
  157. ('PO-UAT-20260604-01',2,'MPO482024102300001','M500029407','1A0C885',3500),
  158. ('PO-UAT-20260604-02',1,'MPO482025010900002','M500067189','3121C0035',850),
  159. ('PO-UAT-20260604-02',2,'MPO482025010900002','M500067190','3124C0015',850),
  160. ('PO-UAT-20260604-03',1,'MPO482024120200003','M500053856','1AB9275',800),
  161. ('PO-UAT-20260604-03',2,'MPO482024120200003','M500053856','RAW-SUB-01',200),
  162. ('PO-UAT-20260604-04',1,'MPO482025012100001','M500077552','91C0D2C',600),
  163. ('PO-UAT-20260604-04',2,'MPO482025012100001','M500077553','91CC0231',100),
  164. ('PO-UAT-20260604-05',1,'MPO482025011300004','M500070779','322AD001',5500),
  165. ('PO-UAT-20260604-05',2,'MPO482025011300004','M500070780','3221C0031',5500);
  166. -- S4 发货(3 张,覆盖前 3 个 PO)
  167. DROP TEMPORARY TABLE IF EXISTS tmp_s4_uat_ship;
  168. CREATE TEMPORARY TABLE tmp_s4_uat_ship (
  169. ship_id BIGINT NOT NULL PRIMARY KEY,
  170. po_billno VARCHAR(48) NOT NULL,
  171. shddh VARCHAR(64) NOT NULL,
  172. supp_code VARCHAR(32) NOT NULL
  173. );
  174. INSERT INTO tmp_s4_uat_ship VALUES
  175. (@id_base+601,'PO-UAT-20260604-01','SH-UAT-20260604-01','VEN00060'),
  176. (@id_base+602,'PO-UAT-20260604-02','SH-UAT-20260604-02','VEN00060'),
  177. (@id_base+603,'PO-UAT-20260604-03','SH-UAT-20260604-03','VEN00060');
  178. -- A.1 tmp 链路自检(只读)
  179. SELECT 'tmp_so' AS chk, COUNT(*) AS cnt FROM tmp_s1_uat_so;
  180. SELECT 'tmp_line' AS chk, COUNT(*) AS cnt FROM tmp_s1_uat_so_line;
  181. SELECT 'tmp_morder' AS chk, COUNT(*) AS cnt FROM tmp_s2_uat_morder;
  182. SELECT l.bill_no, l.item_number, m.morder_no, m.need_number
  183. FROM tmp_s1_uat_so_line l
  184. JOIN tmp_s2_uat_morder m ON m.source_entry = l.source_entry
  185. ORDER BY l.bill_no, l.entry_seq;
  186. -- -----------------------------------------------------------------------------
  187. -- Section B:正式写入业务表(默认注释 — 确认后取消整段注释)
  188. -- -----------------------------------------------------------------------------
  189. /*
  190. START TRANSACTION;
  191. INSERT INTO crm_seorder (
  192. Id, bill_no, order_type, custom_no, custom_name,
  193. date, rdate, urgent, bill_from, closed, IsDeleted,
  194. create_by_name, create_time, update_by_name, update_time,
  195. tenant_id, factory_id
  196. )
  197. SELECT target_id, bill_no, 1, custom_no, custom_name,
  198. order_date, delivery_date, urgent,
  199. CONCAT('UAT导入:', @batch_no), 0, 0,
  200. @operator_name, @now, @operator_name, @now,
  201. @tenant_id, @factory_id
  202. FROM tmp_s1_uat_so;
  203. INSERT INTO crm_seorderentry (
  204. Id, seorder_id, bill_no, entry_seq, item_number,
  205. qty, plan_date, date, IsDeleted,
  206. create_by_name, create_time, update_by_name, update_time,
  207. tenant_id, factory_id, seorderentry_id
  208. )
  209. SELECT l.target_id, s.target_id, l.bill_no, l.entry_seq, l.item_number,
  210. l.qty, l.plan_date, s.order_date, 0,
  211. @operator_name, @now, @operator_name, @now,
  212. @tenant_id, @factory_id, l.target_id
  213. FROM tmp_s1_uat_so_line l
  214. JOIN tmp_s1_uat_so s ON s.bill_no = l.bill_no;
  215. INSERT INTO mes_morder (
  216. Id, morder_no, morder_date, morder_state, product_code, product_name,
  217. need_number, morder_production_number, IsDeleted,
  218. create_by_name, create_time, update_by_name, update_time,
  219. tenant_id, factory_id
  220. )
  221. SELECT target_mo_id, morder_no, @now, 'Released', product_code, product_code,
  222. need_number, need_number, 0,
  223. @operator_name, @now, @operator_name, @now,
  224. @tenant_id, @factory_id
  225. FROM tmp_s2_uat_morder;
  226. INSERT INTO mes_moentry (
  227. Id, moentry_moid, moentry_mono, soentry_id, fbill_no,
  228. need_number, morder_production_number, IsDeleted,
  229. create_by_name, create_time, tenant_id, factory_id
  230. )
  231. SELECT m.target_me_id, m.target_mo_id, m.morder_no, l.target_id, m.bill_no,
  232. m.need_number, m.need_number, 0,
  233. @operator_name, @now, @tenant_id, @factory_id
  234. FROM tmp_s2_uat_morder m
  235. JOIN tmp_s1_uat_so_line l ON l.source_entry = m.source_entry;
  236. INSERT INTO WorkOrdMaster (
  237. Domain, WorkOrd, ItemNum, Status, QtyOrded, QtyCompleted, LbrVar,
  238. OrdDate, DueDate, SalesJob, tenant_id, CreateTime, UpdateTime
  239. )
  240. SELECT CAST(@factory_id AS CHAR), morder_no, product_code, 'R',
  241. need_number, 0, 0, @now, DATE_ADD(@now, INTERVAL 14 DAY), bill_no,
  242. @tenant_id, @now, @now
  243. FROM tmp_s2_uat_morder;
  244. -- PurOrdMaster / Detail / srm_pr_main / scm_shd 等见 S1S4_UAT_P0_试导SQL草案_20260604.sql Section 4-5
  245. -- 执行前请核对 PurOrdDetail 必填默认值
  246. COMMIT;
  247. */