📄 fileintf_sh.cpp
字号:
}
*/
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 + -