feat(fleet): integrate costs quotes operations and in-transit handovers
This commit is contained in:
@@ -1212,6 +1212,138 @@ CREATE TABLE ll_fleet_trip_history (
|
||||
CONSTRAINT fk_fleet_trip_history FOREIGN KEY (trip_id) REFERENCES ll_fleet_trip(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输车次操作历史';
|
||||
|
||||
CREATE TABLE ll_fleet_trip_operations_record (
|
||||
id BIGINT NOT NULL COMMENT '出车实测历史主键',
|
||||
trip_no VARCHAR(64) NOT NULL COMMENT '车次业务编号',
|
||||
record_version BIGINT NOT NULL COMMENT '实测记录版本从一递增',
|
||||
details_json JSON NOT NULL COMMENT '实际里程英里油耗升与备注快照',
|
||||
reason VARCHAR(1000) NOT NULL COMMENT '实测更正说明',
|
||||
operator_id VARCHAR(64) NOT NULL COMMENT '实测操作人标识',
|
||||
request_key VARCHAR(128) NOT NULL COMMENT '实测保存幂等键',
|
||||
request_hash CHAR(64) NOT NULL COMMENT '实测请求内容摘要',
|
||||
occurred_at DATETIME(3) NOT NULL COMMENT '实测保存时间UTC',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_fleet_operations_version (trip_no,record_version),
|
||||
UNIQUE KEY uk_fleet_operations_request (trip_no,operator_id,request_key)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车次里程油耗不可变更正记录';
|
||||
|
||||
CREATE TABLE ll_fleet_trip_handover (
|
||||
id BIGINT NOT NULL COMMENT '内部主键',
|
||||
trip_id BIGINT NOT NULL COMMENT '所属车次',
|
||||
trip_version BIGINT NOT NULL COMMENT '交接对应车次历史版本',
|
||||
trip_no VARCHAR(32) NOT NULL COMMENT '车次业务编号',
|
||||
handover_no VARCHAR(32) NOT NULL COMMENT '交接业务编号',
|
||||
request_key VARCHAR(128) NOT NULL COMMENT '交接请求幂等键',
|
||||
request_hash CHAR(64) NOT NULL COMMENT '交接请求摘要',
|
||||
record_version BIGINT NOT NULL DEFAULT 0 COMMENT '资源结束并发版本',
|
||||
handed_over_at DATETIME(3) NOT NULL COMMENT '实际交接UTC时间',
|
||||
snapshot_json JSON NOT NULL COMMENT '不可变资源及剩余货物交接快照',
|
||||
vehicle_release_json JSON NULL COMMENT '原车辆任务结束及幂等结果',
|
||||
driver_release_json JSON NULL COMMENT '原司机任务结束及幂等结果',
|
||||
created_by VARCHAR(64) NOT NULL COMMENT '记录操作人',
|
||||
created_at DATETIME(3) NOT NULL COMMENT '记录UTC时间',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_fleet_handover_no (handover_no),
|
||||
UNIQUE KEY uk_fleet_handover_request (trip_id, request_key),
|
||||
UNIQUE KEY uk_fleet_handover_version (trip_id, trip_version),
|
||||
KEY idx_fleet_handover_page (trip_id, id),
|
||||
CONSTRAINT fk_fleet_handover_trip FOREIGN KEY (trip_id) REFERENCES ll_fleet_trip(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='在途车辆司机交接';
|
||||
|
||||
CREATE TABLE ll_fleet_finance_source (
|
||||
id BIGINT UNSIGNED NOT NULL COMMENT '来源提交主键',
|
||||
record_id BIGINT UNSIGNED NOT NULL COMMENT '车辆运维记录主键',
|
||||
source_version BIGINT UNSIGNED NOT NULL COMMENT '独立财务来源版本,从1递增',
|
||||
record_version BIGINT UNSIGNED NOT NULL COMMENT '提交时运维记录版本',
|
||||
operator_id VARCHAR(64) NOT NULL COMMENT '提交操作人标识',
|
||||
request_key VARCHAR(128) NOT NULL COMMENT '原请求幂等键',
|
||||
request_hash VARCHAR(71) NOT NULL COMMENT '规范请求摘要,含sha256前缀',
|
||||
event_id VARCHAR(128) NOT NULL COMMENT '关联公共Outbox事件ID',
|
||||
payload_json JSON NOT NULL COMMENT '不可变公司成本来源快照',
|
||||
created_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '提交时间UTC',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY uk_fleet_finance_source_version (record_id,source_version),
|
||||
UNIQUE KEY uk_fleet_finance_source_request (record_id,operator_id,request_key),
|
||||
UNIQUE KEY uk_fleet_finance_source_event (event_id),
|
||||
CONSTRAINT chk_fleet_finance_source_version CHECK (source_version>0)
|
||||
) ENGINE=InnoDB COMMENT='维修救援公司成本提交来源,不保存付款推定';
|
||||
|
||||
CREATE TABLE ll_fleet_quote (
|
||||
id BIGINT PRIMARY KEY COMMENT '报价记录主键',
|
||||
quote_no VARCHAR(64) NOT NULL COMMENT '报价业务编号',
|
||||
kind VARCHAR(16) NOT NULL COMMENT '报价用途采购或销售',
|
||||
party_id BIGINT NOT NULL COMMENT '供应商或客户主档标识',
|
||||
party_name VARCHAR(160) NOT NULL COMMENT '往来单位名称快照',
|
||||
origin_city VARCHAR(128) NOT NULL COMMENT '发货城市',
|
||||
destination_code VARCHAR(64) NOT NULL COMMENT '目的仓业务编码',
|
||||
valid_from DATE NOT NULL COMMENT '报价生效日期',
|
||||
valid_to DATE NOT NULL COMMENT '报价失效日期含当天',
|
||||
status VARCHAR(16) NOT NULL COMMENT '报价启停或删除状态',
|
||||
natural_key CHAR(64) NOT NULL COMMENT '报价组合去重摘要',
|
||||
details_json JSON NOT NULL COMMENT '完整报价明细快照',
|
||||
record_version BIGINT NOT NULL COMMENT '报价记录版本',
|
||||
create_key VARCHAR(128) NOT NULL COMMENT '创建幂等键',
|
||||
create_hash CHAR(64) NOT NULL COMMENT '创建请求含导入批次内容摘要',
|
||||
created_by VARCHAR(64) NOT NULL COMMENT '创建操作人标识',
|
||||
created_at DATETIME(3) NOT NULL COMMENT '创建时间UTC',
|
||||
updated_at DATETIME(3) NOT NULL COMMENT '更新时间UTC',
|
||||
UNIQUE KEY uk_fleet_quote_no (quote_no),
|
||||
UNIQUE KEY uk_fleet_quote_natural (natural_key),
|
||||
UNIQUE KEY uk_fleet_quote_create (created_by,create_key),
|
||||
KEY idx_fleet_quote_search (kind,status,valid_from,valid_to)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车辆采购与外接销售报价';
|
||||
|
||||
CREATE TABLE ll_fleet_quote_history (
|
||||
id BIGINT PRIMARY KEY COMMENT '报价历史主键',
|
||||
quote_id BIGINT NOT NULL COMMENT '报价记录标识',
|
||||
record_version BIGINT NOT NULL COMMENT '报价记录版本',
|
||||
action VARCHAR(24) NOT NULL COMMENT '报价操作类型',
|
||||
operator_id VARCHAR(64) NOT NULL COMMENT '操作人标识',
|
||||
occurred_at DATETIME(3) NOT NULL COMMENT '操作时间UTC',
|
||||
snapshot_json JSON NOT NULL COMMENT '报价完整版本快照',
|
||||
UNIQUE KEY uk_fleet_quote_history_version (quote_id,record_version)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车辆报价不可变版本历史';
|
||||
|
||||
CREATE TABLE ll_fleet_trip_cost (
|
||||
id BIGINT NOT NULL COMMENT '内部主键',
|
||||
trip_id BIGINT NOT NULL COMMENT '车次内部引用',
|
||||
cost_no VARCHAR(32) NOT NULL COMMENT '车次成本业务编号',
|
||||
category VARCHAR(16) NOT NULL COMMENT '直接成本类别FUEL/DRIVER/TOLL/PARKING/OTHER',
|
||||
currency VARCHAR(3) NOT NULL COMMENT '原始成本币种CNY/USD,不混币汇总',
|
||||
amount DECIMAL(14,2) NOT NULL COMMENT '运营登记金额,不代表付款',
|
||||
incurred_at DATETIME(3) NOT NULL COMMENT '实际费用发生UTC时间',
|
||||
remark VARCHAR(1000) NULL COMMENT '费用备注',
|
||||
record_version BIGINT NOT NULL COMMENT '成本记录版本',
|
||||
request_key VARCHAR(128) NOT NULL COMMENT '创建幂等键',
|
||||
request_hash CHAR(64) NOT NULL COMMENT '创建请求摘要',
|
||||
created_by VARCHAR(64) NOT NULL COMMENT '登记人',
|
||||
updated_by VARCHAR(64) NOT NULL COMMENT '最近更正人',
|
||||
created_at DATETIME(3) NOT NULL COMMENT '登记UTC时间',
|
||||
updated_at DATETIME(3) NOT NULL COMMENT '更正UTC时间',
|
||||
PRIMARY KEY(id),
|
||||
UNIQUE KEY uk_fleet_trip_cost_no(cost_no),
|
||||
UNIQUE KEY uk_fleet_trip_cost_request(trip_id,created_by,request_key),
|
||||
KEY idx_fleet_trip_cost_page(trip_id,incurred_at,id),
|
||||
CONSTRAINT fk_fleet_trip_cost_trip FOREIGN KEY(trip_id) REFERENCES ll_fleet_trip(id),
|
||||
CONSTRAINT ck_fleet_trip_cost_amount CHECK(amount>=0),
|
||||
CONSTRAINT ck_fleet_trip_cost_currency CHECK(currency IN ('CNY','USD')),
|
||||
CONSTRAINT ck_fleet_trip_cost_category CHECK(category IN ('FUEL','DRIVER','TOLL','PARKING','OTHER'))
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车次直接运营成本,不生成客户账单或付款';
|
||||
|
||||
CREATE TABLE ll_fleet_trip_cost_history (
|
||||
id BIGINT NOT NULL COMMENT '内部主键',
|
||||
cost_id BIGINT NOT NULL COMMENT '成本记录内部引用',
|
||||
record_version BIGINT NOT NULL COMMENT '成本更正后版本',
|
||||
action VARCHAR(16) NOT NULL COMMENT '成本操作CREATE/UPDATE',
|
||||
reason VARCHAR(1000) NULL COMMENT '登记或更正说明',
|
||||
operator_id VARCHAR(64) NOT NULL COMMENT '操作人',
|
||||
occurred_at DATETIME(3) NOT NULL COMMENT '操作UTC时间',
|
||||
snapshot_json JSON NOT NULL COMMENT '成本与当时整趟汇总及分摊快照',
|
||||
PRIMARY KEY(id),
|
||||
UNIQUE KEY uk_fleet_trip_cost_history(cost_id,record_version),
|
||||
CONSTRAINT fk_fleet_trip_cost_history FOREIGN KEY(cost_id) REFERENCES ll_fleet_trip_cost(id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车次成本不可变更正历史';
|
||||
|
||||
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='locked_at'), 'SELECT 1', 'ALTER TABLE ll_event_outbox ADD COLUMN locked_at DATETIME(3) NULL COMMENT ''投递租约获取时间'' AFTER published_at'));
|
||||
PREPARE ll_outbox_lease_stmt FROM @ddl; EXECUTE ll_outbox_lease_stmt; DEALLOCATE PREPARE ll_outbox_lease_stmt;
|
||||
SET @ddl = (SELECT IF(EXISTS (SELECT 1 FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='ll_event_outbox' AND column_name='locked_by'), 'SELECT 1', 'ALTER TABLE ll_event_outbox ADD COLUMN locked_by VARCHAR(128) NULL COMMENT ''投递租约持有者'' AFTER locked_at'));
|
||||
|
||||
Reference in New Issue
Block a user