# 迁移计划 ## 范围与目标 - 将旧工程 `/old/servicemanager/src/main/java/com/servicemanager/project/` 下剩余接口完整迁移到 `urbanops-module-garden`,保持原「路径/行为」不变。 - 统一数据表前缀为 `garden_`,对齐新模块的分层规范(controller/admin|app、service、dal/mysql、dal/dataobject、vo)。 ## 当前进度(已完成且编译通过) - 树档案与古树:`/business/tree/*`、`/treerecord/oldtrees/*` - 养护计划与提交:`/maintain/plan/*`、`/app/plan/commit/*` - 物料库存/入出库:`/material/inventory/*`、`/material/in/*`、`/material/out/*` - 热线案件/文件/照片:`/business/hotlinecase/*`(含聚合详情 `/getInfoMore/{id}`)、`/business/file/*`、`/business/sysphoto/*` - PC 问题管理/任务:`/pc/problem/manager/*`、`/pc/problem/task/*` - 部门桥接、基础字典、道路、养护频次、摄像机接口等 ## 待迁移内容 - 绩效系列 - `/performance/index/listForPage` - `/performance/write/listForPage` - `/performance/experts/listForPage` - 项目与子项目 - `/project/manager/listForPage` - `/project/manager/selectProjectManagerForList` - `/subProject/manager/listForPage` - 物料管理剩余 - `/material/manager/*`(分页、列表、导出) - `/materialType/*`(大类/中类/分页、导入导出) ## 技术方案 - 控制层 - 保持旧路径与 HTTP 方法不变;后台接口放 `controller/admin/*`,App 接口放 `controller/app/*`。 - 权限注解对齐(`@PreAuthorize`),沿用旧权限字符串或等价替换。 - 服务层 - 迁移旧的业务服务方法,保持参数/校验/业务流程;使用新模块工具集(分页 `PageParam/PageResult`、统一响应 `CommonResult`)。 - 数据访问层 - Mapper 改造为 `BaseMapperX + LambdaQueryWrapperX`,SQL 条件与排序对齐旧逻辑。 - DataObject 使用 `@TableName("garden_*")` 对齐重命名后的表。 - VO/DTO - 保持旧的入参/出参结构;命名与包路径迁移至新模块相应 `vo` 目录。 ## 数据表映射 - 旧表 `td_*/t_*` → 新表 `garden_*`(如 `td_project_manager` → `garden_project_manager`,`td_performance_index` → `garden_performance_index`,`td_material_type` → `garden_material_type` 等)。 - 统一使用新模块审计字段(creator/updater、createTime/updateTime)与部门/公司维度(`SecurityFrameworkUtils`)。 ## 验证与交付 - 每批迁移完成后: - 运行 `mvn -q -DskipTests -U -pl urbanops-module-garden -am compile` 验证编译。 - 提供可访问端点清单与关键入参示例。 - 对导出接口进行本地验证(返回 XLS)。 ## 风险与处理 - 依赖缓存损坏(如 kotlin 相关):遇到后强制更新或清理缓存后重试编译。 - 权限字符串不一致:若旧权限在新模块中无对应,按域统一到 `garden:*:*` 规范并在说明中列出调整。 ## 需要确认 - 绩效/项目/物料三组是否作为本次优先批次全部迁移? - 若有其他域需优先(例如 App 端补充查询或导入),请指出以便先行安排。