Files
oneos-backend/yudao-module-asset/sql/mysql/vehicle-rental-flow.sql
kkfluous 2f38a703f9 refactor(energy): 简化事件驱动系统(7个→3个)
- 删除旧事件:BillApprovedEvent, BillCreatedEvent, DeductionCompletedEvent, DetailAuditedEvent, DetailCreatedEvent, RecordMatchedEvent
- 新增事件:BillAuditPassedEvent, DetailAuditPassedEvent
- 保留事件:RecordImportedEvent
- 更新监听器:AccountEventListener, BillEventListener, DetailEventListener
- 清理代码中的旧事件引用和注释

优化原则:前端简单,后端健壮
事件流程:导入→匹配→生成明细→审核→扣款→生成账单→结算
2026-03-16 12:53:14 +08:00

223 lines
13 KiB
SQL
Raw 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.
-- =============================================
-- 车辆租赁业务流程表结构
-- 包含:备车、交车任务、交车单、还车单
-- =============================================
-- 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='还车车辆表';