feat(wcs): persist transport orders and workflows

This commit is contained in:
zgw
2026-08-10 15:24:11 +08:00
parent f4ae3df382
commit 4696cdb950
14 changed files with 886 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
SET XACT_ABORT ON;
BEGIN TRANSACTION;
IF OBJECT_ID('dbo.wcs_transport_order', 'U') IS NULL
BEGIN
CREATE TABLE dbo.wcs_transport_order (
order_id varchar(64) NOT NULL PRIMARY KEY,
external_request_id varchar(128) NOT NULL,
order_type varchar(32) NOT NULL,
load_id varchar(128) NULL,
source_code varchar(128) NOT NULL,
destination_code varchar(128) NOT NULL,
priority int NOT NULL,
order_state varchar(32) NOT NULL,
workflow_id varchar(64) NULL,
result_code varchar(64) NULL,
state_reason nvarchar(512) NULL,
state_version bigint NOT NULL,
created_time datetime2(3) NOT NULL,
updated_time datetime2(3) NOT NULL,
CONSTRAINT uk_wcs_transport_order_external_request
UNIQUE (external_request_id)
);
END;
IF OBJECT_ID('dbo.wcs_workflow_instance', 'U') IS NULL
BEGIN
CREATE TABLE dbo.wcs_workflow_instance (
workflow_id varchar(64) NOT NULL PRIMARY KEY,
order_id varchar(64) NOT NULL,
workflow_state varchar(32) NOT NULL,
state_version bigint NOT NULL,
CONSTRAINT fk_wcs_workflow_order FOREIGN KEY (order_id)
REFERENCES dbo.wcs_transport_order(order_id),
CONSTRAINT uk_wcs_workflow_order UNIQUE (order_id)
);
END;
IF OBJECT_ID('dbo.wcs_task_step', 'U') IS NULL
BEGIN
CREATE TABLE dbo.wcs_task_step (
step_id varchar(128) NOT NULL PRIMARY KEY,
workflow_id varchar(64) NOT NULL,
step_key varchar(64) NOT NULL,
step_type varchar(32) NOT NULL,
required_flag bit NOT NULL,
step_state varchar(32) NOT NULL,
reason_code varchar(128) NULL,
vehicle_id varchar(64) NULL,
state_version bigint NOT NULL,
CONSTRAINT fk_wcs_task_step_workflow FOREIGN KEY (workflow_id)
REFERENCES dbo.wcs_workflow_instance(workflow_id),
CONSTRAINT uk_wcs_task_step_key UNIQUE (workflow_id, step_key)
);
END;
IF OBJECT_ID('dbo.wcs_task_dependency', 'U') IS NULL
BEGIN
CREATE TABLE dbo.wcs_task_dependency (
workflow_id varchar(64) NOT NULL,
step_key varchar(64) NOT NULL,
depends_on_step_key varchar(64) NOT NULL,
CONSTRAINT pk_wcs_task_dependency PRIMARY KEY (
workflow_id, step_key, depends_on_step_key),
CONSTRAINT fk_wcs_task_dependency_workflow FOREIGN KEY (workflow_id)
REFERENCES dbo.wcs_workflow_instance(workflow_id)
);
END;
IF OBJECT_ID('dbo.wcs_domain_event', 'U') IS NULL
BEGIN
CREATE TABLE dbo.wcs_domain_event (
event_id varchar(128) NOT NULL PRIMARY KEY,
aggregate_id varchar(64) NOT NULL,
event_sequence bigint NOT NULL,
event_type varchar(64) NOT NULL,
occurred_time datetime2(3) NOT NULL,
payload_json nvarchar(max) NULL,
published_flag bit NOT NULL CONSTRAINT df_wcs_domain_event_published DEFAULT (0),
CONSTRAINT uk_wcs_domain_event_sequence
UNIQUE (aggregate_id, event_sequence)
);
END;
COMMIT TRANSACTION;

View File

@@ -0,0 +1,19 @@
SET NOCOUNT ON;
SELECT name AS table_name
FROM sys.tables
WHERE name IN (
'wcs_transport_order',
'wcs_workflow_instance',
'wcs_task_step',
'wcs_task_dependency',
'wcs_domain_event'
)
ORDER BY name;
SELECT i.name AS unique_constraint_name
FROM sys.indexes i
JOIN sys.tables t ON t.object_id = i.object_id
WHERE t.name = 'wcs_transport_order'
AND i.name = 'uk_wcs_transport_order_external_request'
AND i.is_unique = 1;