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