# 气象数据分析平台 基于 Spring Boot 3.5 / Vue 3 的全栈气象数据管理与分析系统,支持气象站点管理、逐日观测数据批量导入、数据统计分析与可视化展示。 > **开发者文档** → [CLAUDE.md](CLAUDE.md) --- ## 项目结构 ``` weather-data/ ├── system-common/ → 公共模块:基础实体、工具类、Redis、校验 ├── system-admin/ → 管理后台 (port 8080, /system-admin) │ └── modules/weather/ │ ├── dailydata/ → 逐日观测数据(Excel 批量导入、统计汇总) │ ├── station/ → 气象站点管理 │ └── filescan/ → 气象资料文件监控与查阅 ├── system-api/ → 外部 API 服务 (port 8081, /renren-api) ├── system-dynamic-datasource/ → 多数据源支持(预留) ├── renren-generator/ → 代码生成器 └── weather-data-ui/ → Vue 3 前端 ``` ### 模块说明 | 模块 | 说明 | |---|---| | **system-admin** | 管理后台,包含气象数据管理、站点管理、文件查阅、系统管理(用户/角色/菜单/部门)、定时任务、日志管理 | | **system-api** | 对外开放的 REST API 服务,提供用户注册/登录等接口 | | **system-common** | 共享库,被所有子模块依赖 | | **weather-data-ui** | 前端 SPA,气象数据仪表盘、CRUD 页面、图表可视化 | --- ## 技术栈 | 层级 | 技术 | |---|---| | 后端框架 | Spring Boot 3.5, MyBatis-Plus 3.5, Apache Shiro 1.12 | | 数据库 | MySQL 8.0(也支持达梦、Oracle、SQL Server、PostgreSQL) | | 缓存 | Redis 7(可选) | | 定时任务 | Quartz | | 接口文档 | Knife4j (Swagger) | | 前端框架 | Vue 3, TypeScript, Vite 5, Element Plus, Pinia, ECharts | **环境要求**:JDK 17+, Maven 3.6+, Node.js 18+, MySQL 8.0+ --- ## 快速启动(本地开发) ### 1. 初始化数据库 创建数据库 `weather_data_system`(UTF-8mb4),执行初始化脚本: ```bash mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS weather_data_system DEFAULT CHARSET utf8mb4" mysql -u root -p weather_data_system < system-admin/db/weather_data_system.sql ``` ### 2. 配置数据源 编辑 `system-admin/src/main/resources/application-dev.yml`,修改 MySQL 连接信息: ```yaml spring: datasource: druid: url: jdbc:mysql://localhost:3306/weather_data_system?... username: root password: 你的密码 ``` ### 3. 启动后端 ```bash # 完整构建(跳过测试) mvn clean install -DskipTests # IDEA 中直接运行 AdminApplication.java ``` 管理后台:http://localhost:8080/system-admin 接口文档:http://localhost:8080/system-admin/doc.html(默认关闭,需在 `application.yml` 中启用 `knife4j.enable: true`) 默认账号:`admin` / `admin` ### 4. 启动前端 ```bash cd weather-data-ui npm install npm run dev ``` 前端开发服务器:http://localhost:8001 > **注意**:前端开发环境 `.env.development` 中 `VITE_APP_API` 默认指向 `http://192.168.2.186:8080/system-admin`,请按需修改为你的后端地址。 --- ## 生产部署 项目提供两种部署方式,根据目标环境选用。 ### Windows 一键部署 适用于 Windows Server 生产环境,自动安装 MySQL / Redis / Nginx 并部署前后端。 **部署包结构**(`deploy/` 目录,可独立拷贝到目标服务器): ``` deploy/ ├── deploy.bat ← 一键部署(推荐,双击运行) ├── deploy.ps1 ← PowerShell 版本 ├── templates/ ← 配置模板(deploy.bat 使用) ├── project/ │ ├── client-side/dist/ ← 前端构建产物 │ └── server-side/ │ ├── system-admin.jar ← 管理后台 │ └── system-api.jar ← API 服务(可选) ├── mysql/init/ │ └── weather_data_system.sql ← 数据库初始化脚本 ├── nginx/nginx.conf ← Docker 网关配置 └── software/ ← 第三方安装包 ├── mysql-installer-community-8.0.46.0.msi ├── nginx-1.28.3.zip └── Redis-8.8.0-Windows-x64-Service.zip ``` ```cmd REM 以管理员身份运行命令提示符 deploy\deploy.bat :: 默认安装到 C:\weather-data REM 部署完成后: C:\weather-data\start.bat :: 启动平台 C:\weather-data\stop.bat :: 停止平台 ``` > **前置条件**:Windows 10 1803+ 或 Windows Server 2019+,需预装 JDK 17+。将 `deploy/` 目录完整拷贝至目标服务器后以管理员身份运行 `deploy.bat`。 ### Docker 部署 适用于 Linux 服务器或支持 Docker 的 Windows 环境。编排包含 6 个服务:MySQL、Redis、Admin、API、UI、Gateway。 ### 前置条件 1. 安装 Docker Engine 20.10+ 和 Docker Compose v2 2. JAR 已构建到各模块的 `target/` 目录 3. 前端已构建到 `weather-data-ui/dist/` ### 部署步骤 ```bash # 1. 构建所有模块 mvn clean install -DskipTests cd weather-data-ui && npm run build && cd .. # 2. 修改环境变量(密码等敏感信息) cp .env .env.local # 修改 .env.local 中的密码 # 3. 创建部署所需的 nginx 配置目录 mkdir -p deploy/nginx deploy/mysql/init # 4. 复制初始化 SQL cp system-admin/db/weather_data_system.sql deploy/mysql/init/ # 5. 启动 docker compose up -d # 6. 访问 # http://localhost → 前端页面 # http://localhost:8080/system-admin → 管理后台 # http://localhost:8081/renren-api → API 服务 ``` ### 常用命令 ```bash docker compose up -d # 启动所有服务 docker compose down # 停止所有服务 docker compose logs -f admin # 查看管理后台日志 docker compose restart admin # 重启管理后台 ``` --- ## 主要功能 ### 气象数据管理 - **逐日观测数据**:支持 Excel 批量导入(异步双遍扫描,进度可查)、按站点/日期查询、统计分析、导出 - **气象站点管理**:站点 CRUD,关联部门实现数据权限隔离 - **气象资料查阅**:自动监控资料文件目录,支持在线查阅 ### 系统管理 - 用户 / 角色 / 菜单 / 部门管理 - 数据权限:`@DataFilter` 注解实现部门级数据隔离 - 定时任务:Quartz 动态管理,支持在线启停 - 操作日志 / 登录日志 / 异常日志 - 文件存储(支持本地及云存储) ### 前端仪表盘 - 气象数据多维度统计与图表可视化(ECharts) - 筛选、排序、导出(PNG/PDF) - 导入进度实时展示 --- ## 参考链接 - [CLAUDE.md](CLAUDE.md) — 开发者文档(架构、规范、注意事项) - 基于 [renren-security](https://gitee.com/renrenio/renren-security) 二次开发