资源描述
业务数据通讯模块概要设计文档
杭州方欣计算机工程有限公司
2009年7月
目 录
引言 3
概述 4
1、背景介绍 4
2、通讯需求 4
采用TCP/IP协议 4
传递报文 4
同步或异步传输 4
文本或文件传输 4
3、通讯示意图 4
第一章 通讯业务基本规则 6
1、通讯中涉及到的数据范围及数据流向: 6
2、总公司FTP服务器规范说明: 6
3、分公司端与总公司端通讯报文: 6
3.1、用途 6
3.2、格式 6
第二章 客户端交易过程流程图 7
第三章 服务端交易过程 9
第四章 通讯相关业务描述 9
一、基础资料传输交易 9
二、基础资料传输流程图 10
三、开票信息传输交易 10
四、开票信息传输流程图 10
第五章 通讯报文格式描述 12
分公司与总公司通讯报文 12
1、基础资料传输交易 12
2、基础资料传输状态查询交易 14
3、开票信息传输交易 14
4、开票信息传输状态查询交易 15
5、网络状态查询 17
第六章 附录 17
一、交易存储过程返回代码说明: 17
引言
〖阅读指南〗
。
〖阅读对象〗
〖名词解释〗
【注意】
联系人
【警告】
无。
概述
1、背景介绍
在某大型企业的信息化应用中,分公司的业务系统需要和总公司的系统进行数据通讯和传输,每天总公司需要获得分公司的业务数据,如产品销售情况,同时更新分公司相应的基础资料信息。
数据通讯必须要遵守标准协议和约定,所以分公司数据通讯客户端与总公司的数据通讯模块服务器端之间要有统一的业务接口。以便通讯服务器端在接收客户端数据后,可把数据传递给总公司管理系统, 总公司管理系统把处理的结果返回给通讯服务器端,通过服务器端再把应答消息返回给分公司数据通讯客户端。
2、通讯需求
采用TCP/IP协议
采用标准的TCP/IP协议。通讯服务端是TCP/IP的服务端,是通讯连接和关闭的被动方。
传递报文
通讯报文、业务报文格式由总公司已拟订好,通讯服务器端在接收客户端的业务报文后,根据报文内容进行后续处理,处理后生成处理结果,再把此结果信息返回给分公司客户端。
同步或异步传输
传输可以使用同步或异步模式。如果是同步模式,服务器端把业务处理完毕后才能返回消息给客户端;如果是异步模式,则服务器端接收完数据后就先把应答消息头返回给客户端,再传递业务数据处理。
文本或文件传输
可支持文本传输,同时也支持文件的传输。文件的传输通过FTP进行传输。
3、通讯示意图
传输客户端
报文
传输服务端
总公司管理系统
分公司
分公司业务系统
总公司FTP
TCP/IP协议
总公司
FTP协议
第一章 通讯业务基本规则
1、通讯中涉及到的数据范围及数据流向:
注:
为了说明方便,通讯端客户端指分公司,通讯端服务端指总公司。
数据流向说明:
开票数据:
分公司-〉总公司-〉分公司(说明:客户端发起交易生成数据,传送到服务端,服务端经过数据处理后返回日志,客户端获取日志后根据日志内容修改数据库)
基础数据:
总公司-〉分公司:(说明:客户端发起交易但不生成数据,由服务端生成数据,客户端获取数据后根据数据内容修改数据库)
数据覆盖原则:以总公司为准进行覆盖。
数据范围及数据流向表
交易名称
数据流向
落地机制
数据覆盖机制
基础资料传输交易
总公司-〉分公司
允许部分落地,无法落地的信息记入错误日志表
以总公司为准进行覆盖;
服务端返回数据项中:总公司没有分公司有,采取删除原则。
开票信息传输交易
分公司-〉总公司-〉分公司
允许部分落地,无法落地的信息记入错误日志表
日志返回成功的结果回写开票表的传送标记字段,不成功的结果则不操作
2、总公司FTP服务器规范说明:
总公司FTP服务器根据不同分公司建立用户,用户名和密码都为分公司编码,在总公司FTP上建立一个目录做为根目录,然后以分公司编码做为子目录名,客户端和服务端生成的数据文件上传到该分公司编码的子目录下,命名方式以YYYYMMDD-业务名称XX.xml,总公司返回日志文件名称为YYYYMMDD-业务名称YZXX.xml。
3、分公司端与总公司端通讯报文:
3.1、用途
通讯中,任何方发送或接收的第一个内容必须是专用报文。发送方利用专用报文告诉接收方:本次通讯的目的、方式、内容;接收方必须接收到专用报文后才能确定后续应该如何操作。
3.2、格式
专用报文长度必须是512字节。如果不足512字节,则必须用空格补充。
下表说明专用报文的组成结构:
序号
名称
长度
(字节)
说明
1
应答码
4
如果本字段为“9999”,则表示是客户端向服务器发送的请求;如果本字段为“0000”,则表示服务器向客户端返回成功信息;如果本字段为“0001”,则表示客户端接收数据超时;如果本字段为“0002”,则表示接收服务器向客户端返回失败信息。如果本字段为“5555”,则表示客户端向服务器发送断开连接的请求。
2
同步或异步
1
0:同步;1:异步
3
文件名
50
本字段在服务器端passMessage调用时起作用。
4
文件传输标识
10
本字段在服务器向客户端传输文件时的标识,值为”0”则代表通过本系统传输,值为”1”则代表通过FTP服务器传输。本字段不够长度的用空格补全.
5
业务报文长度
10
如果本字段为0,则表示专用报文后不需传输业务报文;如果不为0,则表示专用报文后紧跟着传输的是本字段所规定长度的业务报文。
6
数据文件长度
10
如果本字段为0,则表示在传输业务报文之后不需要再传输数据文件;如果本字段不为0,则表示业务报文后紧跟着传输的是数据文件的内容。
7
消息鉴别码
10
服务器端在接收到数据后要对该数据进行消息鉴别码的判断,如果不一样,说明数据被篡改.不再作业务处理,告诉业务业务处理失败应答.(暂不用算法实现,用10个A填充);
第二章 客户端交易过程流程图
流程说明:
主要为两个交易:基础资料交易、开票信息交易
基础资料交易
[1]客户端向服务器端发送网络状态查询报文,监测能否接受服务器应答而决定是否进行后续操作。
[2] 客户端向通讯服务器端发送传输交易业务报文。
[3] 通讯服务器端的业务模块进行业务相关数据操作,生成该分公司的基础资料。
[4] 通讯服务器端业务模块把生成的处理结果上传至总公司FTP服务器。
[5] 客户端向通讯服务器端发送查询交易业务报文。
[6] 通讯服务器业务模块检查该次业务数据操作是否完成,并返回查询结果报文。
[7] 服务器端向客户端返回处理结果消息及基础资料文件。
[8] 客户端根据服务器端返回结果决定是否进行后续操作,成功则去FTP服务器上下载处结果文件。
[9] 客户端做数据验证并做更新本地基础资料数据操作,产生日志,日志本地保存,并上传至总公司FTP服务器。
开票信息交易
[1]客户端向服务器端发送网络状态查询报文,监测能否接受服务器应答而决定是否进行后续操作。
[2] 客户端生成开票数据文件,并把生成的数据文件上传至向总公司FTP服务器。
[3] 客户端向通讯服务器端发送传输交易业务报文。
[4] 通讯服务器端的业务模块收到开票数据文件,然后进行业务相关数据操作。
[5] 客户端向通讯服务器端发送查询交易业务报文。
[6] 通讯服务器业务模块检查该次业务数据操作是否完成,并返回查询结果报文。
[7] 服务器端向客户端返回处理结果消息。
[8] 客户端根据服务器端返回结果决定是否进行后续操作,成功则去FTP服务器上下载处结果文件。
[9] 客户端做数据验证并做更新本地开票数据操作,对于总公司已成功接收的开票数据打上已传输标识,并产生日志,日志本地保存,并上传至总公司FTP服务器。
第三章 服务端交易过程
流程说明:
[1] 通讯服务器端接受客户端的传输交易报文,读取客户端上传文件,经过基本验证后返回应答报文。
[2] 通讯服务器端的业务模块进行业务数据操作,并生成返回处理结果。
[3] 业务模块生成处理结果并上传至总公司FTP服务器。
[4] 通讯服务器端接受客户端的传输交易报文,经过基本验证后返回应答报文。
[5] 客户端根据应答报文内容决定是否进行后续操作,成功则去FTP服务器上下载处结果文件。
[6] 客户端做数据验证并入库操作,产生日志,日志本地保存,并上传至总公司FTP服务器。
注:服务端程序功能已经实现,会根据报文内容处理服务端的事务。因此服务端程序功能不需要在本需求中实现。
第四章 通讯相关业务描述
一、基础资料传输交易
分公司通过这个交易,准确地获取到公司的两个方面的基本信息。其中包括:
1、分公司的基本信息。
分公司基本信息以总公司为准,每次更新总公司下发的最新信息。
2、产品列表信息。
产品列表以总公司为准:
1)更新已经存在的产品列表信息。
2)停用或者删除(未存在开票信息)没有下发确在分公司已经存在的产品列表信息。
二、基础资料传输流程图
三、开票信息传输交易
分公司端通过这个交易,将某段时间内的业务销售开票信息(包括销售单和退货单)传送到总公司。根据业务表[YW_BILLINFO]的传送标记字段[CSBJ],查询出需要未上传的票据信息CSBJ=0。根据报文格式生产上传的XML文件。最后根据报文格式生成数据文件上传总公司FTP服务器,再由开票信息传输交易报送到总公司端,总公司端经过验证后数据部分落地后返回日志并上传总公司FTP服务器,分公司端下载日志后分析内容,如果有错则分公司端修改数据后重新传送。
四、开票信息传输流程图
第五章 通讯报文格式描述
分公司与总公司通讯报文
交易名称
实时性要求
交易代码
基础资料传输交易
同步、实时
76
基础资料传输状态查询交易
同步、实时
77
开票信息传输交易
同步、实时
80
开票信息传输状态查询交易
同步、实时
81
网络状态查询
同步、实时
88
1、基础资料传输交易
交易涉及到的内容:
1、分公司的基本信息。
分公司基本信息以总公司为准,每次更新总公司下发的最新信息。
2、产品列表信息。
产品列表以总公司为准:
1)更新已经存在的产品列表信息。
2)停用或者删除(未存在开票信息)没有下发确在分公司已经存在的产品列表信息。
1.1 报文格式
分公司向总公司发送报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --基础资料传输交易
<TransType>“交易类型”</TransType> --76
<TransVerify>“交易验证信息”</TransVerify> --基础资料传输交易
<RegiCode>“所属区域码”</RegiCode>
<EnteCode>“分公司编码”</EnteCode>
<TransTime>“传输日期”</TransTime>-- 格式(YYYY-MM-DD)
<BatchNO>“批次号”</BatchNO> --从0开始递增
</TransInfo>
总公司向分公司返回报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --基础资料传输交易
<TransType>“交易类型”</TransType> --76
<TransVerify>“交易验证信息”</TransVerify> --基础资料传输交易
<TransReturn>“返回码”</TransReturn> --错误码详见(错误列表)
<TransMsg>“返回码信息”</TransMsg>
</TransInfo>
1.2 总公司向分公司返回的基础资料信息(文件)
1、作用:总公司接到分公司的基础资料信息传输交易请求成功后,生成基础资料信息文件(两个文件),然后用分公司编码作用户名,分公司编码为密码的口令登录总公司端FTP服务器,总公司端的目录结构以分公司编码做为目录,并上传至总公司FTP服务器供客户端下载。
2、命名规范:
①YYYYMMDD-DWXX-批次号.xml(分公司的基本信息文件)
②YYYYMMDD-CPLBXX-批次号.xml(产品列表信息文件)
3、文件格式:
①YYYYMMDD-DWXX-批次号.xml(分公司的基本信息文件)
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --基础资料传输交易
<TransType>“交易类型”</TransType> --76
<TransVerify>“交易验证信息”</TransVerify> --基础资料传输交易
<EnteInfos>
<EnteInfo> -分公司信息,多条,实际上只有一条
<Code>分公司编码</Code>
<Regicode>“分公司所属区域码”</Regicode>
<Name>“分公司名称”</Name>
<Abbreviation>“分公司简称”</Abbreviation>
<Address>“地址”</Address>
<Postalcode>“邮编”</Postalcode>
<Frdbphoneno>“法人代表联系电话”</Frdbphoneno>
<Frdbname>“法人代表姓名”</Frdbname>
<Frdbfaxno>“法人代表(传真)”</Frdbfaxno>
<Cwfzrname>“财务负责人姓名”</Cwfzrname>
<Cwfzrphoneno>“财务负责人(联系电话)”</Cwfzrphoneno>
<Cwfzrfaxno>“财务负责人(传真)”</Cwfzrfaxno>
<Ywlxrname>“业务负责人(姓名)”</Ywlxrname>
<Ywlxrphoneno>“业务负责人(联系电话)”</Ywlxrphoneno>
<Ywlxrfaxno>“业务负责人(传真)”</Ywlxrfaxno>
<Onthejob>“在职人数”</Onthejob>
<Quitworking>“离退休人数”</Quitworking>
<Jobber>“临时人数”</Jobber>
<Useincome>“是否开展项目业务”</Useincome>
<Dwstatus>“公司授权”</Dwstatus>
<Syn_flag>“数据库同步标志”</Syn_flag>
<Lastdate>“最近同步日期”</Lastdate>
<Remark>“备注”</Remark>
<Email>“电子邮件”</Email>
<Fax>“传真号码”</Fax>
<Abbrecode>“3位码”</Abbrecode>
</EnteInfo>
</EnteInfos>
</TransInfo>
②Y YYYMMDD-CPLBXX-批次号.xml(产品列表信息文件)
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --基础资料传输交易
<TransType>“交易类型”</TransType> --76
<TransVerify>“交易验证信息”</TransVerify> --基础资料传输交易
<BankMapInfos>
<BankMapInfo> --产品列表信息,多条
<ItemNo >“产品ID”</ ItemNo >
<ItemSer>“产品系列”</ ItemSer >
<ItemName>“产品名称”</ ItemName >
<ItemUnit>“单位” </ ItemUnit >
<UnitPrice>“单价”</ UnitPrice >
<discount>“折扣率”</discount>
<IsSpecialoffer>“是否特价”</ IsSpecialoffer >
<Isdefault>“是否为默认显示”</Isdefault>
<Istion>“是否为主营产品”</Istion>
<Status>“状态”</ Status >
</BankMapInfo>
</BankMapInfos>
</TransInfo>
2、基础资料传输状态查询交易
分公司向总公司通讯报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --基础资料传输状态查询交易
<TransType>“交易类型”</TransType> --77
<TransVerify>“交易验证信息”</TransVerify> --基础资料传输状态查询交易
<RegiCode>“所属区域码”</RegiCode>
<EnteCode>“分公司编码”</EnteCode>
<TransTime>“传输日期”</TransTime>-- 格式(YYYY-MM-DD)
<BatchNO>“批次号”</BatchNO>
</TransInfo>
总公司向分公司通讯报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --基础资料传输状态查询交易
<TransType>“交易类型”</TransType> --77
<TransVerify>“交易验证信息”</TransVerify> --基础资料传输状态查询交易
<TransReturn>“返回码”</TransReturn> --错误码详见(错误列表)
<TransMsg>“返回码信息”</TransMsg>
<BillFileName>“基础资料信息文件名称”</BillFileName> --(多个文件名称间用“,”分隔)
<BillFileSize>“基础资料信息文件大小”</BillFileSize> --(多个文件大小间用“,”分隔)
</TransInfo>
3、开票信息传输交易
3.1 报文格式
分公司向总公司发送报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --开票信息传输交易
<TransType>“交易类型”</TransType> --80
<TransVerify>“交易验证信息”</TransVerify> --开票信息传输交易
<RegiCode>“所属区域码”</RegiCode>
<EnteCode>“分公司编码”</EnteCode>
<CheckTime>“交易时间”</CheckTime> -- 格式(YYYY-MM-DD)
<BatchNO>“批次号”</BatchNO> -- 从0开始递增
<BillFileName>“开票信息文件名称”</BillFileName>
<BillFileSize>“开票信息文件大小”</BillFileSize>
</TransInfo>
总公司向分公司返回报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --开票信息传输交易
<TransType>“交易类型”</TransType> --80
<TransVerify>“交易验证信息”</TransVerify> --开票信息传输交易
<TransReturn>“返回码”</TransReturn> --错误码详见(错误列表)
<TransMsg>“返回码信息”</TransMsg>
</TransInfo>
3.2 分公司向总公司提供开票信息(文件)
1、作用:分公司日常业务中,发生业务数据,销售单或退货单,每天下班后,定时将业务开票数据传送到总公司,由总公司进行业务数据入库。
2、命名规范:YYYYMMDD-KPXX-批次号.xml
3、文件格式:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --开票信息传输交易
<TransType>“交易类型”</TransType> --80
<TransVerify>“交易验证信息”</TransVerify> --开票信息传输交易
<BillInfo> --开票信息,多条
<BillType>“票据种类编码”</BillType> --(3位)
<BillID>“票据号码”</BillID> --(10位)
<EnteCode>“分公司编码”</EnteCode> --(6位)
<RegiCode>“所属区域码”</RegiCode> --(6位)
<BillTime>“开票日期”</BillTime> --格式为(YYYY-MM-DD)
<BillStatus>“票据开具状态”</BillStatus> --(1位:1正常,2错票,3废票)
<Payer>“客户全称”</Payer> --(最大60字节)
<BillSum>“票据合计金额”</BillSum> --NUMBER(16,4)
<PayType>“收款方式”</PayType> --(1位:0现金,1转支)
<KpyId>“开票员用户编码”</KpyId> --(最大20位)
<KpyName>“开票员用户名称”</KpyName> --(最大30字节)
<Remark>“备注”</ Remark >
<BillLists>
<BillList> --票面明细,多条
<ItemNo>“产品编码”</ ItemNo > --(最大20位)
<Unit>“单位”</Unit> --(最大20位)
<ChPrice>“单价”</ ChPrice > -- NUMBER(16,4)
<ChCount>“数量”</ChCount> -- NUMBER(16,4)
<ChMoney>“金额”</ChMoney> -- NUMBER(16,4)
<ChRemark>“备注”</ ChRemark >
</BillList>
<BillLists>
</BillInfo>
</TransInfo>
4、开票信息传输状态查询交易
4.1 报文格式
分公司向总公司通讯报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --开票信息传输状态查询交易
<TransType>“交易类型”</TransType> --81
<TransVerify>“交易验证信息”</TransVerify> --开票信息传输状态查询交易
<RegiCode>“所属区域码”</RegiCode>
<EnteCode>“分公司编码”</EnteCode>
<CheckTime>“交易时间”</CheckTime>
<BatchNO>“批次号”</BatchNO>
<BillFileName>“票据信息文件名称”</BillFileName>
<BillFileSize>“票据信息文件大小”</BillFileSize>
</TransInfo>
总公司向分公司通讯报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --开票信息传输状态查询交易
<TransType>“交易类型”</TransType> --81
<TransVerify>“交易验证信息”</TransVerify> --开票信息传输状态查询交易
<TransReturn>“返回码”</TransReturn> --错误码详见(错误列表)
<TransMsg>“返回码信息”</TransMsg>
<BillFileName>“票据验证信息文件名称”</BillFileName>
<BillFileSize>“票据验证信息文件大小”</BillFileSize>
</TransInfo>
5.2 总公司向分公司提供开票信息返回(文件)
1、作用:总公司在收到分公司的业务数据后,进行入库处理,并把入库处理情况反馈给分公司。
2、命名规范:YYYYMMDD-KPYZXX-批次号.xml
3、文件格式:
<?xml version=“1.0” encoding=“GBK”?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --开票信息查询交易
<TransType>“交易类型”</TransType> --81
<TransVerify>“交易验证信息”</TransVerify> --开票信息查询交易
<BillInfo> --票据信息 多条
<BillType>“票据种类编码”</BillType> --(3位)
<BillID>“票据号码”</BillID> --(10位)
<TransReturn>“返回码”</TransReturn> --错误码详见(错误列表)
<TransMsg>“返回码信息”</TransMsg>
</BillInfo>
</TransInfo>
5、网络状态查询
5.1 报文格式
分公司向总公司通讯报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --网络状态查询
<TransType>“交易类型”</TransType> --88
<TransVerify>“交易验证信息”</TransVerify> --网络状态查询
</TransInfo>
总公司向分公通讯报文:
<?xml version="1.0" encoding="GBK"?>
<TransInfo>
<TransTitle>“交易名称”</TransTitle> --网络状态查询
<TransType>“交易类型”</TransType> --88
<TransVerify>“交易验证信息”</TransVerify> --网络状态查询
<TransReturn>“返回码”</TransReturn> --错误码详见(错误列表)
<TransMsg>“返回码信息”</TransMsg>
</TransInfo>
第六章 附录
一、交易存储过程返回代码说明:
错误编码
错误信息
0
正在执行入库操作
1
交易成功、传输成功、入库成功
2
入库失败
3
数据库异常
4
释放连接池异常
5
获取连接异常
6
解析XML异常
7
开票信息文件不存在
8
开票信息文件大小不符
9
该批次已执行、请另起批次
10
未找到该批次记录
31
传入的区域码不合法
32
传入的分公司编码码不合法
33
存在验证不匹配的信息,无法进行入库操作
34
数据库异常(其他错误)
35
该票据在本次入库数据中存在重复记录
展开阅读全文