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

📄 fileintf_sh.cpp

📁 电信的97接口程序,用于把话单入库。这里是采用FTP方式采集话单
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	}
*/
	return 0;

}

int CFileIntf_SH::GetValueFromLine(PString line)
{
	RTRACE(6, "Enter GetValueFromLine");
	RTRACE(4, line);
	char buffer[FIELD_LEN+1];
	int num = 0;
	int i;
	PString value = "";
	int iPos = 0;
	int sheetSize[10] = {3,8,8,24,4,4,8,1,1}; //定长字段
	
	for ( i = 0; i < 9; i++ )
	{
		value = line.Mid(iPos, sheetSize[i]);
		value[sheetSize[i]] = 0;
		memcpy(buffer, (const unsigned char * )value.Trim(), value.GetSize());
		SetSheetValue(i, buffer);
		iPos = iPos + sheetSize[i];
	}


	//convert datetime 20020718 to 2002-07-18 00:00:00
	if (strlen(sheet.sendDate) < 19)  
	{
		AddDateDelimiter(sheet.sendDate, buffer, strlen(sheet.sendDate));
		strcpy(sheet.sendDate, buffer);
	}

	AddDateDelimiter(sheet.finishDate, buffer, strlen(sheet.finishDate));
	strcpy(sheet.finishDate, buffer);

	sheet.PrintItem();

	return 0;
}

int CFileIntf_SH::GetValueFromLine_TD(PString line)
{
	RTRACE(6, "Enter GetValueFromLine_TD");
	RTRACE(4, line);
	char buffer[FIELD_LEN+1];
	int num = 0;
	int i;
	PString value = "";
	int iPos = 0;
	int sheetSize[10] = {3,8,24,4,4,8}; //定长字段
	
	for ( i = 0; i < 6; i++ )
	{
		value = line.Mid(iPos, sheetSize[i]);
		value[sheetSize[i]] = 0;
		memcpy(buffer, (const unsigned char * )value.Trim(), value.GetSize());
		SetSheetValue_TD(i, buffer);
		iPos = iPos + sheetSize[i];
	}


	//convert datetime 20020718 to 2002-07-18 00:00:00
	if (strlen(sheet_TD.sendDate) < 19)  
	{
		AddDateDelimiter(sheet_TD.sendDate, buffer, strlen(sheet_TD.sendDate));
		strcpy(sheet_TD.sendDate, buffer);
	}

	AddDateDelimiter(sheet_TD.finishDate, buffer, strlen(sheet_TD.finishDate));
	strcpy(sheet_TD.finishDate, buffer);

	sheet_TD.PrintItem();

	return 0;
}

void CFileIntf_SH::SetSheetValue(int num, char * buffer)
{
	switch( num )
	{
	case 0:
		STRNCPY(sheet.areaNo, buffer, sizeof(sheet.areaNo)-1, FIELD_LEN);
		break;
	case 1:
		STRNCPY(sheet.oldTel, buffer, sizeof(sheet.oldTel)-1, FIELD_LEN);
		break;
	case 2:
		STRNCPY(sheet.newTel, buffer, sizeof(sheet.newTel)-1, FIELD_LEN);
		break;
	case 3:
		STRNCPY(sheet.flowNo, buffer, sizeof(sheet.flowNo)-1, FIELD_LEN);
		break;
	case 4:
		STRNCPY(sheet.nodeCity, buffer, sizeof(sheet.nodeCity)-1, FIELD_LEN);
		break;
	case 5:
		STRNCPY(sheet.nodeProvince, buffer, sizeof(sheet.nodeProvince)-1, FIELD_LEN);
		break;
	case 6:
		STRNCPY(sheet.finishDate, buffer, sizeof(sheet.finishDate)-1, FIELD_LEN);
		break;
	/*case 7:
		STRNCPY(sheet.sendDate, buffer, sizeof(sheet.sendDate)-1, FIELD_LEN);
		break;*/
	case 7:
		STRNCPY(sheet.oldFlag, buffer, sizeof(sheet.oldFlag)-1, FIELD_LEN);
		break;
	case 8:
		STRNCPY(sheet.newFlag, buffer, sizeof(sheet.newFlag)-1, FIELD_LEN);
		break;
	}

	return;
}

void CFileIntf_SH::SetSheetValue_TD(int num, char * buffer)
{
	switch( num )
	{
	case 0:
		STRNCPY(sheet_TD.areaNo, buffer, sizeof(sheet_TD.areaNo)-1, FIELD_LEN);
		break;
	case 1:
		STRNCPY(sheet_TD.newTel, buffer, sizeof(sheet_TD.newTel)-1, FIELD_LEN);
		break;
	case 2:
		STRNCPY(sheet_TD.flowNo, buffer, sizeof(sheet_TD.flowNo)-1, FIELD_LEN);
		break;
	case 3:
		STRNCPY(sheet_TD.nodeCity, buffer, sizeof(sheet_TD.nodeCity)-1, FIELD_LEN);
		break;
	case 4:
		STRNCPY(sheet_TD.nodeProvince, buffer, sizeof(sheet_TD.nodeProvince)-1, FIELD_LEN);
		break;
	case 5:
		STRNCPY(sheet_TD.finishDate, buffer, sizeof(sheet_TD.finishDate)-1, FIELD_LEN);
		break;
	/*case 7:
		STRNCPY(sheet.sendDate, buffer, sizeof(sheet.sendDate)-1, FIELD_LEN);
		break;*/
	}

	return;
}

void CFileIntf_SH::SetInterfaceValue(int num, char * buffer)
{
	switch(num)
	{
	case 1:
		strcpy(userInterface.serviceId, buffer);
		break;
	case 2:
		strcpy(userInterface.userGroup, buffer);
		break;
	case 3:
		strcpy(userInterface.areaNo, buffer);
		break;
	case 4:
		strcpy(userInterface.teleNumber, buffer);
		break;
	case 5:
		strcpy(userInterface.oldTeleNum, buffer);
		break;
	case 6:
		userInterface.operateType = atoi(buffer);
		break;
	case 7:
		strcpy(userInterface.genTime, buffer);
		break;
	case 8:
		strcpy(userInterface.endTime, buffer);
		break;
	case 9:
		strcpy(userInterface.userType, buffer);
		break;
	case 10:
		strcpy(userInterface.password, buffer);
		break;
	case 11:
		userInterface.flag = atoi(buffer);
		break;
	case 12:
		userInterface.remainTime = atoi(buffer);
		break;
	case 13:
		strcpy(userInterface.aCLICP, buffer);
		break;
	case 14:
		strcpy(userInterface.aCLContent, buffer);
		break;
	case 15:
		userInterface.sendRecv = atoi(buffer);
		break;
	case 16:
		strcpy(userInterface.addString, buffer);
		break;
	}
}

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

void CFileIntf_SH::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_SH::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_SH::SheetToUserInterface(void)
{
	if (JudgeTimeType(sheet.sendDate, strlen(sheet.sendDate)) != 0)
		return -1;
	if (JudgeTimeType(sheet.finishDate, strlen(sheet.finishDate)) != 0)
		return -1;

	char	bz[3], tmp[41];
	memset(tmp, 0, 40);

	STRNCPY(userInterface.areaNo, sheet.areaNo, sizeof(userInterface.areaNo)-1, sizeof(sheet.areaNo)-1); 
	STRNCPY(userInterface.teleNumber, sheet.newTel, sizeof(userInterface.teleNumber)-1, sizeof(sheet.newTel)-1); 
	STRNCPY(userInterface.oldTeleNum, sheet.oldTel, sizeof(userInterface.oldTeleNum)-1, sizeof(sheet.oldTel)-1); 
	STRNCPY(userInterface.genTime, sheet.sendDate, sizeof(userInterface.genTime)-1, sizeof(sheet.sendDate)-1); 
	STRNCPY(userInterface.sendTime, sheet.sendDate, sizeof(userInterface.genTime)-1, sizeof(sheet.sendDate)-1); 
	STRNCPY(userInterface.backTime, sheet.finishDate, sizeof(userInterface.backTime)-1, sizeof(sheet.finishDate)-1); 
	STRNCPY(userInterface.addString, sheet.flowNo, sizeof(userInterface.addString)-1, sizeof(sheet.flowNo)-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);
	strcpy(userInterface.password, "66666");
	sprintf(bz, "%s%s", sheet.oldFlag, sheet.newFlag);
	bz[2] = 0;
	if (strlen(bz) != 2) return -1;
	if (strncmp(sheet.oldTel, sheet.newTel, sizeof(sheet.oldTel)) == 0)
	{
		if ( strcmp(bz, "00") == 0 || strcmp(bz, "11") == 0 )
		{
			RTRACE(1, "Flag error! sheet.oldFlag=" << sheet.oldFlag << "\tsheet.newFlag=" << sheet.newFlag);
			return -1;
		}
		else if (strcmp(bz, "01") == 0)
		{
			userInterface.operateType = 0; //开户
		}
		else if (strcmp(bz, "10") == 0)
		{
			userInterface.operateType = 1; //销户
		}
	}
	else
	{
		if (strcmp(bz, "00") == 0)
		{
			RTRACE(1, "Flag error! oldTel <> newTel sheet.oldFlag=" << sheet.oldFlag << "\tsheet.newFlag=" << sheet.newFlag);
			return -1;
		}
		else if (strcmp(bz, "01") == 0)
		{
			userInterface.operateType = 0; //开户
		}
		else if (strcmp(bz, "10") == 0)
		{
			//oldTel作销户,NewTel不处理
			userInterface.operateType = 1; //销户
			strcpy(tmp, userInterface.oldTeleNum);
			strcpy(userInterface.oldTeleNum, userInterface.teleNumber);
			strcpy(userInterface.teleNumber, tmp);
		}
		else if (strcmp(bz, "11") == 0)
		{
			userInterface.operateType = 2; //改号,移机
		}
	}

	return 0;
}

int CFileIntf_SH::SheetToUserInterface_TD(void)
{
	if (JudgeTimeType(sheet_TD.sendDate, strlen(sheet_TD.sendDate)) != 0)
		return -1;
	if (JudgeTimeType(sheet_TD.finishDate, strlen(sheet_TD.finishDate)) != 0)
		return -1;

	STRNCPY(userInterface.areaNo, sheet_TD.areaNo, sizeof(userInterface.areaNo)-1, sizeof(sheet_TD.areaNo)-1); 
	STRNCPY(userInterface.teleNumber, sheet_TD.newTel, sizeof(userInterface.teleNumber)-1, sizeof(sheet_TD.newTel)-1); 
	//STRNCPY(userInterface.oldTeleNum, sheet.oldTel, sizeof(userInterface.oldTeleNum)-1, sizeof(sheet.oldTel)-1); 
	//STRNCPY(userInterface.genTime, sheet.sendDate, sizeof(userInterface.genTime)-1, sizeof(sheet.sendDate)-1); 
	//STRNCPY(userInterface.sendTime, sheet.sendDate, sizeof(userInterface.genTime)-1, sizeof(sheet.sendDate)-1); 
	//STRNCPY(userInterface.backTime, sheet.finishDate, sizeof(userInterface.backTime)-1, sizeof(sheet.finishDate)-1); 
	STRNCPY(userInterface.addString, sheet_TD.flowNo, sizeof(userInterface.addString)-1, sizeof(sheet_TD.flowNo)-1); 
	userInterface.serviceId[0] = 0;
	userInterface.aCLContent[0] = 0;
	userInterface.aCLICP[0] = 0;
	userInterface.sendRecv = 0;
	userInterface.flag = 0;
	strcpy(userInterface.endTime, "");
	strcpy(userInterface.genTime, "");
	strcpy(userInterface.backTime, "");
	strcpy(userInterface.sendTime, "");
	strcpy(userInterface.oldTeleNum, "");
	userInterface.remainTime = 0;
	strcpy(userInterface.userGroup, CGlobal::m_instance->m_AccountsType);
	strcpy(userInterface.userType, CGlobal::m_instance->m_UserType);
	strcpy(userInterface.password, "66666");

	return 0;
}

void CSheet::PrintItem(void)
{
	if (CGlobal::m_instance->m_debugLevel < 5 ) return;

	PString		msg;

	msg = "\n---Sheet information---\n";
	msg = msg + "areaNo= " + areaNo + "\n";
	msg = msg + "oldTel= " + oldTel + "\n";
	msg = msg + "newTel= " + newTel + "\n";
	msg = msg + "flowNo= " + flowNo + "\n";
	msg = msg + "nodecity= " + nodeCity + "\n";
	msg = msg + "nodeProvince= " + nodeProvince + "\n";
	msg = msg + "finishDate= " + finishDate + "\n";
	msg = msg + "sendDate= " + sendDate + "\n";
	msg = msg + "oldFlag= " + oldFlag + "\n";
	msg = msg + "newFlag= " + newFlag + "\n";

	RTRACE(5, msg);
	return;
}

void CSheet_TD::PrintItem(void)
{
	if (CGlobal::m_instance->m_debugLevel < 5 ) return;

	PString		msg;

	msg = "\n---Sheet_TD information---\n";
	msg = msg + "areaNo= " + areaNo + "\n";
	msg = msg + "newTel= " + newTel + "\n";
	msg = msg + "flowNo= " + flowNo + "\n";
	msg = msg + "nodecity= " + nodeCity + "\n";
	msg = msg + "nodeProvince= " + nodeProvince + "\n";
	msg = msg + "finishDate= " + finishDate + "\n";
	msg = msg + "sendDate= " + sendDate + "\n";

	RTRACE(5, msg);
	return;
}

⌨️ 快捷键说明

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