void ImportREFile()
{
    Points=LoadPointVector("C:\\REIMPORTVIEW.csv");
    verticesarray= FillStruct(Points);
}
Example #2
0
int DSF3017(Jq_Info info,char *InStr,char *OutStr,_LSData *LiuS,char *monit)
{	
	int i = 0;
	int j = 0;
	int p = 0;
	int nMsgLen = 0;
	int nRetLen = 0;
	int		HostPort;
	int		nSockFd;
	char 	xym[10];
	char	zh1[35],zh2[35], jyje[22], devno[20], TRCD[10],tmpstr1[1024],tmpstr2[1024],tmpstr3[1024],tmpstr4[1024],passwd[16];
	char	instr[2048];
	char	outstr[10240];
	char	HostAddr[30];
	char	MacBlock[2048],MAC[9];
	char 	tpstr[20];
	char	msg[200];
	char	filename[255];
	char	tmpstr[1024], tmp[500],tmps[500],tmp1[500],JF[10];
	int  headlen=0,findflag=0;
	char zdh[20];
	char lsh[20];
	char xmlbw[2048];
	char *sendxmlhead;
  char *recvxmldata;	
	
	BITSTR	sbitstr;
	BITSTR	rbitstr;
	BITSTR  *sendinfo = NULL;
	BITSTR	*recvinfo = NULL;
	FILE *fp;

	memset(filename,0x00,sizeof(filename));
	memset(zh1, 0, sizeof(zh1));
	strcpy(zh1, "0000000000000000");
	memset(zh2, 0, sizeof(zh2));
	memset(jyje, 0, sizeof(jyje));
	memset(devno, 0, sizeof(devno));
	memset(TRCD, 0, sizeof(TRCD));
	memset(instr, 0x00, sizeof (instr));
	memset(outstr, 0x00, sizeof (outstr));
	memset(HostAddr, 0x00, sizeof (HostAddr));
	memset(MacBlock, 0, sizeof(MacBlock));
	memset(MAC, 0, sizeof(MAC));
	memset(msg, 0, sizeof(msg));
	memset(filename, 0, sizeof(filename));
	memset(tmpstr, 0, sizeof(tmpstr));
	memset(tmp, 0, sizeof(tmp));
	memset(xym, 0, sizeof(xym));
	memset(JF, 0, sizeof(JF));
	memset(&sbitstr, 0, sizeof(sbitstr));
	memset(&rbitstr, 0, sizeof(rbitstr));
	sendinfo = &sbitstr;
	recvinfo = &rbitstr;
	sendxmlhead=NULL;
  recvxmldata=NULL;
  
	for(i=0;i<MAXBIT;i++){
	  sendinfo->len[i] = 0;
	}
	//WPrint(0, "InStr,ret=[%s]\n",InStr);
	//注意:这个地方一定根据交易码重新填写,下面的程序均使用此字符串
	strcpy(TRCD, "3017");
	TRCD[4]=0;
	
	//xml报文
	memset( xmlbw, 0x00, sizeof(xmlbw));
	memset( tmpstr, 0x00, sizeof(tmpstr));
	strcpy(xmlbw, "0051<?xml version=\"1.0\" encoding=\"UTF-8\" ?><Service><Service_Header>");

	//need_request
	//Xml_strmodify("need_request", " ", tmpstr, sizeof(tmpstr));
	
	//版本号 version_id
	Xml_strmodify("version_id", "1.0", tmpstr, sizeof(tmpstr));
	
	//请求方服务时间+14位 <service_time>
	memset(tmp,0x00,sizeof(tmp));
	pub_GetDateTimeStr(tmp, sizeof(tmp), "%Y%m%d%H%M%S");
	pub_RemoveBlank(tmp, strlen(tmp));
	Xml_strmodify("service_time", tmp, tmpstr, sizeof(tmpstr));
	
	//渠道代码 channel_id
	Xml_strmodify("channel_id", "16", tmpstr, sizeof(tmpstr));
	
	//机构号 branch_id
	memset(tmp,0x00,sizeof(tmp));
	memcpy(tmp,info.organno,9);
	Xml_strmodify("branch_id", tmp, tmpstr, sizeof(tmpstr));
	
	//发起系统代码 requester_id
	Xml_strmodify("requester_id", "0012", tmpstr, sizeof(tmpstr));
	
	//保留-ESB用 service_id
	Xml_strmodify("service_id", "0051000000000000", tmpstr, sizeof(tmpstr));
	
	//渠道流水 service_sn 20 1(1位)+地区编号(2位)+系统编码(4位)
	memset(tmp, 0x00, sizeof(tmp));
	memset(tmp1, 0x00, sizeof(tmp1));
	memcpy(tmp,"1560012000009",13);
	if ( strlen(LiuS->serverwater) > 6 )
	{
		memcpy(tmp1,LiuS->serverwater+strlen(LiuS->serverwater)-6,6);
	}
	else
	{
		sprintf(tmp1,"%06d",atol(LiuS->serverwater));
	}
	strcat(tmp,tmp1);
	Xml_strmodify("service_sn", tmp, tmpstr, sizeof(tmpstr));
	
	
	strcat(xmlbw, tmpstr);
	strcat(xmlbw, "<need_request></need_request></Service_Header><Service_Body>");
	//报文体
	strcat(xmlbw, "<ext_attributes>");
	memset(tmpstr,0x00,sizeof(tmpstr));
	
	//<INM-BRANCH-ID>
	memset(tmp,0x00,sizeof(tmp));
	memcpy(tmp,info.organno,9);
	Xml_strmodify("INM-BRANCH-ID", tmp, tmpstr, sizeof(tmpstr));
			
	//终端序号 <INM-TERM-SRL>
	memset(tmp,0x00,sizeof(tmp));
        memset(tmp1,0x00,sizeof(tmp1));
        memcpy(tmp,info.organno,12);
        memcpy(tmp1,"0",1);
        memcpy(tmp1+1,tmp+9+1,2);
        Xml_strmodify("INM-TERM-SRL", tmp1, tmpstr, sizeof(tmpstr));

        //网络号 <INM-LAN-ID>
        memset(tmp1,0x00,sizeof(tmp1));
        memcpy(tmp1,tmp+9+1,2);
        Xml_strmodify("INM-LAN-ID", tmp1, tmpstr, sizeof(tmpstr));

        //终端类型<INM-TERM-TYP>
        memset(tmp1,0x00,sizeof(tmp1));
        memcpy(tmp1,tmp+9,1);
        Xml_strmodify("INM-TERM-TYP", tmp1, tmpstr, sizeof(tmpstr));
	
	//柜员代号 <INM-TELLER-ID>
	Xml_strmodify("INM-TELLER-ID", tmp, tmpstr, sizeof(tmpstr));

	strcat(xmlbw, tmpstr);
	strcat(xmlbw,"</ext_attributes><request>");	
	//缴费查询报文
	memset(tmpstr,0x00,sizeof(tmpstr));
	//终端代码 TermId
	strcpy(devno, info.devno);
	pub_RemoveBlank(devno, strlen(devno));
	devno[8]=0;
	memset(tmp,0x00,sizeof(tmp));
	memcpy(tmp,info.organno,9);
	Xml_strmodify("TermId", tmp, tmpstr, sizeof(tmpstr));

	//终端类型 TermType A-自助终端 M-营业厅
	Xml_strmodify("TermType", "A", tmpstr, sizeof(tmpstr));

	//发卡次数 CardNum
	Xml_strmodify("CardNum", "FF", tmpstr, sizeof(tmpstr));

	//联通手机号 UserNo
	memset(zh2,0x00,sizeof(zh2));
	memcpy(zh2,InStr,20);
	pub_RemoveBlank(zh2, strlen(zh2));
	Xml_strmodify("UserNo", zh2, tmpstr, sizeof(tmpstr));
	
	//卡号
	memset(zh1,0x00,sizeof(zh1));
	memcpy(zh1,InStr+20,40);
	pub_RemoveBlank(zh1, strlen(zh1));
	//PayMonth 账期数目
	Xml_strmodify("PayMonth", "000000", tmpstr, sizeof(tmpstr));


	//服务代码 ServiceCode
	Xml_strmodify("ServiceCode", "YTMB.00.YTMB006.1000", tmpstr, sizeof(tmpstr));

	strcat(xmlbw, tmpstr);
	strcat(xmlbw,"</request></Service_Body></Service>");
	
	
	nMsgLen=strlen(xmlbw);
	WPrint(0, "InStr,ret=[%s]\n",xmlbw);
	WPrint(0, "InStr,ret=[%d]\n",nMsgLen);
	
	if(MQ_CONN())
        {
                BCM_Print(LOGFILE, "交易建立连接失败,ret=[%d]\n",nMsgLen);
                GetBcmSysMsg(9999,msg);
                sprintf(OutStr,"%03d%03d%s",1,strlen(msg),msg);
                strcpy(RETCODE, "9999");
                FillStruct(&(LiuS->ls2dat),monit,TRCD,RETCODE,zh1,zh2,"");
                FillLSOther(&(LiuS->ls2dat),msg);
                FreeBitstr( sendinfo );
                FreeBitstr( recvinfo );
                return -99;
                //fprintf( stdout, "Connected to MQ FAILURE!\n") ;
                //return -1;
        }
        BCM_Print(LOGFILE, "MQ_GET_OPEN,ret=\n");
        if(MQ_GET_OPEN())
        {
                fprintf( stdout, "Open response queue FAILURE!\n") ;
                MQ_CLOSE();
                MQ_DISC();
		return -1;
        }
        BCM_Print(LOGFILE, "MQ_PUT_OPEN,ret=\n");
        if(MQ_PUT_OPEN())
        {
                fprintf( stdout, "Open request queue FAILURE!\n") ;
		MQ_CLOSE();
                MQ_DISC();
                return -1;
        }
        nRetLen = Write(xmlbw,nMsgLen,tmp);
        BCM_Print(LOGFILE, "交易发送数据,ret=[%d]\n",nRetLen);
        if (nRetLen != 0)
        {
                BCM_Print(LOGFILE, "交易发送数据失败,ret=[%d]\n",nMsgLen);
                GetBcmSysMsg(9999,msg);
                sprintf(OutStr,"%03d%03d%s",1,strlen(msg),msg);
                strcpy(RETCODE, "9999");
                FillStruct(&(LiuS->ls2dat),monit,TRCD,RETCODE,zh1,zh2,"");
                FillLSOther(&(LiuS->ls2dat),msg);
                MQ_CLOSE();
                MQ_DISC();
                FreeBitstr( sendinfo );
                FreeBitstr( recvinfo );
                return -99;
        }
        nRetLen = Read(outstr,tmp);
        BCM_Print(LOGFILE, "交易接受数据包,ret=[%s=%d]\n",outstr,nRetLen);
        if(nRetLen != 0)
        {
          BCM_Print(LOGFILE, "交易接受数据失败,ret=[%d]\n",nMsgLen);
          GetBcmSysMsg(9999,msg);
          sprintf(OutStr,"%03d%03d%s",1,strlen(msg),msg);
          strcpy(RETCODE, "9999");
          FillStruct(&(LiuS->ls2dat),monit,TRCD,RETCODE,zh1,zh2,"");
          FillLSOther(&(LiuS->ls2dat),msg);
		MQ_CLOSE();
                MQ_DISC();
          FreeBitstr( sendinfo );
          FreeBitstr( recvinfo );
          return -99;
        }
        MQ_CLOSE();
	MQ_DISC();
	/*
	GetHostAddr(HostAddr, &HostPort, "ZJYW");
	BCM_Print(LOGFILE, "HostAddr=[%s]\n", HostAddr);
	BCM_Print(LOGFILE, "HostPort=[%d]\n", HostPort);


	nSockFd = BCM_tcp_conn(HostAddr, HostPort);

	if( nSockFd < 0)
	{
		BCM_Print(LOGFILE, "交易建立连接失败,ret=[%d]\n",nMsgLen);
		GetBcmSysMsg(9999,msg);
		sprintf(OutStr,"%03d%03d%s",1,strlen(msg),msg);
		strcpy(RETCODE, "9999");
		FillStruct(&(LiuS->ls2dat),monit,TRCD,RETCODE,zh1,zh2,"");
		FillLSOther(&(LiuS->ls2dat),msg);
		FreeBitstr( sendinfo );
		FreeBitstr( recvinfo );
		return -99;
	}
	nMsgLen=strlen(xmlbw);
	nRetLen = BCM_tcp_send(nSockFd, xmlbw, nMsgLen, TIMEOUT);

	if (nRetLen != nMsgLen)
	{
		BCM_Print(LOGFILE, "交易发送数据失败,ret=[%d]\n",nMsgLen);
		GetBcmSysMsg(9999,msg);
		sprintf(OutStr,"%03d%03d%s",1,strlen(msg),msg);
		strcpy(RETCODE, "9999");
		FillStruct(&(LiuS->ls2dat),monit,TRCD,RETCODE,zh1,zh2,"");
		FillLSOther(&(LiuS->ls2dat),msg);
		BCM_tcp_close(nSockFd, 1);
		FreeBitstr( sendinfo );
		FreeBitstr( recvinfo );
		return -99;
	}
	sleep(1);
	nRetLen = BCM_tcp_recv(nSockFd, outstr, 8, TIMEOUT);
	BCM_Print(LOGFILE, "交易接受数据包头,ret=[%s]\n",outstr);
	if(nRetLen < 0)
	{
	  BCM_Print(LOGFILE, "交易接受数据包头失败,ret=[%d]\n",nMsgLen);
	  GetBcmSysMsg(9999,msg);
	  sprintf(OutStr,"%03d%03d%s",1,strlen(msg),msg);
	  strcpy(RETCODE, "9999");
	  FillStruct(&(LiuS->ls2dat),monit,TRCD,RETCODE,zh1,zh2,"");
	  FillLSOther(&(LiuS->ls2dat),msg);
		BCM_tcp_close(nSockFd, 1);
	  FreeBitstr( sendinfo );
	  FreeBitstr( recvinfo );
	  return -99;
	}
	
	memset(outstr, 0x00, sizeof(outstr));
	nMsgLen=1024;
	nRetLen = BCM_tcp_recv(nSockFd, outstr, nMsgLen, TIMEOUT);
	if(nRetLen < 0)
	{
		BCM_Print(LOGFILE, "交易接受数据 报文失败,ret=[%d]\n",nMsgLen);
		GetBcmSysMsg(9999,msg);
		sprintf(OutStr,"%03d%03d%s",1,strlen(msg),msg);
		strcpy(RETCODE, "9999");
		FillStruct(&(LiuS->ls2dat),monit,"2104",RETCODE,zh1,zh2,"");
		FillLSOther(&(LiuS->ls2dat),msg);
		FreeBitstr( sendinfo );
		FreeBitstr( recvinfo );
		return -99;
  }

	BCM_tcp_close(nSockFd, 1);
	*/
	//BCM_Print(LOGFILE,"从JAVA接受数据outstr=[%s]\n",outstr);
	
	//返回码
	memset( tmps, 0x00, sizeof(tmps));
	findxmlnode(outstr, "<code>", tmps);
	BCM_Print(LOGFILE, "xmlnode返回码类型rettype=[%s]\n", tmps);
	
	if(strncmp(tmps,"000000",6)!=0 )
	{

			memset(msg,0x00,sizeof(msg));
			memset(tmpstr,0x00,sizeof(tmpstr));
			findxmlnode(outstr, "<desc>", msg);
			inspur_code_convert("utf-8","gb2312",msg,strlen(msg),tmpstr,sizeof(tmpstr));
			sprintf(OutStr,"%03d%03d%s",1,strlen(tmpstr),tmpstr);
			FillStruct(&(LiuS->ls2dat),monit,TRCD,tmps,zh1,zh2,"");
			FillLSRemark(&(LiuS->ls2dat), jyje, "", "");
			FillLSOther(&(LiuS->ls2dat),msg);
			return(-99);
	}
	//返回处理
	
	//Xml_free( sendxmlhead ); 
	//Xml_free( recvxmldata ); 
 	
 	memset( tmpstr, 0x00, sizeof(tmpstr));
 	
 	//ContractNo 合同号 0.30
	memset( tmps, 0x00, sizeof(tmps));
	memset( tmpstr1, 0x00, sizeof(tmpstr1));
	findxmlnode(outstr, "<ContractNo>", tmps);
	inspur_code_convert("utf-8","gb2312",tmps,strlen(tmps),tmpstr1,sizeof(tmpstr1));
	sprintf(tmpstr, "%-30s", tmpstr1);
	
 	//UserName 用户名称 30.120
 	memset( tmpstr1, 0x00, sizeof(tmpstr1));
	memset( tmps, 0x00, sizeof(tmps));
	findxmlnode(outstr, "<UserName>", tmps);
	inspur_code_convert("utf-8","gb2312",tmps,strlen(tmps),tmpstr1,sizeof(tmpstr1));
	sprintf(tmpstr+30, "%-120s", tmpstr1);
	
	//DBH 代表号 150.20
	memset( tmps, 0x00, sizeof(tmps));
	memset( tmpstr1, 0x00, sizeof(tmpstr1));
	findxmlnode(outstr, "<DBH>", tmps);
	inspur_code_convert("utf-8","gb2312",tmps,strlen(tmps),tmpstr1,sizeof(tmpstr1));
	sprintf(tmpstr+150, "%-20s", tmpstr1);
		
	//DQQF 当前欠费 170.20
	memset( tmps, 0x00, sizeof(tmps));
	memset( tmpstr1, 0x00, sizeof(tmpstr1));
	findxmlnode(outstr, "<DQQF>", tmps);
	inspur_code_convert("utf-8","gb2312",tmps,strlen(tmps),tmpstr1,sizeof(tmpstr1));
	sprintf(tmpstr+170, "%-20s", tmpstr1);
	// 用于显示当前欠费,负金额变成正金额,正金额编程负金额	
	memset( tmpstr2, 0x00, sizeof(tmpstr2));
	sprintf(tmpstr2, "%-20.2f", -atof(tmpstr1));
	
	//当前欠费为负数的时候,说明有余额,那么存金额大于0就可以   自定义JF用于鉴别   -----00 输入金额大于0
	//当前欠费为正数的时候,说明欠费,那么存金额大于当前欠费就可以                 -----01 输入金额大于DQQF
	memset( JF, 0x00, sizeof(JF));
	if(atof(tmpstr1)<=0)
		strcpy(JF,"00");
	else 
		strcpy(JF,"01");
	
	//strcpy(JF,"00");      //测试用,看跳转是否正确
	//JYJFE 建议缴费额 190.20
	memset( tmps, 0x00, sizeof(tmps));
	memset( tmpstr1, 0x00, sizeof(tmpstr1));
	findxmlnode(outstr, "<JYJFE>", tmps);
	inspur_code_convert("utf-8","gb2312",tmps,strlen(tmps),tmpstr1,sizeof(tmpstr1));
	sprintf(tmpstr+190, "%-20s", tmpstr1);
	
	//JF 根据DQQF自定义JF用于鉴别输入金额 210.10
	sprintf(tmpstr+210, "%-10s", JF);
	sprintf(tmpstr+220, "%-20s", tmpstr2);
	
	sprintf(OutStr, "%03d%03d%s", 1, strlen(tmpstr), tmpstr);
	BCM_Print(LOGFILE, "OutStr=[%s]\n", OutStr); 
	FillStruct(&(LiuS->ls2dat), monit, TRCD, "0000", zh1, zh2, jyje);
	FillLSRemark(&(LiuS->ls2dat), jyje, "","");
	//BCM_Print(LOGFILE, "OutStr=[%s]\n", OutStr);	
	
	Xml_free( sendxmlhead );
        Xml_free( recvxmldata );
		
	return 0;
}