# 资产管理系统 - 数据库设计 ## 一、基础数据模块 ### 1.1 车辆信息表 (asset_truck) ```sql CREATE TABLE `asset_truck` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `org_id` bigint NOT NULL COMMENT '所属机构', `plate_number` varchar(20) NOT NULL COMMENT '车牌号', `vin` varchar(50) NOT NULL COMMENT 'VIN码', `brand` int NOT NULL COMMENT '品牌(字典)', `model` int NOT NULL COMMENT '型号(字典)', `color` varchar(20) DEFAULT NULL COMMENT '颜色', `engine_num` varchar(50) DEFAULT NULL COMMENT '电机编号', `hydrogen_capacity` int DEFAULT NULL COMMENT '氢瓶容量(L)', `reserve_electricity` decimal(10,2) DEFAULT NULL COMMENT '储电量(kwh)', `buy_time` datetime DEFAULT NULL COMMENT '采购时间', `mileage` decimal(10,2) DEFAULT 0.00 COMMENT '里程数(KM)', `truck_rent_status` int NOT NULL DEFAULT 0 COMMENT '租赁状态:0-未备车,7-已备车,1-已交车,2-已还车', `is_operation` tinyint NOT NULL DEFAULT 0 COMMENT '是否营运:0-否,1-是', `parking_id` bigint DEFAULT NULL COMMENT '停车场ID', `stock_area` int DEFAULT NULL COMMENT '库存区域(字典)', `remarks` varchar(500) DEFAULT NULL 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_vin` (`vin`,`deleted`,`tenant_id`), KEY `idx_plate_number` (`plate_number`), KEY `idx_org_id` (`org_id`), KEY `idx_truck_rent_status` (`truck_rent_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车辆信息表'; ``` ### 1.2 客户信息表 (asset_customer) ```sql CREATE TABLE `asset_customer` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(100) NOT NULL COMMENT '客户名称', `credit_code` varchar(50) DEFAULT NULL COMMENT '统一信用代码', `contact_name` varchar(50) DEFAULT NULL COMMENT '联系人', `contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话', `contact_address` varchar(200) DEFAULT NULL COMMENT '联系地址', `contact_email` varchar(100) DEFAULT NULL 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`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='客户信息表'; ``` ### 1.3 停车场表 (asset_parking) ```sql CREATE TABLE `asset_parking` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(100) NOT NULL COMMENT '停车场名称', `address` varchar(200) DEFAULT NULL COMMENT '地址', `capacity` int DEFAULT NULL 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`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='停车场表'; ``` ## 二、检查项配置模块 ### 2.1 检查项配置表 (asset_check_item) ```sql CREATE TABLE `asset_check_item` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `form_code` varchar(50) NOT NULL COMMENT '所属表单:preparation-备车,take-交车,return-还车', `category` varchar(50) NOT NULL COMMENT '检查项类别', `code` varchar(50) NOT NULL COMMENT '检查项编码', `name` varchar(100) NOT NULL COMMENT '检查项名称', `data_type` int NOT NULL COMMENT '数据类型:1-boolean,2-整数,3-小数,4-百分比,5-字符串,6-图片', `sort` int NOT NULL DEFAULT 0 COMMENT '排序', `required` 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`), KEY `idx_form_code` (`form_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='检查项配置表'; ``` ## 三、备车模块 ### 3.1 备车单表 (asset_preparation) ```sql CREATE TABLE `asset_preparation` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `truck_id` bigint NOT NULL COMMENT '车辆ID', `status` int NOT NULL DEFAULT 0 COMMENT '状态:0-待整备,1-整备中,2-已完成', `parking_id` bigint DEFAULT NULL COMMENT '停车场ID', `instrument_range` decimal(10,2) DEFAULT NULL COMMENT '仪表盘里程', `left_hydrogen` decimal(10,2) DEFAULT NULL COMMENT '剩余氢量', `hydrogen_unit` int DEFAULT NULL COMMENT '氢气单位(字典)', `left_electricity` decimal(10,2) DEFAULT NULL COMMENT '剩余电量(%)', `handler_id` bigint DEFAULT NULL COMMENT '负责人ID', `completion_time` datetime DEFAULT NULL COMMENT '完成时间', `next_check_date` datetime DEFAULT NULL COMMENT '下次检查日期', `remark` varchar(500) DEFAULT NULL 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`), KEY `idx_truck_id` (`truck_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='备车单表'; ``` ### 3.2 备车检查项数据表 (asset_preparation_check_data) ```sql CREATE TABLE `asset_preparation_check_data` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `preparation_id` bigint NOT NULL COMMENT '备车单ID', `check_item_id` bigint NOT NULL COMMENT '检查项ID', `category` varchar(50) NOT NULL COMMENT '检查项类别', `code` varchar(50) NOT NULL COMMENT '检查项编码', `name` varchar(100) NOT NULL COMMENT '检查项名称', `data_type` int NOT NULL COMMENT '数据类型', `value` varchar(500) DEFAULT NULL COMMENT '检查值', `remark` varchar(500) DEFAULT NULL COMMENT '备注', `sort` int NOT NULL DEFAULT 0 COMMENT '排序', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_preparation_id` (`preparation_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='备车检查项数据表'; ``` ## 四、合同模块 ### 4.1 合同表 (asset_contract) ```sql CREATE TABLE `asset_contract` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `org_id` bigint NOT NULL COMMENT '签约机构', `contract_no` varchar(50) NOT NULL COMMENT '合同编号', `customer_id` bigint NOT NULL COMMENT '客户ID', `project_name` varchar(200) NOT NULL COMMENT '项目名称', `contract_type` int NOT NULL COMMENT '合同类型(字典)', `signing_date` date NOT NULL COMMENT '生效日期', `expire_date` date DEFAULT NULL COMMENT '结束日期', `pay_way` int DEFAULT NULL COMMENT '付款方式(字典)', `pay_period` int DEFAULT NULL COMMENT '付款周期(字典)', `handover_address` varchar(200) DEFAULT NULL COMMENT '交车地点', `bd` varchar(50) DEFAULT NULL COMMENT '业务经理', `business_dept_id` bigint DEFAULT NULL COMMENT '业务部门ID', `status` int NOT NULL DEFAULT 0 COMMENT '状态:0-草稿,1-审批中,2-已通过,3-已拒绝,4-已作废', `bpm_process_id` varchar(64) DEFAULT NULL COMMENT '审批流程ID', `parent_id` bigint DEFAULT NULL COMMENT '父合同ID(变更/续签)', `is_alter` tinyint NOT NULL DEFAULT 0 COMMENT '是否变更合同:0-否,1-是', `remark` varchar(500) DEFAULT NULL 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_contract_no` (`contract_no`,`deleted`,`tenant_id`), KEY `idx_customer_id` (`customer_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同表'; ``` ### 4.2 合同车辆关联表 (asset_contract_truck) ```sql CREATE TABLE `asset_contract_truck` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `contract_id` bigint NOT NULL COMMENT '合同ID', `truck_id` bigint NOT NULL COMMENT '车辆ID', `estimated_return_date` date DEFAULT NULL COMMENT '预计还车日期', `creator` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_contract_id` (`contract_id`), KEY `idx_truck_id` (`truck_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同车辆关联表'; ``` ## 五、任务模块 ### 5.1 租赁任务表 (asset_rent_task) ```sql CREATE TABLE `asset_rent_task` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `contract_id` bigint NOT NULL COMMENT '合同ID', `contract_truck_id` bigint NOT NULL COMMENT '合同车辆ID', `task_type` int NOT NULL COMMENT '任务类型:1-交车,2-还车,3-替换车', `task_status` int NOT NULL DEFAULT 0 COMMENT '任务状态:0-进行中,1-已完成', `parent_task_id` bigint DEFAULT NULL COMMENT '父任务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`), KEY `idx_contract_id` (`contract_id`), KEY `idx_task_type` (`task_type`), KEY `idx_task_status` (`task_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='租赁任务表'; ``` ## 六、交车/还车/替换车单据表 ### 6.1 交车单表 (asset_take) ```sql CREATE TABLE `asset_take` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `task_id` bigint NOT NULL COMMENT '任务ID', `take_name` varchar(50) NOT NULL COMMENT '提车人姓名', `take_phone` varchar(20) NOT NULL COMMENT '提车人电话', `take_id_no` varchar(50) NOT NULL COMMENT '提车人身份证', `handover_user_id` bigint NOT NULL COMMENT '交车人ID', `handover_date` datetime NOT NULL COMMENT '交车时间', `handover_address` varchar(200) NOT NULL COMMENT '交车地点', `business_manager` varchar(50) DEFAULT NULL COMMENT '业务经理', `take_mileage` decimal(10,2) DEFAULT NULL COMMENT '交车里程(KM)', `hydrogen_measure` decimal(10,2) DEFAULT NULL COMMENT '氢SOC', `hydrogen_unit` int DEFAULT NULL COMMENT '氢SOC单位(字典)', `electricity` decimal(10,2) DEFAULT NULL COMMENT '电量百分比', `dashboard_pic` varchar(500) DEFAULT NULL COMMENT '仪表盘照片', `front_pic` varchar(500) DEFAULT NULL COMMENT '正面照片', `left_front_pic` varchar(500) DEFAULT NULL COMMENT '左前方照片', `right_front_pic` varchar(500) DEFAULT NULL COMMENT '右前方照片', `left_rear_pic` varchar(500) DEFAULT NULL COMMENT '左后方照片', `right_rear_pic` varchar(500) DEFAULT NULL COMMENT '右后方照片', `is_driving_training` tinyint DEFAULT 0 COMMENT '是否驾驶培训:0-否,1-是', `authorizer` varchar(50) DEFAULT NULL COMMENT '授权人', `authorizer_id_card` varchar(50) DEFAULT NULL COMMENT '授权人身份证', `authorizer_phone` varchar(20) DEFAULT NULL COMMENT '授权人电话', `remark` varchar(500) DEFAULT NULL 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`), KEY `idx_task_id` (`task_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='交车单表'; ``` ### 6.2 还车单表 (asset_return) ```sql CREATE TABLE `asset_return` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `task_id` bigint NOT NULL COMMENT '任务ID', `return_date` datetime NOT NULL COMMENT '还车时间', `return_mileage` decimal(10,2) DEFAULT NULL COMMENT '还车里程(KM)', `hydrogen_measure` decimal(10,2) DEFAULT NULL COMMENT '氢SOC', `hydrogen_unit` int DEFAULT NULL COMMENT '氢SOC单位(字典)', `electricity` decimal(10,2) DEFAULT NULL COMMENT '电量百分比', `return_driver` varchar(50) NOT NULL COMMENT '还车人', `return_id_card` varchar(50) NOT NULL COMMENT '还车人身份证', `return_phone` varchar(20) NOT NULL COMMENT '还车人电话', `return_location_type` int DEFAULT NULL COMMENT '还车地点类型(字典)', `return_location` varchar(200) NOT NULL COMMENT '还车地点', `fee_amount_total` decimal(10,2) DEFAULT 0.00 COMMENT '费用金额总计', `bill_status` int DEFAULT 0 COMMENT '账单状态:0-未付款,1-已付款', `remark` varchar(500) DEFAULT NULL 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`), KEY `idx_task_id` (`task_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='还车单表'; ``` ### 6.3 替换车表 (asset_replace) ```sql CREATE TABLE `asset_replace` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `contract_id` bigint NOT NULL COMMENT '合同ID', `contract_truck_id` bigint NOT NULL COMMENT '合同车辆ID', `old_task_id` bigint NOT NULL COMMENT '原交车任务ID', `old_truck_id` bigint NOT NULL COMMENT '原车辆ID', `new_truck_id` bigint NOT NULL COMMENT '新车辆ID', `new_task_id` bigint DEFAULT NULL COMMENT '新交车任务ID', `replace_type` int NOT NULL COMMENT '替换类型:1-临时,2-永久', `replace_reason_type` int DEFAULT NULL COMMENT '替换原因类型(字典)', `replace_reason` varchar(500) DEFAULT NULL COMMENT '替换原因', `status` int NOT NULL DEFAULT 0 COMMENT '状态:0-草稿,1-审批中,2-已通过,3-已拒绝', `bpm_process_id` varchar(64) DEFAULT NULL COMMENT '审批流程ID', `remark` varchar(500) DEFAULT NULL 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`), KEY `idx_contract_id` (`contract_id`), KEY `idx_old_truck_id` (`old_truck_id`), KEY `idx_new_truck_id` (`new_truck_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='替换车表'; ```