int F820131(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg) { T_t_cardstrut acardstru; double dUniqNo=0; int scode=0; memset(&acardstru,0,sizeof(acardstru)); //从cpack中取得相应字符串 acardstru. phytype = in_pack->lvol4; acardstru. sectorno = in_pack->lvol5; acardstru. blockno = in_pack->lvol6; acardstru. begin_addr = in_pack->lvol7; acardstru. end_addr = in_pack->lvol8; acardstru. bytenum = in_pack->lvol9; Strncpy_t(acardstru.define,(char*)in_pack->usset0,sizeof(acardstru.define)); Strncpy_t(acardstru.comments,(char*)in_pack->usset1,sizeof(acardstru.comments)); //设备标志从系统键值表中取得 scode=getNewUniqNo(KEYTYPE_CARD_STRU,&dUniqNo); if(0 != scode) { *pRetCode=E_DB_SYSKEY_R; sprintf(szMsg,"820121:取系统键值表错误,RetCode=%d\n",scode); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ERR,szMsg); goto L_Ret; } //正确,赋值给结构体 acardstru.id = D2I(dUniqNo); scode=DB_t_cardstrut_add(&acardstru); if(0 != scode) { *pRetCode=E_DB_CARDSTRUT_I; sprintf(szMsg,"卡结构信息表插入错误,SQLLCODE=%d\n",scode); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ERR,szMsg); goto L_Ret; } return 0; L_Ret: return -1; }
int F820132(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg) { T_t_cardstrut acardstru; int scode=0; int v_id=0; memset(&acardstru,0,sizeof(acardstru)); //从cpack中取得相应字符串 v_id = in_pack->lvol3; acardstru. id = in_pack->lvol3; acardstru. phytype = in_pack->lvol4; acardstru. sectorno = in_pack->lvol5; acardstru. blockno = in_pack->lvol6; acardstru. begin_addr = in_pack->lvol7; acardstru. end_addr = in_pack->lvol8; acardstru. bytenum = in_pack->lvol9; Strncpy_t(acardstru.define,(char*)in_pack->usset0,sizeof(acardstru.define)); Strncpy_t(acardstru.comments,(char*)in_pack->usset1,sizeof(acardstru.comments)); scode=DB_t_cardstrut_update_by_id(v_id,&acardstru); if(SC_NOTFOUND==scode){ *pRetCode=E_DB_CARDSTRUT_N; sprintf(szMsg,"卡物理结构信息表无相应记录,SQLLCODE=%d\n",scode); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ERR,szMsg); goto L_Ret; } if(0!=scode) { *pRetCode=E_DB_CARDSTRUT_U; sprintf(szMsg,"卡物理结构信息表更新错误,SQLLCODE=%d\n",scode); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ERR,szMsg); goto L_Ret; } return 0; L_Ret: return -1; }
//圈存机写卡失败冲正(实际并不冲正,只是改写卡状态) int Pos_WriteErrCard(INNER_TRANS_REQUEST * pNode) { int ret = 0; int card_id = 0; char logicdate[11]=""; int serial_no=0; T_t_pif_card card; T_t_tif_tradeserial tradeserial; INNER_TRANS_REQUEST from_pos; memset(&tradeserial,0,sizeof(tradeserial)); memset(&from_pos,0,sizeof(from_pos)); memset(&card,0,sizeof(card)); memcpy(&from_pos,pNode,sizeof(from_pos)); ret=GetLogicDate(logicdate); //业务日期 if(ret) { db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ALERT,"GetLogicDate err,sqlcode[%d]",ret); return E_TRANS_UNKNOW_ERROR; } serial_no=from_pos.RecvNo; ret=DB_t_tif_tradeserial_read_by_serial_no(serial_no,&tradeserial); if(ret) { db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ALERT,"DB_t_tif_tradeserial_read_by_serial_no err,sqlcode[%d]",ret); return E_TRANS_UNKNOW_ERROR; } //修改原卡状态为发卡写卡失败状态 card_id = tradeserial.card_id; ret=DB_t_pif_card_read_lock_by_cur_and_card_id(card_id, &card); if(ret) { db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ALERT,"DB_t_pif_card_read_lock_by_cur_and_card_id err,sqlcode[%d]",ret); return E_TRANS_UNKNOW_ERROR; } card.state_id[CARDSTAT_TYPE_WFAIL]=STATE_TRUE; memset(card.comments,0,sizeof(card.comments)); AddXmlItemStr(card.comments, XML_KEY_OPERATEDATE,logicdate); AddXmlItemInt(card.comments,XML_KEY_SERIALNO,serial_no); AddXmlItemInt(card.comments,XML_KEY_TRADECODE,TRADE_INNER_TRANS); ret=DB_t_pif_card_update_lock_by_cur(&card); if(ret) { db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ALERT,"DB_t_pif_card_update_lock_by_cur err,sqlcode[%d]",ret); return E_TRANS_UNKNOW_ERROR; } DB_t_pif_card_free_lock_by_cur(); writelog(LOG_INFO,"update card status succeed!"); return 0; }
//查询校园卡转帐流水 int Pos_QuerySerial(INNER_TRANS_REQUEST * pNode,TRUSERID *handle,int *pRetCode,char *szMsg) { char key[32+1]=""; char pwd[32+1]=""; //char account_id[16+1]=""; char account_pwd[6+1]=""; int ret=0; int cnt=0; //double unique=0.0; INNER_TRANS_REQUEST from_pos; T_t_tif_tradeserial tradeserial; //卡操作流水表 T_t_aif_account account; T_t_pif_card card; ST_CPACK aPack; ST_PACK *out_pack = &(aPack.pack); memset(&from_pos,0,sizeof(from_pos)); memset(&account,0,sizeof(account)); memset(&card,0,sizeof(card)); memcpy(&from_pos,pNode,sizeof(from_pos)); //判断设备是否登陆 if(0!=device_login_yes_or_no(atoi(from_pos.TerminalId))) { writelog(LOG_ERR,"Device don't login"); return E_TRANS_TERM_NOLOGIN; } ret=DB_t_pif_card_read_by_card_id(atoi(from_pos.CardNo),&card); if(ret) { writelog(LOG_ERR,"DB_t_pif_card_read_lock_by_cur_and_card_id error,errcode=[%d]",ret); //sprintf(pNode->RetCode,"%d",E_TRANS_UNKNOW_ERROR); return E_TRANS_SCHACC_NOEXIT; } strcpy(key,STATIC_SEED_KEY); Strncpy_t(account_pwd, from_pos.AccountPwd,sizeof(account_pwd)); EncodePwd(key,account_pwd,pwd, 0); //判断卡密码是否正确 if(0!=memcmp(pwd,card.password,sizeof(pwd))) { writelog(LOG_ERR,"Card password error,clear_pwd[%s],input_pwd=[%s],db_pwd=[%s]",account_pwd,pwd,card.password); //sprintf(pNode->RetCode,"%d",E_TRANS_SCHCARD_PWDERR); return E_TRANS_SCHCARD_PWDERR; } if(strncmp(card.state_id,TYPE_YES,1)!=0) { DB_t_pif_card_free_lock_by_cur(); writelog(LOG_ERR,"card_state=[%s]",card.state_id); return E_TRANS_SCHACC_DESTORY; } if(STATE_TRUE==card.state_id[CARDSTAT_TYPE_LOST]) { DB_t_pif_card_free_lock_by_cur(); writelog(LOG_ERR,"card_state=[%s]",card.state_id); return E_TRANS_SCHCARD_LOSTING; } if(STATE_TRUE==card.state_id[CARDSTAT_TYPE_FREEZE]) { DB_t_pif_card_free_lock_by_cur(); writelog(LOG_ERR,"card_state=[%s]",card.state_id); return E_TRANS_SCHCARD_FREEZE; } ret=DB_t_tif_tradeserial_open_select_by_cur3_and_serial_type_and_card_id(TRADE_INNER_TRANS,card.card_id); if(ret) { db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ALERT,"declare cursor err sqlcode[%d]",ret); return E_TRANS_UNKNOW_ERROR; } SetCol(handle,0); SetCol(handle,F_SCLOSE_EMP,F_SORDER0,F_SORDER1,F_SSERIAL1,F_LVOL0,F_LVOL1,F_SDATE0,F_STIME0,F_SDATE1,F_STIME1,F_SCUST_NO,F_SCHANGE_EMP,F_SSERIAL0,F_LVOL2,F_SCUST_AUTH,F_SSTATUS1,F_SEMP_PWD,F_SEMP_PWD2,F_SSTATION0,F_SSTATION1,F_SORDER2,0); while(1) { ret=DB_t_tif_tradeserial_fetch_select_by_cur3(&tradeserial); if(ret) { DB_t_tif_tradeserial_close_select_by_cur3(); if(ret==DB_NOTFOUND) { if(cnt==0) { writelog(LOG_DEBUG,"There havn't record from t_tif_tradeserial table!"); break; } else break; } else return E_TRANS_UNKNOW_ERROR; } cnt++; memcpy(from_pos.TradeDate,tradeserial.operate_date,sizeof(from_pos.TradeDate)); memcpy(from_pos.TradeTime,tradeserial.operate_time,sizeof(from_pos.TradeTime)); sprintf(from_pos.CardNo,"%d",tradeserial.card_id); memcpy(from_pos.BankCardNo,tradeserial.b_act_id,sizeof(from_pos.BankCardNo)); sprintf(from_pos.TransMoney,"%d",int(tradeserial.trade_fee)*100); if(tradeserial.serial_state!=2) { sprintf(from_pos.RetCode,"%s","失败"); } else sprintf(from_pos.RetCode,"%s","成功"); //开始返回应答包 Strncpy_t(out_pack->sclose_emp,from_pos.TradeCode,sizeof(out_pack->sclose_emp)); Strncpy_t(out_pack->sorder0,from_pos.TransMoney,sizeof(out_pack->sorder0)); Strncpy_t(out_pack->sorder1,from_pos.ExtraMoney,sizeof(out_pack->sorder1)); Strncpy_t(out_pack->sserial1,from_pos.AccountMoney,sizeof(out_pack->sserial1)); out_pack->lvol0=from_pos.SendNo; out_pack->lvol1=from_pos.RecvNo; memcpy(out_pack->sdate0,from_pos.TradeDate,sizeof(from_pos.TradeDate)); memcpy(out_pack->stime0,from_pos.TradeTime,sizeof(from_pos.TradeTime)); memcpy(out_pack->sdate1,from_pos.BankDate,sizeof(from_pos.BankDate)); memcpy(out_pack->stime1,from_pos.BankTime,sizeof(from_pos.BankTime)); Strncpy_t(out_pack->scust_no,from_pos.Balance,sizeof(out_pack->scust_no)); Strncpy_t(out_pack->schange_emp,from_pos.RetCode,sizeof(out_pack->schange_emp)); Strncpy_t(out_pack->sserial0,from_pos.CardNo,sizeof(out_pack->sserial0)); out_pack->lvol2=from_pos.Notecase; Strncpy_t(out_pack->scust_auth,from_pos.BankCardNo,sizeof(out_pack->scust_auth)); sprintf(out_pack->sstatus1,"%c",from_pos.MngFeeFlag); Strncpy_t(out_pack->semp_pwd,from_pos.AccountPwd,sizeof(out_pack->semp_pwd)); Strncpy_t(out_pack->semp_pwd2,from_pos.AccountNewPwd,sizeof(out_pack->semp_pwd2)); Strncpy_t(out_pack->sstation0,from_pos.BankCardPwd,sizeof(out_pack->sstation0)); Strncpy_t(out_pack->sstation1,from_pos.BankCardNewPwd,sizeof(out_pack->sstation1)); Strncpy_t(out_pack->sorder2,from_pos.TerminalId,sizeof(out_pack->sorder2)); // printf("LINE:%d\n",__LINE__); PutRow(handle,out_pack,pRetCode,szMsg); if(cnt>=10) { DB_t_tif_tradeserial_close_select_by_cur3(); break; } } // printf("LINE:%d\n",__LINE__); T_t_tif_tradeserial_his tradeserial_his; memset(&tradeserial_his,0,sizeof(tradeserial_his)); if(cnt<10) { ret=DB_t_tif_tradeserial_his_open_select_by_cur1_and_serial_type_and_card_id(TRADE_INNER_TRANS,card.card_id); if(ret) { db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ALERT,"declare cursor err sqlcode[%d]",ret); return E_TRANS_UNKNOW_ERROR; } // printf("LINE:%d\n",__LINE__); while(1) { ret=DB_t_tif_tradeserial_his_fetch_select_by_cur1(&tradeserial_his); if(ret) { DB_t_tif_tradeserial_his_close_select_by_cur1(); if(ret==DB_NOTFOUND) { writelog(LOG_DEBUG,"There havn't record from t_tif_tradeserial_his table!"); break; } else return E_TRANS_UNKNOW_ERROR; } cnt++; memcpy(from_pos.TradeDate,tradeserial_his.operate_date,sizeof(from_pos.TradeDate)); memcpy(from_pos.TradeTime,tradeserial_his.operate_time,sizeof(from_pos.TradeTime)); sprintf(from_pos.CardNo,"%d",tradeserial_his.card_id); memcpy(from_pos.BankCardNo,tradeserial_his.b_act_id,sizeof(from_pos.BankCardNo)); sprintf(from_pos.TransMoney,"%d",int(tradeserial_his.trade_fee)*100); if(tradeserial_his.serial_state!=2) { sprintf(from_pos.RetCode,"%s","失败"); } else sprintf(from_pos.RetCode,"%s","成功"); //开始返回应答包 Strncpy_t(out_pack->sclose_emp,from_pos.TradeCode,sizeof(out_pack->sclose_emp)); Strncpy_t(out_pack->sorder0,from_pos.TransMoney,sizeof(out_pack->sorder0)); Strncpy_t(out_pack->sorder1,from_pos.ExtraMoney,sizeof(out_pack->sorder1)); Strncpy_t(out_pack->sserial1,from_pos.AccountMoney,sizeof(out_pack->sserial1)); out_pack->lvol0=from_pos.SendNo; out_pack->lvol1=from_pos.RecvNo; Strncpy_t(out_pack->sdate0,from_pos.TradeDate,sizeof(out_pack->sdate0)); Strncpy_t(out_pack->stime0,from_pos.TradeTime,sizeof(out_pack->stime0)); Strncpy_t(out_pack->sdate1,from_pos.BankDate,sizeof(out_pack->sdate1)); Strncpy_t(out_pack->stime1,from_pos.BankTime,sizeof(out_pack->stime1)); Strncpy_t(out_pack->scust_no,from_pos.Balance,sizeof(out_pack->scust_no)); Strncpy_t(out_pack->schange_emp,from_pos.RetCode,sizeof(out_pack->schange_emp)); Strncpy_t(out_pack->sserial0,from_pos.CardNo,sizeof(out_pack->sserial0)); out_pack->lvol2=from_pos.Notecase; Strncpy_t(out_pack->scust_auth,from_pos.BankCardNo,sizeof(out_pack->scust_auth)); sprintf(out_pack->sstatus1,"%c",from_pos.MngFeeFlag); Strncpy_t(out_pack->semp_pwd,from_pos.AccountPwd,sizeof(out_pack->semp_pwd)); Strncpy_t(out_pack->semp_pwd2,from_pos.AccountNewPwd,sizeof(out_pack->semp_pwd2)); Strncpy_t(out_pack->sstation0,from_pos.BankCardPwd,sizeof(out_pack->sstation0)); Strncpy_t(out_pack->sstation1,from_pos.BankCardNewPwd,sizeof(out_pack->sstation1)); Strncpy_t(out_pack->sorder2,from_pos.TerminalId,sizeof(out_pack->sorder2)); PutRow(handle,out_pack,pRetCode,szMsg); if(cnt>=10) { DB_t_tif_tradeserial_his_close_select_by_cur1(); break; } } } writelog(LOG_INFO,"query trans record succeed!"); return 0; }
int F847132(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg) { int ret=0; int i=0; int iTotalCnt=0; double dTotalAmt=0.0; double dSerialNo = 0; char logicdate[11]=""; //业务日期 char sysdate[11]=""; char systime[9]=""; char sMsg[256]=""; T_t_tif_tradeserial tradeserial; T_t_tif_savdtl tSavdtl; T_t_tif_subsidy tSubsidy; InAcc IA; ST_CPACK aPack; ST_PACK *out_pack = &(aPack.pack); T_t_tif_meslist tMesList; T_t_pif_device t_device; T_t_pif_syskey tSyskey; memset(&t_device,0,sizeof t_device); memset(&tMesList,0,sizeof tMesList); memset(&tSavdtl,0,sizeof(tSavdtl)); memset(&tSubsidy,0,sizeof(tSubsidy)); memset(&tSyskey,0,sizeof tSyskey); memset(&tradeserial,0,sizeof(tradeserial)); memset(&IA,0,sizeof(IA)); ResetNormalCPack(&aPack,0,1); SetCol(handle,0); SetCol(handle,F_VSMESS,0); getsysdate(sysdate); getsystime(systime); ret=GetLogicDate(logicdate); //业务日期 if(ret) { *pRetCode=ret; goto L_RETU; } if(strlen(rPack->scust_limit)<1) { *pRetCode=E_INPUT_BATCH_NO; goto L_RETU; } if(strlen(rPack->scust_no)<1) { *pRetCode=E_INPUT_OPER_NULL; goto L_RETU; } //允许补助负金额 if(amtcmp(rPack->damt0,0)==0) { *pRetCode=E_INPUT_AMT; goto L_RETU; } des2src(tSubsidy.summary,rPack->semail); //补助摘要 if(strlen(rPack->semail)<1) { *pRetCode=E_INPUT_SUMMARY; goto L_RETU; } des2src(tSubsidy.batch_no,rPack->scust_limit); tSubsidy.bill_type=rPack->lvol2; //票据类型 des2src(tSubsidy.bill_no,rPack->scust_auth2); //票据号码 tSubsidy.amount=rPack->damt0; //补助金额 des2src(tSubsidy.subsidytype,rPack->smain_flag);//补助标志(0增值1减值) des2src(tSubsidy.subsidytype,"1"); //补助标志(0增值1减值) des2src(tSubsidy.broker_id,rPack->sname); //经办人身份证号 des2src(tSubsidy.broker_name,rPack->semail2); //经办人姓名 IA.dArrInAmt[0]=tradeserial.trade_fee; switch(tSubsidy.bill_type) { case TYPE_CASH: //现金 IA.iArrInFeeSwitch[1]=1; break; case TYPE_BILL: //支票 IA.iArrInFeeSwitch[2]=1; break; case TYPE_FUNDBOOK: //经费本 IA.iArrInFeeSwitch[3]=1; break; default: *pRetCode=E_INPUT_DEPOSIT_TYPE; goto L_RETU; } /* ret=get_batch_no_by_subsidy_no(tSubsidy.subsidy_no,tSubsidy.batch_no); if(ret) { *pRetCode = E_DB_SUBSIDYTMP_R; goto L_RETU; } */ // 下发补助时才生成批次号 /* ret=judge_with_max_subsidy_no_within_new(tSubsidy.subsidy_no); if(ret) { *pRetCode = E_SUBSIDY_DOWN_ERROR; goto L_RETU; } */ ret=stat_subsidy_amount_by_batch_no(tSubsidy.batch_no, &iTotalCnt,&dTotalAmt); if(ret) { *pRetCode = ret; writelog(LOG_ERR,"ret[%d]",ret); goto L_RETU; } if(iTotalCnt!=rPack->lvol3) { strcpy(szMsg,"补助人数与导入的数据不符"); *pRetCode=E_INPUT_DATA_INVAILD; goto L_RETU; } if(amtcmp(dTotalAmt,rPack->damt0)!=0) { strcpy(szMsg,"补助总金额与导入的补助数据不符"); *pRetCode=E_INPUT_DATA_INVAILD; goto L_RETU; } writelog(LOG_DEBUG,"download subsidy batch_no : %s",tSubsidy.batch_no); des2src(tSubsidy.tx_date,sysdate); des2src(tSubsidy.tx_time,systime); ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dSerialNo); //获得最大流水号 if(ret) { *pRetCode = ret; writelog(LOG_ERR,"ret[%d]",ret); goto L_RETU; } tradeserial.serial_no = D2I(dSerialNo); //流水号 tradeserial.other_seri_no = 0; //上传端流水号 if(amtcmp(dTotalAmt,0.0)>0) tradeserial.serial_type = TXCODE_SET_SUBSIDY; else tradeserial.serial_type = TXCODE_DESUBSIDY_DOWN; tradeserial.serial_state = SERISTAT_DEBT; //流水状态 des2src(tradeserial.operate_date,sysdate); //发生日期 des2src(tradeserial.operate_time,systime); //发生时间 des2src(tradeserial.collect_date,sysdate); //采集日期 des2src(tradeserial.collect_time,systime); //采集时间 des2src(tradeserial.enteract_date,logicdate); //处理日期 des2src(tradeserial.enteract_time,systime); //处理时间 tradeserial.maindevice_id = rPack->lvol6; //上传工作站标识 tradeserial.device_id = rPack->lvol7; //采集设备标识 des2src(tradeserial.oper_code , rPack->scust_no); //操作员代码 tradeserial.sys_id = 0; //外部系统标识 // 设置发生金额 tradeserial.trade_fee = dTotalAmt; switch(tSubsidy.bill_type) { case TYPE_CASH: //现金 break; case TYPE_BILL: //支票 case TYPE_FUNDBOOK: //经费本 tSavdtl.amount=rPack->damt0; //发生额 if(amtcmp(tSavdtl.amount,0)==0) break; des2src(tSavdtl.bill_no,tSubsidy.bill_no); //票据号码 if(strlen(tSavdtl.bill_no)<1) { *pRetCode=E_INPUT_BILLNO; goto L_RETU; } tSavdtl.card_no=0; //卡号 des2src(tSavdtl.oper_no,rPack->scust_limit); //操作员 tSavdtl.seqno=tradeserial.serial_no; //流水号 des2src(tSavdtl.tx_date,sysdate); //发生日期 des2src(tSavdtl.tx_time,systime); //发生时间 tSavdtl.cnt=1; //票据数量 tSavdtl.bill_type=tSubsidy.bill_type; //票据类型 tSavdtl.tx_code=tradeserial.serial_type; //交易码 ret=DB_t_tif_savdtl_add(&tSavdtl); if(ret) { if(DB_REPEAT==ret) *pRetCode = E_DB_SAVDTL_E; else *pRetCode = E_DB_SAVDTL_I; goto L_RETU; } break; default: *pRetCode=E_INPUT_DEPOSIT_TYPE; goto L_RETU; } IA.iFeeType=1; //默认值 //支持负金额扣款 if(tradeserial.trade_fee<0) tradeserial.trade_fee=-tradeserial.trade_fee; IA.dArrInAmt[0]=tradeserial.trade_fee; IA.iArrInFeeSwitch[0]=rPack->lvol0; IA.iArrInFeeSwitch[5]=rPack->lvol5; IA.iArrInFeeSwitch[6]=rPack->lvol6; IA.iArrInFeeSwitch[7]=rPack->lvol7; IA.iArrInFeeSwitch[8]=rPack->lvol8; IA.iArrInFeeSwitch[9]=rPack->lvol9; IA.iArrInFeeSwitch[10]=rPack->lvol10; // 记入账户信息 ret=process(&IA,&tradeserial,&tSubsidy); if(ret) { writelog(LOG_ERR,"process ret[%d]",ret); *pRetCode=ret; goto L_RETU; } sprintf(out_pack->vsmess,"流水号:%d ",IA.iSerialNo); // writelog(LOG_DEBUG,"out tx type count %d",IA.iOutTxTypeCnt); /* for(i=1;i<=IA.iOutTxTypeCnt;i++) { if(amtcmp(IA.dArrOutAmt[i],0)!=0) { sprintf(sMsg,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]); strcat(out_pack->vsmess,sMsg); } } */ sprintf(sMsg,",共%d笔",iTotalCnt); strcat(out_pack->vsmess,sMsg); // strcat(out_pack->vsmess,sMsg); // writelog(LOG_DEBUG,out_pack->vsmess); ret = DB_t_tif_tradeserial_add(&tradeserial); if (ret) { writelog(LOG_ERR,"ret[%d]",ret); if(DB_REPEAT==ret) *pRetCode = E_DB_TRADESERIAL_E; else *pRetCode = E_DB_TRADESERIAL_I; goto L_RETU; } // 广播下载补助名单任务 memset(&tMesList,0,sizeof tMesList); tMesList.funid=930077; tMesList.level = MESLIST_PRIORITY_REALTIME; tMesList.msgtype = MESLIST_TYPE_NORMAL; tMesList.max_send_cnt = 5; ret=AddMsgLst(&tMesList); if(ret) { *pRetCode=E_DB_MESLIST_I; writelog(LOG_ERR,"AddMsgLst err[%d]",ret); return ret; } ////////////////////////新增 ret=DB_t_pif_device_open_select_by_c5_and_devtype_and_phytype("5301",1001); if(ret) { writelog(LOG_ERR,"DB_t_pif_device_open_select_by_c5_and_devtype_and_phytype error,ret=[%d]",ret); *pRetCode = E_DB_DEVICE_R; goto L_RETU; } while(1) { // 初始化宿主变量 ret=DB_t_pif_device_fetch_select_by_c5(&t_device); if (ret) { DB_t_pif_device_close_select_by_c5(); db_chk_err(__FILE__,__LINE__,&sqlca); if(DB_NOTFOUND==ret) { break; } else { *pRetCode=E_DB_DEVICE_R; writelog(LOG_ERR,"DB_t_pif_device_fetch_select_by_c5 err [%d]",ret); goto L_RETU; } } if(t_device.state_id == DEVISTAT_LOGOUT) //设备已经注销 continue; tMesList.devid = t_device.device_id; tMesList.device_id= t_device.subsystem_id; ret=AddMsgLst(&tMesList); if(ret) { *pRetCode=E_DB_MESLIST_I; DB_t_pif_device_close_select_by_c5(); writelog(LOG_ERR,"AddMsgLst err[%d]",ret); return ret; } } // 锁住批次号 ret = DB_t_pif_syskey_read_lock_by_cur_and_key_code(KEYTYPE_TIF_SUBSIDY_NO,&tSyskey); if(ret) { if(DB_NOTFOUND == ret) *pRetCode = E_DB_SYSKEY_N; else *pRetCode = E_DB_SYSKEY_R; goto L_RETU; } ret = calc_import_max_subsidy_no(tSubsidy.batch_no,tSubsidy.oper_code,&tSubsidy.subsidy_no); if(ret) { DB_t_tif_subsidy_close_select_by_c4(); return ret; } writelog(LOG_DEBUG,"download subsidy no[%d]",tSubsidy.subsidy_no); ret=update_subsidy_info_by_batch_no(&tSubsidy); if(ret) { *pRetCode = ret; DB_t_pif_syskey_free_lock_cur(); writelog(LOG_ERR,"ret[%d]",ret); goto L_RETU; } // 释放批次号 DB_t_pif_syskey_free_lock_cur(); PutRow(handle,out_pack,pRetCode,szMsg); return 0; L_RETU: return -1; }
int F820134(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg) { T_t_pif_cardstrut acardstru; int v_id=0; int nrows=0; int r=0; ST_CPACK aPack; ST_PACK *out_pack = &(aPack.pack); SetCol(handle,F_LVOL3,F_LVOL4,F_LVOL5,F_LVOL6,F_LVOL7,F_LVOL8,F_LVOL9,F_USSET0,F_USSET1,0); memset(&acardstru,0,sizeof(acardstru)); v_id = in_pack->lvol3; if(0 == v_id) { DB_t_pif_cardstrut_open_select_by_c1(); while(1){ memset(&acardstru,0,sizeof(acardstru)); r=DB_t_pif_cardstrut_fetch_select_by_c1(&acardstru); if(0 != r) { if(SC_NOTFOUND==r) { if(0 == nrows) { *pRetCode=E_DB_CARDSTRUT_N; sprintf(szMsg,"查询卡物理结构信息表无记录,SQLCODE=%d\n",r); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_WARNING,szMsg); goto L_Ret_if; } } else { *pRetCode=E_DB_CARDSTRUT_R; sprintf(szMsg,"读取卡物理结构信息表出错,SQLCODE=%d\n",r); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_WARNING,szMsg); goto L_Ret_if; } break; } out_pack->lvol3 = acardstru.id; out_pack->lvol4 = acardstru.phytype; out_pack->lvol5 = acardstru.sectorno; out_pack->lvol6 = acardstru.blockno; out_pack->lvol7 = acardstru.begin_addr; out_pack->lvol8 = acardstru.end_addr; out_pack->lvol9 = acardstru.bytenum; Strncpy_t(out_pack->usset0,acardstru.define,sizeof(out_pack->usset0)); Strncpy_t(out_pack->usset1,acardstru.comments,sizeof(out_pack->usset1)); PutRow(handle,out_pack,pRetCode,szMsg); nrows++; if (15 == nrows) { // 这里调用AnswerDataPart是为了不让前端等待太长时间,在有15条记录的时候就给返回,至于后续数据就不用管了,BCC与前端自动会将后续数据采集回去 AnswerDataPart(handle,*pRetCode,szMsg); } }; DB_t_pif_cardstrut_close_select_by_c1(); return 0; L_Ret_if: DB_t_pif_cardstrut_close_select_by_c1(); return r; } else{ r=DB_t_pif_cardstrut_read_by_id(v_id,&acardstru); if(SC_NOTFOUND==r) { *pRetCode=E_DB_CARDSTRUT_N; sprintf(szMsg,"卡物理结构信息表不存在相应记录,SQLCODE=%d\n",r); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ERR,szMsg); goto L_Ret_else; } else if(0!=r) { *pRetCode=E_DB_CARDSTRUT_R; sprintf(szMsg,"卡物理信息表读取错误,SQLCODE=%d\n",r); db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ERR,szMsg); goto L_Ret_else; } out_pack->lvol3 = acardstru.id; out_pack->lvol4 = acardstru.phytype; out_pack->lvol5 = acardstru.sectorno; out_pack->lvol6 = acardstru.blockno; out_pack->lvol7 = acardstru.begin_addr; out_pack->lvol8 = acardstru.end_addr; out_pack->lvol9 = acardstru.bytenum; Strncpy_t(out_pack->usset0,acardstru.define,sizeof(out_pack->usset0)); Strncpy_t(out_pack->usset1,acardstru.comments,sizeof(out_pack->usset1)); PutRow(handle,out_pack,pRetCode,szMsg); return 0; L_Ret_else: return r; } }
int Select_By_ShopBalance_Bet_Where_1(TRUSERID *handle,int *pRetCode,char *szMsg,int shop_id) { int ret=0; int nrows = 0; int i=0; ST_CPACK aPack; ST_PACK *out_pack = &(aPack.pack); T_t_tif_report_shop_balance pv_tif_shopdeptfee; memset(&pv_tif_shopdeptfee,0,sizeof(pv_tif_shopdeptfee)); i=shop_id; ret= DB_v_tif_shopdeptfee_open_select_by_c5(); if(ret) { *pRetCode=ret; db_chk_err(__FILE__,__LINE__,&sqlca); writelog(LOG_ALERT,"DB_v_tif_shopdeptfee_open_select_by_c5 err sqlcode[%d]",SQLCODE); goto L_RETU; } SetCol(handle,0); //SetCol(handle,F_LVOL0,F_SALL_NAME,F_LVOL1,F_LVOL2,F_DAMT0,F_DAMT1,F_DAMT2,F_SORDER0,F_STX_PWD,0); SetCol(handle,F_SCUST_NO,F_SCUST_NO2,F_SALL_NAME,F_LVOL0,F_LVOL1,F_LVOL2,F_LVOL7,F_DAMT0,F_DAMT1,F_DAMT2,F_SROOM_NO2,F_STX_PWD,F_SORDER0 ,0); while(1) { memset(out_pack,0,sizeof(ST_PACK)); // 初始化宿主变量 ret=DB_v_tif_shopdeptfee_fetch_select_by_c5(&pv_tif_shopdeptfee); if(ret) { db_chk_err(__FILE__,__LINE__,&sqlca); if(ret==DB_NOTFOUND) { if(0==nrows) { *pRetCode=E_DB_T_REPORT_SHOP_BALANCE_N; writelog(LOG_DEBUG,"fetch t_tif_report_shop_balance no data [%d]",ret); goto L_RETU; } else break; } else *pRetCode=E_DB_T_REPORT_SHOP_BALANCE_R; writelog(LOG_ALERT,"DB_v_tif_shopdeptfee_fetch_select_by_c5 err sqlcode[%d]",SQLCODE); goto L_RETU; } if(i==pv_tif_shopdeptfee.shop_id||i==pv_tif_shopdeptfee.dept_id) { out_pack->lvol0 = pv_tif_shopdeptfee.shop_id; memset(out_pack->sall_name,0,sizeof out_pack->sall_name); Strncpy_t(out_pack->sall_name, pv_tif_shopdeptfee.shop_name, sizeof(out_pack->sall_name)); out_pack->lvol1 = pv_tif_shopdeptfee.dept_id; out_pack->lvol2 = pv_tif_shopdeptfee.trade_num; out_pack->damt0 = pv_tif_shopdeptfee.trade_amt; out_pack->damt1 = pv_tif_shopdeptfee.mng_amt; out_pack->damt2 = pv_tif_shopdeptfee.trade_amt+pv_tif_shopdeptfee.mng_amt; PutRow(handle,out_pack,pRetCode,szMsg); nrows++; } } DB_v_tif_shopdeptfee_close_select_by_c5(); // EXEC SQL CLOSE C1; return 0; L_RETU: return *pRetCode;
int F820124(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg) { T_t_phydevice aphydev; //int scode=0; int v_phytype=0; int nrows=0; int r=0; ST_CPACK aPack; ST_PACK *out_pack = &(aPack.pack); SetCol(handle,F_LVOL6,F_SPHONE,F_SPAGER,F_SCERT_NO,F_USSET1,0); memset(&aphydev,0,sizeof(aphydev)); v_phytype = in_pack->lvol6; if(0==v_phytype) { DB_t_phydevice_open_select_by_c1(); while(1){ memset(&aphydev,0,sizeof(aphydev)); r=DB_t_phydevice_fetch_select_by_c1(&aphydev); if(0 != r) { if(SC_NOTFOUND == r) { if(0 == nrows) { *pRetCode=E_DB_PHYDEVICE_N; sprintf(szMsg,"查询设备结构信息表无记录,SQLCODE=%d\n",SQLCODE); writelog(LOG_WARNING,szMsg); db_chk_err(__FILE__,__LINE__,&sqlca); goto L_Ret_if; } } else { *pRetCode=E_DB_PHYDEVICE_R; sprintf(szMsg,"读取设备结构信息表出错,SQLCODE=%d\n",SQLCODE); writelog(LOG_WARNING,szMsg); db_chk_err(__FILE__,__LINE__,&sqlca); goto L_Ret_if; } break; } out_pack->lvol6 = aphydev.phytype; Strncpy_t(out_pack->sphone,aphydev.dname,sizeof(out_pack->sphone)); Strncpy_t(out_pack->spager,aphydev.dtype,sizeof(out_pack->spager)); Strncpy_t(out_pack->scert_no,aphydev.factory,sizeof(out_pack->scert_no)); Strncpy_t((char*)out_pack->usset1,aphydev.comments,sizeof(out_pack->usset1)); PutRow(handle,out_pack,pRetCode,szMsg); nrows++; if (15==nrows) { // 这里调用AnswerDataPart是为了不让前端等待太长时间,在有15条记录的时候就给返回,至于后续数据就不用管了,BCC与前端自动会将后续数据采集回去 AnswerDataPart(handle,*pRetCode,szMsg); } }; DB_t_phydevice_close_select_by_c1(); return 0; L_Ret_if: DB_t_phydevice_close_select_by_c1(); return r; } else{ r=DB_t_phydevice_read_by_phytype(v_phytype,&aphydev); if(SC_NOTFOUND==r) { *pRetCode=E_DB_PHYDEVICE_N; sprintf(szMsg,"设备物理信息表不存在相应记录,SQLCODE=%d\n",SQLCODE); writelog(LOG_ERR,szMsg); db_chk_err(__FILE__,__LINE__,&sqlca); goto L_Ret_else; } else if(r!=0) { *pRetCode=E_DB_PHYDEVICE_R; sprintf(szMsg,"设备物理信息表读取错误,SQLCODE=%d\n",SQLCODE); writelog(LOG_ERR,szMsg); db_chk_err(__FILE__,__LINE__,&sqlca); goto L_Ret_else; } out_pack->lvol6 = aphydev.phytype; Strncpy_t(out_pack->sphone,aphydev.dname,sizeof(out_pack->sphone)); Strncpy_t(out_pack->spager,aphydev.dtype,sizeof(out_pack->spager)); Strncpy_t(out_pack->scert_no,aphydev.factory,sizeof(out_pack->scert_no)); Strncpy_t((char*)out_pack->usset1,aphydev.comments,sizeof(out_pack->usset1)); PutRow(handle,out_pack,pRetCode,szMsg); return 0; L_Ret_else: return r; } }