mps-batch/MpsSimulationBatch/README.md

216 lines
5.9 KiB
Markdown
Raw Normal View History

2025-09-13 16:31:45 +08:00
# MPS模拟批量处理系统
## 项目概述
员工计价系统后台Java跑批程序用于每日处理T-1的计价结果
## 功能特性
- **自动批量处理**: 每天执行,处理前一天的计价结果
- **状态控制**: 基于mps_batch_simulation表的状态控制机制
- **业务控制**: 基于business_subcategory表的业务开关控制
- **重跑支持**: 支持整个批量重跑或指定业务重跑(暂时取消)
- **数据库兼容**: 支持MySQL和达梦数据库
- **完整日志**: 详细的执行日志和批量执行专用日志
## 项目结构
```
MpsSimulationBatch/
├── src/main/java/com/gtsoft/mps/batch/
│ ├── config/ # 配置管理
│ │ └── ConfigManager.java
│ ├── service/ # 业务服务
│ │ ├── BatchStatusService.java
│ │ └── BusinessControlService.java
│ ├── processor/ # 业务处理器
│ │ ├── AbstractBusinessProcessor.java
│ │ ├── BusinessProcessorFactory.java
│ │ ├── BIZ000Processor.java # 基础数据处理
│ │ ├── BIZ001Processor.java # 智E通个人版
│ │ ├── BIZ002Processor.java # 智E通未动户激活
│ │ ├── BIZ003Processor.java # 智E通企业版
│ │ ├── BIZ004Processor.java # 企业手机银行
│ │ ├── BIZ005Processor.java # 新增综合收单商户
│ │ └── BIZ008Processor.java # 网上支付
│ ├── util/ # 工具类
│ │ ├── DatabaseConnection.java
│ │ └── DateUtils.java
│ └── MpsSimulationBatchMain.java # 主程序
├── src/main/resources/
│ └── logback.xml # 日志配置
├── conf/
│ └── application.properties # 应用配置
├── bin/ # 启动脚本
│ ├── start.sh # Linux启动脚本
│ ├── start.bat # Windows启动脚本
│ ├── rerun.sh # Linux重跑脚本
│ └── rerun.bat # Windows重跑脚本
├── logs/ # 日志目录
├── DDL/ # 数据库脚本
└── example/ # 业务逻辑示例
```
## 批量控制逻辑
### 状态控制表mps_batch_simulation
| 状态值 | 状态说明 | 处理策略 |
|--------|----------|----------|
| 0 | 初始状态 | 重跑当日批量 |
| 1 | 成功 | 创建下一天批量记录 |
| 2 | 执行中 | 不允许重复执行 |
| 3 | 失败 | 重跑当日批量 |
### 业务控制表business_subcategory
- `status = '0'`: 业务可执行
- `status != '0'`: 业务跳过不执行
## 使用方法
### 1. 编译项目
```bash
mvn clean package
```
### 2. 配置数据库
编辑 `conf/application.properties`
```properties
# MySQL配置当前使用
db.mysql.url=jdbc:mysql://localhost:3306/cdsdb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
db.mysql.username=root
db.mysql.password=123456
# 达梦配置(备用)
db.dm.url=jdbc:dm://localhost:5236/DMSERVER?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8
db.dm.username=SYSDBA
db.dm.password=SYSDBA
# 数据库类型选择
db.type=mysql
```
### 3. 执行批量
#### 正常批量(自动确定日期)
```bash
# Linux
./bin/start.sh
# Windows
bin\start.bat
```
#### 重跑整个批量
```bash
# Linux
./bin/rerun.sh 20250901
# Windows
bin\rerun.bat 20250901
```
#### 重跑指定业务(暂时取消)
```bash
# Linux
./bin/rerun.sh 20250901 BIZ001,BIZ002
# Windows
bin\rerun.bat 20250901 BIZ001,BIZ002
```
### 4. 定时任务设置
在Linux服务器上设置crontab
```bash
# 每天凌晨2点执行批量
0 2 * * * /path/to/MpsSimulationBatch/bin/start.sh >> /path/to/MpsSimulationBatch/logs/cron.log 2>&1
```
## 支持的业务类型
| 业务代码 | 业务名称 | 对应SQL文件 |
|----------|----------|-------------|
| BIZ000 | 基础数据处理-插入全量经办/营销人员信息 | 000000.sql |
| BIZ001 | 有效智e通个人版计价处理 | BIZ001.sql |
| BIZ002 | 智e通未动户激活计价处理 | BIZ002.sql |
| BIZ003 | 智e通企业版计价处理 | BIZ003.sql |
| BIZ004 | 企业手机银行计价处理 | BIZ004.sql |
| BIZ005 | 新增综合收单商户计价处理 | BIZ005.sql |
| BIZ008 | 网上支付计价处理 | BIZ008.sql |
## 日志说明
### 日志文件
- `logs/mps-batch.log`: 应用主日志
- `logs/batch-execution.log`: 批量执行专用日志
### 日志级别
- INFO: 正常执行信息
- WARN: 警告信息
- ERROR: 错误信息
- DEBUG: 调试信息(默认关闭)
## 异常处理
### 常见问题
1. **数据库连接失败**
- 检查数据库配置
- 确认数据库服务状态
- 验证网络连通性
2. **批量状态冲突**
- 检查mps_batch_simulation表状态
- 如需强制执行手动修改状态为0或3
3. **业务处理失败**
- 查看详细日志
- 检查数据完整性
- 验证业务逻辑
### 监控建议
1. 监控日志文件大小和异常关键字
2. 监控批量执行时间和成功率
3. 设置数据库连接超时告警
4. 配置邮件或短信通知
## 扩展说明
### 添加新业务
1. 在`business_subcategory`表中添加业务记录
2. 创建对应的Processor类继承`AbstractBusinessProcessor`
3. 在`BusinessProcessorFactory`中注册新业务
4. 实现具体的业务逻辑
### 数据库迁移
程序支持从MySQL迁移到达梦数据库
1. 修改`conf/application.properties`中的`db.type`
2. 确保达梦数据库驱动jar包在classpath中
3. 验证SQL语句兼容性
## 技术规格
- **Java版本**: OpenJDK 17
- **数据库**: MySQL 8.0+ / 达梦 8.0+
- **服务器**: Linux
- **依赖管理**: Maven
- **日志框架**: Logback + SLF4J
## 联系信息
如有问题请联系开发团队或查看项目文档。