# 空间批量操作问题修复任务清单 **文档版本**: 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%** |