# Tasks: 项目管理模块开发 本文档列出了实现项目管理模块的具体开发任务,按优先级和依赖关系排序。 ## 阶段1:基础架构搭建 ### 1.1 创建数据库表 - [ ] 创建 `ccdi_project` 表 - [ ] 创建 `ccdi_project_person` 表 - [ ] 创建索引和外键约束 - [ ] 准备测试数据 **验证**:执行SQL脚本,表结构创建成功,可以使用 `DESC ccdi_project;` 查看表结构 ### 1.2 创建后端模块结构 - [ ] 创建 `ruoyi-dpc` 新模块 - [ ] 配置模块 `pom.xml` 依赖 - [ ] 在根 `pom.xml` 中添加模块引用 - [ ] 在 `ruoyi-admin` 的 `pom.xml` 中添加对 `ruoyi-dpc` 的依赖 - [ ] 配置 Spring 扫描 `com.ruoyi.dpc.controller` 包 - [ ] 创建包结构:`com.ruoyi.dpc.controller`, `com.ruoyi.dpc.domain`, `com.ruoyi.dpc.mapper`, `com.ruoyi.dpc.service` **验证**:项目可以正常编译启动 ### 1.3 创建实体类和DTO - [ ] 创建 `CcdiProject.java` 实体类(使用 `@Data` 注解,不继承 BaseEntity) - [ ] 创建 `CcdiProjectPerson.java` 实体类(使用 `@Data` 注解) - [ ] 创建 `CcdiProjectVO.java` 视图对象 - [ ] 创建 `CcdiProjectQueryVO.java` 查询视图对象 - [ ] 创建 `CcdiProjectDTO.java` 数据传输对象(新增/修改) - [ ] 创建 `CcdiProjectQueryDTO.java` 查询DTO - [ ] 创建 `CcdiProjectImportDTO.java` 导入DTO - [ ] 为审计字段添加 `@TableField` 注解配置自动填充 **验证**:实体类和DTO编译通过,字段注解正确 ### 1.4 创建DTO转换工具类 - [ ] 创建 `CcdiProjectConverter.java` 工具类 - [ ] 实现 `toEntity(CcdiProjectDTO)` 方法 - [ ] 实现 `toVO(CcdiProject)` 方法 - [ ] 实现 `toVOList(List)` 方法 **验证**:转换逻辑正确,覆盖所有字段 ### 1.5 配置审计字段自动填充 - [ ] 创建 `CcdiMetaObjectHandler.java` 实现 `MetaObjectHandler` 接口 - [ ] 实现 `insertFill` 方法自动填充 `create_by` 和 `create_time` - [ ] 实现 `updateFill` 方法自动填充 `update_by` 和 `update_time` - [ ] 从 Spring Security 上下文获取当前登录用户 - [ ] 将处理器注册为 Spring 组件(`@Component`) **验证**:插入和更新操作时审计字段自动填充 ## 阶段2:数据访问层开发 ### 2.1 创建Mapper接口 - [ ] 创建 `CcdiProjectMapper.java`(使用 MyBatis Plus) - [ ] 创建 `CcdiProjectPersonMapper.java`(使用 MyBatis Plus) ### 2.2 创建Mapper XML - [ ] 创建 `CcdiProjectMapper.xml` - [ ] 创建 `CcdiProjectPersonMapper.xml` - [ ] 定义基础CRUD SQL(MyBatis Plus 自动生成) - [ ] 定义关联查询SQL(项目+人员) **验证**:可以使用MyBatis Log查看SQL执行正确 ## 阶段3:服务层开发 ### 3.1 创建Service接口 - [ ] 创建 `ICcdiProjectService.java` - [ ] 定义方法签名: - `List selectProjectList(CcdiProject project)` - `CcdiProject selectProjectById(Long projectId)` - `int insertProject(CcdiProject project)` - `int updateProject(CcdiProject project)` - `int deleteProjectByIds(Long[] projectIds)` - `boolean checkProjectNameUnique(CcdiProject project)` - `void archiveProject(Long projectId)` - `void reanalyzeProject(Long projectId)` ### 3.2 实现Service - [ ] 创建 `CcdiProjectServiceImpl.java` - [ ] 使用 `@Resource` 注入依赖 - [ ] 实现基础CRUD方法 - [ ] 实现项目名称唯一性校验 - [ ] 实现项目归档逻辑(状态检查、PDF生成) - [ ] 实现重新分析逻辑(异步任务) **验证**:单元测试通过,业务逻辑符合需求 ## 阶段4:控制器层开发 ### 4.1 创建Controller - [ ] 创建 `CcdiProjectController.java`(位于 `ruoyi-dpc` 模块的 `com.ruoyi.dpc.controller` 包中) - [ ] 实现列表查询接口 `GET /dpc/project/list` - [ ] 实现详情查询接口 `GET /dpc/project/{id}` - [ ] 实现新增接口 `POST /dpc/project` - [ ] 实现修改接口 `PUT /dpc/project` - [ ] 实现删除接口 `DELETE /dpc/project/{ids}` - [ ] 实现归档接口 `POST /dpc/project/archive/{id}` - [ ] 实现重新分析接口 `POST /dpc/project/reanalyze/{id}` - [ ] 实现导入历史项目接口 `POST /dpc/project/import` ### 4.2 添加权限注解 - [ ] 为所有接口添加 `@PreAuthorize` 注解 - [ ] 配置权限字符串: - `dpc:project:list` - `dpc:project:query` - `dpc:project:add` - `dpc:project:edit` - `dpc:project:remove` - `dpc:project:archive` - `dpc:project:reanalyze` ### 4.3 添加操作日志 - [ ] 为关键操作添加 `@Log` 注解 - [ ] 配置业务类型 **验证**:使用Postman测试所有接口,返回正确 ## 阶段4.5:生成API文档 ### 4.5.1 生成接口文档 - [ ] 使用 SpringDoc/Knife4j 生成 API 文档 - [ ] 在项目文件目录下导出 API 文档 **验证**:API 文档生成成功,包含所有接口 ## 阶段5:前端API开发 ### 5.1 创建API文件 - [ ] 创建 `ruoyi-ui/src/api/dpcProject.js` - [ ] 封装所有API请求方法: - `listProject(query)` - `getProject(projectId)` - `addProject(data)` - `updateProject(data)` - `delProject(projectIds)` - `archiveProject(projectId)` - `reanalyzeProject(projectId)` - `importProject(data)` **验证**:API方法可以正常调用 ## 阶段6:前端页面开发 ### 6.1 创建项目列表页 - [ ] 创建 `ruoyi-ui/src/views/dpcProject/index.vue` - [ ] 实现搜索区域(项目名称输入框、搜索按钮) - [ ] 实现操作按钮(新建、导入历史项目) - [ ] 实现数据表格(项目信息展示) - [ ] 实现状态标签(进行中/已完成/已归档) - [ ] 实现操作列(进入项目、查看结果、重新分析、归档) ### 6.2 创建新增/编辑弹窗 - [ ] 创建 `ruoyi-ui/src/views/dpcProject/add-or-edit.vue` - [ ] 实现项目基本信息表单(项目名称、描述、时间范围) - [ ] 实现人员选择器(多选) - [ ] 实现表单验证 ### 6.3 创建导入历史项目弹窗 - [ ] 创建 `ruoyi-ui/src/views/dpcProject/import-history.vue` - [ ] 实现历史项目列表(只显示已完成项目) - [ ] 实现项目详情预览 - [ ] 实现新项目配置 **验证**:页面显示正常,交互流畅 ## 阶段7:菜单与权限配置 ### 7.1 创建系统菜单 - [ ] 在系统管理 > 菜单管理中创建"项目管理"菜单 - [ ] 配置菜单图标和路由(路径:`dpcProject`) - [ ] 创建子菜单/按钮权限 ### 7.2 配置角色权限 - [ ] 为管理员角色分配项目管理权限 - [ ] 为其他角色配置适当权限 **验证**:登录后可以看到项目管理菜单 ## 阶段8:测试与优化 ### 8.1 功能测试 - [ ] 测试项目创建流程 - [ ] 测试项目搜索功能 - [ ] 测试项目状态流转 - [ ] 测试项目归档功能 - [ ] 测试重新分析功能 - [ ] 测试导入历史项目功能 ### 8.2 边界测试 - [ ] 测试必填字段验证 - [ ] 测试项目名称唯一性 - [ ] 测试状态权限控制 - [ ] 测试数据权限 ### 8.3 性能优化 - [ ] 优化SQL查询 - [ ] 添加必要的数据库索引 - [ ] 优化大数据量列表加载 **验证**:所有测试用例通过,无明显性能问题 ## 阶段9:文档与交付 ### 9.1 代码注释 - [ ] 为所有公开方法添加JavaDoc注释 - [ ] 为复杂逻辑添加行内注释 ### 9.2 更新系统文档 - [ ] 更新数据库设计文档 - [ ] 更新API接口文档 - [ ] 更新用户操作手册 **验证**:文档完整、准确 ## 任务依赖关系 ``` 阶段1 (基础架构) ↓ 阶段2 (数据访问层) → 阶段3 (服务层) → 阶段4 (控制器层) → 阶段4.5 (API文档) ↓ 阶段5 (前端API) ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ↓ 阶段6 (前端页面) ↓ 阶段7 (菜单权限) ↓ 阶段8 (测试优化) ↓ 阶段9 (文档交付) ``` ## 可并行开发任务 以下任务可以并行开发: - 阶段2和阶段3(后端不同层级) - 阶段5和阶段6的前端页面组件 - 阶段7的菜单配置可以在后端开发完成后进行 ## 预计工作量 | 阶段 | 预计工时 | |-----|---------| | 阶段1 | 0.5天 | | 阶段2 | 0.5天 | | 阶段3 | 1天 | | 阶段4 | 1天 | | 阶段5 | 0.5天 | | 阶段6 | 2天 | | 阶段7 | 0.5天 | | 阶段8 | 1天 | | 阶段9 | 0.5天 | | **总计** | **7.5天** |