-- ============================================= -- 车辆租赁业务流程表结构 -- 包含:备车、交车任务、交车单、还车单 -- ============================================= -- 1. 备车记录表 CREATE TABLE IF NOT EXISTS `asset_vehicle_prepare` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `vehicle_id` BIGINT NOT NULL COMMENT '车辆ID', `plate_no` VARCHAR(20) COMMENT '车牌号', `vin` VARCHAR(50) NOT NULL COMMENT '车辆识别代码', `vehicle_model_id` BIGINT NOT NULL COMMENT '车型ID', `brand` VARCHAR(100) COMMENT '品牌', `model` VARCHAR(100) COMMENT '型号', `contract_id` BIGINT COMMENT '关联合同ID', `contract_code` VARCHAR(50) COMMENT '合同编码', `has_body_ad` BIT(1) DEFAULT b'0' COMMENT '是否有车身广告', `body_ad_photos` VARCHAR(1000) COMMENT '广告照片(JSON数组)', `has_tail_lift` BIT(1) DEFAULT b'0' COMMENT '是否有尾板', `trailer_plate_no` VARCHAR(20) COMMENT '挂车牌号', `defect_photos` VARCHAR(1000) COMMENT '瑕疵照片(JSON数组)', `check_list` TEXT COMMENT '备车检查清单(JSON)', `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0=待提交 1=已完成)', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), INDEX `idx_vehicle_id` (`vehicle_id`), INDEX `idx_contract_id` (`contract_id`), INDEX `idx_status` (`status`), INDEX `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='备车记录表'; -- 2. 交车任务表 CREATE TABLE IF NOT EXISTS `asset_delivery_task` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `task_code` VARCHAR(50) NOT NULL COMMENT '交车任务编码', `contract_id` BIGINT NOT NULL COMMENT '合同ID', `contract_code` VARCHAR(50) NOT NULL COMMENT '合同编码', `project_name` VARCHAR(200) NOT NULL COMMENT '项目名称', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `customer_name` VARCHAR(200) NOT NULL COMMENT '客户名称', `expected_delivery_date_start` DATE COMMENT '预计交车开始日期', `expected_delivery_date_end` DATE COMMENT '预计交车结束日期', `billing_start_date` DATE NOT NULL COMMENT '开始计费日期', `delivery_province` VARCHAR(50) COMMENT '交车省份', `delivery_city` VARCHAR(50) COMMENT '交车城市', `delivery_location` VARCHAR(255) COMMENT '交车地点', `vehicle_count` INT NOT NULL DEFAULT 0 COMMENT '交车数量', `task_status` TINYINT NOT NULL DEFAULT 0 COMMENT '任务状态(0=激活 1=挂起)', `delivery_status` TINYINT NOT NULL DEFAULT 0 COMMENT '交车状态(0=未交车 1=已交车)', `need_return` BIT(1) NOT NULL DEFAULT b'1' COMMENT '是否需要还车', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), UNIQUE KEY `uk_task_code` (`task_code`, `deleted`), INDEX `idx_contract_id` (`contract_id`), INDEX `idx_customer_id` (`customer_id`), INDEX `idx_task_status` (`task_status`), INDEX `idx_delivery_status` (`delivery_status`), INDEX `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='交车任务表'; -- 3. 交车任务车辆表 CREATE TABLE IF NOT EXISTS `asset_delivery_task_vehicle` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `task_id` BIGINT NOT NULL COMMENT '交车任务ID', `contract_vehicle_id` BIGINT NOT NULL COMMENT '合同车辆ID', `vehicle_id` BIGINT NOT NULL COMMENT '车辆ID', `plate_no` VARCHAR(20) COMMENT '车牌号', `vin` VARCHAR(50) NOT NULL COMMENT '车辆识别代码', `brand` VARCHAR(100) NOT NULL COMMENT '品牌', `model` VARCHAR(100) NOT NULL COMMENT '型号', `month_rent` DECIMAL(10,2) NOT NULL COMMENT '月租金', `deposit` DECIMAL(10,2) NOT NULL COMMENT '保证金', `actual_delivery_date` DATETIME COMMENT '实际交车日期', `delivery_person` VARCHAR(64) COMMENT '交车人', `is_delivered` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否已交车', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), INDEX `idx_task_id` (`task_id`), INDEX `idx_vehicle_id` (`vehicle_id`), INDEX `idx_contract_vehicle_id` (`contract_vehicle_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='交车任务车辆表'; -- 4. 交车单表 CREATE TABLE IF NOT EXISTS `asset_delivery_order` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_code` VARCHAR(50) NOT NULL COMMENT '交车单编码', `task_id` BIGINT NOT NULL COMMENT '交车任务ID', `task_code` VARCHAR(50) NOT NULL COMMENT '交车任务编码', `contract_id` BIGINT NOT NULL COMMENT '合同ID', `contract_code` VARCHAR(50) NOT NULL COMMENT '合同编码', `project_name` VARCHAR(200) NOT NULL COMMENT '项目名称', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `customer_name` VARCHAR(200) NOT NULL COMMENT '客户名称', `delivery_date` DATETIME NOT NULL COMMENT '交车日期', `delivery_person` VARCHAR(64) NOT NULL COMMENT '交车人', `delivery_location` VARCHAR(255) COMMENT '交车地点', `authorized_person_id` BIGINT COMMENT '被授权人ID', `authorized_person_name` VARCHAR(100) COMMENT '被授权人姓名', `authorized_person_phone` VARCHAR(20) COMMENT '被授权人电话', `authorized_person_id_card` VARCHAR(18) COMMENT '被授权人身份证', `esign_flow_id` VARCHAR(100) COMMENT 'E签宝流程ID', `esign_status` TINYINT DEFAULT 0 COMMENT 'E签宝状态(0=未签 1=已签)', `delivery_photos` VARCHAR(1000) COMMENT '交车照片(JSON数组)', `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0=待完成 1=已完成)', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_code` (`order_code`, `deleted`), INDEX `idx_task_id` (`task_id`), INDEX `idx_contract_id` (`contract_id`), INDEX `idx_status` (`status`), INDEX `idx_delivery_date` (`delivery_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='交车单表'; -- 5. 交车单车辆表 CREATE TABLE IF NOT EXISTS `asset_delivery_order_vehicle` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_id` BIGINT NOT NULL COMMENT '交车单ID', `task_vehicle_id` BIGINT NOT NULL COMMENT '交车任务车辆ID', `vehicle_id` BIGINT NOT NULL COMMENT '车辆ID', `plate_no` VARCHAR(20) COMMENT '车牌号', `vin` VARCHAR(50) NOT NULL COMMENT '车辆识别代码', `brand` VARCHAR(100) NOT NULL COMMENT '品牌', `model` VARCHAR(100) NOT NULL COMMENT '型号', `mileage` INT COMMENT '交车时里程', `hydrogen_level` DECIMAL(10,2) COMMENT '交车时氢气量(kg)', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), INDEX `idx_order_id` (`order_id`), INDEX `idx_vehicle_id` (`vehicle_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='交车单车辆表'; -- 6. 还车单表 CREATE TABLE IF NOT EXISTS `asset_return_order` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_code` VARCHAR(50) NOT NULL COMMENT '还车单编码', `contract_id` BIGINT NOT NULL COMMENT '合同ID', `contract_code` VARCHAR(50) NOT NULL COMMENT '合同编码', `project_name` VARCHAR(200) NOT NULL COMMENT '项目名称', `customer_id` BIGINT NOT NULL COMMENT '客户ID', `customer_name` VARCHAR(200) NOT NULL COMMENT '客户名称', `return_date` DATETIME NOT NULL COMMENT '还车日期', `return_person` VARCHAR(64) NOT NULL COMMENT '还车验收人', `return_location` VARCHAR(255) COMMENT '还车地点', `return_reason` VARCHAR(50) COMMENT '还车原因', `return_reason_desc` VARCHAR(500) COMMENT '还车原因说明', `total_refund_amount` DECIMAL(10,2) DEFAULT 0 COMMENT '退还总金额', `deposit_refund` DECIMAL(10,2) DEFAULT 0 COMMENT '退还保证金', `hydrogen_refund` DECIMAL(10,2) DEFAULT 0 COMMENT '氢气退款', `other_charges` DECIMAL(10,2) DEFAULT 0 COMMENT '其他费用', `return_photos` VARCHAR(1000) COMMENT '还车照片(JSON数组)', `status` TINYINT NOT NULL DEFAULT 0 COMMENT '状态(0=待验车 1=验车完成 2=已结算)', `approval_status` TINYINT NOT NULL DEFAULT 0 COMMENT '审批状态(0=草稿 1=审批中 2=审批通过 3=审批拒绝)', `bpm_instance_id` VARCHAR(64) COMMENT 'BPM流程实例ID', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_code` (`order_code`, `deleted`), INDEX `idx_contract_id` (`contract_id`), INDEX `idx_status` (`status`), INDEX `idx_approval_status` (`approval_status`), INDEX `idx_return_date` (`return_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='还车单表'; -- 7. 还车车辆表 CREATE TABLE IF NOT EXISTS `asset_return_order_vehicle` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `return_order_id` BIGINT NOT NULL COMMENT '还车单ID', `vehicle_id` BIGINT NOT NULL COMMENT '车辆ID', `plate_no` VARCHAR(20) COMMENT '车牌号', `vin` VARCHAR(50) NOT NULL COMMENT '车辆识别代码', `brand` VARCHAR(100) NOT NULL COMMENT '品牌', `model` VARCHAR(100) NOT NULL COMMENT '型号', `return_mileage` INT COMMENT '还车时里程', `return_hydrogen_level` DECIMAL(10,2) COMMENT '还车时氢气量(kg)', `delivery_hydrogen_level` DECIMAL(10,2) COMMENT '交车时氢气量(kg)', `hydrogen_diff` DECIMAL(10,2) COMMENT '氢气差值(kg)', `hydrogen_unit_price` DECIMAL(10,2) COMMENT '氢气单价(元/kg)', `hydrogen_refund_amount` DECIMAL(10,2) COMMENT '氢气退款金额', `check_list` TEXT COMMENT '还车检查清单(JSON)', `defect_photos` VARCHAR(1000) COMMENT '瑕疵照片(JSON数组)', `vehicle_damage_fee` DECIMAL(10,2) DEFAULT 0 COMMENT '车损费', `tool_damage_fee` DECIMAL(10,2) DEFAULT 0 COMMENT '工具损坏费', `unpaid_maintenance_fee` DECIMAL(10,2) DEFAULT 0 COMMENT '未结算保养费', `unpaid_repair_fee` DECIMAL(10,2) DEFAULT 0 COMMENT '未结算维修费', `other_fee` DECIMAL(10,2) DEFAULT 0 COMMENT '其他费用', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`), INDEX `idx_return_order_id` (`return_order_id`), INDEX `idx_vehicle_id` (`vehicle_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='还车车辆表';