216 lines
5.9 KiB
Markdown
216 lines
5.9 KiB
Markdown
# 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
|
||
|
||
## 联系信息
|
||
|
||
如有问题请联系开发团队或查看项目文档。 |