即期交易签约状态检查详细设计说明书欧文宏1.docx
《即期交易签约状态检查详细设计说明书欧文宏1.docx》由会员分享,可在线阅读,更多相关《即期交易签约状态检查详细设计说明书欧文宏1.docx(9页珍藏版)》请在冰豆网上搜索。
即期交易签约状态检查详细设计说明书欧文宏1
中国农业银行
详细设计说明书
文档信息:
版本:
项目:
类别:
密级:
状态:
模板版本:
V1.0.0
修订记录:
日期
版本
修订目的描述
作者
修订内容:
版本
修订内容
目录
1.程序ΧΧ设计说明1
1.1.程序描述1
1.2.组件名称1
1.3.关联文件1
1.4.输入项1
1.5.输出项1
1.6.涉及表1
1.7.前台流程1
1.8.后台流程1
2.程序上存输入设计说明1
2.1.程序描述1
2.2.组件名称2
2.3.关联文件2
2.4.输入项2
2.5.输出项3
2.6.涉及表3
2.7.前台流程4
2.8.后台流程5
1.组件交易撤销合法性检查设计说明
1.1.组件描述
取交易操作表交易信息,判断是否符合撤销条件,检查撤销处理模式(违约交易时通过检查交易是否是签约状态判定是否已调用H系统账户,决定下一步是否需要冲销H系统及部分A系统账务)
1.2.组件名称
FM_CX_QueryStatus_TRADE.cpre
1.3.关联文件
FM_CX_QueryStatus_TRADE.so
1.4.输入项
序号
字段名
是否非空
节点名
备注
1.
业务编号
是
/cn
2.
业务子编号
是
/ccn
1.5.输出项
组件返回:
1该合同为签约未交割状态
2该合同非签约未交割状态
-1该合同不可撤销,非当天交易
1.6.涉及表
FM_CX_TRADE
1.7.组件流程
1.8.伪代码
.h内容:
#defineCOMPSTATUS_TRADE_ERROR-1//不符合撤销条件
#defineCOMPSTATUS_TRADE_CKPPASS1//部门撤销
#defineCOMPSTATUS_TRADE_CKTPASS2//全部撤销
//cpre伪码
IRESULTFM_CX_QueryStatus_TRADE(HXMLTREElXmlhandle)
{
//组件变量定义
//定义主档明细表结构
EXECSQLBEGINDECLARESECTION;
SDB_FM_CX_TRADEfm_cx_trade;/*定义主档明细表结构*/
charsCn[LEN_sCn+1];/*输入合约编号*/
charsCcn[LEN_sCcn+1];/*输入合约子编号*/
charsSysDate[LEN_sSysDate+1];/*系统当前时间*/
EXECSQLENDDECLARESECTION;
intiRet;/*函数返回值*/
//初始化动态库函数
if(fpub_InitSoComp(lXmlhandle)!
=MID_SYS_SUCC)
{
LG(EH,"初始化动态链接库函数失败");
COMP_HARDSETXML("XML_RESPCODE",RESPCODE_AT_INITSOCOMP_FAIL)
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_FAIL);
returnCOMPSTATUS_FAIL;
}
//组件变量初始化
memset(outmsg,0x00,sizeof(outmsg));
memset(sCn,0x00,sizeof(sCn));
memset(sCcn,0x00,sizeof(sCcn));
memset(sSysDate,0x00,sizeof(sSysDate));
//获取变量的值合约编号及合约子编号
/*从共享内存中取得合约编号,放在sCn的变量中*/
COMP_HARDGETXML(XML_sCn,strFEA.sCn)
/*从共享内存中取得合约子编号,放在sCcn的变量中*/
COMP_HARDGETXML(XML_sCcn,strFEA.sCcn)
//检查变量值(输入数据)的合法性
if(strlen(sCcn)==0||strlen(sCn)==0)
{
LG(EH,"查询条件不能空");
COMP_HARDSETXML("XML_RESPCODE",RESPCODE_AT_INITSOCOMP_FAIL)
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_FAIL);
returnCOMPSTATUS_FAIL;
}
//取系统当前日期
iRet=GetSysDate(sSysDate);
if(iRet<0)
{
LG(EH,"取系统日期失败");
COMP_HARDSETXML("XML_RESPCODE",RESPCODE_AT_INITSOCOMP_FAIL)
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_FAIL);
returnCOMPSTATUS_FAIL;
}
//根据条件查询数据库
EXECSQLSELECT*into:
fm_cx_trade
fromFM_CX_TRADE
where合约编号=strFEA.sCn
and合约子编号=strFEA.sCcn;
If(SQLCODE<0)
{
LG(EH,"查询主档明细表数据库失败...,[sqlca.sqlcode:
%ld],[errordecr:
%s]",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
COMP_HARDSETXML(XML_RESPCODE,RESPCODE_SY_SQLERR)
/*预置组件返回码为组件功能失败*/
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_FAIL);
returnCOMPSTATUS_FAIL;
}
If(SQLCODE==SQLNOTFOUND)
{
//提示无记录返回
LG(EH,"查询主档明细表数据库无记录...,[sqlca.sqlcode:
%ld],[errordecr:
%s]",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc);
COMP_HARDSETXML(XML_RESPCODE,RESPCODE_FE_FEARECORD_INEXISTENCE)
/*预置组件返回码为组件功能失败*/
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_FAIL);
returnCOMPSTATUS_FAIL;
}
LG(DBG,"查询主档明细表成功...");
//判断交易状态
if(fm_cx_trade.trnstat[0]==交易成功状态)
{
//签约成功未交易过
if(strncmp(fm_cx_trade.trndate,sSysDate,LEN_TRADE_trndate)!
=0)
{
//非当天交易
//#defineCOMPSTATUS_CN_ERROR-1
//设置组件返回值
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_TRADE_ERROR);
//设置函数返回值
returnCOMPSTATUS_TRADE_ERROR;
}
else
{
//交易可以撤销且不需要撤销H系统及部分A系统账务
//#defineCOMPSTATUS_TRADE_CKPPASS1
//设置组件返回值
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_TRADE_CKPPASS);
//设置函数返回值
returnCOMPSTATUS_TRADE_CKPPASS;
}
}
else
{
//交易交割过
if(strncmp(fm_cx_trade.trndate,sSysDate,LEN_TRADE_trndate)!
=0)
{
//非当天交易
//#defineCOMPSTATUS_TRADE_ERROR-1
//设置组件返回值
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_TRADE_ERROR);
//设置函数返回值
returnCOMPSTATUS_TRADE_ERROR;
}
else
{
//交易可以撤销且需要撤销H系统及部分A系统账务
//#defineCOMPSTATUS_TRADE_CKTPASS2
//设置组件返回值
fpub_SetCompStatus(lXmlhandle,COMPSTATUS_TRADE_CKTPASS);
//设置函数返回值
returnCOMPSTATUS_TRADE_CKTPASS;
}
}
}