一、 处理流程
报文生成和处理流程如下:
二、 报文生成步奏及其处理方法
1. 获得数据
处理方法:数据从数据库直接获得(附件除外)。按照报送机构进行划分,获取其中的所有客户信息和交易明细。
2. 数据分包
需要将每个包保证在5M以下,其中的每个附件包不能大于2M。
处理方法:根据测试获得大致的压缩比率,得到每个包内大致有多少个明细信息后可以保证包在5M以下,然后根据此原则进行分割打包。如果某条数据含有附件,则将其单独打包。在附件上传时保证每个附件包不能大于2M。
3. 日志记录
在每个包生成后都要记录下该数据包的相关信息。
处理方法:需要记录生成的时间,生成的文件名称,其中的报送机构代码,客户编号,交易明细编号,及其所处状态,备注。
4. 记录回执文件
系统会根据发送的报文返回相应的回执报文,有成功和需要重发两种。
处理方法:分析回执报文将相应的数据包的日志记录的状态修改为成功或需要重发。需要重发的报文需要手动处理后进行重发处理。分析回执报文后需要将信息记录在回执日志表中。
回执文件的相关信息(包括错误信息)要记录在单独的回执表中,要和发送报文信息日志表中的数据想对应。
5. 重发和特殊报文的处理
重发报文为人行回执文件说明有错误的报文,特殊报文为自身发现有错误的已发送报文进行更改的报文。
处理方法:
(1) 重发报文:根据日志记录中的信息,及其记录的回执表中的信息在操作人员查看和进行数据的相应修改后生成。
(2) 特殊报文:在操作人员经过流程确认的情况下,手动生成特殊报文。
(3) 以上情况都需要记录其日志。
三、 数据存储表
1. 发送报文日志表(REP_REPORT_LOG_TB)
字段名称 |
是否主键 |
字段类型 |
字段长度 |
字段描述 |
NAME |
是 |
Varchar2 |
50 |
文件名称 |
ORGAN_NO |
否 |
Varchar2 |
9 |
报送机构编码 |
DATE |
否 |
date |
|
生成日期时间 |
STATUS |
否 |
number |
1 |
记录当前所处状态: 1. 等待发送 2. 发送成功 3. 需要重发 4. 等待重发 |
TYPE |
否 |
number |
1 |
记录报文类型: 1. 普通报文 2. 重发报文 3. 特殊报文 |
ABOUT |
否 |
Varchar2 |
64 |
备注信息 |
2. 发送报文与客户对应关系表(REP_REPORT_CLIENT_TB)
字段名称 |
是否主键 |
字段类型 |
字段长度 |
字段描述 |
NAME |
是 |
Varchar2 |
50 |
文件名称 |
CUST_ID |
是 |
Varchar2 |
20 |
客户编号 |
3. 发送报文与明细对应关系表(REP_REPORT_DETIAL_TB)
字段名称 |
是否主键 |
字段类型 |
字段长度 |
字段描述 |
NAME |
是 |
Varchar2 |
50 |
发送报文文件名称 |
DETAIL_ID |
是 |
number |
|
明细编号 |
CUST_ID |
否 |
Varchar2 |
20 |
客户编号 |
4. 回执报文日志表(REP_RECEIPT_LOG_TB)
字段名称 |
是否主键 |
字段类型 |
字段长度 |
字段描述 |
RECEIPT_NAME |
是 |
Varchar2 |
50 |
回执报文包名称 |
REPORT_NAME |
否 |
Varchar2 |
50 |
报送报文包名称 |
DATE |
否 |
date |
|
记录回执日期时间 |
TYPE |
否 |
number |
1 |
回执文件类型 1. 正常 2. 错误 |
5. 回执报文文件日志表(REP_RECEIPT_FILE_TB)
字段名称 |
是否主键 |
字段类型 |
字段长度 |
字段描述 |
RECEIPT_FILE_NAME |
是 |
Varchar2 |
50 |
回执报文文件名称 |
RECEIPT_NAME |
否 |
Varchar2 |
50 |
回执报文包名称 |
6. 错误信息表(REP_ERROR_INFOR_TB)
字段名称 |
是否主键 |
字段类型 |
字段长度 |
字段描述 |
RECEIPT_NAME |
是 |
Varchar2 |
50 |
回执文件名称 |
SEQNO |
是 |
number |
|
序号 |
TYPE |
否 |
number |
1 |
错误类型 1. 包名错误 2. 文件名称错误 3. 文件内容错误 |
REASON |
否 |
Varchar2 |
2 |
01:格式错误; 02:逻辑错误 03:附件包超过规定大小 |
ERROR_NUM |
否 |
number |
4 |
错误总数 |
ERROR_PLACE |
否 |
Varchar2 |
64 |
错误定位 |