PayrollManagementSystem/db/migration/V30__tplus_business_sync.sql
liuwenxin 1e53792ad6 feat(T+): 完成数据贯通与自动接入闭环
打通 T+ 快照、业务、发货、回款和核算准备链路,保留来源差异并提供待补状态。
新增业务自动接入任务、跨平台读取服务托管、权限复核、来源关联和前端核对页面。
补充迁移、隔离集成测试、浏览器模拟验收及角色授权边界修复。
2026-11-05 18:47:13 +08:00

46 lines
4.1 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- V30:业务接入与核算准备解耦;默认关闭自动接入,不执行回填或工资核算。
ALTER TABLE products MODIFY product_category VARCHAR(32) NULL COMMENT '核算分类,NULL=待确认';
ALTER TABLE customers MODIFY customer_type VARCHAR(32) NULL DEFAULT NULL COMMENT '核算客户类型,NULL=待确认';
ALTER TABLE business_items MODIFY product_category VARCHAR(32) NULL COMMENT '核算分类,NULL=待确认';
ALTER TABLE shipments MODIFY freight_amount DECIMAL(14,2) NULL DEFAULT NULL COMMENT '运费金额,NULL=来源待核实';
ALTER TABLE businesses ADD integration_json JSON NULL COMMENT 'T+接入范围及来源人员摘要,非核算快照';
ALTER TABLE tplus_source_heads ADD source_parent_id VARCHAR(64) NULL COMMENT '源父单据ID查询投影', ADD source_customer_id VARCHAR(64) NULL COMMENT '源客户ID查询投影', ADD source_date VARCHAR(10) NULL COMMENT '源业务日期查询投影';
UPDATE tplus_source_heads h JOIN tplus_sync_records r ON r.id=h.record_id SET h.source_parent_id=NULLIF(JSON_UNQUOTE(JSON_EXTRACT(r.payload_json,'$.source_parent_id')),'null'), h.source_customer_id=NULLIF(JSON_UNQUOTE(COALESCE(JSON_EXTRACT(r.payload_json,'$.idcustomer'),JSON_EXTRACT(r.payload_json,'$.idpartner'))),'null'), h.source_date=LEFT(NULLIF(JSON_UNQUOTE(COALESCE(JSON_EXTRACT(r.payload_json,'$.voucherdate'),JSON_EXTRACT(r.payload_json,'$.voucherDate'))),'null'),10);
CREATE INDEX idx_tplus_source_heads_parent ON tplus_source_heads(source_database,entity_type,source_parent_id);
CREATE INDEX idx_tplus_source_heads_customer_date ON tplus_source_heads(source_database,entity_type,source_customer_id,source_date);
CREATE INDEX idx_tplus_source_heads_date ON tplus_source_heads(source_database,entity_type,source_date,id);
CREATE TABLE tplus_business_sync_configs (
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
enabled INTEGER NOT NULL COMMENT '自动接入是否启用',
start_date DATE NOT NULL COMMENT '业务接入起点',
version INTEGER NOT NULL COMMENT '配置乐观版本',
updated_by BIGINT UNSIGNED NOT NULL COMMENT '授权启用账号',
last_error VARCHAR(64) COMMENT '后台接入暂停原因',
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT pk_tplus_business_sync_configs PRIMARY KEY (id),
CONSTRAINT uk_tplus_business_sync_configs_source UNIQUE (source_database)
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+业务自动接入设置' COLLATE utf8mb4_general_ci;
CREATE TABLE tplus_business_documents (
id BIGINT UNSIGNED NOT NULL COMMENT '主键ID' AUTO_INCREMENT,
source_database VARCHAR(128) NOT NULL COMMENT '源账套',
entity_type VARCHAR(32) NOT NULL COMMENT '源实体',
source_id VARCHAR(64) NOT NULL COMMENT '源单据或明细ID',
source_no VARCHAR(128) COMMENT '原始单号',
record_id BIGINT UNSIGNED NOT NULL COMMENT '当前观察到的源快照ID',
applied_record_id BIGINT UNSIGNED COMMENT '已接入的源快照ID',
fingerprint VARCHAR(64) COMMENT '已应用的业务字段指纹',
business_id BIGINT UNSIGNED COMMENT '关联业务ID',
target_id BIGINT UNSIGNED COMMENT '正式单据或明细ID',
status VARCHAR(24) NOT NULL COMMENT 'APPLIED/PENDING/CONFLICT/EXCLUDED',
reason VARCHAR(128) COMMENT '固定待补或差异编码',
data_json JSON NOT NULL COMMENT '最小必要来源与差异说明',
create_time DATETIME NOT NULL COMMENT '创建时间' DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME NOT NULL COMMENT '更新时间' DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT pk_tplus_business_documents PRIMARY KEY (id),
CONSTRAINT uk_tplus_business_documents_source_entity_id UNIQUE (source_database, entity_type, source_id)
)ENGINE=InnoDB CHARSET=utf8mb4 COMMENT='T+业务单据接入与差异账本' COLLATE utf8mb4_general_ci;
CREATE INDEX idx_tplus_business_documents_business_entity ON tplus_business_documents (business_id, entity_type, id);
CREATE INDEX idx_tplus_business_documents_source_status ON tplus_business_documents (source_database, status, id);