⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileintf_js.cpp

📁 电信的97接口程序,用于把话单入库。这里是采用FTP方式采集话单
💻 CPP
📖 第 1 页 / 共 3 页
字号:
			  RTRACE(6, "File open");
			  if(fnew.bad() || !fnew.good()) 
			  {
			  RTRACE(1, "open " << newFile << " error\n");
			  return -1;
			  }
			  if(fold.bad() || !fold.good()) 
			  {
			  RTRACE(1, "open " << oldFile << " error\n");
			  return -1;
			  }
			  int i=0;
			  
				while(!fold.eof())
				{
				fold.getline(tmp, BUFSIZE);
				str[i] = PString(tmp);
				fnew << str[i] << "\n";
				i ++;
				}
				fold.close();
				fnew.close();
				
				  RTRACE(6, "context:\n" << str);
				  
					if ( SaveDB(str) == 0 )
					{
					RTRACE(5, "Get cdr success");
					
					  // delete this file.
					  if(PFile::Remove(oldFile)) 
					  {
					  RTRACE(2, "Del success: " << oldFile);
					  }
					  else
					  {
					  RTRACE(2, "Del fail: " << oldFile);
					  }
					  }
	*/
	return 0;
	
}

int CFileIntf_JS::GetValueFromLine(PString line)
{
	RTRACE(6, "Enter GetValueFromLine");
	RTRACE(4, line);
	int j = 0, fieldOrder = 0;
	//	char buffer[FIELD_LEN+1];
	PString value = "";
	int len = line.GetSize();
	
    memset((void *)&sheet_ChD, 0, sizeof(sheet_ChD));
    //读出消息数据
	strcpy(sheet_ChD.MsgFlag,line.Mid(1, 1));
	if(atoi(sheet_ChD.MsgFlag)!=1)
	{
		RTRACE(5,"MessageFlag was not 1,Error! ");
        return -1;
	}
	
    strcpy(sheet_ChD.flowNo, line.Mid(6, 17));
	strcpy(sheet_ChD.OperateType, line.Mid(23, 3));
	strcpy(sheet_ChD.oldTel, line.Mid(26, 12));
	strcpy(sheet_ChD.newTel, line.Mid(38, 12));
	strcpy(sheet_ChD.BusinessNo, line.Mid(50, 2));
	strcpy(sheet_ChD.nodeCity, line.Mid(52, 2));
	STRNCPY(sheet_ChD.protocolType,"1",2,1);
    sheet_ChD.GetDate(OUT sheet_ChD.Date);
	sheet_ChD.GetTime(OUT sheet_ChD.Time);
	
	return 0;
}
//////////////////////////////////////////////////////////////////////////
///btrmg added for jiangsu socket
//////////////////////////////////////////////////////////////////////////
int GetValueFromMsg(PString line,int socketno)
{
	int sendlength,value;
	CFileIntf_JS fileIntf;
	PString sSuccess="", sFailure="";
	
	sendlength=strlen(line);
	fileIntf.GetValueFromLine(line);
	if (fileIntf_ChD.SheetToUserInterface() != 0) //该工单数据不合法
	{
		sFailure = sFailure + line;
		sFailure = sFailure + "\tretCode= line inavlid\n";
		RTRACE(2, "Get sheet item failed!");
		RTRACE(5, line);
		
	
		return -1;
	}
	
	// operate database
	int iRes = SaveDB(&fileIntf_ChD.userInterface);
	if ( iRes == 0 )
	{
		// write the right feeback to temp file
		sSuccess = sSuccess + line;
		sSuccess = sSuccess + "\n";
		RTRACE(2, "Get Sheet item successfully!");
		RTRACE(2,sSuccess);
		RTRACE(5, line);
			return 0;
	}
	else
	{
		// write the wrong feeback to temp file
		char temp[4], msg[80];
		sprintf(temp, "%d", iRes);
		value=strlen(temp);
		Code2Msg(iRes, msg);
		sFailure = sFailure + line;
		sFailure = sFailure + "\tretCode=" + (PString)temp + (PString)msg + "\n";
		RTRACE(2, "Get sheet item failed!");
		RTRACE(2,sFailure);
		RTRACE(5, line);
	
		return iRes;
	}
}

/*
void changetimeformat(char * datetime, char * desDatetime, int size)
{
char *	p;	
p = datetime;
desDatetime[0] = 0;
memcpy(desDatetime, p, 4);
memcpy(desDatetime+4, "-", 1);
p = p + 4;
memcpy(desDatetime+5, p, 2);
memcpy(desDatetime+7, "-", 1);
p = p + 2;
memcpy(desDatetime+8, p, 2);
if ( size > 9 )
{
memcpy(desDatetime+10, " ", 1);
p = p + 2;
memcpy(desDatetime+11, p, 2);
memcpy(desDatetime+13, ":", 1);
p = p + 2;
memcpy(desDatetime+14, p, 2);
memcpy(desDatetime+16, ":", 1);
p = p + 2;
memcpy(desDatetime+17, p, 2);
}
else
{
memcpy(desDatetime+10, " 00:00:00", 9);
}
desDatetime[19] = 0;

  return;
}*/

/*
int GetValueFromMsg(PString line)
{
CSheet_JS	sheet;
RTRACE(6, "Enter GetValueFromLine");
RTRACE(4, line);
int j = 0, fieldOrder = 0;
char buffer[FIELD_LEN+1];
PString value = "";
int len = line.GetSize();

  memset((void *)&sheet, 0, sizeof(sheet));
  
    for (int i = 0 ; i < len; i++)
    {
	if (line.Mid(i,1)[0] == '|')
	{
	switch (fieldOrder)
	{
	case 0:
	strcpy(sheet.businessId, line.Mid(0, i));
	break;
	case 1:
	strcpy(sheet.serviceId, line.Mid(j+1, i-j-1));
	break;
	case 2:
	strcpy(sheet.customType, line.Mid(j+1, i-j-1));
	break;
	case 3:
	strcpy(sheet.areaNo, line.Mid(j+1, i-j-1));
	break;
	case 4:
	strcpy(sheet.teleNumber, line.Mid(j+1, i-j-1));
	break;
	case 5:
	strcpy(sheet.oldTeleNum, line.Mid(j+1, i-j-1));
	break;
	case 6:
	strcpy(sheet.operateType, line.Mid(j+1, i-j-1));
	break;
	case 7:
	strcpy(sheet.productType, line.Mid(j+1, i-j-1));
	break;
	case 8:
	strcpy(sheet.oldProductType, line.Mid(j+1, i-j-1));
	break;
	case 9:
	strcpy(sheet.genTime, line.Mid(j+1, i-j-1));
	break;
	case 10:
	strcpy(sheet.endTime, line.Mid(j+1, i-j-1));
	break;
	case 11:
	strcpy(sheet.flag, line.Mid(j+1, i-j-1));
	break;
	case 12:
	strcpy(sheet.levels, line.Mid(j+1, i-j-1));
	//strcpy(sheet.addStrings, line.Mid(i+1, len-i-2)); //hide by zjl 2003-09-03
	break;
	case 13:
	strcpy(sheet.groupList, line.Mid(j+1, i-j-1));
	break;
	case 14:
	strcpy(sheet.protocolType, line.Mid(j+1, i-j-1));
	break;
	//	case 15:
	//		strcpy(sheet.)
	
	  };
	  j = i;
	  fieldOrder ++;
	  }
	  };
	  
		changetimeformat(sheet.genTime, buffer, strlen(sheet.genTime));
		strcpy(sheet.genTime, buffer);
		
		  sheet.PrintItem();
		  
			return 0;
			}
*/


// get the back file name
// if the file name is like 'xxxxx.xxx'
// the the back file name is 'xxxxxchr.xxx'
void CFileIntf_JS::SetBackFileName(PString * filename, PString chr)
{
	int site = filename->FindLast('.');
	filename->Splice(chr, site, 0);
}

void CFileIntf_JS::AddDateDelimiter(char * datetime, char * desDatetime, int size)
{
	char *	p;
	
	p = datetime;
	desDatetime[0] = 0;
	memcpy(desDatetime, p, 4);
	memcpy(desDatetime+4, "-", 1);
	p = p + 4;
	memcpy(desDatetime+5, p, 2);
	memcpy(desDatetime+7, "-", 1);
	p = p + 2;
	memcpy(desDatetime+8, p, 2);
	if ( size > 9 )
	{
		memcpy(desDatetime+10, " ", 1);
		p = p + 2;
		memcpy(desDatetime+11, p, 2);
		memcpy(desDatetime+13, ":", 1);
		p = p + 2;
		memcpy(desDatetime+14, p, 2);
		memcpy(desDatetime+16, ":", 1);
		p = p + 2;
		memcpy(desDatetime+17, p, 2);
	}
	else
	{
		memcpy(desDatetime+10, " 00:00:00", 9);
	}
	desDatetime[19] = 0;
	
	return;
}

int CFileIntf_JS::JudgeTimeType(char * datetime, int size)
{
	CGlobal::Instance()->Ltrim(datetime, strlen(datetime));
	if(strcmp(datetime, "") == 0)
		return 0;
	
	char buffer[5];
	int j = 0;
	int site = 0;
	int year, month, day, hour, minute, second;
	
	// cut datetime
	if(strlen(datetime) < 18)
		return -1;
	datetime[19] = '\0';
	
	// get datetime
	strncpy(buffer, datetime, 4);
	buffer[4] = 0;
	year = atoi(buffer);
	strncpy(buffer, datetime+5, 2);
	buffer[2] = 0;
	month = atoi(buffer);
	strncpy(buffer, datetime+8, 2);
	buffer[2] = 0;
	day = atoi(buffer);
	
	strncpy(buffer, datetime + 11, 2);
	buffer[2] = 0;
	hour = atoi(buffer);
	strncpy(buffer, datetime + 14, 2);
	buffer[2] = 0;
	minute = atoi(buffer);
	strncpy(buffer, datetime + 17, 2);
	buffer[2] = 0;
	second = atoi(buffer);
	
	if(strlen(datetime) < 19)
		return -1;
	if(datetime[4] != '-' || datetime[7] != '-' ||
		datetime[10] != ' ' || datetime[13] != ':' ||
		datetime[16] != ':')
	{
		RTRACE(5, "Find illeage letter character");
		return -1;
	}
	for(int i=0;i<19;i++)
	{
		if(i == 4 || i == 7 || i == 10 ||
			i == 13 || i == 16)
			continue;
		else
		{
			if(datetime[i] > '9' || datetime[i] < '0')
			{
				RTRACE(5, "Find illeage number character");
				return -1;
			}
		}
	}
	
	if(hour >= 60 || hour < 0)
	{
		RTRACE(5, "Illeage hour formation");
		return -1;
	}
	if(minute >= 60 || minute < 0)
	{
		RTRACE(5, "Illeage minute formation");
		return -1;
	}
	if(second >= 60 || second < 0)
	{
		RTRACE(5, "Illeage second formation");
		return -1;
	}
	
	if(year < 1970 || year > 2100)
	{
		RTRACE(5, "Illeage year formation");
		return -1;
	}
	if(month > 12 || month < 1)
	{
		RTRACE(5, "Illeage month formation");
		return -1;
	}
	// big month has 31 days per month
	if((month == 1 ||
		month == 3 ||
		month == 5 ||
		month == 7 ||
		month == 8 ||
		month == 10 ||
		month == 12) && (day > 31 || day < 1))
	{
		RTRACE(5, "Big month has 30 days per month");
		return -1;
	}
	// little month has 31 days per month
	if((month == 4 ||
		month == 6 ||
		month == 9 ||
		month == 11) && (day > 30 || day < 1))
	{
		RTRACE(5, "Little month has 30 days per month");
		return -1;
	}
	if(month == 2)
	{
		// judgement for leap year
		if((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0))
		{
			if(day > 29 || day < 1)
			{
				RTRACE(5, "Leap year has 29 days in February ");
				return -1;
			}
		}
		else
		{
			if(day > 28 || day < 1)
			{
				RTRACE(5, "Normal year has 28 days in February ");
				return -1;
			}
		}
	}
	return 0;
}

int CFileIntf_JS::SheetToUserInterface(void)
{
/*if (JudgeTimeType(sheet.genTime, strlen(sheet.genTime)) != 0)
	return -1;*/
	
	STRNCPY(userInterface.areaNo, sheet.areaNo, sizeof(userInterface.areaNo)-1, sizeof(sheet.areaNo)-1); 
	STRNCPY(userInterface.teleNumber, sheet.teleNumber, sizeof(userInterface.teleNumber)-1, sizeof(sheet.teleNumber)-1); 
	STRNCPY(userInterface.oldTeleNum, sheet.oldTeleNum, sizeof(userInterface.oldTeleNum)-1, sizeof(sheet.oldTeleNum)-1); 
	STRNCPY(userInterface.genTime, sheet.genTime, sizeof(userInterface.genTime)-1, sizeof(sheet.genTime)-1); 
	STRNCPY(userInterface.addString, sheet.businessId, sizeof(userInterface.addString)-1, sizeof(sheet.businessId)-1); 
	userInterface.serviceId[0] = 0;
	userInterface.aCLContent[0] = 0;
	userInterface.aCLICP[0] = 0;
	userInterface.sendRecv = 0;
	userInterface.flag = 0;
	strcpy(userInterface.endTime, "");
	userInterface.remainTime = 0;
	/*strcpy(userInterface.userGroup, CGlobal::m_instance->m_AccountsType);*/
	strcpy(userInterface.userType, CGlobal::m_instance->m_UserType);
    if (!strcmp(sheet.productType, "1") || !strcmp(sheet.productType, "0") || !strcmp(sheet.productType, "00") \
        || (sheet.productType[0] == 0) || !strcmp(sheet.productType, " "))
		strcpy(userInterface.userGroup, CGlobal::m_instance->m_AccountsType);
    else
		STRNCPY(userInterface.userGroup, sheet.productType, sizeof(userInterface.userGroup)-1, sizeof(sheet.productType)-1); 
	
	strcpy(userInterface.password, "66666");
	
	STRNCPY(userInterface.groupList, sheet.groupList, sizeof(userInterface.groupList)-1, sizeof(sheet.groupList)-1); 
	STRNCPY(userInterface.protocolType, sheet.protocolType, sizeof(userInterface.protocolType)-1, sizeof(sheet.protocolType)-1); 
    userInterface.userSource = atoi(sheet.customType);
	
    if (sheet.teleNumber[0] == 0)
    {
        RTRACE(2, "teleNumber can not be null");
        return -1;
    }
	
    CGlobal::m_instance->Rtrim(userInterface.areaNo, strlen(userInterface.areaNo));
    CGlobal::m_instance->Rtrim(userInterface.teleNumber, strlen(userInterface.teleNumber));
    CGlobal::m_instance->Rtrim(userInterface.oldTeleNum, strlen(userInterface.oldTeleNum));
	
    userInterface.operateType = atoi(sheet.operateType);
	
    switch (userInterface.operateType)
    {
    case '0': //开户
        break;
    case '1': //消户
        break;
    case '2': //更改
        if (sheet.oldTeleNum[0] == 0)
        {
            RTRACE(2, "Modify account, but oldTeleNum is null");
            return -1;
        }
        break;
		//case '4': //帐号绑定
    case '5': //帐号绑定 modi by zjl for new 97 JS
        if (sheet.oldTeleNum[0] == 0)
        {
            RTRACE(2, "Bind account, but bill account is null");
            return -1;
        }
        break;
		//case '5': //帐号绑定解除
    case '6': //帐号绑定解除 modi by zjl for new 97 JS
        if (sheet.oldTeleNum[0] == 0)
        {
            RTRACE(2, "UNBind account, but bill account is null");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -