- 删除旧事件:BillApprovedEvent, BillCreatedEvent, DeductionCompletedEvent, DetailAuditedEvent, DetailCreatedEvent, RecordMatchedEvent - 新增事件:BillAuditPassedEvent, DetailAuditPassedEvent - 保留事件:RecordImportedEvent - 更新监听器:AccountEventListener, BillEventListener, DetailEventListener - 清理代码中的旧事件引用和注释 优化原则:前端简单,后端健壮 事件流程:导入→匹配→生成明细→审核→扣款→生成账单→结算
223 lines
13 KiB
SQL
223 lines
13 KiB
SQL
-- =============================================
|
||
-- 车辆租赁业务流程表结构
|
||
-- 包含:备车、交车任务、交车单、还车单
|
||
-- =============================================
|
||
|
||
-- 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='还车车辆表';
|