# it-project-management **Repository Path**: code-collab/it-project-management ## Basic Information - **Project Name**: it-project-management - **Description**: 一个基于 Spring Boot + Thymeleaf 的企业级 IT 项目管理系统,提供项目管理、任务看板、甘特图、通知中心、数据统计等完整功能。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-26 - **Last Updated**: 2026-07-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: PM ## README # IT项目管理平台 (ITPM) 一个基于 Spring Boot + Thymeleaf 的企业级 IT 项目管理系统,提供项目管理、任务看板、甘特图、通知中心、数据统计等完整功能。 ## 功能特性 ### 核心功能 - **项目管理** - 项目全生命周期管理,支持规划→需求→设计→开发→测试→验收→完成的状态流转 - **任务看板** - 看板式任务管理,拖拽式状态流转,支持子任务、评论、附件 - **甘特图** - 可视化项目进度,任务时间线展示 - **里程碑管理** - 项目里程碑设置与跟踪 - **通知中心** - 站内消息通知,WebSocket 实时推送 - **数据仪表盘** - 项目/任务状态统计图表 - **报表统计** - 项目进度、成员贡献度等多维度报表 ### 系统功能 - **用户权限** - RBAC 权限模型,用户/角色/权限管理 - **操作日志** - 完整的操作审计记录 - **系统设置** - 平台参数配置 - **个人中心** - 用户资料与偏好设置 - **全局搜索** - 项目与任务快速检索 ## 技术栈 ### 后端 - **框架**: Spring Boot 3.2.12 - **语言**: Java 17 - **ORM**: Spring Data JPA + Hibernate - **数据库**: MySQL 8.0 - **认证**: Sa-Token 1.38.0 + JWT - **实时通信**: WebSocket + STOMP - **工具库**: Hutool 5.8.27, Lombok, MapStruct - **Excel导出**: EasyExcel 3.3.2 - **API文档**: SpringDoc OpenAPI 2.5.0 ### 前端 - **模板引擎**: Thymeleaf + Layout Dialect - **UI框架**: 原生 HTML/CSS/JavaScript - **图表**: ECharts - **日期选择**: flatpickr(中文本地化) ## 环境要求 - JDK 17+ - Maven 3.8+ - MySQL 8.0+ - Redis 7.0+(可选,默认使用内存会话) ## 快速开始 ### 1. 克隆项目 ```bash git clone <仓库地址> cd it-project-management ``` ### 2. 数据库初始化 创建数据库并执行初始化脚本: ```sql CREATE DATABASE it_project_mgmt DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 执行 `src/main/resources/sql/init-schema.sql` 脚本创建表结构和初始化数据。 ### 3. 配置修改 修改 `src/main/resources/application.yml` 中的数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/it_project_mgmt?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: your_password ``` ### 4. 启动项目 ```bash mvn spring-boot:run ``` 或者打包后运行: ```bash mvn clean package java -jar target/it-project-management-1.0.0-SNAPSHOT.jar ``` ### 5. 访问系统 打开浏览器访问:http://localhost:8080 **默认账号**: - 用户名: `admin` - 密码: `admin123` ## Docker 部署 ### 使用 Docker Compose ```bash # 构建并启动 docker-compose up -d # 查看日志 docker-compose logs -f app # 停止服务 docker-compose down ``` 服务启动后访问 http://localhost:8080 ## 项目结构 ``` it-project-management/ ├── src/ │ ├── main/ │ │ ├── java/com/itpm/ │ │ │ ├── common/ # 通用类 │ │ │ │ ├── BaseEntity.java # 基础实体 │ │ │ │ ├── PageResult.java # 分页结果 │ │ │ │ └── Result.java # 统一响应 │ │ │ ├── config/ # 配置类 │ │ │ └── project/ # 业务模块 │ │ │ ├── annotation/ # 自定义注解 │ │ │ ├── aspectj/ # AOP切面 │ │ │ ├── config/ # 业务配置 │ │ │ ├── controller/ # 控制器层 │ │ │ ├── dto/ # 数据传输对象 │ │ │ ├── entity/ # 实体类 │ │ │ ├── exception/ # 异常处理 │ │ │ ├── repository/ # 数据访问层 │ │ │ └── service/ # 业务逻辑层 │ │ └── resources/ │ │ ├── sql/ # 数据库脚本 │ │ ├── static/ # 静态资源 │ │ │ ├── css/ │ │ │ └── js/ │ │ ├── templates/ # 页面模板 │ │ │ ├── layout/ # 布局模板 │ │ │ ├── dashboard.html # 仪表盘 │ │ │ ├── project/ # 项目管理 │ │ │ ├── task/ # 任务管理 │ │ │ ├── kanban/ # 看板视图 │ │ │ ├── gantt/ # 甘特图 │ │ │ ├── milestone/ # 里程碑 │ │ │ ├── notification/ # 通知中心 │ │ │ ├── reports/ # 报表 │ │ │ ├── user/ # 用户管理 │ │ │ ├── role/ # 角色管理 │ │ │ ├── permission/ # 权限管理 │ │ │ └── ... │ │ ├── application.yml # 应用配置 │ │ └── logback-spring.xml # 日志配置 │ └── test/ # 测试代码 ├── pom.xml ├── Dockerfile ├── docker-compose.yml └── README.md ``` ## 数据库表结构 | 表名 | 说明 | |------|------| | `t_sys_user` | 系统用户表 | | `t_sys_role` | 系统角色表 | | `t_sys_user_role` | 用户角色关联表 | | `t_sys_permission` | 系统权限表 | | `t_sys_role_permission` | 角色权限关联表 | | `t_sys_setting` | 系统设置表 | | `t_sys_operation_log` | 操作日志表 | | `t_project` | 项目表 | | `t_project_member` | 项目成员表 | | `t_milestone` | 项目里程碑表 | | `t_task` | 任务表 | | `t_subtask` | 子任务表 | | `t_task_comment` | 任务评论表 | | `t_task_attachment` | 任务附件表 | | `t_task_dependency` | 任务依赖表 | | `t_notification` | 通知表 | ## 项目状态流转 ``` 规划 → 需求分析 → 设计 → 开发 → 测试 → 验收 → 完成 ``` 推进按钮仅支持正向推进,不支持回退或暂停。 ## 开发说明 ### 代码规范 - 实体类使用 Lombok 简化代码 - 统一使用 `Result` 作为接口返回格式 - 分页查询使用 `PageResult` 封装 - 操作日志通过 `@OperationLog` 注解自动记录 ### 注意事项 - HTMX 局部刷新需保持 DOM 结构完整性 - 复杂对象在 Thymeleaf 模板中通过 JSON 字符串传递 - 子模板中的 JS 脚本必须放在 `layout:fragment="script"` 内 - 推进按钮使用 `getNextProgressStatus()` 方法获取下一状态 ## License MIT License ## 贡献 欢迎提交 Issue 和 Pull Request!