605 lines
22 KiB
C++
605 lines
22 KiB
C++
|
|
/*#include "MyDlisLib.h"
|
|||
|
|
#include "MyLisLib.h"
|
|||
|
|
#include "MyXtfLib.h"*/
|
|||
|
|
#pragma once
|
|||
|
|
#include "WisTableTran.h"
|
|||
|
|
#include "BaseFun.h"
|
|||
|
|
//#include "log.h"
|
|||
|
|
//void AppendConsole(pai::log::Priority priority,const QString &output);
|
|||
|
|
WisTableTran::WisTableTran()
|
|||
|
|
{
|
|||
|
|
m_TranNum=0;
|
|||
|
|
WisDefTable=NULL;
|
|||
|
|
SlfDefTable=NULL;
|
|||
|
|
outinf=NULL;
|
|||
|
|
}
|
|||
|
|
WisTableTran::~WisTableTran()
|
|||
|
|
{
|
|||
|
|
if(m_TranNum)
|
|||
|
|
{
|
|||
|
|
//for(int i=0;i<m_TranNum;i++)delete []m_TTI[i].tinfo;
|
|||
|
|
delete []m_TTI;
|
|||
|
|
if(WisDefTable)delete []WisDefTable;
|
|||
|
|
if(SlfDefTable)delete []SlfDefTable;
|
|||
|
|
if(outinf)delete []outinf;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
void WisTableTran::GetTTI(TRANTABLEINF &m_TTI,QStringList temp)
|
|||
|
|
{
|
|||
|
|
m_TTI.ZdNum=0;
|
|||
|
|
m_TTI.tinfo=new ZdInf[temp.size()];
|
|||
|
|
for(int i=0;i<temp.size();i++)
|
|||
|
|
{
|
|||
|
|
QString line=temp.at(i);
|
|||
|
|
QStringList DataList=GetStringList(line,1,1,1,1,1);
|
|||
|
|
if(DataList.count()<2)continue;
|
|||
|
|
m_TTI.tinfo[m_TTI.ZdNum].OutZd=DataList.at(0);//logplus
|
|||
|
|
m_TTI.tinfo[m_TTI.ZdNum].InZd=DataList.at(1);//wis
|
|||
|
|
if(DataList.count()>2)m_TTI.tinfo[m_TTI.ZdNum].ZdType=DataList.at(2);
|
|||
|
|
if(DataList.count()>3)m_TTI.tinfo[m_TTI.ZdNum].ZdLen=DataList.at(3);
|
|||
|
|
if(DataList.count()>4)m_TTI.tinfo[m_TTI.ZdNum].ZdAlias=DataList.at(4);
|
|||
|
|
m_TTI.ZdNum++;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
bool WisTableTran::GetTranTableInf()
|
|||
|
|
{//读TableTran.ini
|
|||
|
|
m_TranNum=0;
|
|||
|
|
QString ConfigName = GetConfPath()+"TableTran.ini";
|
|||
|
|
QFile InFile(ConfigName);
|
|||
|
|
if( !InFile.open(QIODevice::ReadOnly ) )return 0;
|
|||
|
|
QTextStream textstream( &InFile );
|
|||
|
|
QString line;
|
|||
|
|
while(!textstream.atEnd())
|
|||
|
|
{
|
|||
|
|
line=textstream.readLine();
|
|||
|
|
if(line.indexOf("//")>=0)continue;
|
|||
|
|
if(line.indexOf("#")>=0)m_TranNum++;
|
|||
|
|
}
|
|||
|
|
if(!m_TranNum){
|
|||
|
|
InFile.close();
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
InFile.seek(0);
|
|||
|
|
m_TTI=new TRANTABLEINF[m_TranNum];
|
|||
|
|
|
|||
|
|
int num=-1;
|
|||
|
|
QStringList temp;
|
|||
|
|
while(!textstream.atEnd())
|
|||
|
|
{
|
|||
|
|
line=textstream.readLine();
|
|||
|
|
if(line.indexOf("//")>=0)continue;
|
|||
|
|
line=line.toUpper();
|
|||
|
|
if(line.indexOf("#")>=0)
|
|||
|
|
{
|
|||
|
|
if(num>=0)
|
|||
|
|
{
|
|||
|
|
GetTTI(m_TTI[num],temp);
|
|||
|
|
temp.clear();
|
|||
|
|
}
|
|||
|
|
num++;
|
|||
|
|
line=line.replace("#","");
|
|||
|
|
QStringList DataList=GetStringList(line,1,1,1,1,1);
|
|||
|
|
m_TTI[num].OutName=DataList.at(0);
|
|||
|
|
m_TTI[num].InName=DataList.at(1);
|
|||
|
|
if(DataList.count()>2)m_TTI[num].AliasName=DataList.at(2);
|
|||
|
|
}
|
|||
|
|
else temp.append(line);
|
|||
|
|
}
|
|||
|
|
GetTTI(m_TTI[num],temp);
|
|||
|
|
InFile.close();
|
|||
|
|
for(int i=0;i<m_TranNum;i++)
|
|||
|
|
{
|
|||
|
|
m_TTI[i].InNameList.clear();
|
|||
|
|
for(int j=0;j<m_TTI[i].ZdNum;j++)
|
|||
|
|
{
|
|||
|
|
QString tempName=m_TTI[i].tinfo[j].InZd;
|
|||
|
|
if(tempName.indexOf("+")>0)tempName=tempName.replace("+",",");
|
|||
|
|
if(tempName.indexOf("-")>0)tempName=tempName.replace("-",",");
|
|||
|
|
QStringList tempList=tempName.split(",");
|
|||
|
|
for(int m=0;m<tempList.count();m++)m_TTI[i].InNameList.append(tempList.at(m));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool WisTableTran::ReadDefTable(DEFAULTTABLE *&WisDefTable,QString table_inf)
|
|||
|
|
{
|
|||
|
|
WisDefTable=new DEFAULTTABLE[m_TranNum];
|
|||
|
|
for(int i=0;i<m_TranNum;i++)
|
|||
|
|
{
|
|||
|
|
WisDefTable[i].TableName="";
|
|||
|
|
WisDefTable[i].ZdNum=0;
|
|||
|
|
}
|
|||
|
|
QString ConfigName = ::GetConfPath();
|
|||
|
|
int iswis=0;
|
|||
|
|
if(table_inf.indexOf("wis_",0,Qt::CaseInsensitive)>-1) {
|
|||
|
|
ConfigName+=GetOilFieldName();
|
|||
|
|
iswis=1;
|
|||
|
|
}
|
|||
|
|
ConfigName+=table_inf;
|
|||
|
|
QFile InFile(ConfigName);
|
|||
|
|
if( !InFile.open(QIODevice::ReadOnly ) )
|
|||
|
|
{
|
|||
|
|
QMessageBox::warning(NULL,"提示","打开缺省表配置文件"+ConfigName+"错误");
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
QTextStream textstream( &InFile );
|
|||
|
|
QString line;
|
|||
|
|
|
|||
|
|
QString TableName,TableAliasName;
|
|||
|
|
//int ZdNum;
|
|||
|
|
QStringList ZdName,HzName,ZdUnit,ZdLen,ZdType,ZdRes,DataList;
|
|||
|
|
|
|||
|
|
while(!textstream.atEnd())
|
|||
|
|
{
|
|||
|
|
line=textstream.readLine();
|
|||
|
|
line=line.toUpper();
|
|||
|
|
while(line.indexOf("#")>=0)
|
|||
|
|
{
|
|||
|
|
line=line.replace("#","");
|
|||
|
|
DataList=GetStringList(line,1,1,1,1,1);
|
|||
|
|
if(DataList.count()<2)continue;
|
|||
|
|
TableName=DataList.at(0);
|
|||
|
|
TableAliasName=DataList.at(1);
|
|||
|
|
QString menuinfo[50];
|
|||
|
|
for(int m=0;m<m_TranNum;m++)
|
|||
|
|
{
|
|||
|
|
QString name;
|
|||
|
|
if(!iswis) name=m_TTI[m].OutName;
|
|||
|
|
else name=m_TTI[m].InName;
|
|||
|
|
if(TableName==name)
|
|||
|
|
{
|
|||
|
|
while(!textstream.atEnd())
|
|||
|
|
{
|
|||
|
|
line=textstream.readLine();
|
|||
|
|
if(line.indexOf(",")>=0)
|
|||
|
|
{
|
|||
|
|
QString str=line;
|
|||
|
|
str.trimmed();
|
|||
|
|
int len=str.length();
|
|||
|
|
if(len>-1&&str.at(len-1)==',')
|
|||
|
|
{
|
|||
|
|
while(!textstream.atEnd())
|
|||
|
|
{
|
|||
|
|
line=textstream.readLine();
|
|||
|
|
str+=line;
|
|||
|
|
str.trimmed();
|
|||
|
|
int len=str.length();
|
|||
|
|
if(len>-1&&str.at(len-1)!=',') break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
int ind=ZdName.size()-1;
|
|||
|
|
if(ind>-1) menuinfo[ind]=str;
|
|||
|
|
continue;//枚举行
|
|||
|
|
}
|
|||
|
|
line=line.toUpper();
|
|||
|
|
if(line.indexOf("#")>=0)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
DataList=GetStringList(line,1,1,1,1,1);
|
|||
|
|
if(DataList.count()<5)continue;
|
|||
|
|
|
|||
|
|
ZdName.append(DataList.at(0));
|
|||
|
|
HzName.append(DataList.at(1));
|
|||
|
|
ZdUnit.append(DataList.at(2));
|
|||
|
|
|
|||
|
|
bool IsZdType=0;
|
|||
|
|
for(int j=0;j<11;j++)
|
|||
|
|
{
|
|||
|
|
if(DataList.at(3)==QString(Rep_STR[j]))
|
|||
|
|
{
|
|||
|
|
ZdType.append(QString::number(j+1));
|
|||
|
|
IsZdType=1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!IsZdType)QMessageBox::warning(NULL,"提示","defauletable.ini文件中表"+TableName+"的字段名"+DataList.at(0)+"类型不正确");
|
|||
|
|
ZdLen.append(DataList.at(4));
|
|||
|
|
if(DataList.count()>5) {
|
|||
|
|
if(DataList.at(5).toInt()>0)
|
|||
|
|
{
|
|||
|
|
QString filename=GetConfPath();
|
|||
|
|
switch(DataList.at(5).toInt())
|
|||
|
|
{
|
|||
|
|
case 1:
|
|||
|
|
filename+="RESULT.ini";
|
|||
|
|
break;
|
|||
|
|
case 2:
|
|||
|
|
filename+="GujingOrder.ini";
|
|||
|
|
break;
|
|||
|
|
case 3:
|
|||
|
|
filename+="CoreOil.ini";
|
|||
|
|
break;
|
|||
|
|
case 4:
|
|||
|
|
filename+="CoreLith.ini";
|
|||
|
|
break;
|
|||
|
|
case 5:
|
|||
|
|
filename+="Corecolor.ini";
|
|||
|
|
break;
|
|||
|
|
case 6:
|
|||
|
|
filename+="colorind.ini";
|
|||
|
|
break;
|
|||
|
|
case 7:
|
|||
|
|
filename+="GeoLith.ini";
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
FILE *fp1=fopen(filename.toStdString().c_str(),"r+t");
|
|||
|
|
QString str;
|
|||
|
|
if(fp1) {
|
|||
|
|
char buf1[100];
|
|||
|
|
int flag=0;
|
|||
|
|
str="MENU=";
|
|||
|
|
while(!feof(fp1)) {
|
|||
|
|
int ret=fscanf(fp1,"%s",buf1);
|
|||
|
|
if(ret<1) break;
|
|||
|
|
if(flag) str+=",";
|
|||
|
|
else flag=1;
|
|||
|
|
str+=buf1;
|
|||
|
|
}
|
|||
|
|
fclose(fp1);
|
|||
|
|
}
|
|||
|
|
int ind=ZdRes.size();
|
|||
|
|
menuinfo[ind]=str;
|
|||
|
|
}
|
|||
|
|
ZdRes.append(DataList.at(5));
|
|||
|
|
}
|
|||
|
|
else ZdRes.append("0");
|
|||
|
|
}
|
|||
|
|
WisDefTable[m]=SetTableInf(TableName,TableAliasName,ZdName.count(),ZdName,HzName,ZdUnit,ZdType,ZdLen,ZdRes,menuinfo);
|
|||
|
|
ZdName.clear();
|
|||
|
|
ZdLen.clear();
|
|||
|
|
ZdType.clear();
|
|||
|
|
HzName.clear();
|
|||
|
|
ZdUnit.clear();
|
|||
|
|
ZdRes.clear();
|
|||
|
|
for(int i=0;i<50;i++)
|
|||
|
|
{
|
|||
|
|
menuinfo[i]="";
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
InFile.close();
|
|||
|
|
if(iswis){
|
|||
|
|
//检查输出匹配表名是否在系统定义的缺省表中
|
|||
|
|
int nn=0,mm=0;
|
|||
|
|
QString mes="TableTran.ini中定义的输出表名:\r\n";
|
|||
|
|
QString ZdMes="";
|
|||
|
|
for(int i=0;i<m_TranNum;i++)
|
|||
|
|
{
|
|||
|
|
if(WisDefTable[i].TableName==""||WisDefTable[i].ZdNum<=0)
|
|||
|
|
{
|
|||
|
|
nn++;
|
|||
|
|
mes+=m_TTI[i].InName+"\r\n";
|
|||
|
|
WisDefTable[i].TableName="";
|
|||
|
|
WisDefTable[i].ZdNum=0;
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
//检查输出匹配表m_TTI[i].InName中要匹配的字段名是否都存在于WisDefTable[i]中
|
|||
|
|
QStringList FieldNameList;
|
|||
|
|
for(int k=0;k<WisDefTable[i].ZdNum;k++)FieldNameList.append(QString(WisDefTable[i].tinfo[k].Name));
|
|||
|
|
for(int n=0;n<m_TTI[i].InNameList.count();n++)
|
|||
|
|
{
|
|||
|
|
int find=-1;
|
|||
|
|
for(int k=0;k<FieldNameList.count();k++)
|
|||
|
|
{
|
|||
|
|
if(m_TTI[i].InNameList.at(n)==FieldNameList.at(k))
|
|||
|
|
{
|
|||
|
|
find=k;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(find<0)
|
|||
|
|
{
|
|||
|
|
mm++;
|
|||
|
|
ZdMes+="数据表"+m_TTI[i].InName+"的字段"+m_TTI[i].InNameList.at(n)+"\r\n";
|
|||
|
|
WisDefTable[i].ZdNum=0;//字段定义不全的表不匹配
|
|||
|
|
WisDefTable[i].TableName="";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
mes+="不是系统定义的缺省表\r\n请在Wis_DefTable.ini配置文件中进行定义";
|
|||
|
|
if(!nn)mes="";
|
|||
|
|
if(mm)mes+="\r\nTableTran.ini文件中下列字段没有在wis_deftable.inf中定义\r\n";
|
|||
|
|
if(mm)mes+=ZdMes;
|
|||
|
|
if(nn+mm==0)return 1;
|
|||
|
|
// AppendConsole(pai::log::PAI_INFO,mes);
|
|||
|
|
// QMessageBox::warning(NULL,"提示",mes);
|
|||
|
|
//如果所有匹配表信息都不全,返回0,主程序中就不需要再做工作
|
|||
|
|
int num=0;
|
|||
|
|
for(int i=0;i<m_TranNum;i++)
|
|||
|
|
{
|
|||
|
|
if(WisDefTable[i].ZdNum)num++;
|
|||
|
|
}
|
|||
|
|
if(num)return 1;
|
|||
|
|
else {
|
|||
|
|
delete WisDefTable;
|
|||
|
|
WisDefTable=NULL;
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
//检查输出匹配表名是否在系统定义的缺省表中
|
|||
|
|
int nn=0,mm=0;
|
|||
|
|
QString mes="TableTran.ini中定义的输出表名:\r\n";
|
|||
|
|
QString ZdMes="";
|
|||
|
|
for(int i=0;i<m_TranNum;i++)
|
|||
|
|
{
|
|||
|
|
if(WisDefTable[i].TableName==""||WisDefTable[i].ZdNum<=0)
|
|||
|
|
{
|
|||
|
|
nn++;
|
|||
|
|
mes+=m_TTI[i].OutName+"\r\n";
|
|||
|
|
continue;
|
|||
|
|
}
|
|||
|
|
//检查输出匹配表m_TTI[i].OutName中要匹配的字段名是否都存在于SlfDefTable[i]中
|
|||
|
|
QStringList FieldNameList;
|
|||
|
|
for(int k=0;k<WisDefTable[i].ZdNum;k++)FieldNameList.append(QString(WisDefTable[i].tinfo[k].Name));
|
|||
|
|
for(int n=0;n<m_TTI[i].ZdNum;n++)
|
|||
|
|
{
|
|||
|
|
int find=-1;
|
|||
|
|
for(int k=0;k<FieldNameList.count();k++)
|
|||
|
|
{
|
|||
|
|
if(m_TTI[i].tinfo[n].OutZd==FieldNameList.at(k))
|
|||
|
|
{
|
|||
|
|
find=k;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(find<0)
|
|||
|
|
{
|
|||
|
|
mm++;
|
|||
|
|
ZdMes+="数据表"+m_TTI[i].OutName+"的字段"+m_TTI[i].tinfo[n].OutZd+"\r\n";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
mes+="不是系统定义的缺省表\r\n请在SlfDefTable.ini配置文件中进行定义";
|
|||
|
|
if(!nn)mes="";
|
|||
|
|
if(mm)mes+="\r\nTableTran.ini文件中下列字段没有在SlfDefTable.ini中定义\r\n";
|
|||
|
|
if(mm)mes+=ZdMes;
|
|||
|
|
if(nn+mm==0)return 1;
|
|||
|
|
// AppendConsole(pai::log::PAI_INFO,mes);
|
|||
|
|
// QMessageBox::warning(NULL,"提示",mes);
|
|||
|
|
//如果所有匹配表信息都不全,返回0,主程序中就不需要再做工作
|
|||
|
|
int num=0;
|
|||
|
|
for(int i=0;i<m_TranNum;i++)
|
|||
|
|
{
|
|||
|
|
if(WisDefTable[i].ZdNum)num++;
|
|||
|
|
}
|
|||
|
|
if(num)return 1;
|
|||
|
|
else {
|
|||
|
|
delete WisDefTable;
|
|||
|
|
WisDefTable=NULL;
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
bool WisTableTran::HaveTranTable(QString wistype)//QStringList TableList)
|
|||
|
|
{
|
|||
|
|
//读数据表匹配与转换配置文件TableTran.ini
|
|||
|
|
if(!GetTranTableInf())return 0;
|
|||
|
|
//读wis缺省表Wis_deftable.inf(从Forward\system\deftable.inf拷贝到LogPlus\bin\conf\Wis_deftable.inf)
|
|||
|
|
if(!ReadDefTable(WisDefTable,"wis_deftable.inf"))return 0;
|
|||
|
|
//读slf缺省表WisDefTable.ini
|
|||
|
|
if(!ReadDefTable(SlfDefTable,"DefauleTable.ini"))return 0;
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
int WisTableTran::GetTranTableNo(QString TableName,int fieldNum,Slf_TABLE_FIELD* tableFieldInfo,bool IsS2W)
|
|||
|
|
{
|
|||
|
|
DEFAULTTABLE *DefTab;
|
|||
|
|
int TranTable=-1;
|
|||
|
|
for(int m=0;m<m_TranNum;m++)
|
|||
|
|
{
|
|||
|
|
#pragma region 相同表名
|
|||
|
|
if(m_TTI[m].InName==TableName)//检查转换字段是否都存在
|
|||
|
|
{
|
|||
|
|
TranTable=m;
|
|||
|
|
QStringList FieldNameList;
|
|||
|
|
for(int k=0;k<fieldNum;k++)FieldNameList.append(QString(tableFieldInfo[k].Name));
|
|||
|
|
// 检查输出字段名是否存在
|
|||
|
|
for(int n=0;n<m_TTI[m].InNameList.count();n++)
|
|||
|
|
{
|
|||
|
|
int find=-1;
|
|||
|
|
for(int k=0;k<FieldNameList.count();k++)
|
|||
|
|
{
|
|||
|
|
if(m_TTI[m].InNameList.at(n)==FieldNameList.at(k))
|
|||
|
|
{
|
|||
|
|
find=k;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(find<0)
|
|||
|
|
{
|
|||
|
|
TranTable=-1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#pragma endregion 相同表名
|
|||
|
|
if(TranTable>=0)break;
|
|||
|
|
#pragma region 相同字段
|
|||
|
|
//如果没有和缺省表名相同的表,检查是否有同结构的表,如要把GEOSTRATUM转成LAYER_DATA的表
|
|||
|
|
if(!IsS2W)DefTab=&WisDefTable[m];
|
|||
|
|
else DefTab=&SlfDefTable[m];
|
|||
|
|
if(fieldNum==DefTab->ZdNum)//m_TTI[m].OutName==TableName)
|
|||
|
|
{
|
|||
|
|
TranTable=m;
|
|||
|
|
// 检查字段名、字段类型是否完全一致
|
|||
|
|
for(int k=0;k<fieldNum;k++)
|
|||
|
|
{
|
|||
|
|
if(strcmp(DefTab->tinfo[k].Name,tableFieldInfo[k].Name)!=0
|
|||
|
|
||DefTab->tinfo[k].RepCode!=tableFieldInfo[k].RepCode
|
|||
|
|
||DefTab->tinfo[k].CodeLength!=tableFieldInfo[k].Length)
|
|||
|
|
{
|
|||
|
|
TranTable=-1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(TranTable>=0)break;
|
|||
|
|
}
|
|||
|
|
#pragma endregion 相同字段
|
|||
|
|
}
|
|||
|
|
return TranTable;
|
|||
|
|
}
|
|||
|
|
void WisTableTran::GetOutInf(int TranTable)
|
|||
|
|
{
|
|||
|
|
if(outinf)delete []outinf;
|
|||
|
|
outinf=new OUTINF[m_TTI[TranTable].ZdNum];
|
|||
|
|
for(int n=0;n<m_TTI[TranTable].ZdNum;n++)
|
|||
|
|
{
|
|||
|
|
strcpy(outinf[n].OutName,m_TTI[TranTable].tinfo[n].OutZd.toStdString().c_str());
|
|||
|
|
for(int j=0;j<SlfDefTable[TranTable].ZdNum;j++)
|
|||
|
|
{
|
|||
|
|
if(m_TTI[TranTable].tinfo[n].OutZd==WisDefTable[TranTable].tinfo[j].Name)
|
|||
|
|
{
|
|||
|
|
SlfDefTable[TranTable].toName[j]=m_TTI[TranTable].tinfo[n].InZd;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
for(int j=0;j<WisDefTable[TranTable].ZdNum;j++)
|
|||
|
|
{
|
|||
|
|
if(m_TTI[TranTable].tinfo[n].InZd==WisDefTable[TranTable].tinfo[j].Name)
|
|||
|
|
{
|
|||
|
|
WisDefTable[TranTable].toName[j]=m_TTI[TranTable].tinfo[n].OutZd;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
QString tempName=m_TTI[TranTable].tinfo[n].InZd;
|
|||
|
|
QStringList tempNameList;
|
|||
|
|
outinf[n].Sep="";
|
|||
|
|
int varnum=1;
|
|||
|
|
outinf[n].CodeType=0;
|
|||
|
|
if(tempName.indexOf("+")>0||tempName.indexOf("-")>0)
|
|||
|
|
{
|
|||
|
|
if(tempName.indexOf("+")>0)outinf[n].Sep="+";
|
|||
|
|
if(tempName.indexOf("-")>0)outinf[n].Sep="-";
|
|||
|
|
tempNameList=tempName.split(outinf[n].Sep);
|
|||
|
|
varnum=tempNameList.count();
|
|||
|
|
}
|
|||
|
|
if(varnum==1)strcpy(outinf[n].InName1,tempName.toStdString().c_str());
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
strcpy(outinf[n].InName1,tempNameList[0].toStdString().c_str());
|
|||
|
|
strcpy(outinf[n].InName2,tempNameList[1].toStdString().c_str());
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
//
|
|||
|
|
DEFAULTTABLE WisTableTran::SetTableInf(QString TableName,QString TableHzName,int num,QStringList ZdName,QStringList HzName,QStringList ZdUnit,QStringList ZdType,QStringList ZdLen,QStringList ZdRes,QString *menu)
|
|||
|
|
{
|
|||
|
|
DEFAULTTABLE DefTable;
|
|||
|
|
memset(&DefTable.tinfo,0,sizeof(DefTable.tinfo));
|
|||
|
|
DefTable.TableName=TableName;
|
|||
|
|
DefTable.TableAliasName=TableHzName;
|
|||
|
|
DefTable.ZdNum=num;
|
|||
|
|
for(int i=0;i<num;i++)
|
|||
|
|
{
|
|||
|
|
strcpy(DefTable.tinfo[i].Name,ZdName[i].toStdString().c_str());
|
|||
|
|
strcpy(DefTable.tinfo[i].HZName,HzName[i].toStdString().c_str());
|
|||
|
|
strcpy(DefTable.tinfo[i].Unit,ZdUnit[i].toStdString().c_str());
|
|||
|
|
strcpy(DefTable.tinfo[i].HZUnit,"");
|
|||
|
|
DefTable.tinfo[i].RepCode=ZdType[i].toInt();
|
|||
|
|
DefTable.tinfo[i].CodeLength=ZdLen[i].toInt();
|
|||
|
|
|
|||
|
|
DefTable.tinfo[i].Sequence=0;//2是否连续控制
|
|||
|
|
DefTable.tinfo[i].Start=1;//4字段起始值
|
|||
|
|
DefTable.tinfo[i].End=99999;//4字段起始值
|
|||
|
|
DefTable.tinfo[i].Rlev=1;//4字段采样间隔
|
|||
|
|
DefTable.tinfo[i].SamplePoint=1;//4一个阵列的横向采样样本点数
|
|||
|
|
DefTable.tinfo[i].ArrayNum=1;//4阵列数
|
|||
|
|
DefTable.tinfo[i].Vmin=-99999;//4字段最大值
|
|||
|
|
DefTable.tinfo[i].Vmax=99999;//4字段最小值
|
|||
|
|
DefTable.tinfo[i].DefVal=9999;//4缺省值
|
|||
|
|
*(DWORD *)&DefTable.tinfo[i].Reserved=ZdRes[i].toInt();
|
|||
|
|
if(menu)DefTable.menuinfo[i]=menu[i];
|
|||
|
|
}
|
|||
|
|
return DefTable;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void WisTableTran::InitDefauleTable(bool IsWis)
|
|||
|
|
{
|
|||
|
|
QString ConfigName = ::GetConfPath();
|
|||
|
|
if(IsWis)ConfigName+="wis_deftable.inf";
|
|||
|
|
else ConfigName+="DefauleTable.ini";
|
|||
|
|
QFile InFile(ConfigName);
|
|||
|
|
if( !InFile.open(QIODevice::ReadOnly ) )
|
|||
|
|
{
|
|||
|
|
QMessageBox::warning(NULL,"提示","打开缺省表配置文件"+ConfigName+"错误");
|
|||
|
|
return ;
|
|||
|
|
}
|
|||
|
|
QTextStream textstream( &InFile );
|
|||
|
|
QString line;
|
|||
|
|
|
|||
|
|
QString TableName,TableAliasName;
|
|||
|
|
//int ZdNum;
|
|||
|
|
QStringList ZdName,HzName,ZdUnit,ZdLen,ZdType,ZdRes,DataList;
|
|||
|
|
|
|||
|
|
while(!textstream.atEnd())
|
|||
|
|
{
|
|||
|
|
line=textstream.readLine();line=line.toUpper();
|
|||
|
|
while(line.indexOf("#")>=0)
|
|||
|
|
{
|
|||
|
|
line=line.replace("#","");
|
|||
|
|
DataList=GetStringList(line,1,1,1,1,1);
|
|||
|
|
if(DataList.count()<2)continue;
|
|||
|
|
TableName=DataList.at(0);
|
|||
|
|
TableAliasName=DataList.at(1);
|
|||
|
|
for(int m=0;m<m_TranNum;m++)
|
|||
|
|
{
|
|||
|
|
QString TTName;
|
|||
|
|
if(IsWis)TTName=m_TTI[m].InName;
|
|||
|
|
else TTName=m_TTI[m].OutName;
|
|||
|
|
if(TableName==TTName)
|
|||
|
|
{
|
|||
|
|
while(!textstream.atEnd())
|
|||
|
|
{
|
|||
|
|
line=textstream.readLine();
|
|||
|
|
if(line.indexOf(",")>=0)continue;//枚举行
|
|||
|
|
line=line.toUpper();
|
|||
|
|
if(line.indexOf("#")>=0)
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
DataList=GetStringList(line,1,1,1,1,1);
|
|||
|
|
if(DataList.count()<5)continue;
|
|||
|
|
|
|||
|
|
ZdName.append(DataList.at(0));HzName.append(DataList.at(1));ZdUnit.append(DataList.at(2));
|
|||
|
|
|
|||
|
|
bool IsZdType=0;
|
|||
|
|
for(int j=0;j<11;j++)
|
|||
|
|
{
|
|||
|
|
if(DataList.at(3)==QString(Rep_STR[j]))
|
|||
|
|
{
|
|||
|
|
ZdType.append(QString::number(j+1));
|
|||
|
|
IsZdType=1;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(!IsZdType)QMessageBox::warning(NULL,"提示","defauletable.ini文件中表"+TableName+"的字段名"+DataList.at(0)+"类型不正确");
|
|||
|
|
ZdLen.append(DataList.at(4));
|
|||
|
|
if(DataList.count()>5)ZdRes.append(DataList.at(5));
|
|||
|
|
else ZdRes.append("0");
|
|||
|
|
}
|
|||
|
|
DEFAULTTABLE DefTable=SetTableInf(TableName,TableAliasName,ZdName.count(),ZdName,HzName,ZdUnit,ZdType,ZdLen,ZdRes,NULL);
|
|||
|
|
if(IsWis)
|
|||
|
|
{
|
|||
|
|
//WisDefTable[m].tinfo=new Slf_OBJECT_FIELD[DefTable.ZdNum+1];
|
|||
|
|
memcpy(&WisDefTable[m],&DefTable,sizeof(DefTable));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
//SlfDefTable[m].tinfo=new Slf_OBJECT_FIELD[DefTable.ZdNum+1];
|
|||
|
|
memcpy(&SlfDefTable[m],&DefTable,sizeof(DefTable));
|
|||
|
|
}
|
|||
|
|
ZdName.clear(),ZdLen.clear(),ZdType.clear(),HzName.clear();ZdUnit.clear();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
InFile.close();
|
|||
|
|
return ;
|
|||
|
|
}
|