返回作品

项目管理系统

创建于 2025 年 3 月 23 日

标签
  • Java 8
  • Spring Boot 2.5.15
  • RuoYi 3.8.9
  • MyBatis-Plus 3.5.4
  • easy-query 2.5.17
  • MySQL 8.0.32
  • Redis
  • Vue 2.6
  • Element UI 2.15
  • Vuex 3.6
  • Axios
  • Swagger

项目介绍

项目管理系统是一个基于若依 RuoYi 3.8.9 经典版(Spring Boot 2.5.15 + Vue 2 前后端分离)搭建的软件交付项目管理平台。仓库中没有任何项目专属文档,本文基于对后端源码、SQL 脚本(20250323.sql,Navicat 导出的 MySQL 8.0.32 完整库)与前端 views 页面的实际探索整理。

项目分为 20250323-项目管理-api(RuoYi 多模块后端)与 20250323-项目管理-web(Vue 2 管理后台)两个目录。业务功能围绕”软件项目从立项到交付验收”的全流程建模:project(项目)是主档案,project_delivery(交付)、project_review(审核)、quality_file(质量文件)、quality_report(质量报告)围绕项目展开,另有 delivery_attachment(交付附件)、delivery_content(交付内容)、delivery_confirmation(交付确认)、delivery_inspection(交付检查)等配套表在 SQL 中先行设计。2025-04-13 又新增了”AI咨询”菜单——后端直接对接 DeepSeek 大模型 API,管理后台内置一个对话页面,把 AI 助手也纳入了项目管理场景。

值得玩味的是,数据库操作日志(sys_oper_log)完整保留了开发者的真实调试痕迹:新增项目时先后遇到 Unknown column 'progress'Field 'project_id' doesn't have a default value 等建表与代码不一致的错误,随后通过修改表结构逐条修复;测试数据”何志龙测试项目1”的进度也被一步步从 0 调到 100。这些记录让仓库像一份带着时间戳的开发日记。

项目架构

项目沿用若依标准的多模块单体架构,端口 8080,数据库 20250323(MySQL 8.0.32,jdbc:mysql://127.0.0.1:3306/20250323):

模块技术栈说明
ruoyi-adminSpring Boot 2.5.15启动与控制器层,业务 Controller 位于 com.ruoyi.web.controller.system,另有 com.ruoyi.app.controller.AiController
ruoyi-systemSpring Boot领域对象、Mapper、Service,业务实体直接复用系统模块包(com.ruoyi.system.domain
ruoyi-commonMyBatis-Plus 3.5.4、easy-query 2.5.17通用能力;在框架基础上新增 easy-query 全家桶(sql-api-proxy / sql-processor / sql-springboot-starter)与 mybatis-plus-join 1.5.2
ruoyi-framework / quartz / generatorSpring Security、Quartz、代码生成若依框架原生模块
20250323-项目管理-webVue 2.6.12、Element UI 2.15.14、Vuex 3.6.0、vue-router 3.4.9、axios 0.28.1、Sass管理后台前端,业务页面位于 src/views/xiangmuguanli/
20250323.sqlMySQL 8.0.32完整库脚本:框架表(sys_、qrtz_)+ 业务表 + 测试数据 + 菜单与操作日志

后端业务共 5 个 Controller,全部采用若依标准 REST 风格:ProjectController/system/project)、ProjectDeliveryController/system/projectDelivery)、ProjectReviewController/system/projectReview)、QualityFileController/system/qualityFile),每个接口都带 @PreAuthorize("@ss.hasPermi('xxx:xxx:list')") 权限校验、@Log 操作日志注解与 @ApiOperation Swagger 文档;AiController/ai/chat)负责对接大模型。

一个值得关注的技术点是 easy-query 与 MyBatis-Plus 双 ORM 并存ProjectDelivery 等实体同时标注 MyBatis-Plus 的 @TableName/@TableId 与 easy-query 的 @Table/@EntityProxy(实现 ProxyEntityAvailable 接口),Mapper 依旧继承 MyBatis-Plus BaseMapper 并提供 XML,而 ProjectDeliveryController 的编辑与客户确认接口则直接注入 EasyEntityQuery,用 easyEntityQuery.updatable(entity).executeRows() 一行完成按主键更新——两种 ORM 在同一接口中共存,是这次改造中最特别的工程实践。

核心功能

项目管理(project)。 项目档案字段完整:项目名称、项目代码、项目类型、项目负责人与联系方式、客户名称与联系人、项目描述、开始日期、计划结束日期、实际结束日期、状态(0 已关闭 / 1 进行中 / 2 已暂停)、进度百分比。ProjectMapper.xml 的列表查询支持项目名称/代码/负责人/客户模糊匹配、类型与状态精确匹配、开始日期区间(params.endTime)组合检索,并按创建时间倒序;列表还拼接 ${params.dataScope} 数据权限片段。前端 zhiliangxiangmu/index.vueel-progress 进度条 + 状态 el-tag 展示,提供”进度跟踪”对话框——滑块(步长 5)调整进度,同时记录进度说明、存在问题、解决方案与下一步计划,支撑周报式项目跟踪。

项目交付管理(project_delivery)。 交付是业务最重的模块,jiaofu/index.vue 也是五个页面中最复杂的。交付单据包含交付版本、交付类型(里程碑/最终/阶段性)、负责人、计划与实际交付日期、交付状态(待交付/已交付/已验收/已拒绝)、客户联系人、客户确认信息与质量评分,并额外内置四类质量要求字段(代码质量、文档质量、测试覆盖率、性能要求),表单以”基本信息 + 质量要求”双 Tab 组织。列表行内”更多操作”下拉提供五个动作:生成质量报告、交付检查、交付确认、查看报告、交付附件;已验收行整行绿色高亮。交付物通过若依 /common/upload 上传(限 20MB),客户确认支持满意度星级评分与确认文件上传,配套的 delivery_confirmation(确认单)、delivery_content(交付内容清单)、delivery_attachment(附件)、delivery_inspection(检查单)表已在 SQL 中建好,为后续把模拟流程落成真实接口预留了数据结构。

交付检查与质量报告。 “交付检查”对话框将交付物拆成内容清单逐项打分(通过/不通过/部分通过),再对代码、文档、测试、总体质量四项做 1-5 星 el-rate 评分,并填写检查问题与整改建议;全部内容通过后自动把交付状态推进为已验收,总体质量分回写为质量评级。“生成质量报告”对话框可按报告类型(完整/代码/测试/性能/安全)选择代码质量、测试、性能三组指标(如代码规范符合率、单元测试覆盖率、响应时间)并填写报告摘要。目前这两段流程在前端为模拟提交,quality_report 表(含各维度得分与整体得分的 decimal 字段)已定义但尚无对应接口——是明确标注的”下一步”。

项目审核与质量文件。 审核模块(shenhe/index.vue)按若依标准实现审核记录 CRUD:审核类型(0 立项审核 / 1 阶段审核 / 2 验收审核)、审核标题与内容、审核人、审核时间、审核结果(待审核/通过/不通过)与审核意见,支持按项目、类型、结果、时间区间搜索,并提供导出。质量文件模块(wenjian/index.vue)对接若依文件上传:仅允许 pdf/doc/docx/xls/xlsx 且不超过 20MB,记录文件名、类型、路径、大小、上传人与时间,支持行内下载与按文件名称/类型/所属项目/上传时间组合检索。

AI 咨询(ai)。 2025-04-13 新增的菜单,AiController 用 Hutool HttpUtil 以硬编码的 API Key 调用 https://api.deepseek.com/chat/completions(模型 deepseek-chat,OpenAI 兼容的 messages/content 结构),返回原始 JSON 给前端;ai/index.vue 是一个完整的聊天界面:用户消息右对齐蓝色气泡、AI 回复左对齐白色气泡,解析 choices[0].message.content 渲染,带 loading 状态与异常兜底。这是项目里唯一的非 CRUD 亮点功能。

功能截图

暂无运行截图。

快速上手

  1. 导入数据库脚本并初始化:
mysql -u root -p < 20250323.sql   # 含框架表、业务表、菜单与演示数据,库名 20250323
  1. 启动后端:进入 20250323-项目管理-api,确认 ruoyi-admin/src/main/resources/application-druid.yml 中数据库(默认 jdbc:mysql://127.0.0.1:3306/20250323,root/123456)与 application.yml 中 Redis(默认 6379)配置,然后执行:
mvn install -DskipTests
cd ruoyi-admin && mvn spring-boot:run   # http://localhost:8080
  1. 启动管理后台前端:
cd 20250323-项目管理-web && npm install && npm run dev
  1. 使用框架预置账号 admin / admin123 登录,即可在”质量项目管理、质量文件管理、项目审核、项目交付、AI咨询”五个菜单下操作;业务按钮权限(如 system:project:list)已通过 sys_menu 表配置。

总结

项目管理系统是在若依 RuoYi 3.8.9 经典版上的一次完整业务扩展,覆盖了软件交付项目”建档 → 审核 → 交付 → 质量检查 → 客户确认”的主干流程:项目档案与进度跟踪、四类质量要求驱动的交付管理、交付检查与质量报告、立项/阶段/验收审核、质量文件归档,最后以 DeepSeek AI 咨询收尾,业务面相当完整。技术上,它在若依成熟的权限、日志、导出、代码生成底座之上,做出了几个值得记录的尝试:引入 easy-query 实体代理与 MyBatis-Plus 双 ORM 并存、用 EasyEntityQuery 简化更新接口、通过 SQL 脚本先行设计交付检查/附件/确认等配套表、以及硬编码直连大模型 API 的轻量 AI 接入。项目同样诚实地保留了未完成的部分——质量报告与交付检查仍是前端模拟,BookInfoServiceImpl 是一个空文件——这些痕迹恰好让仓库呈现出真实开发迭代的样貌,作为若依二次开发的完整参考案例很有价值。