WIP-S5-IQC-INVPOSTING.sql 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. -- ============================================================================
  2. -- WIP 占位(不占版本号、不注册 Copy、不自动执行)——提交那刻 rebase 后 rename 为 1.0.<next>.sql 并注册 Copy。
  3. -- 用途:DOP 路线 B「IQC→WMS 入库」L3 影子库存账建表兜底(团队 EnableInitTable=false 首启时用)。
  4. -- 主路径仍是 CodeFirst(实体在 MaterialWarehouse/InventoryPosting/Entity/)。本脚本与实体逐列对齐。
  5. -- 红线:全部为 ado_* 新表;不 CREATE/ALTER/DROP 任何旧表(InvMaster/LocationDetail/InvTransHist/MissedPrint)。
  6. -- 关键:lot_serial / refs 为 NOT NULL DEFAULT ''(空批次空串占位唯一,非 NULL)。
  7. -- ============================================================================
  8. CREATE TABLE IF NOT EXISTS `ado_inventory_master` (
  9. `id` BIGINT NOT NULL,
  10. `tenant_id` BIGINT NOT NULL,
  11. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  12. `item_num` VARCHAR(50) NOT NULL DEFAULT '',
  13. `location` VARCHAR(30) NOT NULL DEFAULT '',
  14. `qty_on_hand` DECIMAL(18,5) NOT NULL DEFAULT 0,
  15. `avail_status_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  16. `assay_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  17. `freeze_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  18. `last_rct_time` DATETIME NULL,
  19. `is_active` TINYINT(1) NOT NULL DEFAULT 1,
  20. `create_time` DATETIME NOT NULL,
  21. `create_user` VARCHAR(50) NULL,
  22. `update_time` DATETIME NULL,
  23. `update_user` VARCHAR(50) NULL,
  24. PRIMARY KEY (`id`),
  25. UNIQUE KEY `uk_ado_inv_master` (`tenant_id`,`domain_code`,`item_num`,`location`)
  26. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3库存汇总账(影子,非旧InvMaster)';
  27. CREATE TABLE IF NOT EXISTS `ado_inventory_location_detail` (
  28. `id` BIGINT NOT NULL,
  29. `tenant_id` BIGINT NOT NULL,
  30. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  31. `item_num` VARCHAR(50) NOT NULL DEFAULT '',
  32. `location` VARCHAR(30) NOT NULL DEFAULT '',
  33. `lot_serial` VARCHAR(50) NOT NULL DEFAULT '',
  34. `refs` VARCHAR(50) NOT NULL DEFAULT '',
  35. `qty_on_hand` DECIMAL(18,5) NOT NULL DEFAULT 0,
  36. `avail_status_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  37. `assay_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  38. `freeze_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  39. `create_time` DATETIME NOT NULL,
  40. `create_user` VARCHAR(50) NULL,
  41. `update_time` DATETIME NULL,
  42. `update_user` VARCHAR(50) NULL,
  43. PRIMARY KEY (`id`),
  44. UNIQUE KEY `uk_ado_inv_loc_detail` (`tenant_id`,`domain_code`,`item_num`,`location`,`lot_serial`,`refs`)
  45. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3库位批次库存明细(影子,非旧LocationDetail)';
  46. CREATE TABLE IF NOT EXISTS `ado_inventory_transaction` (
  47. `id` BIGINT NOT NULL,
  48. `tenant_id` BIGINT NOT NULL,
  49. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  50. `item_num` VARCHAR(50) NOT NULL DEFAULT '',
  51. `location` VARCHAR(30) NOT NULL DEFAULT '',
  52. `lot_serial` VARCHAR(50) NOT NULL DEFAULT '',
  53. `trans_type` VARCHAR(50) NOT NULL DEFAULT '',
  54. `qty_change` DECIMAL(18,5) NOT NULL DEFAULT 0,
  55. `begin_balance` DECIMAL(18,5) NULL,
  56. `work_ord` VARCHAR(60) NULL,
  57. `shipper_num` VARCHAR(60) NULL,
  58. `remark` VARCHAR(500) NULL,
  59. `fbillno` VARCHAR(50) NULL,
  60. `receiver` VARCHAR(50) NULL,
  61. `rct_qc_nbr` VARCHAR(100) NULL,
  62. `posting_id` BIGINT NULL,
  63. `transaction_group_id` BIGINT NOT NULL DEFAULT 0,
  64. `seq` INT NOT NULL DEFAULT 0,
  65. `create_time` DATETIME NOT NULL,
  66. `create_user` VARCHAR(50) NULL,
  67. `update_time` DATETIME NULL,
  68. `update_user` VARCHAR(50) NULL,
  69. PRIMARY KEY (`id`),
  70. UNIQUE KEY `uk_ado_inv_trans_group_seq` (`tenant_id`,`transaction_group_id`,`seq`),
  71. KEY `idx_ado_inv_trans_posting` (`tenant_id`,`posting_id`)
  72. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3库存事务流水(影子,append-only,非旧InvTransHist)';
  73. CREATE TABLE IF NOT EXISTS `ado_barcode_card` (
  74. `id` BIGINT NOT NULL,
  75. `tenant_id` BIGINT NOT NULL,
  76. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  77. `item_num` VARCHAR(50) NOT NULL DEFAULT '',
  78. `location` VARCHAR(30) NOT NULL DEFAULT '',
  79. `lot_serial` VARCHAR(50) NOT NULL DEFAULT '',
  80. `shelf` VARCHAR(50) NULL,
  81. `level_char` VARCHAR(20) NULL,
  82. `supply` VARCHAR(50) NULL,
  83. `status` VARCHAR(10) NULL,
  84. `qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  85. `is_tag` TINYINT(1) NOT NULL DEFAULT 0,
  86. `barcode` VARCHAR(100) NULL,
  87. `type` VARCHAR(20) NULL,
  88. `trans_type` VARCHAR(50) NULL,
  89. `posting_id` BIGINT NULL,
  90. `source_domain` VARCHAR(20) NULL,
  91. `source_rec_id` BIGINT NULL,
  92. `create_time` DATETIME NOT NULL,
  93. `create_user` VARCHAR(50) NULL,
  94. `update_time` DATETIME NULL,
  95. `update_user` VARCHAR(50) NULL,
  96. PRIMARY KEY (`id`),
  97. UNIQUE KEY `uk_ado_barcode_card_source` (`tenant_id`,`source_domain`,`source_rec_id`),
  98. KEY `idx_ado_barcode_card_item_loc` (`tenant_id`,`domain_code`,`item_num`,`location`)
  99. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3条码卡(影子,非旧MissedPrint;barcode非唯一)';
  100. CREATE TABLE IF NOT EXISTS `ado_barcode_card_transaction` (
  101. `id` BIGINT NOT NULL,
  102. `tenant_id` BIGINT NOT NULL,
  103. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  104. `barcode_card_id` BIGINT NULL,
  105. `item_num` VARCHAR(50) NOT NULL DEFAULT '',
  106. `location` VARCHAR(30) NOT NULL DEFAULT '',
  107. `lot_serial` VARCHAR(50) NOT NULL DEFAULT '',
  108. `qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  109. `status` VARCHAR(10) NULL,
  110. `trans_type` VARCHAR(50) NOT NULL DEFAULT '',
  111. `remark` VARCHAR(500) NULL,
  112. `posting_id` BIGINT NULL,
  113. `source_domain` VARCHAR(20) NULL,
  114. `source_rec_id` BIGINT NULL,
  115. `create_time` DATETIME NOT NULL,
  116. `create_user` VARCHAR(50) NULL,
  117. `update_time` DATETIME NULL,
  118. `update_user` VARCHAR(50) NULL,
  119. PRIMARY KEY (`id`),
  120. UNIQUE KEY `uk_ado_bctrans_source` (`tenant_id`,`source_domain`,`source_rec_id`),
  121. KEY `idx_ado_bctrans_card` (`tenant_id`,`barcode_card_id`)
  122. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3条码卡历史流水(影子,非旧MissedPrintTransHist)';
  123. CREATE TABLE IF NOT EXISTS `ado_iqc_inventory_posting` (
  124. `id` BIGINT NOT NULL,
  125. `tenant_id` BIGINT NOT NULL,
  126. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  127. `fbillno` VARCHAR(50) NOT NULL DEFAULT '',
  128. `receiver` VARCHAR(50) NULL,
  129. `rct_qc_nbr` VARCHAR(100) NULL,
  130. `item_num` VARCHAR(50) NULL,
  131. `posting_status` VARCHAR(20) NOT NULL DEFAULT 'PENDING',
  132. `posting_mode` VARCHAR(20) NOT NULL DEFAULT 'SHADOW',
  133. `mrb_status` INT NOT NULL DEFAULT 0,
  134. `branch_no` INT NOT NULL DEFAULT 0,
  135. `transaction_group_id` BIGINT NULL,
  136. `create_time` DATETIME NOT NULL,
  137. `create_user` VARCHAR(50) NULL,
  138. `update_time` DATETIME NULL,
  139. `update_user` VARCHAR(50) NULL,
  140. PRIMARY KEY (`id`),
  141. UNIQUE KEY `uk_ado_iqc_posting_fbillno` (`tenant_id`,`domain_code`,`fbillno`)
  142. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3 IQC入库过账头/幂等锚(tenant+domain+FBILLNO唯一)';
  143. CREATE TABLE IF NOT EXISTS `ado_item_location_state` (
  144. `id` BIGINT NOT NULL,
  145. `tenant_id` BIGINT NOT NULL,
  146. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  147. `item_num` VARCHAR(50) NOT NULL DEFAULT '',
  148. `default_location` VARCHAR(30) NULL,
  149. `create_time` DATETIME NOT NULL,
  150. `create_user` VARCHAR(50) NULL,
  151. `update_time` DATETIME NULL,
  152. `update_user` VARCHAR(50) NULL,
  153. PRIMARY KEY (`id`),
  154. UNIQUE KEY `uk_ado_item_loc_state` (`tenant_id`,`domain_code`,`item_num`)
  155. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3物料默认库位状态(ItemMaster.Location语义,影子)';
  156. CREATE TABLE IF NOT EXISTS `ado_purchase_receipt_writeback` (
  157. `id` BIGINT NOT NULL,
  158. `tenant_id` BIGINT NOT NULL,
  159. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  160. `posting_id` BIGINT NOT NULL DEFAULT 0,
  161. `rct_nbr` VARCHAR(50) NULL,
  162. `pur_ord` VARCHAR(60) NOT NULL DEFAULT '',
  163. `pur_line` INT NOT NULL DEFAULT 0,
  164. `potype` VARCHAR(30) NULL,
  165. `accepted_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  166. `sample_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  167. `qty_ordered` DECIMAL(18,5) NOT NULL DEFAULT 0,
  168. `returned_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  169. `before_received_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  170. `after_received_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  171. `before_outstanding_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  172. `after_outstanding_qty` DECIMAL(18,5) NOT NULL DEFAULT 0,
  173. `detail_completed` TINYINT(1) NOT NULL DEFAULT 0,
  174. `qc_nbr` VARCHAR(100) NULL,
  175. `receiver` VARCHAR(50) NULL,
  176. `fbillno` VARCHAR(50) NULL,
  177. `qc_status` VARCHAR(10) NULL,
  178. `create_time` DATETIME NOT NULL,
  179. `create_user` VARCHAR(50) NULL,
  180. `update_time` DATETIME NULL,
  181. `update_user` VARCHAR(50) NULL,
  182. PRIMARY KEY (`id`),
  183. UNIQUE KEY `uk_ado_pr_writeback` (`tenant_id`,`domain_code`,`posting_id`,`pur_ord`,`pur_line`)
  184. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3采购收货回写(C6 shadow,非旧PurOrd*)';
  185. CREATE TABLE IF NOT EXISTS `ado_inventory_mobile_task` (
  186. `id` BIGINT NOT NULL,
  187. `tenant_id` BIGINT NOT NULL,
  188. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  189. `posting_id` BIGINT NULL,
  190. `fbillno` VARCHAR(50) NULL,
  191. `task_id` VARCHAR(100) NOT NULL DEFAULT '',
  192. `type_id` VARCHAR(20) NULL,
  193. `name` VARCHAR(50) NULL,
  194. `description` VARCHAR(1000) NULL,
  195. `executer` VARCHAR(1000) NULL,
  196. `executer_type_id` INT NOT NULL DEFAULT 0,
  197. `plan_date` DATETIME NULL,
  198. `status` VARCHAR(20) NULL,
  199. `receiver` VARCHAR(50) NULL,
  200. `rct_qc_nbr` VARCHAR(100) NULL,
  201. `create_time` DATETIME NOT NULL,
  202. `create_user` VARCHAR(50) NULL,
  203. `update_time` DATETIME NULL,
  204. `update_user` VARCHAR(50) NULL,
  205. PRIMARY KEY (`id`),
  206. UNIQUE KEY `uk_ado_inv_mobile_task` (`tenant_id`,`domain_code`,`task_id`)
  207. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3库存移动任务(C7 shadow,非旧MobileTask)';
  208. -- Phase 7C:C2 业务事务完成锚(与 C6/C5/C7 同事务提交,闭合 commit→MarkPosted 崩溃窗口)
  209. CREATE TABLE IF NOT EXISTS `ado_iqc_posting_completion` (
  210. `id` BIGINT NOT NULL,
  211. `tenant_id` BIGINT NOT NULL,
  212. `domain_code` VARCHAR(20) NOT NULL DEFAULT '',
  213. `fbillno` VARCHAR(50) NOT NULL DEFAULT '',
  214. `posting_id` BIGINT NOT NULL,
  215. `transaction_group_id` BIGINT NULL,
  216. `route_kind` VARCHAR(30) NULL,
  217. `completed_at` DATETIME NOT NULL,
  218. `create_time` DATETIME NOT NULL,
  219. `create_user` VARCHAR(50) NULL,
  220. `update_time` DATETIME NULL,
  221. `update_user` VARCHAR(50) NULL,
  222. PRIMARY KEY (`id`),
  223. UNIQUE KEY `uk_ado_iqc_completion` (`tenant_id`,`domain_code`,`fbillno`)
  224. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='DOP-L3 IQC过账完成锚(Phase7C,与C2业务事务同提交)';
  225. -- ═══ L0(态①只读贴源):IQC 收货标准层 + 双源 mdp_entity 登记(就位不启用) ═══
  226. -- 与 IqcReceiptStateMdpSyncService.EnsureTablesAsync 一致
  227. CREATE TABLE IF NOT EXISTS `mdp_std_iqc_receipt_state` (
  228. `id` BIGINT NOT NULL,
  229. `tenant_id` BIGINT NOT NULL,
  230. `domain` VARCHAR(20) NOT NULL DEFAULT '',
  231. `fbillno` VARCHAR(50) NOT NULL DEFAULT '',
  232. `qc_nbr` VARCHAR(50) NULL,
  233. `item_num` VARCHAR(100) NULL,
  234. `location` VARCHAR(50) NULL,
  235. `lot_serial` VARCHAR(100) NULL,
  236. `rct_nbr` VARCHAR(50) NULL,
  237. `pur_ord` VARCHAR(50) NULL,
  238. `pur_line` INT NULL,
  239. `potype` VARCHAR(20) NULL,
  240. `qty_ordered` DECIMAL(18,4) NOT NULL DEFAULT 0,
  241. `received_cum_qty` DECIMAL(18,4) NOT NULL DEFAULT 0,
  242. `returned_cum_qty` DECIMAL(18,4) NOT NULL DEFAULT 0,
  243. `sample_qty` DECIMAL(18,4) NOT NULL DEFAULT 0,
  244. `receipt_pending_qty` DECIMAL(18,4) NOT NULL DEFAULT 0,
  245. `receivable_detail_count` INT NOT NULL DEFAULT 0,
  246. `source_system` VARCHAR(50) NULL,
  247. `sync_batch_id` VARCHAR(50) NULL,
  248. `sync_time` DATETIME NULL,
  249. `create_time` DATETIME NULL,
  250. PRIMARY KEY (`id`),
  251. UNIQUE KEY `uk_mdp_std_iqc_rct` (`tenant_id`,`domain`,`fbillno`)
  252. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='L0 IQC收货标准层(只读贴源)';
  253. -- 双源登记:同一实体 entity_code 两份配置,本库 status=1 / dopdemorq status=0(就位不启用,切源不改读代码)
  254. -- 源库层 join 由 transform 完成;此处登记入站源实体(态①贴源模板,与 1.0.268/270 同构)。
  255. -- 说明:IQC 收货态需多源表(qms_qcp_inspbill/inspecapplyn/insappnentry/PurOrdRctDetail/PurOrdDetail/MissedPrint),
  256. -- 实际入站按单表拉 stg 再于主库 join;下方为标准层聚合实体登记占位,具体逐表 entity 明细在实库验证批(Phase 5B)补齐。
  257. -- INSERT INTO mdp_entity (...) VALUES (... 'IQC_RECEIPT_STATE' ... AIDOPDEV_MYSQL ... status=1 ...);
  258. -- INSERT INTO mdp_entity (...) VALUES (... 'IQC_RECEIPT_STATE' ... DOPDEMORQ_SQLSERVER ... status=0 ...);