63 lines
3.6 KiB
SQL
63 lines
3.6 KiB
SQL
-- 打印服务独占数据库,业务服务只保存打印任务逻辑ID。
|
||
CREATE DATABASE IF NOT EXISTS baiyue_print
|
||
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
|
||
USE baiyue_print;
|
||
|
||
CREATE TABLE IF NOT EXISTS print_template (
|
||
id BIGINT UNSIGNED NOT NULL COMMENT '模板ID(雪花ID)',
|
||
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '数据所属租户ID,平台模板使用平台租户ID',
|
||
template_code VARCHAR(64) NOT NULL COMMENT '模板编码',
|
||
template_name VARCHAR(128) NOT NULL COMMENT '模板名称',
|
||
template_type VARCHAR(32) NOT NULL COMMENT '模板类型',
|
||
content TEXT NOT NULL COMMENT '模板内容',
|
||
version_no INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '模板版本号',
|
||
status VARCHAR(24) NOT NULL DEFAULT 'ACTIVE' COMMENT '模板状态',
|
||
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 '逻辑删除标记',
|
||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_print_template_code (tenant_id, template_code, version_no),
|
||
KEY idx_print_template_status (tenant_id, status)
|
||
) ENGINE=InnoDB COMMENT='打印模板表';
|
||
|
||
CREATE TABLE IF NOT EXISTS print_job (
|
||
id BIGINT UNSIGNED NOT NULL COMMENT '打印任务ID(雪花ID)',
|
||
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '数据所属租户ID',
|
||
job_no VARCHAR(40) NOT NULL COMMENT '打印任务编号',
|
||
template_id BIGINT UNSIGNED NOT NULL COMMENT '打印模板逻辑ID',
|
||
business_type VARCHAR(32) NULL COMMENT '关联业务类型',
|
||
business_id VARCHAR(64) NULL COMMENT '关联业务逻辑ID',
|
||
printer_code VARCHAR(64) NULL COMMENT '目标打印机编码',
|
||
copies INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '打印份数',
|
||
payload_json JSON NOT NULL COMMENT '模板数据快照',
|
||
status VARCHAR(24) NOT NULL DEFAULT 'PENDING' COMMENT '任务状态',
|
||
output_file_id BIGINT UNSIGNED NULL COMMENT '生成文件的逻辑ID',
|
||
error_message VARCHAR(1000) NULL COMMENT '失败原因',
|
||
requested_by BIGINT UNSIGNED NOT NULL COMMENT '申请人ID',
|
||
requested_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '申请时间',
|
||
started_at DATETIME(3) NULL COMMENT '开始时间',
|
||
completed_at DATETIME(3) NULL COMMENT '完成时间',
|
||
updated_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
|
||
version INT NOT NULL DEFAULT 0 COMMENT '乐观锁版本号',
|
||
PRIMARY KEY (id),
|
||
UNIQUE KEY uk_print_job_no (tenant_id, job_no),
|
||
KEY idx_print_job_status (tenant_id, status, requested_at),
|
||
KEY idx_print_job_business (tenant_id, business_type, business_id)
|
||
) ENGINE=InnoDB COMMENT='打印任务表';
|
||
|
||
CREATE TABLE IF NOT EXISTS print_job_history (
|
||
id BIGINT UNSIGNED NOT NULL COMMENT '任务历史ID',
|
||
tenant_id BIGINT UNSIGNED NOT NULL COMMENT '数据所属租户ID',
|
||
print_job_id BIGINT UNSIGNED NOT NULL COMMENT '打印任务逻辑ID',
|
||
from_status VARCHAR(24) NULL COMMENT '变更前状态',
|
||
to_status VARCHAR(24) NOT NULL COMMENT '变更后状态',
|
||
message VARCHAR(500) NULL COMMENT '状态说明',
|
||
operator_id BIGINT UNSIGNED NULL COMMENT '操作人ID',
|
||
occurred_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '发生时间',
|
||
PRIMARY KEY (id),
|
||
KEY idx_print_history_job (tenant_id, print_job_id, occurred_at)
|
||
) ENGINE=InnoDB COMMENT='打印任务状态历史表';
|