# 资产管理系统 - 数据库设计

## 一、基础数据模块

### 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='替换车表';
```
