# PumpRoomAuto **Repository Path**: console123/PumpRoomAutomationManagement ## Basic Information - **Project Name**: PumpRoomAuto - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-23 - **Last Updated**: 2025-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 泵房自动化系统 - Java 版本 这是泵房自动化系统的 Java 后端服务,使用 **Spring Boot 3.2+** 和 **JDK 21** 构建,数据库使用**达梦数据库 DM8**。 ## 🚀 功能特性 - 🔐 **用户认证与授权** - JWT Token 认证,基于角色的访问控制 - 👥 **用户管理** - 完整的用户 CRUD 操作,支持多种用户角色和权限 - 📊 **数据库集成** - 达梦数据库 DM8,使用 JPA/Hibernate - ⚙️ **系统配置** - 站点配置、报警配置、运行参数管理 - 🔔 **报警系统** - 报警配置和记录管理,实时监控 - 📈 **遥测数据** - 分钟级时序数据采集和存储 - 🏭 **OPC UA 集成** - 工业自动化数据采集(Eclipse Milo) - 📹 **摄像头集成** - 海康摄像头支持 - 📝 **日志记录** - Logback 结构化日志记录 - 📚 **API 文档** - Swagger/OpenAPI 自动文档生成 ## 🛠️ 技术栈 - **JDK 21** - 最新的 Java 长期支持版本,支持虚拟线程 - **Spring Boot 3.2+** - 企业级 Java 框架 - **Spring Data JPA** - ORM 框架 - **Spring Security** - 安全框架 - **达梦数据库 DM8** - 国产信创数据库 - **Eclipse Milo** - OPC UA 客户端库 - **JWT (JJWT)** - JSON Web Token 认证 - **BCrypt** - 密码加密 - **Lombok** - 简化 Java 代码 - **SpringDoc OpenAPI** - API 文档生成 ## 📋 先决条件 - JDK 21 或更高版本 - Maven 3.8+ - 达梦数据库 DM8 (dm8_20250930_HG_kylin10_64) - (可选)IntelliJ IDEA 或 Eclipse IDE ## 🚀 快速开始 ### 1. 安装达梦数据库 确保已安装达梦数据库 DM8,并创建数据库: ```sql -- 使用 DM 管理工具或命令行创建数据库 CREATE DATABASE PUMPROOM_AUTOMATION; ``` ### 2. 配置数据库连接 编辑 `src/main/resources/application.yml`,配置达梦数据库连接: ```yaml spring: datasource: url: jdbc:dm://localhost:5236/PUMPROOM_AUTOMATION username: SYSDBA password: SYSDBA001 driver-class-name: dm.jdbc.driver.DmDriver ``` ### 3. 构建项目 ```bash cd PumpRoomAutomationManagement mvn clean install ``` ### 4. 运行应用 ```bash mvn spring-boot:run ``` 或者运行打包后的 JAR: ```bash java -jar target/pump-room-automation-management-1.0.0.jar ``` 应用将在 `http://localhost:8080` 启动。 ### 5. 访问 API 文档 启动应用后,访问 Swagger UI: ``` http://localhost:8080/swagger ``` ### 6. 默认用户 系统会自动创建两个默认用户: **管理员账号:** - **用户名**: `admin` - **密码**: `admin123` - **角色**: 管理员 **超级管理员账号:** - **用户名**: `root` - **密码**: `root123` - **角色**: ROOT **⚠️ 重要**: 在生产环境中,请立即更改默认密码! ## 📁 项目结构 ``` PumpRoomAutomationManagement/ ├── src/main/java/com/pumproom/ │ ├── PumpRoomAutomationApplication.java # 主应用类 │ ├── config/ # 配置类 │ │ ├── AppSettings.java │ │ ├── JwtSettings.java │ │ ├── OpcUaSettings.java │ │ ├── CameraSettings.java │ │ ├── SecurityConfig.java │ │ ├── OpenApiConfig.java │ │ ├── DatabaseInitializer.java │ │ └── DmDialect.java # 达梦数据库方言 │ ├── controller/ # 控制器层 │ │ ├── AuthController.java │ │ └── HomeController.java │ ├── dto/ # 数据传输对象 │ │ ├── auth/ │ │ └── common/ │ ├── model/ # 数据模型 │ │ ├── entity/ # 实体类 │ │ │ ├── User.java │ │ │ ├── SiteConfig.java │ │ │ ├── AlarmConfig.java │ │ │ ├── AlarmRecord.java │ │ │ └── ...(遥测数据实体) │ │ └── enums/ # 枚举类 │ │ ├── UserGroup.java │ │ ├── UserStatus.java │ │ └── AlarmSeverity.java │ ├── repository/ # 数据访问层 │ │ ├── UserRepository.java │ │ ├── SiteConfigRepository.java │ │ └── AlarmConfigRepository.java │ ├── security/ # 安全组件 │ │ └── JwtAuthenticationFilter.java │ └── service/ # 业务逻辑层 │ ├── AuthService.java │ ├── security/ │ │ ├── JwtTokenService.java │ │ └── PasswordService.java │ ├── opcua/ │ │ ├── OpcUaClientService.java │ │ └── OpcUaConnectionManager.java │ ├── collector/ │ │ └── DataCollectorService.java │ └── alarm/ │ └── AlarmMonitorService.java ├── src/main/resources/ │ └── application.yml # 应用配置 ├── pom.xml # Maven 配置 └── README.md # 项目说明 ``` ## 🔌 API 端点 ### 认证端点 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/register` - 用户注册 - `GET /api/auth/me` - 获取当前用户信息 ### 系统端点 - `GET /` - 系统信息 - `GET /health` - 健康检查 - `GET /swagger` - API 文档 ## ⚙️ 配置说明 ### JWT 配置 ```yaml jwt: secret: your-super-secret-jwt-key-change-this-in-production-must-be-at-least-32-characters issuer: PumpRoomAutomationSystem audience: PumpRoomAutomationClient access-token-expiration-minutes: 30 refresh-token-expiration-days: 7 ``` ### OPC UA 配置 ```yaml opcua: url: opc.tcp://192.168.30.102:4840 timeout: 10000 security-policy: None security-mode: None anonymous: true session-timeout: 30000 request-timeout: 10000 max-retries: 5 retry-delay: 3000 ``` ### 达梦数据库配置 ```yaml spring: datasource: url: jdbc:dm://localhost:5236/PUMPROOM_AUTOMATION username: SYSDBA password: SYSDBA001 driver-class-name: dm.jdbc.driver.DmDriver jpa: database-platform: org.hibernate.dialect.DmDialect hibernate: ddl-auto: update ``` ## 🔧 开发指南 ### 添加新的实体类 1. 在 `model/entity/` 中创建实体类 2. 在 `repository/` 中创建对应的 Repository 接口 3. 在 `service/` 中实现业务逻辑 4. 在 `controller/` 中创建 REST API ### 数据采集定时任务 数据采集服务位于 `service/collector/DataCollectorService.java`,使用 Spring 的 `@Scheduled` 注解实现定时任务: ```java @Scheduled(fixedRate = 60000, initialDelay = 10000) public void collectWaterLevels() { // 采集逻辑 } ``` ### 报警监控 报警监控服务位于 `service/alarm/AlarmMonitorService.java`,每10秒检查一次报警条件。 ## 📦 部署 ### 打包应用 ```bash mvn clean package -DskipTests ``` 生成的 JAR 文件位于 `target/` 目录。 ### 使用 systemd 部署(Linux) 创建服务文件 `/etc/systemd/system/pumproom-backend.service`: ```ini [Unit] Description=Pump Room Automation Backend (Java) After=network.target dm.service [Service] Type=simple User=pumproom WorkingDirectory=/opt/pumproom ExecStart=/usr/bin/java -jar /opt/pumproom/pump-room-automation-management-1.0.0.jar Restart=always RestartSec=10 Environment="JAVA_OPTS=-Xms512m -Xmx2048m" [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl enable pumproom-backend sudo systemctl start pumproom-backend sudo systemctl status pumproom-backend ``` ## 🐛 故障排除 ### 数据库连接失败 1. 检查达梦数据库服务是否运行 2. 验证连接字符串是否正确 3. 确认数据库用户有足够的权限 ### JWT 认证失败 1. 确认 JWT Secret 长度至少 32 个字符 2. 检查令牌是否过期 3. 验证 Issuer 和 Audience 配置 ## 📝 日志 日志文件位于 `logs/pumproom_backend.log`,使用 Logback 进行日志记录。 ## 🔒 安全建议 1. **更改默认密码** - 立即更改默认管理员密码 2. **使用强密钥** - 生成强随机 JWT Secret 3. **启用 HTTPS** - 在生产环境中强制使用 HTTPS 4. **限制 CORS** - 只允许信任的来源 5. **定期更新** - 保持依赖包最新 6. **数据库加密** - 启用达梦数据库的加密功能 ## 📄 许可证 本项目为内部使用项目。 ## 📧 技术支持 技术支持: support@pumproom.com --- **© 2025 泵房自动化系统 - Java 版本**