01_create_business_tables.sql 15.6 KB
-- Apple经销商ERP系统 - 业务表创建脚本
-- 按照数据库设计文档创建订单管理、出库查询、发票管理等相关表

-- =============================================
-- 1. 订单主表(t_order_main)
-- =============================================
CREATE TABLE t_order_main (
    order_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '订单ID',
    order_no VARCHAR(30) NOT NULL COMMENT '订单编号',
    dealer_code VARCHAR(20) NOT NULL COMMENT '经销商编码',
    dealer_name VARCHAR(100) NOT NULL COMMENT '经销商名称',
    order_date DATETIME NOT NULL COMMENT '订单创建日期',
    total_amount DECIMAL(18,2) NOT NULL COMMENT '订单总金额',
    rebate_amount DECIMAL(18,2) DEFAULT 0 COMMENT '订单返利金额',
    delivery_status TINYINT DEFAULT 0 COMMENT '出库状态(0-未出库/1-已出库)',
    invoice_status TINYINT DEFAULT 0 COMMENT '开票状态(0-未开票/1-已开票)',
    rebate_calc_flag TINYINT DEFAULT 0 COMMENT '返利计算状态(0-未计算/1-已计算)',
    data_source VARCHAR(20) COMMENT '数据来源',
    verify_status TINYINT DEFAULT 0 COMMENT '数据验证状态(0-待验证/1-验证通过/2-验证失败)',
    upload_time DATETIME COMMENT '数据上传时间',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单主表';

-- =============================================
-- 2. 订单商品明细表(t_order_item)
-- =============================================
CREATE TABLE t_order_item (
    item_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '订单商品明细ID',
    order_id BIGINT NOT NULL COMMENT '关联订单ID',
    order_no VARCHAR(30) NOT NULL COMMENT '订单编号',
    product_code VARCHAR(30) NOT NULL COMMENT '产品编码',
    product_name VARCHAR(50) NOT NULL COMMENT '产品名称',
    product_qty INT NOT NULL COMMENT '商品数量',
    unit_price DECIMAL(18,2) NOT NULL COMMENT '商品单价',
    item_amount DECIMAL(18,2) NOT NULL COMMENT '商品明细金额',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单商品明细表';

-- =============================================
-- 3. 出库主表(t_delivery_main)
-- =============================================
CREATE TABLE t_delivery_main (
    delivery_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '出库单ID',
    delivery_no VARCHAR(30) NOT NULL COMMENT '出库单编号',
    dealer_code VARCHAR(20) NOT NULL COMMENT '经销商编码',
    dealer_name VARCHAR(100) NOT NULL COMMENT '经销商名称',
    order_no VARCHAR(30) NOT NULL COMMENT '关联订单编号',
    delivery_date DATETIME NOT NULL COMMENT '出库日期',
    delivery_status TINYINT DEFAULT 0 COMMENT '出库状态(0-未出库/1-已出库)',
    warehouse_code VARCHAR(20) COMMENT '出库仓库编码',
    data_source VARCHAR(20) COMMENT '数据来源',
    upload_time DATETIME COMMENT '数据上传时间',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='出库主表';

-- =============================================
-- 4. 出库商品明细表(t_delivery_item)
-- =============================================
CREATE TABLE t_delivery_item (
    delivery_item_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '出库商品明细ID',
    delivery_id BIGINT NOT NULL COMMENT '关联出库单ID',
    delivery_no VARCHAR(30) NOT NULL COMMENT '出库单编号',
    order_no VARCHAR(30) NOT NULL COMMENT '关联订单编号',
    product_code VARCHAR(30) NOT NULL COMMENT '产品编码',
    product_name VARCHAR(50) NOT NULL COMMENT '产品名称',
    delivery_qty INT NOT NULL COMMENT '出库数量',
    delivery_price DECIMAL(18,2) NOT NULL COMMENT '出库单价',
    delivery_amount DECIMAL(18,2) NOT NULL COMMENT '出库明细金额',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='出库商品明细表';

-- =============================================
-- 5. 发票主表(t_invoice_main)
-- =============================================
CREATE TABLE t_invoice_main (
    invoice_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '发票ID',
    invoice_no VARCHAR(30) NOT NULL COMMENT '发票编号',
    order_no VARCHAR(30) NOT NULL COMMENT '关联订单编号',
    delivery_no VARCHAR(30) COMMENT '关联出库单编号',
    dealer_code VARCHAR(20) NOT NULL COMMENT '经销商编码',
    dealer_name VARCHAR(100) NOT NULL COMMENT '经销商名称',
    total_amount DECIMAL(18,2) NOT NULL COMMENT '发票总金额(含税)',
    invoice_date DATE NOT NULL COMMENT '开票日期',
    invoice_status TINYINT DEFAULT 0 COMMENT '发票状态(0-未开票/1-已开票)',
    tax_rate DECIMAL(5,2) DEFAULT 13.00 COMMENT '税率',
    data_source VARCHAR(20) COMMENT '数据来源',
    upload_time DATETIME COMMENT '数据上传时间',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='发票主表';

-- =============================================
-- 6. 发票商品明细表(t_invoice_item)
-- =============================================
CREATE TABLE t_invoice_item (
    invoice_item_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '发票商品明细ID',
    invoice_id BIGINT NOT NULL COMMENT '关联发票ID',
    invoice_no VARCHAR(30) NOT NULL COMMENT '发票编号',
    order_no VARCHAR(30) NOT NULL COMMENT '关联订单编号',
    product_code VARCHAR(30) NOT NULL COMMENT '产品编码',
    product_name VARCHAR(50) NOT NULL COMMENT '产品名称',
    invoice_qty INT NOT NULL COMMENT '开票数量',
    unit_price_no_tax DECIMAL(18,2) NOT NULL COMMENT '不含税单价',
    amount_no_tax DECIMAL(18,2) NOT NULL COMMENT '不含税明细金额',
    tax_amount DECIMAL(18,2) NOT NULL COMMENT '税额',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='发票商品明细表';

-- =============================================
-- 7. 返利台账明细表(t_rebate_detail)
-- =============================================
CREATE TABLE t_rebate_detail (
    rebate_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '返利明细ID',
    rebate_no VARCHAR(30) NOT NULL COMMENT '返利明细编号',
    order_no VARCHAR(30) NOT NULL COMMENT '关联订单编号',
    dealer_code VARCHAR(20) NOT NULL COMMENT '经销商编码',
    dealer_name VARCHAR(100) NOT NULL COMMENT '经销商名称',
    product_code VARCHAR(30) NOT NULL COMMENT '产品编码',
    rebate_amount DECIMAL(18,2) NOT NULL COMMENT '返利金额',
    rebate_date DATE NOT NULL COMMENT '返利记录日期',
    operate_type TINYINT NOT NULL COMMENT '操作类型(1-新增/2-扣减)',
    calc_flag TINYINT DEFAULT 0 COMMENT '返利计算状态(0-未计算/1-已计算)',
    t_index INT DEFAULT 0 COMMENT '序列号索引(用于生成RebateNo)',
    upload_time DATETIME COMMENT '数据上传时间',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='返利台账明细表';

-- =============================================
-- 8. 异常工单表(t_exception_workorder)
-- =============================================
CREATE TABLE t_exception_workorder (
    workorder_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '工单ID',
    workorder_no VARCHAR(30) NOT NULL COMMENT '工单编号',
    order_no VARCHAR(30) COMMENT '关联订单编号',
    dealer_code VARCHAR(20) COMMENT '经销商编码',
    dealer_name VARCHAR(100) COMMENT '经销商名称',
    exception_type TINYINT NOT NULL COMMENT '异常类型(1-逻辑验证异常/2-源头验证异常/3-交叉验证异常)',
    severity_level TINYINT NOT NULL COMMENT '严重程度(1-高/2-中/3-低)',
    workorder_status TINYINT DEFAULT 1 COMMENT '工单状态(1-待处理/2-处理中/3-已解决/4-已关闭)',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '工单创建时间',
    expect_complete_time DATETIME COMMENT '预计处理完成时间',
    handler_user VARCHAR(20) COMMENT '处理人',
    exception_desc VARCHAR(500) COMMENT '异常描述',
    handle_suggest VARCHAR(500) COMMENT '处理建议',
    data_source VARCHAR(20) COMMENT '数据来源',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='异常工单表';

-- =============================================
-- 9. 异常工单处理日志表(t_exception_workorder_log)
-- =============================================
CREATE TABLE t_exception_workorder_log (
    log_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '日志ID',
    workorder_id BIGINT NOT NULL COMMENT '关联工单ID',
    workorder_no VARCHAR(30) NOT NULL COMMENT '关联工单编号',
    handle_user VARCHAR(20) NOT NULL COMMENT '处理人',
    handle_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '处理时间',
    before_status TINYINT NOT NULL COMMENT '处理前状态',
    after_status TINYINT NOT NULL COMMENT '处理后状态',
    handle_opinion VARCHAR(500) COMMENT '处理意见',
    attach_url VARCHAR(200) COMMENT '附件URL',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='异常工单处理日志表';

-- =============================================
-- 10. 经销商信息表(t_dealer_info)
-- =============================================
CREATE TABLE t_dealer_info (
    dealer_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '经销商ID',
    dealer_code VARCHAR(20) NOT NULL UNIQUE COMMENT '经销商编码',
    dealer_name VARCHAR(100) NOT NULL COMMENT '经销商名称',
    credit_code VARCHAR(18) NOT NULL UNIQUE COMMENT '统一社会信用代码',
    dealer_level TINYINT NOT NULL COMMENT '经销商等级(1-一级经销商/2-二级经销商)',
    region VARCHAR(50) NOT NULL COMMENT '所在区域',
    contact_person VARCHAR(50) COMMENT '联系人',
    contact_phone VARCHAR(20) COMMENT '联系电话',
    cooperate_start_date DATE NOT NULL COMMENT '合作起始日期',
    cooperate_status TINYINT DEFAULT 1 COMMENT '合作状态(1-正常合作/2-暂停合作/3-终止合作)',
    business_license_url VARCHAR(200) COMMENT '营业执照URL',
    cooperation_agreement_url VARCHAR(200) COMMENT '合作协议URL',
    qualification_audit_status TINYINT DEFAULT 1 COMMENT '资质审核状态(1-待审核/2-审核通过/3-审核不通过)',
    audit_opinion VARCHAR(500) COMMENT '审核意见',
    total_rebate_amount DECIMAL(18,2) DEFAULT 0 COMMENT '累计应返金额',
    used_rebate_amount DECIMAL(18,2) DEFAULT 0 COMMENT '累计已返金额',
    pending_rebate_amount DECIMAL(18,2) DEFAULT 0 COMMENT '待返利总金额',
    last_rebate_update_time DATETIME COMMENT '最后返利更新时间',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='经销商信息表';

-- =============================================
-- 11. 产品信息表(t_product_info)
-- =============================================
CREATE TABLE t_product_info (
    product_id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '产品ID',
    product_code VARCHAR(30) NOT NULL UNIQUE COMMENT '产品编码',
    product_name VARCHAR(50) NOT NULL COMMENT '产品名称',
    product_model VARCHAR(20) NOT NULL COMMENT '产品型号',
    product_type VARCHAR(20) NOT NULL COMMENT '产品类别',
    storage_capacity VARCHAR(10) COMMENT '存储容量',
    color VARCHAR(10) COMMENT '产品颜色',
    product_img_url VARCHAR(200) COMMENT '产品图片URL',
    official_price DECIMAL(18,2) COMMENT '官方指导价',
    sale_status TINYINT DEFAULT 1 COMMENT '销售状态(0-下架/1-在售/2-预售)',
    rebate_flag TINYINT DEFAULT 1 COMMENT '是否参与返利(0-否/1-是)',
    sale_start_date DATE COMMENT '销售起始日期',
    sale_end_date DATE COMMENT '销售终止日期',
    remark VARCHAR(500) COMMENT '产品备注',
    create_by VARCHAR(64) DEFAULT '' COMMENT '创建者',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_by VARCHAR(64) DEFAULT '' COMMENT '更新者',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='产品信息表';