mps-batch/MpsFormalBatch/README.md
2025-09-13 16:30:58 +08:00

216 lines
5.8 KiB
Markdown
Raw 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.

# MPS模拟批量处理系统
## 项目概述
员工计价系统后台Java跑批程序用于每日处理T-1的计价结果。
## 功能特性
- **自动批量处理**: 每天执行,处理前一天的计价结果
- **状态控制**: 基于mps_batch表的状态控制机制
- **业务控制**: 基于business_subcategory表的业务开关控制
- **重跑支持**: 支持整个批量重跑或指定业务重跑(暂时取消)
- **数据库兼容**: 支持MySQL和达梦数据库
- **完整日志**: 详细的执行日志和批量执行专用日志
## 项目结构
```
MpsFormalBatch/
├── 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
│ └── MpsFormalBatchMain.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
| 状态值 | 状态说明 | 处理策略 |
|--------|----------|----------|
| 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/MpsFormalBatch/bin/start.sh >> /path/to/MpsFormalBatch/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表状态
- 如需强制执行手动修改状态为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
## 联系信息
如有问题请联系开发团队或查看项目文档。