3 小时以前 b29d86d9ed34fd890eb14cb7a75f6ae4f7148865
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
-- 防伪防窜货管理:窜货预警 + 数据完整性校验 建表脚本(不使用 tenant_id)
-- 执行前请确认目标数据库为项目实际业务库,并逐条执行。
 
-- 1. 防窜货规则配置表(key-value 风格,预置判定粒度配置)
CREATE TABLE IF NOT EXISTS mes_trace_anti_config (
    id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
    config_key VARCHAR(64) NOT NULL COMMENT '配置项Key',
    config_value VARCHAR(255) NOT NULL COMMENT '配置值',
    remark VARCHAR(255) DEFAULT NULL COMMENT '配置说明',
    create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    creator VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    updater VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id),
    KEY idx_anti_config_key (config_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='防窜货规则配置';
 
-- 预置判定粒度:PROVINCE 跨省 / CITY 跨市
INSERT INTO mes_trace_anti_config (config_key, config_value, remark)
SELECT 'warning_level', 'PROVINCE', '窜货判定粒度:PROVINCE 跨省 / CITY 跨市'
WHERE NOT EXISTS (SELECT 1 FROM mes_trace_anti_config WHERE config_key = 'warning_level' AND deleted = b'0');
 
-- 2. 窜货预警记录表
CREATE TABLE IF NOT EXISTS mes_trace_cross_region_warning (
    id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
    warning_no VARCHAR(64) DEFAULT NULL COMMENT '预警编号',
    bag_code_id BIGINT DEFAULT NULL COMMENT '袋码编号',
    bag_code VARCHAR(64) DEFAULT NULL COMMENT '袋码',
    pallet_code_id BIGINT DEFAULT NULL COMMENT '托盘码编号',
    pallet_code VARCHAR(64) DEFAULT NULL COMMENT '托盘码',
    batch_id BIGINT DEFAULT NULL COMMENT '生产批次编号',
    batch_code VARCHAR(64) DEFAULT NULL COMMENT '批次号',
    item_id BIGINT DEFAULT NULL COMMENT '物料编号',
    item_code VARCHAR(64) DEFAULT NULL COMMENT '物料编码',
    item_name VARCHAR(128) DEFAULT NULL COMMENT '物料名称',
    sales_id BIGINT DEFAULT NULL COMMENT '销售出库单编号',
    sales_code VARCHAR(64) DEFAULT NULL COMMENT '出库单号',
    client_id BIGINT DEFAULT NULL COMMENT '经销商编号',
    client_name VARCHAR(128) DEFAULT NULL COMMENT '经销商名称',
    dealer_province VARCHAR(64) DEFAULT NULL COMMENT '经销商省份',
    dealer_city VARCHAR(64) DEFAULT NULL COMMENT '经销商城市',
    scan_province VARCHAR(64) DEFAULT NULL COMMENT '扫码省份',
    scan_city VARCHAR(64) DEFAULT NULL COMMENT '扫码城市',
    warning_type VARCHAR(32) DEFAULT NULL COMMENT '预警类型:CROSS_PROVINCE / CROSS_CITY',
    scan_event_id BIGINT DEFAULT NULL COMMENT '关联消费者扫码事件编号',
    status TINYINT NOT NULL DEFAULT 10 COMMENT '状态:10 待处理 / 20 已处理 / 30 误报',
    handle_user_id BIGINT DEFAULT NULL COMMENT '处理人编号',
    handle_time DATETIME DEFAULT NULL COMMENT '处理时间',
    handle_remark VARCHAR(255) DEFAULT NULL COMMENT '处理备注',
    event_time DATETIME NOT NULL COMMENT '预警产生时间',
    create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    creator VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    updater VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id),
    KEY idx_cross_region_status (status),
    KEY idx_cross_region_batch (batch_id),
    KEY idx_cross_region_bag (bag_code_id),
    KEY idx_cross_region_sales (sales_id),
    KEY idx_cross_region_event_time (event_time),
    KEY idx_cross_region_scan_province (scan_province)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='窜货预警记录';
 
-- 3. 数据完整性校验记录表
CREATE TABLE IF NOT EXISTS mes_trace_integrity_record (
    id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
    biz_type VARCHAR(32) NOT NULL COMMENT '业务类型:BATCH 批次 / SALES 销售出库 / SCAN 消费者扫码',
    biz_id BIGINT NOT NULL COMMENT '业务记录编号',
    biz_code VARCHAR(64) DEFAULT NULL COMMENT '业务编码(批次号/出库单号/追溯码)',
    content_hash CHAR(64) NOT NULL COMMENT '内容摘要 SHA-256',
    event_time DATETIME NOT NULL COMMENT '摘要生成时间',
    create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    creator VARCHAR(64) DEFAULT NULL COMMENT '创建者',
    updater VARCHAR(64) DEFAULT NULL COMMENT '更新者',
    deleted BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
    PRIMARY KEY (id),
    UNIQUE KEY uk_integrity_biz (biz_type, biz_id),
    KEY idx_integrity_event_time (event_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据完整性校验记录';