CREATE TABLE `tms_customer_info`
(
    `id`                  BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `customer_type`       TINYINT(1)   NOT NULL COMMENT '客户类型：1=普通客户；2=VIP客户；3=集团内企业；4=其他',
    `customer_short_name` VARCHAR(100) NOT NULL COMMENT '客户简称',
    `customer_code`       VARCHAR(100) NOT NULL COMMENT '客户编号',
    `customer_full_name`  VARCHAR(200) NOT NULL COMMENT '客户全称',
    `business_license_no` VARCHAR(100) NOT NULL COMMENT '经营登记证件号码',
    `address`             VARCHAR(500)          DEFAULT NULL COMMENT '地址',

    `contact_name`        VARCHAR(100) NOT NULL COMMENT '联系人姓名',
    `contact_phone`       VARCHAR(50)           DEFAULT NULL COMMENT '联系人电话',
    `contact_email`       VARCHAR(100)          DEFAULT NULL COMMENT '联系人邮箱',

    `sign_company`        VARCHAR(200) NOT NULL COMMENT '签约公司',
    `biz_contact_name`    VARCHAR(100) NOT NULL COMMENT '商务对接人名称',
    `biz_contact_phone`   VARCHAR(50)  NOT NULL COMMENT '商务对接人电话',
    `biz_contact_email`   VARCHAR(100)          DEFAULT NULL COMMENT '商务对接人邮箱',

    `credit_rating`       TINYINT(1)            DEFAULT NULL COMMENT '客户信用评级（评级模块自动填写）',
    `credit_amount`       DECIMAL(18, 2)        DEFAULT NULL COMMENT '信用额度（金额）（评级模块自动填写）',
    `credit_order_limit`  INT(11)               DEFAULT NULL COMMENT '信用额度（单量）（评级模块自动填写）',

    `business_status`     TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '经营状态：0=正常经营；1=暂停经营；2=终止经营',
    `contract_status`     TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '合同状态：0=正常；1=临期；2=已超期',
    `data_status`         TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '数据状态：0=草稿；1=审核通过；2=已作废',

    `create_time`         DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time`         DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`              VARCHAR(1000)         DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_customer_code` (`customer_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='客户信息表';

-- ========================================
-- 1. 创建收发货人表 tms_consignor
-- ========================================
CREATE TABLE `tms_consignor`
(
    `id`                      BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `consignor_code`          VARCHAR(100) NOT NULL COMMENT '收发货人编码',
    `consignor_name`          VARCHAR(200) NOT NULL COMMENT '收发货人名称',
    `customer_id`             BIGINT(20)   NOT NULL COMMENT '所属客户（关联客户管理）',
    `customer_sys_code`       VARCHAR(100) NOT NULL COMMENT '客户系统编码（关联客户管理）',
    `consignor_type`          TINYINT(1)   NOT NULL COMMENT '收发货人类型：0=站点，1=工厂，2=码头，3=工地，4=门店，5=机场，6=经销商，7=车站',

    `contact_name`            VARCHAR(100) NOT NULL COMMENT '联系人姓名',
    `contact_phone`           VARCHAR(50)           DEFAULT NULL COMMENT '联系人电话',
    `contact_email`           VARCHAR(100)          DEFAULT NULL COMMENT '联系人邮箱',

    `admin_region_id`         BIGINT(20)   NOT NULL COMMENT '行政区域（关联行政区域管理）',
    `address_detail`          VARCHAR(500)          DEFAULT NULL COMMENT '详细地址',
    `dispatch_transport_area` VARCHAR(200) NOT NULL COMMENT '调度单运输地',
    `map_location`            VARCHAR(50)           DEFAULT NULL COMMENT '地图位置（经纬度）',

    `status`                  TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态：0=正常，1=停用',

    `create_by`               VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`             DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`               VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`             DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`                  VARCHAR(1000)         DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_consignor_code` (`consignor_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='收发货人管理表';


CREATE TABLE `tms_service_provider`
(
    `id`                 bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `service_code`       varchar(50)  NOT NULL COMMENT '服务商编码，系统自动生成，字母SP开头+5位流水号，不可重复',
    `service_name`       varchar(200) NOT NULL COMMENT '服务商全称',
    `service_short_name` varchar(100) NOT NULL COMMENT '服务商简称',
    `service_type`       tinyint(1)   NOT NULL COMMENT '服务类型（0=中港运输，1=中澳运输，2=国内运输，支持多选）',
    `address`            text COMMENT '地址',
    `license_number`     varchar(100)          DEFAULT NULL COMMENT '经营登记证件号码',
    `business_status`    tinyint(1)   NOT NULL DEFAULT 0 COMMENT '经营状态（0=正常经营；1=暂停经营；2=终止经营）',
    `is_transport`       tinyint(1)   NOT NULL DEFAULT 0 COMMENT '是否运输服务商（0=是，1=否）',
    `is_storage`         tinyint(1)   NOT NULL DEFAULT 0 COMMENT '是否仓储服务商（0=是，1=否）',
    `is_express`         tinyint(1)   NOT NULL DEFAULT 0 COMMENT '是否快递服务商（0=是，1=否）',
    `contact_name`       varchar(100) NOT NULL COMMENT '联系人姓名',
    `contact_phone`      varchar(50)           DEFAULT NULL COMMENT '联系人电话',
    `contact_email`      varchar(100)          DEFAULT NULL COMMENT '联系人邮箱',
    `status`             tinyint(1)   NOT NULL DEFAULT 0 COMMENT '状态（0=正常，1=停用）',
    `create_by`          varchar(50)           DEFAULT NULL COMMENT '创建人，新增时自动填写',
    `create_time`        datetime              DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`          varchar(50)           DEFAULT NULL COMMENT '更新人，新增或修改时自动更新',
    `update_time`        datetime              DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增或修改时自动更新',
    `remark`             text COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_service_code` (`service_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='服务商信息表';


CREATE TABLE `tms_region`
(
    `id`                 BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `level`              TINYINT(1)   NOT NULL COMMENT '级别：0=国家，1=省份，2=城市，3=区县，4=乡镇',
    `region_code`        VARCHAR(20)  NOT NULL COMMENT '行政区域编码',
    `region_name`        VARCHAR(100) NOT NULL COMMENT '行政区域名称',
    `postal_code`        VARCHAR(20)           DEFAULT NULL COMMENT '邮编',
    `name_tree`          VARCHAR(500)          DEFAULT NULL COMMENT '名称树',
    `parent_region_code` VARCHAR(20)           DEFAULT NULL COMMENT '上级行政区域编码',
    `sort_order`         INT(5)       NOT NULL DEFAULT 0 COMMENT '排序',
    `status`             TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态：0=正常，1=停用',

    `create_by`          VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`        DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`          VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`        DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`             VARCHAR(1000)         DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_region_code` (`region_code`),
    KEY `idx_parent_region_code` (`parent_region_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='行政区域';


CREATE TABLE `tms_vehicle`
(
    `id`                          BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `system_code`                 VARCHAR(100) NOT NULL COMMENT '系统编号，新增时自动填写',
    `service_provider_id`         BIGINT(20)   NOT NULL COMMENT '车辆服务商（关联服务商信息管理）',
    `vehicle_type`                VARCHAR(50)  NOT NULL COMMENT '车辆类型',
    `internal_code`               VARCHAR(100)          DEFAULT NULL COMMENT '车辆内部编码',
    `license_plate`               VARCHAR(50)  NOT NULL COMMENT '车牌号',
    `license_hk`                  VARCHAR(50)           DEFAULT NULL COMMENT '香港牌照',
    `license_mo`                  VARCHAR(50)           DEFAULT NULL COMMENT '澳门牌照',
    `license_color`               VARCHAR(20)           DEFAULT NULL COMMENT '牌照颜色',
    `owner`                       VARCHAR(100)          DEFAULT NULL COMMENT '车主',

    `is_blacklist`                TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '是否黑名单：0=是，1=否，默认为否',
    `is_customs_control`          TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '是否海关监管：0=是，1=否，默认为否',
    `is_trailer`                  TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '是否挂车：0=是，1=否',

    `main_driver`                 VARCHAR(100) NOT NULL COMMENT '主驾驶员',
    `main_driver_phone`           VARCHAR(50)           DEFAULT NULL COMMENT '主驾驶员联系方式',
    `assistant_driver`            VARCHAR(100)          DEFAULT NULL COMMENT '副驾驶员',
    `assistant_driver_phone`      VARCHAR(50)           DEFAULT NULL COMMENT '副驾驶员联系方式',

    `has_task`                    TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '是否有任务：0=是，1=否，由调度单模块数据自动判断',
    `vehicle_usage_status`        TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '车辆使用状态：0=空闲，1=使用中，由调度单模块数据自动判断',

    `body_color`                  VARCHAR(50)           DEFAULT NULL COMMENT '车身颜色',
    `frame_number`                VARCHAR(50)           DEFAULT NULL COMMENT '车架号',
    `engine_number`               VARCHAR(50)           DEFAULT NULL COMMENT '发动机号码',
    `energy_type`                 VARCHAR(50)           DEFAULT NULL COMMENT '能源类型',

    `empty_load_fuel`             DOUBLE                DEFAULT NULL COMMENT '空载油耗（L/Km）',
    `full_load_fuel`              DOUBLE                DEFAULT NULL COMMENT '重载油耗（L/Km）',
    `purchase_date`               DATE                  DEFAULT NULL COMMENT '购买日期',
    `purchase_price`              DECIMAL(10, 2)        DEFAULT NULL COMMENT '车辆购置价（万元）',
    `mandatory_scrap_date`        DATE                  DEFAULT NULL COMMENT '强制报废日期',
    `last_annual_inspection`      DATE                  DEFAULT NULL COMMENT '上次年审日期',
    `commercial_insurance_expiry` DATE                  DEFAULT NULL COMMENT '商业险截止日期',
    `traffic_insurance_expiry`    DATE                  DEFAULT NULL COMMENT '交强险截止日期',

    `actual_length`               DOUBLE                DEFAULT NULL COMMENT '实际长（mm）',
    `actual_width`                DOUBLE                DEFAULT NULL COMMENT '实际宽（mm）',
    `actual_height`               DOUBLE                DEFAULT NULL COMMENT '实际高（mm）',
    `load_volume`                 DOUBLE                DEFAULT NULL COMMENT '装载体积（m³）',
    `load_weight`                 DOUBLE                DEFAULT NULL COMMENT '装载重量（Kg）',
    `emission_standard`           VARCHAR(50)           DEFAULT NULL COMMENT '排放标准',
    `engine_power`                VARCHAR(50)           DEFAULT NULL COMMENT '发动机功率',

    `status`                      TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态：0=正常，1=停用',

    `create_by`                   VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`                 DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`                   VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`                 DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`                      VARCHAR(1000)         DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_system_code` (`system_code`),
    KEY `idx_service_provider_id` (`service_provider_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='车辆管理表';
CREATE TABLE `tms_shelf`
(
    `id`                        BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `system_code`               VARCHAR(100) NOT NULL COMMENT '系统编号，新增时自动填写',
    `shelf_code`                VARCHAR(100) NOT NULL COMMENT '托架编号，唯一标识',
    `shelf_type`                TINYINT(1)   NOT NULL COMMENT '托架类型（字典：如平架、框架等）',
    `owner_team_id`             BIGINT(20)   NOT NULL COMMENT '产权归属（关联车队信息管理）',
    `manufacturer`              VARCHAR(200)          DEFAULT NULL COMMENT '生产厂商',
    `manufacture_date`          DATE                  DEFAULT NULL COMMENT '生产日期',

    `length_mm`                 DOUBLE                DEFAULT NULL COMMENT '托架长度（mm）',
    `width_mm`                  DOUBLE                DEFAULT NULL COMMENT '托架宽度（mm）',
    `height_mm`                 DOUBLE                DEFAULT NULL COMMENT '托架高度（mm）',
    `max_load_kg`               DOUBLE       NOT NULL COMMENT '承载重量（Kg）',
    `compatible_container_type` TINYINT(1)   NOT NULL COMMENT '适配集装箱类型（字典：20尺、40尺等）',

    `is_in_use`                 TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '是否在用：0=是，1=否',
    `maintenance_status`        TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '维护状态：0=正常，1=维护中，2=报废',
    `last_maintenance_date`     DATE                  DEFAULT NULL COMMENT '最近维护日期',
    `next_maintenance_date`     DATE                  DEFAULT NULL COMMENT '下次维护日期',

    `status`                    TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态：0=正常，1=停用',

    `create_by`                 VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`               DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`                 VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`               DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`                    VARCHAR(1000)         DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_shelf_code` (`shelf_code`),
    KEY `idx_owner_team_id` (`owner_team_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='托架管理表';


CREATE TABLE `tms_container`
(
    `id`                    BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `system_code`           VARCHAR(100) NOT NULL COMMENT '系统编号，新增时自动填写',
    `container_code`        VARCHAR(100) NOT NULL COMMENT '集装箱号，唯一标识',
    `container_use_type`    TINYINT(1)   NOT NULL COMMENT '集装箱用途类型（字典：通用干货箱、冷藏箱、开顶箱、框架箱）',
    `container_size`        TINYINT(1)   NOT NULL COMMENT '箱型（字典：20尺、40尺）',
    `owner_team_id`         BIGINT(20)   NOT NULL COMMENT '产权归属（关联车队信息管理）',
    `manufacturer`          VARCHAR(200)          DEFAULT NULL COMMENT '生产厂商',
    `manufacture_date`      DATE                  DEFAULT NULL COMMENT '生产日期',

    `length_mm`             DOUBLE                DEFAULT NULL COMMENT '集装箱长度（mm）',
    `width_mm`              DOUBLE                DEFAULT NULL COMMENT '集装箱宽度（mm）',
    `height_mm`             DOUBLE                DEFAULT NULL COMMENT '集装箱高度（mm）',
    `max_total_weight_kg`   DOUBLE                DEFAULT NULL COMMENT '最大总重（kg）',
    `max_load_kg`           DOUBLE                DEFAULT NULL COMMENT '最大载重（kg）',
    `volume_m3`             DOUBLE                DEFAULT NULL COMMENT '容积（m³）',

    `is_in_use`             TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '是否在用：0=是，1=否',
    `maintenance_status`    TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '维护状态：0=正常，1=维护中，2=报废',
    `last_maintenance_date` DATE                  DEFAULT NULL COMMENT '最近维护日期',
    `next_maintenance_date` DATE                  DEFAULT NULL COMMENT '下次维护日期',

    `status`                TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态：0=正常，1=停用',

    `create_by`             VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`           DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`             VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`           DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`                VARCHAR(1000)         DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_container_code` (`container_code`),
    KEY `idx_owner_team_id` (`owner_team_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='集装箱管理表';


CREATE TABLE `tms_driver`
(
    `id`                   BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `system_code`          VARCHAR(100) NOT NULL COMMENT '系统编号，新增时自动填写',
    `vehicle_provider_id`  BIGINT(20)   NOT NULL COMMENT '车辆服务商',
    `driver_name`          VARCHAR(100) NOT NULL COMMENT '驾驶员姓名',
    `mobile`               VARCHAR(20)  NOT NULL COMMENT '手机',
    `email`                VARCHAR(100)          DEFAULT NULL COMMENT '邮箱',
    `license_type`         TINYINT(1)   NOT NULL COMMENT '准驾车型（字典）',
    `license_number`       VARCHAR(50)  NOT NULL COMMENT '驾驶证号',
    `license_issue_date`   DATE                  DEFAULT NULL COMMENT '驾驶证领取日期',
    `license_valid_period` VARCHAR(50)           DEFAULT NULL COMMENT '驾驶证有效期（时间段）',
    `license_attachment`   VARCHAR(500)          DEFAULT NULL COMMENT '驾驶证凭证链接',
    `current_vehicle_code` VARCHAR(100)          DEFAULT NULL COMMENT '当前绑定车辆',

    `status`               TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态：0=正常，1=停用',

    `create_by`            VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`            VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`               VARCHAR(1000)         DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`id`),
    KEY `idx_vehicle_provider_id` (`vehicle_provider_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='驾驶员信息表';


CREATE TABLE `tms_plan_order`
(
    `id`                   BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',

    `plan_code`            VARCHAR(100) NOT NULL COMMENT '计划单号，系统自动生成唯一编号',
    `plan_name`            VARCHAR(100) NOT NULL COMMENT '计划单名称',
    `customer_id`          BIGINT(20)   NOT NULL COMMENT '客户（关联客户管理）',
    `project_id`           BIGINT(20)            DEFAULT NULL COMMENT '关联项目（关联项目信息管理）',
    `contract_id`          BIGINT(20)            DEFAULT NULL COMMENT '关联合同（关联合同信息）',
    `order_type`           TINYINT(1)   NOT NULL COMMENT '订单类型（字典）',
    `sign_type`            TINYINT(1)   NOT NULL COMMENT '签收类型（字典）',
    `vehicle_provider_id`  BIGINT(20)   NOT NULL COMMENT '车辆服务商',
    `is_urgent`            TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '是否紧急，0=是，1=否，默认否',

    `shipper_id`           BIGINT(20)   NOT NULL COMMENT '发货人（关联收发货人信息）',
    `shipper_mobile`       VARCHAR(20)           DEFAULT NULL COMMENT '发货人手机号',
    `shipper_address`      VARCHAR(500)          DEFAULT NULL COMMENT '发货人地址',
    `shipper_region_code`  VARCHAR(50)           DEFAULT NULL COMMENT '发货行政区域',

    `receiver_id`          BIGINT(20)   NOT NULL COMMENT '收货人（关联收发货人信息）',
    `receiver_mobile`      VARCHAR(20)           DEFAULT NULL COMMENT '收货人手机号',
    `receiver_address`     VARCHAR(500)          DEFAULT NULL COMMENT '收货人地址',
    `receiver_region_code` VARCHAR(50)           DEFAULT NULL COMMENT '收货行政区域',

    `vehicle_type_ids`     VARCHAR(100)          DEFAULT NULL COMMENT '适用车型（多选字典，关联运输工具类型管理）',

    `plan_start_time`      DATETIME              DEFAULT NULL COMMENT '计划开始时间',
    `plan_end_time`        DATETIME              DEFAULT NULL COMMENT '计划结束时间',
    `plan_total_count`     INT(11)               DEFAULT NULL COMMENT '计划车次总数',
    `allow_over_dispatch`  TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '是否允许超派，0=否，1=是',
    `required_load_time`   DATETIME              DEFAULT NULL COMMENT '要求装货时间',
    `required_unload_time` DATETIME              DEFAULT NULL COMMENT '要求卸货时间',

    `transport_type`       TINYINT(1)            DEFAULT NULL COMMENT '运输方式（字典）0=汽运，1=海运，2=空运，3=河运，4=铁路，5=联运',
    `load_method`          TINYINT(1)            DEFAULT NULL COMMENT '配载方式（字典）0=整柜，1=整车，2=拼车，3=散柜',
    `status`               TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态（字典）0=草稿，1=待确认，2=执行中，4=已完成，5=作废',

    `create_by`            VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`            VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`               VARCHAR(1000)         DEFAULT NULL COMMENT '备注',

    PRIMARY KEY (`id`),
    KEY `idx_customer_id` (`customer_id`),
    KEY `idx_vehicle_provider_id` (`vehicle_provider_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='运输需求计划管理';


CREATE TABLE `tms_dispatch_order`
(
    `id`                    BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `dispatch_no`           VARCHAR(50)         NOT NULL COMMENT '调度单号',
    `customer_name`         VARCHAR(100)        NOT NULL COMMENT '客户名称',
    `customer_code`         VARCHAR(50)    DEFAULT NULL COMMENT '客户编码',
    `project_name`          VARCHAR(100)        NOT NULL COMMENT '项目名称',
    `transport_plan_no`     VARCHAR(50)         NOT NULL COMMENT '运输计划编号',
    `departure_region`      VARCHAR(50)         NOT NULL COMMENT '出发地行政区域',
    `destination_region`    VARCHAR(50)         NOT NULL COMMENT '目的行政区域',
    `transport_line`        BIGINT(20)          NOT NULL COMMENT '运输线路',
    `vehicle_provider`      BIGINT(20)          NOT NULL COMMENT '车辆服务商',
    `main_driver`           BIGINT(20)          NOT NULL COMMENT '主驾驶员',
    `assistant_driver`      VARCHAR(50)    DEFAULT NULL COMMENT '副驾驶员',
    `required_vehicle_type` TINYINT(1)          NOT NULL COMMENT '要求运输工具类型',
    `vehicle_number`        VARCHAR(50)         NOT NULL COMMENT '运输工具号码',
    `transport_mode`        TINYINT(1)          NOT NULL COMMENT '运输方式，关联字典',
    `load_mode`             TINYINT(1)          NOT NULL COMMENT '配载方式，关联字典',
    `goods_name`            VARCHAR(100)   DEFAULT NULL COMMENT '货品名称',
    `quantity`              DECIMAL(10, 2) DEFAULT NULL COMMENT '数量',
    `goods_type`            VARCHAR(50)    DEFAULT NULL COMMENT '货品类型',
    `weight`                DECIMAL(10, 2) DEFAULT NULL COMMENT '重量(kg)',
    `net_weight`            DECIMAL(10, 2) DEFAULT NULL COMMENT '净重(kg)',
    `volume`                DECIMAL(10, 2) DEFAULT NULL COMMENT '体积(m³)',
    `loose_pieces`          INT            DEFAULT NULL COMMENT '散件数',
    `full_containers`       INT            DEFAULT NULL COMMENT '整箱数',
    `container_no`          VARCHAR(50)    DEFAULT NULL COMMENT '集装箱号',
    `pallet_count`          INT            DEFAULT NULL COMMENT '托数',
    `earliest_departure`    DATETIME       DEFAULT NULL COMMENT '要求最早出发时间',
    `latest_departure`      DATETIME       DEFAULT NULL COMMENT '要求最晚出发时间',
    `earliest_arrival`      DATETIME       DEFAULT NULL COMMENT '要求最早到达时间',
    `latest_arrival`        DATETIME       DEFAULT NULL COMMENT '要求最晚到达时间',
    `departure_address`     TEXT           DEFAULT NULL COMMENT '出发地地址',
    `destination_address`   TEXT           DEFAULT NULL COMMENT '目的地地址',
    `actual_vehicle_type`   VARCHAR(50)    DEFAULT NULL COMMENT '实际运输工具类型',
    `actual_load_start`     DATETIME       DEFAULT NULL COMMENT '实际装车开始时间',
    `actual_unload_end`     DATETIME       DEFAULT NULL COMMENT '实际卸车完成时间',
    `actual_departure`      DATETIME       DEFAULT NULL COMMENT '实际出发时间',
    `actual_arrival`        DATETIME       DEFAULT NULL COMMENT '实际到达时间',
    `actual_quantity`       DECIMAL(10, 2) DEFAULT NULL COMMENT '实发数量',
    `actual_weight`         DECIMAL(10, 2) DEFAULT NULL COMMENT '实发重量(kg)',
    `actual_volume`         DECIMAL(10, 2) DEFAULT NULL COMMENT '实发体积(m³)',
    `reweigh_weight`        DECIMAL(10, 2) DEFAULT NULL COMMENT '复磅重量(kg)',
    `electronic_lock`       VARCHAR(50)    DEFAULT NULL COMMENT '电子锁编号',
    `container_info`        VARCHAR(50)    DEFAULT NULL COMMENT '集装箱号(关联集装箱)',
    `car_plate`             VARCHAR(50)    DEFAULT NULL COMMENT '车板号',
    `empty_mileage`         DECIMAL(10, 2) DEFAULT NULL COMMENT '空载里程(Km)',
    `empty_fuel`            DECIMAL(10, 2) DEFAULT NULL COMMENT '空载油耗(L)',
    `loaded_mileage`        DECIMAL(10, 2) DEFAULT NULL COMMENT '重载里程(Km)',
    `loaded_fuel`           DECIMAL(10, 2) DEFAULT NULL COMMENT '重载油耗(L)',
    `shift_no`              VARCHAR(50)    DEFAULT NULL COMMENT '班次号',
    `line_no`               VARCHAR(50)    DEFAULT NULL COMMENT '线路号',
    `status`                TINYINT(1)          NOT NULL COMMENT '状态，关联字典 0=草稿,1=待出发,2=在途,3=已签收,4=已完成,5=作废',
    `create_by`             VARCHAR(50)    DEFAULT NULL COMMENT '创建人',
    `create_time`           DATETIME       DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`             VARCHAR(50)    DEFAULT NULL COMMENT '更新人',
    `update_time`           DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`                VARCHAR(1000)  DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uniq_dispatch_no` (`dispatch_no`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='调度单管理表';


CREATE TABLE `tms_project`
(
    `id`               BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `project_name`     VARCHAR(100)        NOT NULL COMMENT '项目名称',
    `project_code`     VARCHAR(50)         NOT NULL COMMENT '项目编号',
    `related_contract` VARCHAR(100)  DEFAULT NULL COMMENT '关联合同',
    `related_customer` VARCHAR(100)  DEFAULT NULL COMMENT '关联客户',
    `status`           TINYINT(1)          NOT NULL COMMENT '状态，关联字典 0=草稿,1=审核通过,2=已作废',
    `create_time`      DATETIME      DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`        VARCHAR(50)   DEFAULT NULL COMMENT '更新人',
    `update_time`      DATETIME      DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`           VARCHAR(1000) DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uniq_project_code` (`project_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='项目管理表';

CREATE TABLE `tms_route`
(
    `id`                    BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `system_code`           VARCHAR(50)     NOT NULL COMMENT '系统编号，新增时自动填写',
    `route_code`            VARCHAR(50)     NOT NULL COMMENT '路线编号，唯一标识',
    `route_name`            VARCHAR(100)    NOT NULL COMMENT '路线名称（如 北京 - 上海干线）',
    `route_type`            TINYINT         NOT NULL COMMENT '路线类型，关联字典（干线、支线、短途、跨境）',
    `transport_mode`        TINYINT         NOT NULL COMMENT '运输方式，关联字典（公路、铁路、水路、多式联运）',
    `start_area`            VARCHAR(100)    NOT NULL COMMENT '起点区域（省/市/区）',
    `start_warehouse`       VARCHAR(100)             DEFAULT NULL COMMENT '起点仓库，关联仓库管理',
    `end_area`              VARCHAR(100)    NOT NULL COMMENT '终点区域（省/市/区）',
    `end_warehouse`         VARCHAR(100)             DEFAULT NULL COMMENT '终点仓库，关联仓库管理',
    `via_stations`          TEXT                     DEFAULT NULL COMMENT '途经站点，多站点用逗号分隔',
    `distance_km`           DECIMAL(10, 1)  NOT NULL COMMENT '路线里程（km）',
    `estimated_hours`       DECIMAL(5, 1)            DEFAULT NULL COMMENT '预计耗时（小时）',
    `route_group`           VARCHAR(50)              DEFAULT NULL COMMENT '所属线路组，便于批量维护',
    `suitable_vehicle_type` TINYINT                  DEFAULT NULL COMMENT '适配车型，关联车辆管理',
    `suitable_tray_type`    TINYINT                  DEFAULT NULL COMMENT '适配托架类型，关联托架管理',
    `route_status`          TINYINT         NOT NULL COMMENT '路线状态，关联字典（启用、停用、维护中）',
    `is_common`             TINYINT         NOT NULL DEFAULT 1 COMMENT '是否常用路线（0=是，1=否）',
    `status`                TINYINT         NOT NULL DEFAULT 0 COMMENT '路线数据状态（0=正常，1=停用）',
    `create_by`             VARCHAR(50)              DEFAULT NULL COMMENT '创建人',
    `create_time`           DATETIME                 DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`             VARCHAR(50)              DEFAULT NULL COMMENT '更新人',
    `update_time`           DATETIME                 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`                VARCHAR(1000)            DEFAULT NULL COMMENT '路线补充说明',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uniq_route_code` (`route_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='运输路线管理表';


CREATE TABLE `tms_contract`
(
    `id`                   BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `system_code`          VARCHAR(50)     NOT NULL COMMENT '系统编号，新增时自动填写',
    `contract_code`        VARCHAR(50)     NOT NULL COMMENT '合同编号，唯一标识',
    `contract_name`        VARCHAR(100)    NOT NULL COMMENT '合同简称',
    `contract_type`        TINYINT         NOT NULL COMMENT '合同类型，关联字典（运输合同、采购合同、服务合同等）',
    `sign_date`            DATE            NOT NULL COMMENT '签约日期',
    `contract_start_date`  DATE            NOT NULL COMMENT '合同期限开始时间',
    `contract_end_date`    DATE            NOT NULL COMMENT '合同期限结束时间',
    `contract_status`      TINYINT         NOT NULL COMMENT '合同状态，关联字典（草稿、待签、已签、履行中、已完成、终止）',
    `party_a_name`         VARCHAR(100)    NOT NULL COMMENT '甲方名称',
    `party_a_contact`      VARCHAR(100)             DEFAULT NULL COMMENT '甲方联系人',
    `party_a_contact_info` VARCHAR(100)             DEFAULT NULL COMMENT '甲方联系方式',
    `party_b_name`         VARCHAR(100)    NOT NULL COMMENT '乙方名称',
    `party_b_contact`      VARCHAR(100)             DEFAULT NULL COMMENT '乙方联系人',
    `party_b_contact_info` VARCHAR(100)             DEFAULT NULL COMMENT '乙方联系方式',
    `contract_amount`      DECIMAL(16, 2)  NOT NULL COMMENT '合同金额',
    `payment_method`       TINYINT         NOT NULL COMMENT '付款方式，关联字典（一次性、分期、按进度）',
    `payment_cycle`        VARCHAR(50)              DEFAULT NULL COMMENT '付款周期，如每月10日',
    `paid_amount`          DECIMAL(16, 2)           DEFAULT 0 COMMENT '已付款项，自动计算',
    `unpaid_amount`        DECIMAL(16, 2)           DEFAULT 0 COMMENT '未付款项，自动计算',
    `invoice_status`       TINYINT         NOT NULL COMMENT '发票状态，关联字典（未开、已开、部分开）',
    `fulfillment_status`   TINYINT         NOT NULL COMMENT '履行状态，关联字典（未开始、进行中、已完成）',
    `fulfillment_progress` VARCHAR(50)              DEFAULT NULL COMMENT '履行进度，如 50%',
    `acceptance_status`    TINYINT                  DEFAULT 0 COMMENT '验收状态，关联字典（未验收、待验收、已验收）',
    `attachment_name`      VARCHAR(100)             DEFAULT NULL COMMENT '附件名称',
    `attachment_path`      VARCHAR(255)             DEFAULT NULL COMMENT '附件路径',
    `uploaded_by`          VARCHAR(50)              DEFAULT NULL COMMENT '上传人',
    `upload_time`          DATETIME                 DEFAULT NULL COMMENT '上传时间',
    `status`               TINYINT         NOT NULL DEFAULT 0 COMMENT '合同数据状态（0=正常，1=停用）',
    `create_by`            VARCHAR(50)              DEFAULT NULL COMMENT '创建人',
    `create_time`          DATETIME                 DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`            VARCHAR(50)              DEFAULT NULL COMMENT '更新人',
    `update_time`          DATETIME                 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`               VARCHAR(1000)            DEFAULT NULL COMMENT '合同补充说明',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uniq_contract_code` (`contract_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='合同管理表';


CREATE TABLE tms_settlement_entity
(
    id                           BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '系统编号',

    customer_type                TINYINT(1)   NOT NULL COMMENT '客户类型：1=普通客户；2=VIP客户；3=集团内企业；4=其他',
    customer_short_name          VARCHAR(255) NOT NULL COMMENT '客户简称',
    customer_code                VARCHAR(255) NOT NULL COMMENT '客户编号',
    customer_full_name           VARCHAR(500) COMMENT '客户全称',
    business_registration_number VARCHAR(255) COMMENT '经营登记证件号码',
    address                      TEXT COMMENT '地址',

    contact_name                 VARCHAR(255) NOT NULL COMMENT '联系人姓名',
    contact_phone                VARCHAR(50) COMMENT '联系人电话',
    contact_email                VARCHAR(100) COMMENT '联系人邮箱',

    business_contact_name        VARCHAR(255) NOT NULL COMMENT '商务对接人名称',
    business_contact_phone       VARCHAR(50) COMMENT '商务对接人电话',
    business_contact_email       VARCHAR(100) COMMENT '商务对接人邮箱',

    credit_rating                TINYINT(1) COMMENT '客户信用评级（后续评级模块自动填写）',
    credit_limit_amount          DECIMAL(15, 2) COMMENT '信用额度（金额，后续模块自动填写）',
    credit_limit_quantity        INT COMMENT '信用额度（单量，后续模块自动填写）',

    operating_status             TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '经营状态：0=正常经营；1=暂停经营；2=终止经营',
    contract_status              TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '合同状态：0=正常；1=临期；2=已超期',
    data_status                  TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '数据状态：0=草稿；1=审核通过；2=已作废',

    `create_by`                  VARCHAR(50)           DEFAULT NULL COMMENT '创建人',
    `create_time`                DATETIME              DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`                  VARCHAR(50)           DEFAULT NULL COMMENT '更新人',
    `update_time`                DATETIME              DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

    remark                       VARCHAR(1000) COMMENT '备注'
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='结算主体表';


CREATE TABLE `tms_vehicle_info`
(
    `system_id`              VARCHAR(255) NOT NULL COMMENT '系统编号，新增时自动填写',
    `plate_number`           VARCHAR(50)  NOT NULL COMMENT '车牌号，关联车辆管理',
    `service_provider`       VARCHAR(100) NOT NULL COMMENT '车辆服务商，枚举，关联服务商信息管理',
    `certificate_type`       TINYINT(1)   NOT NULL COMMENT '证件类型，枚举',
    `certificate_number`     VARCHAR(100) NOT NULL COMMENT '证件号',
    `register_date`          DATE                  DEFAULT NULL COMMENT '注册日期',
    `expire_date`            DATE                  DEFAULT NULL COMMENT '到期日期',
    `certificate_file`       VARCHAR(255)          DEFAULT NULL COMMENT '证件凭证，链接',
    `last_annual_check_date` DATE                  DEFAULT NULL COMMENT '上次年审日期',
    `invalid_date`           DATE                  DEFAULT NULL COMMENT '废止日期',
    `status`                 TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态，0=正常，1=停用',
    `create_by`              VARCHAR(50)           DEFAULT NULL COMMENT '创建人，新增时自动填写',
    `create_time`            DATETIME              DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`              VARCHAR(50)           DEFAULT NULL COMMENT '更新人，新增/修改自动填写',
    `update_time`            DATETIME              DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增/修改自动填写',
    `remark`                 VARCHAR(1000)         DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`system_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='车辆信息表';

CREATE TABLE `tms_product_info`
(
    `id`                   BIGINT       NOT NULL AUTO_INCREMENT COMMENT '自增ID',
    `customer_id`          BIGINT(20)   NOT NULL COMMENT '所属客户',
    `customer`             VARCHAR(100) NOT NULL COMMENT '所属客户',
    `product_code`         VARCHAR(50)  NOT NULL COMMENT '货品编码',
    `product_name`         VARCHAR(200) NOT NULL COMMENT '货品名称',
    `gross_weight`         DECIMAL(10, 3)        DEFAULT NULL COMMENT '货品重量（Kg）',
    `net_weight`           DECIMAL(10, 3)        DEFAULT NULL COMMENT '货品净重（Kg）',
    `volume`               DECIMAL(10, 3)        DEFAULT NULL COMMENT '货品体积（m³）',
    `spec_model`           TEXT                  DEFAULT NULL COMMENT '商品规格型号',
    `product_type`         VARCHAR(50)           DEFAULT NULL COMMENT '货品类型',
    `pack_unit`            VARCHAR(50)           DEFAULT NULL COMMENT '包装单位，枚举，包装单位字典',
    `pack_length`          DECIMAL(10, 2)        DEFAULT NULL COMMENT '包装长（mm）',
    `pack_width`           DECIMAL(10, 2)        DEFAULT NULL COMMENT '包装宽（mm）',
    `pack_height`          DECIMAL(10, 2)        DEFAULT NULL COMMENT '包装高（mm）',
    `temperature_required` TINYINT(1)            DEFAULT NULL COMMENT '温度要求，0=是，1=否',
    `max_temperature`      DECIMAL(5, 2)         DEFAULT NULL COMMENT '最高温度（℃）',
    `min_temperature`      DECIMAL(5, 2)         DEFAULT NULL COMMENT '最低温度（℃）',
    `max_humidity`         DECIMAL(5, 2)         DEFAULT NULL COMMENT '最高湿度（RH）',
    `min_humidity`         DECIMAL(5, 2)         DEFAULT NULL COMMENT '最低湿度（RH）',
    `is_hazardous`         TINYINT(1)            DEFAULT NULL COMMENT '是否危险品，0=是，1=否',
    `status`               TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态，0=正常，1=停用',
    `create_by`            VARCHAR(50)           DEFAULT NULL COMMENT '创建人，新增时自动填写',
    `create_time`          DATETIME              DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`            VARCHAR(50)           DEFAULT NULL COMMENT '更新人，新增/修改自动填写',
    `update_time`          DATETIME              DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增/修改自动填写',
    `remark`               VARCHAR(1000)         DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uniq_product_code` (`product_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='货品信息表';



CREATE TABLE `tms_loading_service_provider`
(
    `id`                 bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `service_code`       varchar(50)  NOT NULL COMMENT '服务商编码，系统自动生成，字母SP开头+5位流水号，不可重复',
    `service_name`       varchar(200) NOT NULL COMMENT '服务商全称',
    `service_short_name` varchar(100) NOT NULL COMMENT '服务商简称',
    `service_type`       varchar(50)  NOT NULL COMMENT '服务类型（0=中港运输，1=中澳运输，2=国内运输，支持多选）',
    `address`            text COMMENT '地址',
    `license_number`     varchar(100)          DEFAULT NULL COMMENT '经营登记证件号码',
    `business_status`    tinyint(1)   NOT NULL DEFAULT '0' COMMENT '经营状态（0=正常经营；1=暂停经营；2=终止经营）',
    `contact_name`       varchar(100) NOT NULL COMMENT '联系人姓名',
    `contact_phone`      varchar(50)           DEFAULT NULL COMMENT '联系人电话',
    `contact_email`      varchar(100)          DEFAULT NULL COMMENT '联系人邮箱',
    `status`             tinyint(1)   NOT NULL DEFAULT '0' COMMENT '状态（0=正常，1=停用）',
    `create_by`          varchar(50)           DEFAULT NULL COMMENT '创建人，新增时自动填写',
    `create_time`        datetime              DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`          varchar(50)           DEFAULT NULL COMMENT '更新人，新增或修改时自动更新',
    `update_time`        datetime              DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增或修改时自动更新',
    `remark`             text COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_service_code` (`service_code`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 3
  DEFAULT CHARSET = utf8mb4 COMMENT ='装货服务商信息管理';


CREATE TABLE `tms_customs_service_provider`
(
    `id`                 bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `service_code`       varchar(50)  NOT NULL COMMENT '服务商编码，系统自动生成，字母SP开头+5位流水号，不可重复',
    `service_name`       varchar(200) NOT NULL COMMENT '服务商全称',
    `service_short_name` varchar(100) NOT NULL COMMENT '服务商简称',
    `service_type`       varchar(50)  NOT NULL COMMENT '服务类型（0=中港运输，1=中澳运输，2=国内运输，支持多选）',
    `address`            text COMMENT '地址',
    `license_number`     varchar(100)          DEFAULT NULL COMMENT '经营登记证件号码',
    `business_status`    tinyint(1)   NOT NULL DEFAULT '0' COMMENT '经营状态（0=正常经营；1=暂停经营；2=终止经营）',
    `contact_name`       varchar(100) NOT NULL COMMENT '联系人姓名',
    `contact_phone`      varchar(50)           DEFAULT NULL COMMENT '联系人电话',
    `contact_email`      varchar(100)          DEFAULT NULL COMMENT '联系人邮箱',
    `status`             tinyint(1)   NOT NULL DEFAULT '0' COMMENT '状态（0=正常，1=停用）',
    `create_by`          varchar(50)           DEFAULT NULL COMMENT '创建人，新增时自动填写',
    `create_time`        datetime              DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`          varchar(50)           DEFAULT NULL COMMENT '更新人，新增或修改时自动更新',
    `update_time`        datetime              DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增或修改时自动更新',
    `remark`             text COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_service_code` (`service_code`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 3
  DEFAULT CHARSET = utf8mb4 COMMENT ='报关服务商信息管理';

CREATE TABLE `tms_quote_plan`
(
    `id`             BIGINT(20)   NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `system_code`    VARCHAR(100) NOT NULL COMMENT '系统编号，新增时自动填写',
    `plan_name`      VARCHAR(200) NOT NULL COMMENT '方案名称',
    `customer_id`    BIGINT(20)   NOT NULL COMMENT '所属客户ID',
    `customer_name`  VARCHAR(200) NOT NULL COMMENT '所属客户，关联客户管理',
    `project_id`     BIGINT(20)   NOT NULL COMMENT '关联项目ID',
    `project_name`   VARCHAR(200) NOT NULL COMMENT '关联项目，关联项目管理',
    `contract_id`    BIGINT(20)   NOT NULL COMMENT '关联合同ID',
    `contract_name`  VARCHAR(200) NOT NULL COMMENT '关联合同，关联合同管理',
    `effective_date` DATETIME     NULL COMMENT '生效日期',
    `expiry_date`    DATETIME     NULL COMMENT '失效日期，新增时自动填写',
    `status`         TINYINT(1)   NOT NULL DEFAULT 0 COMMENT '状态，枚举：0=正常，1=停用',
    `create_by`      VARCHAR(100) NOT NULL COMMENT '创建人，新增时自动填写',
    `create_time`    DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`      VARCHAR(100) NOT NULL COMMENT '更新人，新增时自动填写，被修改时自动更新',
    `update_time`    DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增时自动填写，被修改时自动更新',
    `remark`         TEXT         NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_system_code` (`system_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='报价方案管理表';

CREATE TABLE `tms_quote_detail`
(
    `id`                    BIGINT(20)     NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `system_code`           VARCHAR(100)   NOT NULL COMMENT '系统编号，新增时自动填写',
    `quote_plan_id`         BIGINT(20)     NOT NULL COMMENT '关联报价方案ID，',
    `quote_plan_code`       VARCHAR(100)   NULL COMMENT '关联报价方案编号，新增时自动填写',
    `vehicle_provider_id`   BIGINT(20)     NOT NULL COMMENT '车辆服务商ID',
    `vehicle_provider_name` VARCHAR(200)   NOT NULL COMMENT '车辆服务商，关联车辆服务商管理',
    `transport_route`       TEXT           NOT NULL COMMENT '运输线路，根据起点行政区域和终点行政区域拼接',
    `start_region_code`     VARCHAR(100)   NOT NULL COMMENT '起点区域编号，关联区域管理',
    `start_region`          VARCHAR(200)   NOT NULL COMMENT '起点行政区域，关联行政区域管理',
    `start_warehouse`       TINYINT(1)     NULL COMMENT '起点仓库',
    `end_region_code`       VARCHAR(100)   NOT NULL COMMENT '终点区域编号',
    `end_region`            VARCHAR(200)   NOT NULL COMMENT '终点行政区域，关联行政区域管理',
    `end_warehouse`         TINYINT(1)     NULL COMMENT '终点仓库',
    `vehicle_type`          TINYINT(1)     NOT NULL COMMENT '车型，关联运输工具类型',
    `transport_mode`        TINYINT(1)     NULL COMMENT '运输方式',
    `route_type`            TINYINT(1)     NULL     DEFAULT 0 COMMENT '线路类型，0=同城配送，1=跨市配送，2=跨境配送',
    `freight_price`         DECIMAL(10, 2) NOT NULL DEFAULT 0.00 COMMENT '运费报价',
    `status`                TINYINT(1)     NOT NULL DEFAULT 0 COMMENT '状态，0=正常，1=停用',
    `create_by`             VARCHAR(100)   NOT NULL COMMENT '创建人，新增时自动填写',
    `create_time`           DATETIME       NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`             VARCHAR(100)   NOT NULL COMMENT '更新人，新增时自动填写，被修改时自动更新',
    `update_time`           DATETIME       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增时自动填写，被修改时自动更新',
    `remark`                TEXT           NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_system_code` (`system_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='报价明细表';
CREATE TABLE `tms_dispatch_order`
(
    `id`                    bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `dispatch_no`           varchar(50)         NOT NULL COMMENT '调度单号',
    `customer_id`           bigint(20)          not null comment '客户ID',
    `customer_code`         varchar(50)    DEFAULT NULL COMMENT '客户编码',
    `project_id`            bigint(20)          not null comment '关联项目ID',
    `project_name`          varchar(100)        NOT NULL COMMENT '关联项目名称',
    `contract_id`          BIGINT(20)            DEFAULT NULL COMMENT '关联合同Id',
    `contract_name`         varchar(100)        NOT NULL COMMENT '关联合同名称',
    `order_type`        tinyint(1)          NOT NULL COMMENT '订单类型，关联字典',
    `sign_type`             tinyint(1)          NOT NULL COMMENT '签收类型，关联字典',
    `vehicle_provider_id`      bigint(20)          NOT NULL COMMENT '车辆服务商ID',
    `vehicle_provider_name`      varchar(100)          NOT NULL COMMENT '车辆服务商名称',
    `loading_service_provider_id`      bigint(20)          NOT NULL COMMENT '装货服务商ID',
    `loading_service_provider_name`      varchar(100)          NOT NULL COMMENT '装货服务商名称',
    `customs_service_provider_id`      bigint(20)          NOT NULL COMMENT '报关服务商ID',
    `customs_service_provider_name`      varchar(100)          NOT NULL COMMENT '报关服务商名称',
    `is_urgent`            TINYINT(1)   NOT NULL DEFAULT 1 COMMENT '是否紧急，0=是，1=否，默认否',
    `transport_type`       TINYINT(1)            DEFAULT NULL COMMENT '运输方式（字典）0=汽运，1=海运，2=空运，3=河运，4=铁路，5=联运',
    `load_method`          TINYINT(1)            DEFAULT NULL COMMENT '配载方式（字典）0=整柜，1=整车，2=拼车，3=散柜',
    `main_driver_id`     bigint(20)          NOT NULL COMMENT '关联驾驶员管理ID',
    `main_driver`           varchar(50)          NOT NULL COMMENT '主驾驶员',
    `assistant_driver`      varchar(50)    DEFAULT NULL COMMENT '副驾驶员',

    `required_vehicle_types` VARCHAR(100)          NOT NULL COMMENT '要求运输工具类型',
    `actual_vehicle_type`   TINYINT(1)    DEFAULT NULL COMMENT '实际车型',
    `vehicle_id`         bigint(20)    NOT NULL COMMENT '车辆管理表ID',
    `license_plate`         VARCHAR(50)    NOT NULL COMMENT '车牌号',

    `shipper_id` bigint(20) NOT NULL COMMENT '发货人（关联收发货人信息）',
    `shipper_name` varchar(100) DEFAULT NULL COMMENT '发货人名称',
    `shipper_mobile` varchar(20) DEFAULT NULL COMMENT '发货人手机号',
    `shipper_address` varchar(500) DEFAULT NULL COMMENT '发货人地址',
    `shipper_region_code` varchar(50) DEFAULT NULL COMMENT '发货行政区域',
    `receiver_id` bigint(20) NOT NULL COMMENT '收货人（关联收发货人信息）',
    `receiver_name` varchar(100) DEFAULT NULL COMMENT '收货人名称',
    `receiver_mobile` varchar(20) DEFAULT NULL COMMENT '收货人手机号',
    `receiver_address` varchar(500) DEFAULT NULL COMMENT '收货人地址',
    `receiver_region_code` varchar(50) DEFAULT NULL COMMENT '收货行政区域',

    `transport_line`        varchar(500)          NOT NULL COMMENT '运输线路',

    `earliest_departure`    datetime       DEFAULT NULL COMMENT '要求最早出发时间',
    `latest_departure`      datetime       DEFAULT NULL COMMENT '要求最晚出发时间',
    `earliest_arrival`      datetime       DEFAULT NULL COMMENT '要求最早到达时间',
    `latest_arrival`        datetime       DEFAULT NULL COMMENT '要求最晚到达时间',

    `container_id`          bigint(20)    DEFAULT NULL COMMENT '关联集装箱信息',
    `container_no`          VARCHAR(50)    DEFAULT NULL COMMENT '集装箱号',
    `car_plate`             varchar(50)    DEFAULT NULL COMMENT '车板号',
    `empty_mileage`         decimal(10, 2) DEFAULT NULL COMMENT '空载里程(Km)',
    `empty_fuel`            decimal(10, 2) DEFAULT NULL COMMENT '空载油耗(L)',
    `loaded_mileage`        decimal(10, 2) DEFAULT NULL COMMENT '重载里程(Km)',
    `loaded_fuel`           decimal(10, 2) DEFAULT NULL COMMENT '重载油耗(L)',
    `shift_no`              varchar(50)    DEFAULT NULL COMMENT '班次号',
    `line_no`               varchar(50)    DEFAULT NULL COMMENT '线路号',

    `departure_address`     text COMMENT '出发地地址',
    `destination_address`   text COMMENT '目的地地址',

    `actual_load_start`     datetime       DEFAULT NULL COMMENT '实际装车开始时间',
    `actual_unload_end`     datetime       DEFAULT NULL COMMENT '实际卸车完成时间',
    `actual_departure`      datetime       DEFAULT NULL COMMENT '实际出发时间',
    `actual_arrival`        datetime       DEFAULT NULL COMMENT '实际到达时间',
    `actual_quantity`       decimal(10, 2) DEFAULT NULL COMMENT '实发数量',
    `actual_weight`         decimal(10, 2) DEFAULT NULL COMMENT '实发重量(kg)',
    `actual_volume`         decimal(10, 2) DEFAULT NULL COMMENT '实发体积(m³)',
    `reweigh_weight`        decimal(10, 2) DEFAULT NULL COMMENT '复磅重量(kg)',
    `electronic_lock`       varchar(50)    DEFAULT NULL COMMENT '电子锁编号',

    `accounts_receivable_status`                tinyint(1)          NOT NULL COMMENT '应收费用生成状态，关联字典 0=未生成,1=已生成,2=生成失败',
    `accounts_payable_status`                tinyint(1)          NOT NULL COMMENT '应付费用生成状态，关联字典 0=未生成,1=已生成,2=生成失败',
    `status`                tinyint(1)          NOT NULL COMMENT '状态，关联字典 0=草稿,1=待出发,2=在途,3=已签收,4=已完成,5=作废',
    `create_by`             varchar(50)    DEFAULT NULL COMMENT '创建人',
    `create_time`           datetime       DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_by`             varchar(50)    DEFAULT NULL COMMENT '更新人',
    `update_time`           datetime       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `remark`                varchar(1000)  DEFAULT NULL COMMENT '备注',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uniq_dispatch_no` (`dispatch_no`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='调度单管理表';


CREATE TABLE `tms_finance_detail`
(
    `id`                    BIGINT(20)     NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `system_code`           VARCHAR(100)   NOT NULL COMMENT '系统编号，新增时自动填写',
    `plan_name`             VARCHAR(200)   NOT NULL COMMENT '应收（应付）方案名称，由调度单数据生成',
    `dispatch_id`           VARCHAR(100)   NOT NULL COMMENT '调度单号，由调度单数据生成',
    `dispatch_no`           VARCHAR(100)   NOT NULL COMMENT '调度单号，由调度单数据生成',
    `customer_id`           bigint(20)          not null comment '客户ID',
    `customer_code`         varchar(50)    DEFAULT NULL COMMENT '客户编码',
    `project_id`            bigint(20)          not null comment '关联项目ID',
    `project_name`          varchar(100)        NOT NULL COMMENT '关联项目名称',
    `vehicle_provider_id`      bigint(20)          NOT NULL COMMENT '车辆服务商ID',
    `vehicle_provider_name`      varchar(100)          NOT NULL COMMENT '车辆服务商名称',
    `required_vehicle_types` VARCHAR(100)   NOT NULL COMMENT '要求车型，由调度单数据生成',
    `actual_vehicle_type`   TINYINT(1)    DEFAULT NULL COMMENT '实际车型',
    `main_driver_id`     bigint(20)          NOT NULL COMMENT '关联驾驶员管理ID',
    `main_driver`           VARCHAR(100)   NOT NULL COMMENT '主驾驶员，由调度单数据生成',
    `assistant_driver`      VARCHAR(100)   NULL COMMENT '副驾驶员，由调度单数据生成',
    `vehicle_id`         bigint(20)    NOT NULL COMMENT '车辆管理表ID',
    `license_plate`         VARCHAR(50)    NOT NULL COMMENT '车牌号，由调度单数据生成',

    `total_amount`          DECIMAL(12, 2) NOT NULL DEFAULT 0.00 COMMENT '总金额，由调度单数据生成',
    `transport_route`       TEXT           NOT NULL COMMENT '运输线路，由调度单数据生成',

    `shipper_id` bigint(20) NOT NULL COMMENT '发货人（关联收发货人信息）',
    `shipper_name` varchar(100) DEFAULT NULL COMMENT '发货人名称',
    `shipper_mobile` varchar(20) DEFAULT NULL COMMENT '发货人手机号',
    `shipper_address` varchar(500) DEFAULT NULL COMMENT '发货人地址',
    `shipper_region_code` varchar(50) DEFAULT NULL COMMENT '发货行政区域',
    `receiver_id` bigint(20) NOT NULL COMMENT '收货人（关联收发货人信息）',
    `receiver_name` varchar(100) DEFAULT NULL COMMENT '收货人名称',
    `receiver_mobile` varchar(20) DEFAULT NULL COMMENT '收货人手机号',
    `receiver_address` varchar(500) DEFAULT NULL COMMENT '收货人地址',
    `receiver_region_code` varchar(50) DEFAULT NULL COMMENT '收货行政区域',

    `status`                TINYINT(1)     NOT NULL DEFAULT 0 COMMENT '状态，0=待确认，1=已确认，2=作废',
    `fee_name`              VARCHAR(100)   NOT NULL COMMENT '费用名称，生成费用时固定生成一条运费',
    `initial_fee_amount`    DECIMAL(12, 2) NOT NULL DEFAULT 0.00 COMMENT '初始费用金额，等于匹配报价方案的运费报价，新增后不可修改',
    `actual_fee_amount`     DECIMAL(12, 2) NOT NULL DEFAULT 0.00 COMMENT '实际费用金额，默认等于初始费用，可修改',
    `fee_voucher_url`       VARCHAR(500)   NULL COMMENT '费用凭证，超链接',
    `fee_create_time`       DATETIME       NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '费用创建时间，新增时自动填写',
    `create_by`             VARCHAR(100)   NOT NULL COMMENT '创建人，新增时自动填写',
    `create_time`           DATETIME       NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`             VARCHAR(100)   NOT NULL COMMENT '更新人，新增时自动填写，被修改时自动更新',
    `update_time`           DATETIME       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增时自动填写，被修改时自动更新',
    `remark`                TEXT           NULL COMMENT '备注',
    `record_status`         TINYINT(1)     NOT NULL DEFAULT 0 COMMENT '记录状态，0=正常，1=作废',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_system_code` (`system_code`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='运输费用明细表（应收应付）';

CREATE TABLE `tms_goods_detail`
(
    `id`                    BIGINT(20)     NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `dispatch_id`           BIGINT(20)   NOT NULL COMMENT '调度单号ID',
    `dispatch_no`           VARCHAR(100)   NOT NULL COMMENT '调度单号，由调度单数据生成',
    `goods_name`            varchar(100)   DEFAULT NULL COMMENT '货品名称',
    `quantity`              decimal(10, 2) DEFAULT NULL COMMENT '数量',
    `goods_type`            varchar(50)    DEFAULT NULL COMMENT '货品类型',
    `weight`                decimal(10, 2) DEFAULT NULL COMMENT '重量(kg)',
    `net_weight`            decimal(10, 2) DEFAULT NULL COMMENT '净重(kg)',
    `volume`                decimal(10, 2) DEFAULT NULL COMMENT '体积(m³)',
    `loose_pieces`          int(11)        DEFAULT NULL COMMENT '散件数',
    `full_containers`       int(11)        DEFAULT NULL COMMENT '整箱数',
    `container_no`          varchar(50)    DEFAULT NULL COMMENT '集装箱号',
    `pallet_count`          int(11)        DEFAULT NULL COMMENT '托数',
    `create_by`             VARCHAR(100)   NOT NULL COMMENT '创建人，新增时自动填写',
    `create_time`           DATETIME       NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间，新增时自动填写',
    `update_by`             VARCHAR(100)   NOT NULL COMMENT '更新人，新增时自动填写，被修改时自动更新',
    `update_time`           DATETIME       NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间，新增时自动填写，被修改时自动更新',
    `remark`                TEXT           NULL COMMENT '备注',
    `record_status`         TINYINT(1)     NOT NULL DEFAULT 0 COMMENT '记录状态，0=正常，1=作废',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4 COMMENT ='调度单货品信息管理表';


