298 lines
12 KiB
SQL
298 lines
12 KiB
SQL
SET XACT_ABORT ON;
|
|
BEGIN TRANSACTION;
|
|
|
|
IF OBJECT_ID('dbo.wcs_warehouse', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_warehouse (
|
|
warehouse_code varchar(64) NOT NULL PRIMARY KEY,
|
|
warehouse_name nvarchar(128) NOT NULL,
|
|
active_configuration_version bigint NULL,
|
|
state_version bigint NOT NULL CONSTRAINT df_wcs_warehouse_state_version DEFAULT (0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_floor', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_floor (
|
|
floor_id varchar(64) NOT NULL PRIMARY KEY,
|
|
warehouse_code varchar(64) NOT NULL,
|
|
floor_code varchar(64) NOT NULL,
|
|
floor_level int NOT NULL,
|
|
CONSTRAINT fk_wcs_floor_warehouse FOREIGN KEY (warehouse_code)
|
|
REFERENCES dbo.wcs_warehouse(warehouse_code),
|
|
CONSTRAINT uk_wcs_floor_code UNIQUE (warehouse_code, floor_code),
|
|
CONSTRAINT uk_wcs_floor_level UNIQUE (warehouse_code, floor_level)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_topology_version', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_topology_version (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
publication_state varchar(32) NOT NULL,
|
|
published_time datetime2(3) NULL,
|
|
snapshot_version bigint NOT NULL
|
|
CONSTRAINT df_wcs_topology_snapshot_version DEFAULT (0),
|
|
CONSTRAINT pk_wcs_topology_version PRIMARY KEY (
|
|
warehouse_code, topology_version),
|
|
CONSTRAINT fk_wcs_topology_version_warehouse FOREIGN KEY (warehouse_code)
|
|
REFERENCES dbo.wcs_warehouse(warehouse_code)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_topology_node', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_topology_node (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
node_id varchar(128) NOT NULL,
|
|
floor_id varchar(64) NOT NULL,
|
|
coordinate_x int NOT NULL,
|
|
coordinate_y int NOT NULL,
|
|
capacity int NOT NULL,
|
|
safe_wait_flag bit NOT NULL CONSTRAINT df_wcs_node_safe_wait DEFAULT (0),
|
|
safe_yield_flag bit NOT NULL CONSTRAINT df_wcs_node_safe_yield DEFAULT (0),
|
|
CONSTRAINT pk_wcs_topology_node PRIMARY KEY (
|
|
warehouse_code, topology_version, node_id),
|
|
CONSTRAINT fk_wcs_topology_node_version FOREIGN KEY (
|
|
warehouse_code, topology_version)
|
|
REFERENCES dbo.wcs_topology_version(warehouse_code, topology_version),
|
|
CONSTRAINT fk_wcs_topology_node_floor FOREIGN KEY (floor_id)
|
|
REFERENCES dbo.wcs_floor(floor_id),
|
|
CONSTRAINT ck_wcs_topology_node_capacity CHECK (capacity > 0),
|
|
CONSTRAINT uk_wcs_topology_node_coordinate UNIQUE (
|
|
warehouse_code, topology_version, floor_id, coordinate_x, coordinate_y)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_topology_edge', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_topology_edge (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
resource_key varchar(320) NOT NULL,
|
|
source_node_id varchar(128) NOT NULL,
|
|
target_node_id varchar(128) NOT NULL,
|
|
distance_cost int NOT NULL,
|
|
capacity int NOT NULL,
|
|
CONSTRAINT pk_wcs_topology_edge PRIMARY KEY (
|
|
warehouse_code, topology_version, resource_key),
|
|
CONSTRAINT fk_wcs_topology_edge_version FOREIGN KEY (
|
|
warehouse_code, topology_version)
|
|
REFERENCES dbo.wcs_topology_version(warehouse_code, topology_version),
|
|
CONSTRAINT ck_wcs_topology_edge_distance CHECK (distance_cost >= 0),
|
|
CONSTRAINT ck_wcs_topology_edge_capacity CHECK (capacity > 0),
|
|
CONSTRAINT ck_wcs_topology_edge_direction CHECK (
|
|
source_node_id <> target_node_id)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_traffic_zone', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_traffic_zone (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
zone_id varchar(128) NOT NULL,
|
|
zone_name nvarchar(128) NOT NULL,
|
|
coordination_mode varchar(32) NOT NULL,
|
|
CONSTRAINT pk_wcs_traffic_zone PRIMARY KEY (
|
|
warehouse_code, topology_version, zone_id),
|
|
CONSTRAINT fk_wcs_traffic_zone_version FOREIGN KEY (
|
|
warehouse_code, topology_version)
|
|
REFERENCES dbo.wcs_topology_version(warehouse_code, topology_version)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_resource_definition', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_resource_definition (
|
|
resource_key varchar(320) NOT NULL,
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
resource_type varchar(32) NOT NULL,
|
|
capacity int NOT NULL,
|
|
zone_id varchar(128) NULL,
|
|
CONSTRAINT pk_wcs_resource_definition PRIMARY KEY (
|
|
warehouse_code, topology_version, resource_key),
|
|
CONSTRAINT fk_wcs_resource_definition_version FOREIGN KEY (
|
|
warehouse_code, topology_version)
|
|
REFERENCES dbo.wcs_topology_version(warehouse_code, topology_version),
|
|
CONSTRAINT ck_wcs_resource_definition_capacity CHECK (capacity > 0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_device', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_device (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
device_id varchar(64) NOT NULL,
|
|
device_type varchar(32) NOT NULL,
|
|
floor_id varchar(64) NULL,
|
|
enabled_flag bit NOT NULL CONSTRAINT df_wcs_device_enabled DEFAULT (1),
|
|
CONSTRAINT pk_wcs_device PRIMARY KEY (
|
|
warehouse_code, topology_version, device_id),
|
|
CONSTRAINT fk_wcs_device_version FOREIGN KEY (
|
|
warehouse_code, topology_version)
|
|
REFERENCES dbo.wcs_topology_version(warehouse_code, topology_version),
|
|
CONSTRAINT fk_wcs_device_floor FOREIGN KEY (floor_id)
|
|
REFERENCES dbo.wcs_floor(floor_id)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_device_capability', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_device_capability (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
device_id varchar(64) NOT NULL,
|
|
capability_code varchar(64) NOT NULL,
|
|
CONSTRAINT pk_wcs_device_capability PRIMARY KEY (
|
|
warehouse_code, topology_version, device_id, capability_code),
|
|
CONSTRAINT fk_wcs_device_capability_device FOREIGN KEY (
|
|
warehouse_code, topology_version, device_id)
|
|
REFERENCES dbo.wcs_device(warehouse_code, topology_version, device_id)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_device_port', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_device_port (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
port_id varchar(64) NOT NULL,
|
|
device_id varchar(64) NOT NULL,
|
|
node_id varchar(128) NOT NULL,
|
|
port_role varchar(32) NOT NULL,
|
|
CONSTRAINT pk_wcs_device_port PRIMARY KEY (
|
|
warehouse_code, topology_version, port_id),
|
|
CONSTRAINT fk_wcs_device_port_device FOREIGN KEY (
|
|
warehouse_code, topology_version, device_id)
|
|
REFERENCES dbo.wcs_device(warehouse_code, topology_version, device_id)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_charger', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_charger (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
charger_id varchar(64) NOT NULL,
|
|
node_id varchar(128) NOT NULL,
|
|
enabled_flag bit NOT NULL CONSTRAINT df_wcs_charger_enabled DEFAULT (1),
|
|
CONSTRAINT pk_wcs_charger PRIMARY KEY (
|
|
warehouse_code, topology_version, charger_id),
|
|
CONSTRAINT fk_wcs_charger_version FOREIGN KEY (
|
|
warehouse_code, topology_version)
|
|
REFERENCES dbo.wcs_topology_version(warehouse_code, topology_version)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_vehicle_assignment', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_vehicle_assignment (
|
|
assignment_id varchar(128) NOT NULL PRIMARY KEY,
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
snapshot_version bigint NOT NULL,
|
|
order_id varchar(64) NOT NULL,
|
|
step_id varchar(128) NOT NULL,
|
|
vehicle_id varchar(64) NOT NULL,
|
|
fencing_token bigint NOT NULL,
|
|
assignment_state varchar(32) NOT NULL,
|
|
created_time datetime2(3) NOT NULL,
|
|
CONSTRAINT uk_wcs_vehicle_assignment_step UNIQUE (step_id),
|
|
CONSTRAINT ck_wcs_vehicle_assignment_fencing CHECK (fencing_token > 0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_route_plan', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_route_plan (
|
|
route_plan_id varchar(128) NOT NULL PRIMARY KEY,
|
|
assignment_id varchar(128) NOT NULL,
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
node_path_json nvarchar(max) NOT NULL,
|
|
resource_path_json nvarchar(max) NOT NULL,
|
|
distance_cost int NOT NULL,
|
|
turn_count int NOT NULL,
|
|
route_state varchar(32) NOT NULL,
|
|
created_time datetime2(3) NOT NULL,
|
|
CONSTRAINT fk_wcs_route_plan_assignment FOREIGN KEY (assignment_id)
|
|
REFERENCES dbo.wcs_vehicle_assignment(assignment_id),
|
|
CONSTRAINT uk_wcs_route_plan_assignment UNIQUE (assignment_id),
|
|
CONSTRAINT ck_wcs_route_plan_distance CHECK (distance_cost >= 0),
|
|
CONSTRAINT ck_wcs_route_plan_turns CHECK (turn_count >= 0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_resource_state', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_resource_state (
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
resource_key varchar(320) NOT NULL,
|
|
capacity int NOT NULL,
|
|
reserved_count int NOT NULL,
|
|
occupied_count int NOT NULL,
|
|
fencing_token bigint NOT NULL,
|
|
state_version bigint NOT NULL,
|
|
CONSTRAINT pk_wcs_resource_state PRIMARY KEY (
|
|
warehouse_code, topology_version, resource_key),
|
|
CONSTRAINT fk_wcs_resource_state_definition FOREIGN KEY (
|
|
warehouse_code, topology_version, resource_key)
|
|
REFERENCES dbo.wcs_resource_definition(
|
|
warehouse_code, topology_version, resource_key),
|
|
CONSTRAINT ck_wcs_resource_state_counts CHECK (
|
|
capacity > 0 AND reserved_count >= 0 AND occupied_count >= 0
|
|
AND reserved_count + occupied_count <= capacity),
|
|
CONSTRAINT ck_wcs_resource_state_fencing CHECK (fencing_token >= 0),
|
|
CONSTRAINT ck_wcs_resource_state_version CHECK (state_version >= 0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_resource_reservation', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_resource_reservation (
|
|
reservation_id varchar(128) NOT NULL,
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
resource_key varchar(320) NOT NULL,
|
|
order_id varchar(64) NOT NULL,
|
|
step_id varchar(128) NOT NULL,
|
|
vehicle_id varchar(64) NOT NULL,
|
|
reservation_state varchar(32) NOT NULL,
|
|
fencing_token bigint NOT NULL,
|
|
release_evidence_id varchar(128) NULL,
|
|
created_time datetime2(3) NOT NULL,
|
|
updated_time datetime2(3) NOT NULL,
|
|
CONSTRAINT pk_wcs_resource_reservation PRIMARY KEY (
|
|
reservation_id, resource_key),
|
|
CONSTRAINT fk_wcs_resource_reservation_state FOREIGN KEY (
|
|
warehouse_code, topology_version, resource_key)
|
|
REFERENCES dbo.wcs_resource_state(
|
|
warehouse_code, topology_version, resource_key),
|
|
CONSTRAINT ck_wcs_resource_reservation_fencing CHECK (fencing_token > 0)
|
|
);
|
|
END;
|
|
|
|
IF OBJECT_ID('dbo.wcs_traffic_decision_event', 'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.wcs_traffic_decision_event (
|
|
event_id varchar(128) NOT NULL PRIMARY KEY,
|
|
warehouse_code varchar(64) NOT NULL,
|
|
topology_version bigint NOT NULL,
|
|
snapshot_version bigint NOT NULL,
|
|
order_id varchar(64) NOT NULL,
|
|
step_id varchar(128) NOT NULL,
|
|
vehicle_id varchar(64) NULL,
|
|
decision_type varchar(16) NOT NULL,
|
|
reason_code varchar(128) NOT NULL,
|
|
occurred_time datetime2(3) NOT NULL
|
|
);
|
|
END;
|
|
|
|
COMMIT TRANSACTION;
|