# 空间批量操作问题修复任务清单

**文档版本**: v1.0  
**创建日期**: 2026-02-23

---

## 任务清单

### 一、问题排查与修复

| 序号 | 任务 | 状态 | 说明 |
|------|------|------|------|
| 1.1 | 问题1：生成类型隐藏 | ✅ 已完成 | 已正确隐藏，无需修改 |
| 1.2 | 问题2：批量生成房间保存失败 | ⏳ 待排查 | 需要启动服务测试 |
| 1.3 | 问题3：车位后缀为空 | ✅ 已完成 | 已正确设置，无需修改 |
| 1.4 | 问题4：车位序号位数问题 | ⏳ 待排查 | 需要启动服务测试 |
| 1.5 | 问题5：批量操作限制 | ⏳ 待修复 | 需要移除限制检查 |
| 1.6 | 问题6：车位列表分页 | ✅ 已完成 | 已支持分页，无需修改 |
| 1.7 | 问题7：楼栋地址生成 | ⏳ 待修复 | 需要使用项目地址 |
| 1.8 | 问题8：项目统计数据 | ⏳ 待修复 | 前后端接口不匹配 |

### 二、代码修改任务

| 序号 | 任务 | 状态 | 文件 |
|------|------|------|------|
| 2.1 | 修复前端 ProjectStatistics 接口定义 | ⏳ 待修复 | `src/api/mdm/project.ts` |
| 2.2 | 修复前端项目详情页统计显示 | ⏳ 待修复 | `src/views/mdm/project/detail.vue` |
| 2.3 | 修复后端楼栋地址生成逻辑 | ⏳ 待修复 | `SpaceNodeServiceImpl.java` |
| 2.4 | 移除批量操作限制 | ⏳ 待修复 | `SpaceManagement.vue` |

### 三、测试验证任务

| 序号 | 任务 | 状态 | 说明 |
|------|------|------|------|
| 3.1 | 启动后端服务 | ⏳ 待执行 | ether-mdm |
| 3.2 | 启动前端服务 | ⏳ 待执行 | ether-ui-admin |
| 3.3 | 测试批量生成房间 | ⏳ 待执行 | 验证保存成功 |
| 3.4 | 测试批量生成车位 | ⏳ 待执行 | 验证序号位数和名称 |
| 3.5 | 测试批量生成楼栋 | ⏳ 待执行 | 验证地址生成 |
| 3.6 | 测试项目统计数据 | ⏳ 待执行 | 验证户数和面积显示 |

---

## 问题分析详情

### 问题2：批量生成房间保存失败

**可能原因**:
1. 后端 `spaceNodeRepository.findById(buildingId)` 可能找不到楼栋（项目隔离问题）
2. 前端传递的 `projectId` 可能与后端项目上下文不一致

**修复方案**:
- 检查后端是否使用 `ProjectContextHolder.getProjectId()` 获取项目上下文
- 确保前端传递的 `projectId` 正确

### 问题4：车位序号位数问题

**代码分析**:
- 前端传递 `digitCount: formState.value.digitCount`（第489行）
- 后端接收 `digitCount` 并使用 `String.format("%0" + digitCount + "d", number)`（第1060行）

**可能原因**:
- 前端 `digitCount` 默认值是 3（第525行）
- 后端默认值也是 3（第1055行）
- 需要实际测试验证

### 问题5：批量操作限制

**当前代码**:
- `canBatchGenerateRoom` 和 `canBatchGenerateParking` 已定义但未使用
- `handleBatchGenerate` 函数没有检查这些限制

**修复方案**:
- 确认批量操作菜单是否正确显示所有选项
- 如果有限制，移除限制

### 问题7：楼栋地址生成

**当前代码**:
```java
if (parentNode != null) {
    building.setAddress(parentAddress + " " + name);
} else {
    building.setAddress(name);  // ⚠️ 问题所在
}
```

**修复方案**:
- 当没有父节点时，使用项目地址作为基础地址

### 问题8：项目统计数据

**前端接口定义**:
```typescript
export interface ProjectStatistics {
  totalBuildings: number;
  totalUnits: number;
  totalParking: number;
  totalResidents: number;  // ❌ 后端没有
  totalOwners: number;     // ❌ 后端没有
  totalTenants: number;    // ❌ 后端没有
}
```

**后端接口定义**:
```java
public class ProjectStatistics {
    private Integer totalBuildings;
    private Integer totalUnits;
    private Integer totalRooms;     // ❌ 前端没有
    private Integer totalParking;
    private Integer totalShops;     // ❌ 前端没有
    private BigDecimal totalBuildingArea;  // ❌ 前端没有
    private BigDecimal totalParkingArea;   // ❌ 前端没有
    private Integer totalMembers;   // ❌ 前端没有
}
```

**修复方案**:
- 同步前端接口定义与后端一致
- 修改前端显示逻辑，使用 `totalRooms` 作为户数

---

## 任务统计

| 状态 | 数量 | 占比 |
|------|------|------|
| ✅ 已完成 | 3 | 21% |
| ⏳ 待处理 | 11 | 79% |
| **合计** | **14** | **100%** |
