From 5099a46581ba961325c62dc62bd3018b5c24199c Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 2 Sep 2026 17:36:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E9=BD=90=E7=BB=9F=E4=B8=80=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E4=B8=AD=E6=96=87=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/sql/头程数据库统一增量-MySQL8.sql | 170 +++++++++++++++- .../resources/db/phase2-inbound-schema.sql | 6 +- .../db/phase3-container-customs-schema.sql | 186 +++++++++--------- .../db/phase3-container-overview.sql | 8 +- .../db/phase3-smart-loading-schema.sql | 32 +-- order/src/main/resources/db/order.sql | 12 +- 6 files changed, 286 insertions(+), 128 deletions(-) diff --git a/deploy/sql/头程数据库统一增量-MySQL8.sql b/deploy/sql/头程数据库统一增量-MySQL8.sql index 62b4336a8..cd224e64f 100644 --- a/deploy/sql/头程数据库统一增量-MySQL8.sql +++ b/deploy/sql/头程数据库统一增量-MySQL8.sql @@ -14636,12 +14636,9 @@ CALL queue_column_comment('baiyue_warehouse', 'wh_warehouse_address', 'version', CALL queue_column_comment('baiyue_warehouse', 'wh_warehouse_address', 'warehouse_id', '所属仓库ID'); -- END GENERATED NINE-SCHEMA COMMENT UPGRADE CALLS CALL apply_queued_comments(); -DROP PROCEDURE IF EXISTS apply_queued_comments; -DROP PROCEDURE IF EXISTS apply_one_table_comments; -DROP PROCEDURE IF EXISTS queue_column_comment; -DROP PROCEDURE IF EXISTS queue_table_comment; -DROP TEMPORARY TABLE IF EXISTS tmp_column_comment_target; -DROP TEMPORARY TABLE IF EXISTS tmp_table_comment_target; +-- 后续还会创建整柜报关和同柜组最新基线,保留本会话内的结构保真注释升级器并清空首批队列。 +TRUNCATE TABLE tmp_column_comment_target; +TRUNCATE TABLE tmp_table_comment_target; -- 三期统一最终总断言:稳定箱号、单箱测量、墨家收件箱、客户尺寸和装柜权限。 USE baiyue_firstleg; @@ -16514,6 +16511,167 @@ CREATE TABLE IF NOT EXISTS fl_coload_command ( CONSTRAINT chk_coload_command_status CHECK(command_status IN('PROCESSING','SUCCESS')) )ENGINE=InnoDB COMMENT='同柜不可拆组幂等写命令'; +-- 最新追加基线在首轮注释升级之后创建;统一在最终断言前使用同一结构保真升级器收敛存量库注释。 +CALL queue_column_comment('baiyue_firstleg','fl_coload_command','action_type','命令动作类型'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_command','idempotency_key','幂等键'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_command','request_hash','请求摘要'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_command','command_status','命令状态:PROCESSING处理中、SUCCESS成功'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_command','result_group_id','命令结果组ID'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_command','created_at','命令创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_command','completed_at','命令完成时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','group_status','组状态:ACTIVE有效、LOCKED锁定、CONSUMED已消费、CANCELLED已取消'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','created_at','创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','updated_at','更新时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','locked_by','锁定操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','locked_by_name','锁定操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','locked_at','锁定时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','consumed_by','消费操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','consumed_by_name','消费操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','consumed_at','消费完成时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','cancelled_by','取消操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','cancelled_by_name','取消操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group','cancelled_at','取消时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','group_id','同柜不可拆组ID'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','action_type','操作类型:CREATE创建、CANCEL取消、LOCK锁定、UNLOCK解锁、CONSUME消费'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','from_status','变更前组状态'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','to_status','变更后组状态'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','plan_id','关联装柜计划ID'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','remark','操作原因或备注'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','operator_id','操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','operator_name','操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_history','created_at','历史记录时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_member','created_at','成员创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_coload_group_member','closed_at','成员约束关闭时间'); + +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','id','报关幂等命令ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','actor_id','命令操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','action','命令动作类型'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','idempotency_key','客户端幂等键'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','request_hash','规范化请求SHA-256摘要'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','status','命令状态:PROCESSING处理中、SUCCESS成功'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','result_id','命令结果业务记录ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','created_at','命令创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_command','completed_at','命令完成时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','id','报关完成文件ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','file_id','File服务文件ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','file_name','完成文件名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','file_hash','完成文件SHA-256摘要'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','content_type','完成文件媒体类型'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','size_bytes','完成文件大小(字节)'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','uploaded_by','上传操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','uploaded_by_name','上传操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','uploaded_at','上传时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','version','完成文件版本号'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','created_at','完成文件创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document','updated_at','完成文件更新时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','id','完成文件版本记录ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','completion_document_id','报关完成文件ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','document_version','完成文件版本号'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','file_id','本版本File服务文件ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','file_name','本版本文件名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','file_hash','本版本文件SHA-256摘要'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','content_type','本版本文件媒体类型'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','size_bytes','本版本文件大小(字节)'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','operator_id','操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','operator_name','操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_completion_document_version','created_at','版本创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','id','整柜报关聚合ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','status','报关状态:WAITING_CUSTOMER_DOCUMENTS待资料、READY_TO_START可开始、DECLARING申报中、COMPLETED已完成'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','started_by','开始报关操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','started_by_name','开始报关操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','started_at','开始报关时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','completed_by','完成报关操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','completed_by_name','完成报关操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','completed_at','报关完成时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','created_at','聚合创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','updated_at','聚合更新时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container','version','乐观锁版本号'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','id','报关历史记录ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','customs_container_id','所属整柜报关聚合ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','action','报关操作类型'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','from_status','变更前报关状态'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','to_status','变更后报关状态'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','remark','操作备注'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','operator_id','操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','operator_name','操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_container_history','created_at','历史创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','id','客户报送资料ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','customs_container_id','所属整柜报关聚合ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','file_id','File服务文件ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','file_name','文件名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','file_hash','文件SHA-256摘要'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','content_type','文件媒体类型'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','size_bytes','文件大小(字节)'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','status','资料状态:ACTIVE有效、DELETED已删除'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','uploaded_by','上传操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','uploaded_at','上传时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','frozen_version','开始报关时冻结的资料版本'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','frozen_at','资料冻结时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','deleted_by','删除操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','deleted_at','删除时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','version','资料版本号'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','created_at','资料创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document','updated_at','资料更新时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','document_id','客户报送资料ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','inbound_id','覆盖入仓单ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','tenant_id','覆盖入仓单客户ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','order_id','覆盖订单ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','inbound_code','覆盖入仓码快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_inbound','created_at','关联创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','id','资料版本记录ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','document_id','客户报送资料ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','document_version','资料版本号'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','file_id','本版本File服务文件ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','file_name','本版本文件名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','file_hash','本版本文件SHA-256摘要'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','content_type','本版本文件媒体类型'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','size_bytes','本版本文件大小(字节)'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','scope_snapshot_json','本版本覆盖入仓码范围快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','action','版本动作:UPLOAD上传、REPLACE替换、SCOPE_CHANGE范围变化、DELETE删除'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','operator_id','操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_customer_document_version','created_at','版本创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','document_id','冻结的客户报送资料ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','inbound_id','冻结覆盖入仓单ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','tenant_id','冻结覆盖客户ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','order_id','冻结覆盖订单ID'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','inbound_code','冻结覆盖入仓码快照'); +CALL queue_column_comment('baiyue_firstleg','fl_customs_frozen_document_inbound','created_at','冻结关联创建时间'); + +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','id','柜次证据记录ID'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','file_id','File服务文件ID'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','file_name','文件名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','seal_no','带锁码照对应锁码'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','remark','证据备注'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','status','证据状态:ACTIVE有效、VOID作废'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','void_reason','作废原因'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','voided_by','作废操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','voided_by_name','作废操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','voided_at','作废时间'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','version','乐观锁版本号'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','created_by','创建操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','created_by_name','创建操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','updated_by','最后修改操作人ID'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','updated_by_name','最后修改操作人名称快照'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','created_at','创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_loading_cabinet_evidence','updated_at','最后更新时间'); +CALL queue_column_comment('baiyue_firstleg','fl_order_declaration_event','consumed_at','事件消费完成时间'); +CALL queue_column_comment('baiyue_firstleg','fl_order_declaration_snapshot','created_at','快照创建时间'); +CALL queue_column_comment('baiyue_firstleg','fl_order_declaration_snapshot','updated_at','快照更新时间'); +CALL queue_column_comment('baiyue_order','ord_customer_address','created_by','创建人ID'); +CALL queue_column_comment('baiyue_order','ord_customer_address','created_at','创建时间'); +CALL queue_column_comment('baiyue_order','ord_customer_address','updated_by','最后修改人ID'); +CALL queue_column_comment('baiyue_order','ord_customer_address','updated_at','更新时间'); +CALL queue_column_comment('baiyue_order','ord_customer_address','deleted','逻辑删除标记:0未删除、1已删除'); +CALL queue_column_comment('baiyue_order','ord_customer_address','version','乐观锁版本号'); + +CALL apply_queued_comments(); +DROP PROCEDURE IF EXISTS apply_queued_comments; +DROP PROCEDURE IF EXISTS apply_one_table_comments; +DROP PROCEDURE IF EXISTS queue_column_comment; +DROP PROCEDURE IF EXISTS queue_table_comment; +DROP TEMPORARY TABLE IF EXISTS tmp_column_comment_target; +DROP TEMPORARY TABLE IF EXISTS tmp_table_comment_target; + CALL baiyue_firstleg.assert_unified_final_schema(); DROP PROCEDURE IF EXISTS baiyue_firstleg.assert_unified_final_schema; SELECT 'PASS' AS migration_status, diff --git a/firstleg/src/main/resources/db/phase2-inbound-schema.sql b/firstleg/src/main/resources/db/phase2-inbound-schema.sql index d8718e033..8b02f6555 100644 --- a/firstleg/src/main/resources/db/phase2-inbound-schema.sql +++ b/firstleg/src/main/resources/db/phase2-inbound-schema.sql @@ -832,8 +832,8 @@ CREATE TABLE IF NOT EXISTS fl_order_declaration_snapshot ( cargoes_json JSON NOT NULL COMMENT '客户申报货物行完整快照,不覆盖实测事实', changes_json JSON NULL COMMENT '本版本申报字段变化摘要', occurred_at DATETIME(3) NOT NULL COMMENT 'Order事件发生时间', - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '快照创建时间', + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '快照更新时间', PRIMARY KEY (tenant_id, order_id), UNIQUE KEY uk_order_declaration_event (tenant_id, event_id), KEY idx_order_declaration_version (tenant_id, order_id, order_version) @@ -845,7 +845,7 @@ CREATE TABLE IF NOT EXISTS fl_order_declaration_event ( order_id BIGINT UNSIGNED NOT NULL COMMENT 'Order订单ID', order_version INT NOT NULL COMMENT '事件携带的Order聚合版本', request_hash CHAR(64) NOT NULL COMMENT '完整事件SHA-256,用于异参重放拒绝', - consumed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + consumed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '事件消费完成时间', PRIMARY KEY (tenant_id, event_id), KEY idx_order_declaration_event_order (tenant_id, order_id, order_version) ) ENGINE=InnoDB COMMENT='Order客户申报事件永久幂等账本'; diff --git a/firstleg/src/main/resources/db/phase3-container-customs-schema.sql b/firstleg/src/main/resources/db/phase3-container-customs-schema.sql index 5f86e3d2b..f151d6a41 100644 --- a/firstleg/src/main/resources/db/phase3-container-customs-schema.sql +++ b/firstleg/src/main/resources/db/phase3-container-customs-schema.sql @@ -2,19 +2,19 @@ SET NAMES utf8mb4; USE baiyue_firstleg; CREATE TABLE IF NOT EXISTS fl_customs_container ( - id BIGINT UNSIGNED NOT NULL, + id BIGINT UNSIGNED NOT NULL COMMENT '整柜报关聚合ID', loading_plan_id BIGINT UNSIGNED NOT NULL COMMENT '已完成装柜计划ID;报关柜级聚合唯一键', container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '物理货柜ID', - status VARCHAR(40) NOT NULL COMMENT 'WAITING_CUSTOMER_DOCUMENTS、READY_TO_START、DECLARING、COMPLETED', - started_by BIGINT UNSIGNED NULL, - started_by_name VARCHAR(64) NULL, - started_at DATETIME(3) NULL, - completed_by BIGINT UNSIGNED NULL, - completed_by_name VARCHAR(64) NULL, - completed_at DATETIME(3) NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), - version INT UNSIGNED NOT NULL DEFAULT 0, + status VARCHAR(40) NOT NULL COMMENT '报关状态:WAITING_CUSTOMER_DOCUMENTS待资料、READY_TO_START可开始、DECLARING申报中、COMPLETED已完成', + started_by BIGINT UNSIGNED NULL COMMENT '开始报关操作人ID', + started_by_name VARCHAR(64) NULL COMMENT '开始报关操作人名称快照', + started_at DATETIME(3) NULL COMMENT '开始报关时间', + completed_by BIGINT UNSIGNED NULL COMMENT '完成报关操作人ID', + completed_by_name VARCHAR(64) NULL COMMENT '完成报关操作人名称快照', + completed_at DATETIME(3) NULL COMMENT '报关完成时间', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '聚合创建时间', + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '聚合更新时间', + version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '乐观锁版本号', PRIMARY KEY(id), UNIQUE KEY uk_customs_container_plan(loading_plan_id), UNIQUE KEY uk_customs_container_booking(container_booking_id), @@ -24,24 +24,24 @@ CREATE TABLE IF NOT EXISTS fl_customs_container ( ) ENGINE=InnoDB COMMENT='装柜完成后的整柜出口报关聚合'; CREATE TABLE IF NOT EXISTS fl_customs_customer_document ( - id BIGINT UNSIGNED NOT NULL, - customs_container_id BIGINT UNSIGNED NOT NULL, + id BIGINT UNSIGNED NOT NULL COMMENT '客户报送资料ID', + customs_container_id BIGINT UNSIGNED NOT NULL COMMENT '所属整柜报关聚合ID', tenant_id BIGINT UNSIGNED NOT NULL COMMENT '客户隔离键;只允许关联同客户退税票', - file_id BIGINT UNSIGNED NOT NULL, - file_name VARCHAR(255) NOT NULL, - file_hash CHAR(64) NOT NULL, - content_type VARCHAR(128) NULL, - size_bytes BIGINT UNSIGNED NOT NULL, - status VARCHAR(16) NOT NULL DEFAULT 'ACTIVE', - uploaded_by BIGINT UNSIGNED NOT NULL, - uploaded_at DATETIME(3) NOT NULL, - frozen_version INT UNSIGNED NULL, - frozen_at DATETIME(3) NULL, - deleted_by BIGINT UNSIGNED NULL, - deleted_at DATETIME(3) NULL, - version INT UNSIGNED NOT NULL DEFAULT 1, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), + file_id BIGINT UNSIGNED NOT NULL COMMENT 'File服务文件ID', + file_name VARCHAR(255) NOT NULL COMMENT '文件名称快照', + file_hash CHAR(64) NOT NULL COMMENT '文件SHA-256摘要', + content_type VARCHAR(128) NULL COMMENT '文件媒体类型', + size_bytes BIGINT UNSIGNED NOT NULL COMMENT '文件大小(字节)', + status VARCHAR(16) NOT NULL DEFAULT 'ACTIVE' COMMENT '资料状态:ACTIVE有效、DELETED已删除', + uploaded_by BIGINT UNSIGNED NOT NULL COMMENT '上传操作人ID', + uploaded_at DATETIME(3) NOT NULL COMMENT '上传时间', + frozen_version INT UNSIGNED NULL COMMENT '开始报关时冻结的资料版本', + frozen_at DATETIME(3) NULL COMMENT '资料冻结时间', + deleted_by BIGINT UNSIGNED NULL COMMENT '删除操作人ID', + deleted_at DATETIME(3) NULL COMMENT '删除时间', + version INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '资料版本号', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '资料创建时间', + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '资料更新时间', PRIMARY KEY(id), KEY idx_customs_customer_document_container(customs_container_id,status,tenant_id), CONSTRAINT fk_customs_customer_document_container FOREIGN KEY(customs_container_id) REFERENCES fl_customs_container(id), @@ -51,30 +51,30 @@ CREATE TABLE IF NOT EXISTS fl_customs_customer_document ( ) ENGINE=InnoDB COMMENT='客户整份退税报送资料逻辑根'; CREATE TABLE IF NOT EXISTS fl_customs_customer_document_inbound ( - document_id BIGINT UNSIGNED NOT NULL, - inbound_id BIGINT UNSIGNED NOT NULL, - tenant_id BIGINT UNSIGNED NOT NULL, - order_id BIGINT UNSIGNED NOT NULL, - inbound_code VARCHAR(40) NOT NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + document_id BIGINT UNSIGNED NOT NULL COMMENT '客户报送资料ID', + inbound_id BIGINT UNSIGNED NOT NULL COMMENT '覆盖入仓单ID', + tenant_id BIGINT UNSIGNED NOT NULL COMMENT '覆盖入仓单客户ID', + order_id BIGINT UNSIGNED NOT NULL COMMENT '覆盖订单ID', + inbound_code VARCHAR(40) NOT NULL COMMENT '覆盖入仓码快照', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '关联创建时间', PRIMARY KEY(document_id,inbound_id), KEY idx_customs_document_inbound(inbound_id,tenant_id), CONSTRAINT fk_customs_document_inbound_document FOREIGN KEY(document_id) REFERENCES fl_customs_customer_document(id) ) ENGINE=InnoDB COMMENT='客户报送资料与当前柜退税入仓码多对多关系'; CREATE TABLE IF NOT EXISTS fl_customs_customer_document_version ( - id BIGINT UNSIGNED NOT NULL, - document_id BIGINT UNSIGNED NOT NULL, - document_version INT UNSIGNED NOT NULL, - file_id BIGINT UNSIGNED NOT NULL, - file_name VARCHAR(255) NOT NULL, - file_hash CHAR(64) NOT NULL, - content_type VARCHAR(128) NULL, - size_bytes BIGINT UNSIGNED NOT NULL, - scope_snapshot_json JSON NOT NULL, - action VARCHAR(24) NOT NULL COMMENT 'UPLOAD、REPLACE、SCOPE_CHANGE、DELETE', - operator_id BIGINT UNSIGNED NOT NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + id BIGINT UNSIGNED NOT NULL COMMENT '资料版本记录ID', + document_id BIGINT UNSIGNED NOT NULL COMMENT '客户报送资料ID', + document_version INT UNSIGNED NOT NULL COMMENT '资料版本号', + file_id BIGINT UNSIGNED NOT NULL COMMENT '本版本File服务文件ID', + file_name VARCHAR(255) NOT NULL COMMENT '本版本文件名称快照', + file_hash CHAR(64) NOT NULL COMMENT '本版本文件SHA-256摘要', + content_type VARCHAR(128) NULL COMMENT '本版本文件媒体类型', + size_bytes BIGINT UNSIGNED NOT NULL COMMENT '本版本文件大小(字节)', + scope_snapshot_json JSON NOT NULL COMMENT '本版本覆盖入仓码范围快照', + action VARCHAR(24) NOT NULL COMMENT '版本动作:UPLOAD上传、REPLACE替换、SCOPE_CHANGE范围变化、DELETE删除', + operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '版本创建时间', PRIMARY KEY(id), UNIQUE KEY uk_customs_customer_document_version(document_id,document_version), CONSTRAINT fk_customs_customer_document_version FOREIGN KEY(document_id) REFERENCES fl_customs_customer_document(id), @@ -82,77 +82,77 @@ CREATE TABLE IF NOT EXISTS fl_customs_customer_document_version ( ) ENGINE=InnoDB COMMENT='客户报送资料文件与覆盖范围不可变版本'; CREATE TABLE IF NOT EXISTS fl_customs_frozen_document_inbound ( - document_id BIGINT UNSIGNED NOT NULL, - inbound_id BIGINT UNSIGNED NOT NULL, - tenant_id BIGINT UNSIGNED NOT NULL, - order_id BIGINT UNSIGNED NOT NULL, - inbound_code VARCHAR(40) NOT NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + document_id BIGINT UNSIGNED NOT NULL COMMENT '冻结的客户报送资料ID', + inbound_id BIGINT UNSIGNED NOT NULL COMMENT '冻结覆盖入仓单ID', + tenant_id BIGINT UNSIGNED NOT NULL COMMENT '冻结覆盖客户ID', + order_id BIGINT UNSIGNED NOT NULL COMMENT '冻结覆盖订单ID', + inbound_code VARCHAR(40) NOT NULL COMMENT '冻结覆盖入仓码快照', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '冻结关联创建时间', PRIMARY KEY(document_id,inbound_id), CONSTRAINT fk_customs_frozen_document FOREIGN KEY(document_id) REFERENCES fl_customs_customer_document(id) ) ENGINE=InnoDB COMMENT='开始报关时冻结的客户资料覆盖范围'; CREATE TABLE IF NOT EXISTS fl_customs_completion_document ( - id BIGINT UNSIGNED NOT NULL, + id BIGINT UNSIGNED NOT NULL COMMENT '报关完成文件ID', source_document_id BIGINT UNSIGNED NOT NULL COMMENT '一份冻结客户资料严格对应一份完成文件逻辑根', - file_id BIGINT UNSIGNED NOT NULL, - file_name VARCHAR(255) NOT NULL, - file_hash CHAR(64) NOT NULL, - content_type VARCHAR(128) NULL, - size_bytes BIGINT UNSIGNED NOT NULL, - uploaded_by BIGINT UNSIGNED NOT NULL, - uploaded_by_name VARCHAR(64) NULL, - uploaded_at DATETIME(3) NOT NULL, - version INT UNSIGNED NOT NULL DEFAULT 1, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), + file_id BIGINT UNSIGNED NOT NULL COMMENT 'File服务文件ID', + file_name VARCHAR(255) NOT NULL COMMENT '完成文件名称快照', + file_hash CHAR(64) NOT NULL COMMENT '完成文件SHA-256摘要', + content_type VARCHAR(128) NULL COMMENT '完成文件媒体类型', + size_bytes BIGINT UNSIGNED NOT NULL COMMENT '完成文件大小(字节)', + uploaded_by BIGINT UNSIGNED NOT NULL COMMENT '上传操作人ID', + uploaded_by_name VARCHAR(64) NULL COMMENT '上传操作人名称快照', + uploaded_at DATETIME(3) NOT NULL COMMENT '上传时间', + version INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '完成文件版本号', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '完成文件创建时间', + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '完成文件更新时间', PRIMARY KEY(id), UNIQUE KEY uk_customs_completion_source(source_document_id), CONSTRAINT fk_customs_completion_source FOREIGN KEY(source_document_id) REFERENCES fl_customs_customer_document(id) ) ENGINE=InnoDB COMMENT='报关完成文件当前版本'; CREATE TABLE IF NOT EXISTS fl_customs_completion_document_version ( - id BIGINT UNSIGNED NOT NULL, - completion_document_id BIGINT UNSIGNED NOT NULL, - document_version INT UNSIGNED NOT NULL, - file_id BIGINT UNSIGNED NOT NULL, - file_name VARCHAR(255) NOT NULL, - file_hash CHAR(64) NOT NULL, - content_type VARCHAR(128) NULL, - size_bytes BIGINT UNSIGNED NOT NULL, - operator_id BIGINT UNSIGNED NOT NULL, - operator_name VARCHAR(64) NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + id BIGINT UNSIGNED NOT NULL COMMENT '完成文件版本记录ID', + completion_document_id BIGINT UNSIGNED NOT NULL COMMENT '报关完成文件ID', + document_version INT UNSIGNED NOT NULL COMMENT '完成文件版本号', + file_id BIGINT UNSIGNED NOT NULL COMMENT '本版本File服务文件ID', + file_name VARCHAR(255) NOT NULL COMMENT '本版本文件名称快照', + file_hash CHAR(64) NOT NULL COMMENT '本版本文件SHA-256摘要', + content_type VARCHAR(128) NULL COMMENT '本版本文件媒体类型', + size_bytes BIGINT UNSIGNED NOT NULL COMMENT '本版本文件大小(字节)', + operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', + operator_name VARCHAR(64) NULL COMMENT '操作人名称快照', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '版本创建时间', PRIMARY KEY(id), UNIQUE KEY uk_customs_completion_version(completion_document_id,document_version), CONSTRAINT fk_customs_completion_version FOREIGN KEY(completion_document_id) REFERENCES fl_customs_completion_document(id) ) ENGINE=InnoDB COMMENT='报关完成文件不可变覆盖版本'; CREATE TABLE IF NOT EXISTS fl_customs_container_history ( - id BIGINT UNSIGNED NOT NULL, - customs_container_id BIGINT UNSIGNED NOT NULL, - action VARCHAR(40) NOT NULL, - from_status VARCHAR(40) NULL, - to_status VARCHAR(40) NULL, - remark VARCHAR(500) NULL, - operator_id BIGINT UNSIGNED NOT NULL, - operator_name VARCHAR(64) NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + id BIGINT UNSIGNED NOT NULL COMMENT '报关历史记录ID', + customs_container_id BIGINT UNSIGNED NOT NULL COMMENT '所属整柜报关聚合ID', + action VARCHAR(40) NOT NULL COMMENT '报关操作类型', + from_status VARCHAR(40) NULL COMMENT '变更前报关状态', + to_status VARCHAR(40) NULL COMMENT '变更后报关状态', + remark VARCHAR(500) NULL COMMENT '操作备注', + operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', + operator_name VARCHAR(64) NULL COMMENT '操作人名称快照', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '历史创建时间', PRIMARY KEY(id), KEY idx_customs_container_history(customs_container_id,created_at,id), CONSTRAINT fk_customs_container_history FOREIGN KEY(customs_container_id) REFERENCES fl_customs_container(id) ) ENGINE=InnoDB COMMENT='整柜报关状态与系统触发历史'; CREATE TABLE IF NOT EXISTS fl_customs_command ( - id BIGINT UNSIGNED NOT NULL, - actor_id BIGINT UNSIGNED NOT NULL, - action VARCHAR(80) NOT NULL, - idempotency_key VARCHAR(128) NOT NULL, - request_hash CHAR(64) NOT NULL, - status VARCHAR(16) NOT NULL, - result_id BIGINT UNSIGNED NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - completed_at DATETIME(3) NULL, + id BIGINT UNSIGNED NOT NULL COMMENT '报关幂等命令ID', + actor_id BIGINT UNSIGNED NOT NULL COMMENT '命令操作人ID', + action VARCHAR(80) NOT NULL COMMENT '命令动作类型', + idempotency_key VARCHAR(128) NOT NULL COMMENT '客户端幂等键', + request_hash CHAR(64) NOT NULL COMMENT '规范化请求SHA-256摘要', + status VARCHAR(16) NOT NULL COMMENT '命令状态:PROCESSING处理中、SUCCESS成功', + result_id BIGINT UNSIGNED NULL COMMENT '命令结果业务记录ID', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '命令创建时间', + completed_at DATETIME(3) NULL COMMENT '命令完成时间', PRIMARY KEY(id), UNIQUE KEY uk_customs_command(actor_id,action,idempotency_key), CONSTRAINT chk_customs_command_status CHECK(status IN('PROCESSING','SUCCESS')) diff --git a/firstleg/src/main/resources/db/phase3-container-overview.sql b/firstleg/src/main/resources/db/phase3-container-overview.sql index 0b85edca2..d721ddef3 100644 --- a/firstleg/src/main/resources/db/phase3-container-overview.sql +++ b/firstleg/src/main/resources/db/phase3-container-overview.sql @@ -1,10 +1,10 @@ USE baiyue_firstleg; CREATE TABLE IF NOT EXISTS fl_container_exception_history ( - id BIGINT UNSIGNED NOT NULL, container_booking_id BIGINT UNSIGNED NOT NULL, - action VARCHAR(16) NOT NULL COMMENT 'MARK/CANCEL', reason VARCHAR(500) NOT NULL, - operator_id BIGINT UNSIGNED NOT NULL, operator_name VARCHAR(64), + id BIGINT UNSIGNED NOT NULL COMMENT '货柜异常历史ID', container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '物理货柜ID', + action VARCHAR(16) NOT NULL COMMENT '操作类型:MARK标记异常、CANCEL取消异常', reason VARCHAR(500) NOT NULL COMMENT '异常原因', + operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', operator_name VARCHAR(64) COMMENT '操作人名称快照', operation_id VARCHAR(128) NOT NULL COMMENT '同一操作人幂等键', request_hash CHAR(64) NOT NULL COMMENT '请求摘要', - occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), + occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作发生时间', PRIMARY KEY(id), UNIQUE KEY uk_container_exception_operation(container_booking_id,operator_id,operation_id), KEY idx_container_exception_history(container_booking_id,occurred_at,id), CONSTRAINT fk_container_exception_booking FOREIGN KEY(container_booking_id) REFERENCES fl_container_booking(id), diff --git a/firstleg/src/main/resources/db/phase3-smart-loading-schema.sql b/firstleg/src/main/resources/db/phase3-smart-loading-schema.sql index 5f13bef87..00695df18 100644 --- a/firstleg/src/main/resources/db/phase3-smart-loading-schema.sql +++ b/firstleg/src/main/resources/db/phase3-smart-loading-schema.sql @@ -344,11 +344,11 @@ CREATE TABLE IF NOT EXISTS fl_container_document ( ) ENGINE=InnoDB COMMENT='平台货柜清关、DO与PU文件关联'; CREATE TABLE IF NOT EXISTS fl_container_exception_history ( - id BIGINT UNSIGNED NOT NULL, container_booking_id BIGINT UNSIGNED NOT NULL, - action VARCHAR(16) NOT NULL, reason VARCHAR(500) NOT NULL, - operator_id BIGINT UNSIGNED NOT NULL, operator_name VARCHAR(64) NULL, - operation_id VARCHAR(128) NOT NULL, request_hash CHAR(64) NOT NULL, - occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), PRIMARY KEY(id), + id BIGINT UNSIGNED NOT NULL COMMENT '货柜异常历史ID', container_booking_id BIGINT UNSIGNED NOT NULL COMMENT '物理货柜ID', + action VARCHAR(16) NOT NULL COMMENT '操作类型:MARK标记异常、CANCEL取消异常', reason VARCHAR(500) NOT NULL COMMENT '异常原因', + operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', operator_name VARCHAR(64) NULL COMMENT '操作人名称快照', + operation_id VARCHAR(128) NOT NULL COMMENT '同一操作人幂等键', request_hash CHAR(64) NOT NULL COMMENT '请求摘要', + occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '操作发生时间', PRIMARY KEY(id), UNIQUE KEY uk_container_exception_operation(container_booking_id,operator_id,operation_id), KEY idx_container_exception_history(container_booking_id,occurred_at,id), CONSTRAINT fk_container_exception_booking FOREIGN KEY(container_booking_id) REFERENCES fl_container_booking(id), @@ -587,7 +587,7 @@ CREATE TABLE IF NOT EXISTS fl_loading_completion_command ( pick_task_id BIGINT UNSIGNED NOT NULL COMMENT 'PDA任务ID', operation_id VARCHAR(128) NOT NULL COMMENT '客户端全局幂等操作ID', request_hash CHAR(64) NOT NULL COMMENT '规范化请求摘要', - command_status VARCHAR(16) NOT NULL COMMENT 'PROCESSING、RETRYABLE、FAILED、COMPLETED', + command_status VARCHAR(16) NOT NULL COMMENT '命令状态:PROCESSING处理中、RETRYABLE可重试、FAILED失败、COMPLETED已完成', expected_task_version INT UNSIGNED NOT NULL COMMENT '受理时客户端任务版本', remark VARCHAR(500) NULL COMMENT '完成备注', operator_id BIGINT UNSIGNED NOT NULL COMMENT '操作人ID', @@ -600,9 +600,9 @@ CREATE TABLE IF NOT EXISTS fl_loading_completion_command ( failure_code VARCHAR(32) NULL COMMENT '下游或业务错误码', failure_request_id VARCHAR(64) NULL COMMENT '下游请求ID', failure_trace_id VARCHAR(64) NULL COMMENT '下游链路ID', - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), - completed_at DATETIME(3) NULL, + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '命令创建时间', + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '命令更新时间', + completed_at DATETIME(3) NULL COMMENT '命令完成时间', PRIMARY KEY (id), UNIQUE KEY uk_loading_completion_operation (operation_id), KEY idx_loading_completion_dispatch (command_status,next_retry_at,lease_until), @@ -611,13 +611,13 @@ CREATE TABLE IF NOT EXISTS fl_loading_completion_command ( ) ENGINE=InnoDB COMMENT='PDA装柜完成可靠异步命令'; CREATE TABLE IF NOT EXISTS fl_loading_completion_checkpoint ( - command_id BIGINT UNSIGNED NOT NULL, - tenant_id BIGINT UNSIGNED NOT NULL, - inbound_id BIGINT UNSIGNED NOT NULL, - owner_sequence INT UNSIGNED NOT NULL, - checkpoint_stage VARCHAR(24) NOT NULL COMMENT 'READY、SETTLED、INBOUND_COMPLETED', - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), + command_id BIGINT UNSIGNED NOT NULL COMMENT '可靠装柜完成命令ID', + tenant_id BIGINT UNSIGNED NOT NULL COMMENT '入仓单客户ID', + inbound_id BIGINT UNSIGNED NOT NULL COMMENT '入仓单ID', + owner_sequence INT UNSIGNED NOT NULL COMMENT '稳定处理顺序', + checkpoint_stage VARCHAR(24) NOT NULL COMMENT '处理阶段:READY待处理、SETTLED资源已结算、INBOUND_COMPLETED入仓已完成', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '检查点创建时间', + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '检查点更新时间', PRIMARY KEY (command_id,tenant_id,inbound_id), KEY idx_loading_completion_owner (command_id,owner_sequence), CONSTRAINT fk_loading_completion_checkpoint_command FOREIGN KEY (command_id) diff --git a/order/src/main/resources/db/order.sql b/order/src/main/resources/db/order.sql index 91651e923..aa9d75cf2 100644 --- a/order/src/main/resources/db/order.sql +++ b/order/src/main/resources/db/order.sql @@ -255,12 +255,12 @@ CREATE TABLE IF NOT EXISTS ord_customer_address ( postal_code VARCHAR(20) NULL COMMENT '邮政编码', default_address TINYINT(1) NOT NULL DEFAULT 0 COMMENT '同类型默认地址', active TINYINT(1) NOT NULL DEFAULT 1 COMMENT '是否可选', - created_by BIGINT UNSIGNED NOT NULL, - created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), - updated_by BIGINT UNSIGNED NOT NULL, - updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3), - deleted TINYINT(1) NOT NULL DEFAULT 0, - version INT NOT NULL DEFAULT 0, + created_by BIGINT UNSIGNED NOT NULL COMMENT '创建人ID', + created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间', + updated_by BIGINT UNSIGNED NOT NULL COMMENT '最后修改人ID', + updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间', + deleted TINYINT(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除标记:0未删除、1已删除', + version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号', PRIMARY KEY (id), KEY idx_customer_address_scope (tenant_id, address_type, active, updated_at) ) ENGINE=InnoDB COMMENT='客户自有下单地址簿;不承载平台仓库主档';