weather-data/README.md

215 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 气象数据分析平台
基于 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) 二次开发