需求管理系统
创建于 2025 年 3 月 4 日
项目介绍
需求管理系统(目录 20250304-需求管理系统)是基于若依 RuoYi 3.8.9 二次开发的管理后台,聚焦”需求池”这一产品工作日常场景:把散落在客户会议、各部门沟通中的需求统一收录、描述、指派、评审,最终沉淀为可跟踪、可验收的研发条目。项目分为 20250304-需求管理系统-api(Java 后端)与 ruoyi-ui-需求(前端)两部分,前端保留若依标准的 Vue 2 + Element UI 技术栈,后端在若依系统权限(Spring Security + JWT)之上新增了 com.ruoyi.app 业务包。
系统的业务数据模型为清晰的三级结构:app_product(产品)→ app_module(模块)→ app_require(需求)。产品有归属负责人(user_id)与生命周期状态(未开始/已计划/研发中/测试中/已发布);模块挂靠产品;需求则携带完整的需求元信息——需求名称、富文本描述(description)、验收标准(check_standard)、来源(source)、关键词(key_word)、优先级(level)、预计工时(yj)、开始与结束时间(start_time / finish_time)以及附件地址(file_url)。种子数据自带”微信""qq产品”等示例产品与需求,开箱即可体验完整流程。
项目架构
后端为 Maven 多模块工程(Spring Boot 2.5.15、Java 8),在若依原有 ruoyi-admin / ruoyi-common / ruoyi-system / ruoyi-framework 结构上新增业务代码:com.ruoyi.app.controller 下共四个 Controller,分别对应产品(AppProductController,/app/product)、模块(AppModuleController,/app/module)、需求(AppRequireController,/app/require)与首页统计(AppHomeController,/app/home)。持久层在若依 MyBatis-Plus 3.5.4 的基础上引入了 easy-query(com.easy-query)作为主要 ORM:业务实体同时标注 @TableName 与 @Table/@EntityProxy 注解,查询统一通过 EasyEntityQuery.queryable(...) 构建强类型条件(如 x.name().like(...)、x.createTime().desc()),配合若依的 startPage() 分页与 ExcelUtil 导出。
需求流转是本系统的业务核心,由 AppRequireController 支撑两条接口路径:
- 指派与评审:
POST /app/require/audit由评审人调用,直接将需求status置为"20"(通过);前端评审对话框提供”通过 / 拒绝”两个选项,拒绝时状态落为"30"。GET /app/require/listForUser则以当前登录用户auditUserId过滤,让评审人只看到派给自己的待办需求。 - 状态机语义:
status字段枚举0 草稿 → 10 评审中 → 20 通过 / 30 拒绝;stage字段另维护0 未开始、10 已计划、20 已立项、30 研发中、40 研发完毕、50 测试中、60 测试完毕、70 已验收、80 已发布、90 已关闭十个阶段,将”需求评审”与”研发阶段”两个维度解耦。修改需求时若携带isAudit标记,状态会回退到"10"(评审中),形成”改后复审”的闭环。
系统的另一个亮点是操作动态流:产品、模块、需求三个 Controller 的增删改接口在写主表前,都会构造一条 AppActionLog 记录(含操作人昵称、动作、目标名称、表名与拼装好的 show_str 文案,如”admin更新了需求:微信登录样式”)写入 app_action_log 表;删除操作还采用级联策略——删除产品会连带删除其模块与需求,删除模块会连带删除其需求,且均禁用逻辑删除执行物理删除,避免孤儿数据。
前端沿用若依布局,业务页面集中在 src/views:demand/index.vue(需求列表与增删改、指派、评审、详情对话框)、product/index.vue、mokuai/index.vue、mypro/index.vue(我的产品)以及重写后的首页 index.vue(数据看板)。需求页的权限控制贴合业务语义:只有创建人可修改/删除需求,创建人或评审人可发起指派,只有评审人可执行评审操作;新增与编辑对话框使用若依自带富文本组件 Editor 编辑需求描述与验收标准,详情对话框以 el-descriptions 完整回显。
核心功能
- 产品、模块、需求三级管理:产品 CRUD 支持按名称模糊检索、状态筛选与 Excel 导出,产品归属当前登录用户(
AppProductController.buildQuery强制userId().eq(当前用户)),提供下拉框接口listForSelect供需求表单级联选择;模块挂靠产品,删除产品/模块时级联物理删除下级数据。 - 需求池全字段录入与检索:需求支持名称、富文本描述、验收标准、来源、关键词、优先级(低/中/高/紧急)、预计工时、起止时间、附件等字段;列表按创建时间倒序,支持名称、关键词、状态组合筛选,
listForUser按评审人过滤待办,并支持一键导出 Excel(@Excel注解驱动)。 - 需求评审与指派流转:创建人通过”指派”对话框从系统用户中选择评审人(
auditUserId),评审人在”评审”对话框中选择通过/拒绝;通过后状态置为20,配合stage阶段字段继续跟踪计划、立项、研发、测试、验收、发布直至关闭的完整生命周期。 - 首页数据看板:
AppHomeController提供产品统计(总数/今日新增/我创建/我负责)、模块统计、需求统计(总数/我创建/我负责)、需求状态分布与产品状态分布五组聚合接口;前端首页左侧为统计卡片(“我负责的需求”等可点击跳转需求列表),中间为需求状态总览el-progress进度条,右侧为产品完成度环形图与”最近活动”时间线(/app/home/actinLog取最近 10 条操作日志)。 - 操作动态与权限细节:所有增删改自动写
app_action_log并回显为活动流,让团队动态一目了然;需求行内操作按钮按”创建人 / 评审人”身份动态渲染,权限即业务规则。
功能截图
暂无运行截图。
快速上手
后端为 Maven 工程(Spring Boot 2.5.15、Java 8),导入后修改 ruoyi-admin/src/main/resources/application-druid.yml 中的 MySQL 连接,执行根目录 ry20250304.sql 初始化若依系统表与业务表(app_product、app_module、app_require、app_action_log)及种子数据,运行 RuoYiApplication 启动后端。前端进入 ruoyi-ui-需求 目录执行 npm install 与 npm run serve,开发服务器将 /dev-api 请求代理至后端(默认为 admin/123456 管理员账号登录,需求管理入口位于”需求”菜单)。若依自带 Swagger(/swagger-ui/index.html)可查看 app 分组下全部业务接口文档;项目还附有《若依环境使用手册.docx》供环境搭建参考。
总结
项目把需求管理中最朴素也最关键的主线——收集需求、写清描述与验收标准、指派评审、通过后进入研发阶段——完整落地于若依框架之上。最值得学习的是其两层状态设计:status 管评审(草稿/评审中/通过/拒绝),stage 管生命周期(未开始到已关闭),两者解耦后既能表达”评审通过但尚未计划”,也能表达”研发中但需改后复审”;再配合创建人/评审人身份驱动的操作权限与自动沉淀的操作日志动态,构成了一个无需复杂流程引擎即可运转的需求协作闭环。技术选型上以 easy-query 强类型查询替代传统 XML Mapper 写法、删除级联物理清理、Excel 导出开箱即用等实践,对希望基于若依快速构建业务系统的开发者具有直接参考价值。