返回作品

需求管理系统

创建于 2025 年 3 月 4 日

标签
  • Spring Boot
  • easy-query
  • MyBatis-Plus
  • MySQL
  • Spring Security
  • Redis
  • Vue 2
  • Element UI
  • ECharts
  • Axios

项目介绍

需求管理系统(目录 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-querycom.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/viewsdemand/index.vue(需求列表与增删改、指派、评审、详情对话框)、product/index.vuemokuai/index.vuemypro/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_productapp_moduleapp_requireapp_action_log)及种子数据,运行 RuoYiApplication 启动后端。前端进入 ruoyi-ui-需求 目录执行 npm installnpm run serve,开发服务器将 /dev-api 请求代理至后端(默认为 admin/123456 管理员账号登录,需求管理入口位于”需求”菜单)。若依自带 Swagger(/swagger-ui/index.html)可查看 app 分组下全部业务接口文档;项目还附有《若依环境使用手册.docx》供环境搭建参考。

总结

项目把需求管理中最朴素也最关键的主线——收集需求、写清描述与验收标准、指派评审、通过后进入研发阶段——完整落地于若依框架之上。最值得学习的是其两层状态设计:status 管评审(草稿/评审中/通过/拒绝),stage 管生命周期(未开始到已关闭),两者解耦后既能表达”评审通过但尚未计划”,也能表达”研发中但需改后复审”;再配合创建人/评审人身份驱动的操作权限与自动沉淀的操作日志动态,构成了一个无需复杂流程引擎即可运转的需求协作闭环。技术选型上以 easy-query 强类型查询替代传统 XML Mapper 写法、删除级联物理清理、Excel 导出开箱即用等实践,对希望基于若依快速构建业务系统的开发者具有直接参考价值。