2025-03-12 11:08:50 +08:00
# include " systemconfigwizard.h "
# include <QVBoxLayout>
# include <QTableWidget>
# include <QLabel>
# include <QTextEdit>
# include <QHeaderView>
# include <QPushButton>
2025-03-13 10:45:13 +08:00
# include "pub_widget/MessageBox.h"
2025-03-12 11:08:50 +08:00
# include <QComboBox>
# include <QListView>
# include <QProcess>
# include <QNetworkInterface>
# include <QDir>
# include "kbdtabledatamgr.h"
# include "kbddbdesign.h"
# include "common_global.h"
# include "kbdregexpvalidator.h"
# include <QHostInfo>
# include <QLineEdit>
SystemConfigWizard : : SystemConfigWizard ( QWidget * parent ) : QWizard ( parent )
{
2025-08-26 23:55:59 +08:00
setWindowTitle ( tr ( " 系统拓扑配置向导 " ) ) ;
2025-03-12 11:08:50 +08:00
setWizardStyle ( QWizard : : ClassicStyle ) ;
addPage ( createLocationPage ( ) ) ;
addPage ( createNodePage ( ) ) ;
addPage ( createDbNodePage ( ) ) ;
resize ( 940 , 580 ) ;
}
bool SystemConfigWizard : : validateCurrentPage ( )
{
if ( currentId ( ) = = 0 )
{
if ( checkLocationInfo ( ) )
setNodetableDelegate ( ) ;
else
return false ;
}
else if ( currentId ( ) = = 1 )
{
if ( checkNodeInfo ( ) )
{
setDbNodetableDelegate ( ) ;
UpdateNoUseNode ( ) ;
}
else
return false ;
}
return true ;
}
QWizardPage * SystemConfigWizard : : createLocationPage ( )
{
QWizardPage * page = new QWizardPage ( this ) ;
QVBoxLayout * vlayout = new QVBoxLayout ;
QHBoxLayout * hLayout = new QHBoxLayout ;
QLabel * lableTitle = new QLabel ( tr ( " 位置配置 " ) ) ;
QPushButton * btnAdd = new QPushButton ( tr ( " 增加 " ) , this ) ;
QPushButton * btnDelete = new QPushButton ( tr ( " 删除 " ) , this ) ;
hLayout - > addWidget ( lableTitle ) ;
hLayout - > addStretch ( ) ;
hLayout - > addWidget ( btnAdd ) ;
hLayout - > addWidget ( btnDelete ) ;
vlayout - > addLayout ( hLayout ) ;
m_tableLocation = new QTableWidget ( this ) ;
QLabel * lable = new QLabel ( tr ( " 提示: " ) , this ) ;
m_textLocationNote = new QTextEdit ( this ) ;
m_textLocationNote - > setMaximumWidth ( 200 ) ;
vlayout - > addWidget ( m_tableLocation ) ;
hLayout = new QHBoxLayout ;
hLayout - > addLayout ( vlayout ) ;
vlayout = new QVBoxLayout ;
vlayout - > addWidget ( lable ) ;
vlayout - > addWidget ( m_textLocationNote ) ;
hLayout - > addLayout ( vlayout ) ;
hLayout - > setMargin ( 0 ) ;
page - > setLayout ( hLayout ) ;
initLocationPageData ( ) ;
connect ( btnAdd , & QPushButton : : clicked , this , & SystemConfigWizard : : onAddLocationPageData ) ;
connect ( btnDelete , & QPushButton : : clicked , this , & SystemConfigWizard : : onDeleteLocationPageData ) ;
return page ;
}
QWizardPage * SystemConfigWizard : : createNodePage ( )
{
QWizardPage * page = new QWizardPage ( this ) ;
QVBoxLayout * vlayout = new QVBoxLayout ;
QHBoxLayout * hlayout = new QHBoxLayout ;
QLabel * lableTitle = new QLabel ( tr ( " 节点配置 " ) ) ;
QPushButton * btnAdd = new QPushButton ( tr ( " 增加 " ) , this ) ;
QPushButton * btnDelete = new QPushButton ( tr ( " 删除 " ) , this ) ;
hlayout - > addWidget ( lableTitle ) ;
hlayout - > addStretch ( ) ;
hlayout - > addWidget ( btnAdd ) ;
hlayout - > addWidget ( btnDelete ) ;
vlayout - > addLayout ( hlayout ) ;
m_tableNode = new QTableWidget ( this ) ;
vlayout - > addWidget ( m_tableNode ) ;
hlayout = new QHBoxLayout ;
QLabel * lableNet = new QLabel ( tr ( " 节点网卡 " ) , this ) ;
QPushButton * btnNetAdd = new QPushButton ( tr ( " 增加 " ) , this ) ;
QPushButton * btnNetDelete = new QPushButton ( tr ( " 删除 " ) , this ) ;
hlayout - > addWidget ( lableNet ) ;
hlayout - > addStretch ( ) ;
hlayout - > addWidget ( btnNetAdd ) ;
hlayout - > addWidget ( btnNetDelete ) ;
vlayout - > addLayout ( hlayout ) ;
m_tableNetworkCard = new QTableWidget ( this ) ;
vlayout - > addWidget ( m_tableNetworkCard ) ;
QLabel * lable = new QLabel ( tr ( " 提示: " ) , this ) ;
m_textNodeNote = new QTextEdit ( this ) ;
m_textNodeNote - > setMaximumWidth ( 200 ) ;
hlayout = new QHBoxLayout ;
hlayout - > addLayout ( vlayout ) ;
vlayout = new QVBoxLayout ;
vlayout - > addWidget ( lable ) ;
vlayout - > addWidget ( m_textNodeNote ) ;
hlayout - > addLayout ( vlayout ) ;
hlayout - > setMargin ( 0 ) ;
page - > setLayout ( hlayout ) ;
initNodePageData ( ) ;
setNodetableDelegate ( ) ;
connect ( btnAdd , & QPushButton : : clicked , this , & SystemConfigWizard : : onAddNodePageData ) ;
connect ( btnDelete , & QPushButton : : clicked , this , & SystemConfigWizard : : onDeleteNodePageData ) ;
connect ( btnNetAdd , & QPushButton : : clicked , this , & SystemConfigWizard : : onAddNetworkCardData ) ;
connect ( btnNetDelete , & QPushButton : : clicked , this , & SystemConfigWizard : : onDeleteNetworkCardData ) ;
connect ( m_tableNode , & QTableWidget : : itemSelectionChanged , this , & SystemConfigWizard : : onNodeTableClieck ) ;
connect ( m_tableNode , & QTableWidget : : itemChanged , this , & SystemConfigWizard : : onNicNumChange ) ;
connect ( m_tableNetworkCard , & QTableWidget : : itemChanged , this , & SystemConfigWizard : : onSaveNetworkCardData ) ;
return page ;
}
QWizardPage * SystemConfigWizard : : createDbNodePage ( )
{
QWizardPage * page = new QWizardPage ( this ) ;
QVBoxLayout * vlayout = new QVBoxLayout ;
QHBoxLayout * hlayout = new QHBoxLayout ;
QLabel * lableTitle = new QLabel ( tr ( " 数据库节点配置 " ) ) ;
QPushButton * btnAdd = new QPushButton ( tr ( " 增加 " ) , this ) ;
QPushButton * btnDelete = new QPushButton ( tr ( " 删除 " ) , this ) ;
hlayout - > addWidget ( lableTitle ) ;
hlayout - > addStretch ( ) ;
hlayout - > addWidget ( btnAdd ) ;
hlayout - > addWidget ( btnDelete ) ;
vlayout - > addLayout ( hlayout ) ;
m_tableDbNode = new QTableWidget ( this ) ;
vlayout - > addWidget ( m_tableDbNode ) ;
hlayout = new QHBoxLayout ;
lableTitle = new QLabel ( tr ( " 虚拟节点配置 " ) ) ;
QPushButton * btnAddVirtual = new QPushButton ( tr ( " 增加 " ) , this ) ;
QPushButton * btnDeleteVirtual = new QPushButton ( tr ( " 删除 " ) , this ) ;
hlayout - > addWidget ( lableTitle ) ;
hlayout - > addStretch ( ) ;
hlayout - > addWidget ( btnAddVirtual ) ;
hlayout - > addWidget ( btnDeleteVirtual ) ;
vlayout - > addLayout ( hlayout ) ;
m_tableVirtualNode = new QTableWidget ( this ) ;
vlayout - > addWidget ( m_tableVirtualNode ) ;
QLabel * lable = new QLabel ( tr ( " 提示: " ) , this ) ;
m_textDbNodeNote = new QTextEdit ( this ) ;
m_textDbNodeNote - > setMaximumWidth ( 200 ) ;
hlayout = new QHBoxLayout ;
hlayout - > addLayout ( vlayout ) ;
vlayout = new QVBoxLayout ;
vlayout - > addWidget ( lable ) ;
vlayout - > addWidget ( m_textDbNodeNote ) ;
hlayout - > addLayout ( vlayout ) ;
hlayout - > setMargin ( 0 ) ;
page - > setLayout ( hlayout ) ;
initDbNodePageData ( ) ;
setDbNodetableDelegate ( ) ;
connect ( btnAdd , & QPushButton : : clicked , this , & SystemConfigWizard : : onAddDbNodeData ) ;
connect ( btnDelete , & QPushButton : : clicked , this , & SystemConfigWizard : : onDeleteDbNodeData ) ;
connect ( btnAddVirtual , & QPushButton : : clicked , this , & SystemConfigWizard : : onAddVirtualNodeData ) ;
connect ( btnDeleteVirtual , & QPushButton : : clicked , this , & SystemConfigWizard : : onDeleteVirtualNodeData ) ;
return page ;
}
void SystemConfigWizard : : initLocationPageData ( )
{
m_textLocationNote - > setPlainText ( tr ( " 1, 根据实际工程情况添加位置信息。 \n 2, 若工程已经搭建完成,删除原有的位置可导致原位置下的工程数据被删除。 " ) ) ;
m_textLocationNote - > setReadOnly ( true ) ;
QStringList listLabels ;
listLabels < < tr ( " ID " ) < < tr ( " 标签名 " ) < < tr ( " 描述 " ) ;
m_tableLocation - > setColumnCount ( listLabels . size ( ) ) ;
m_tableLocation - > horizontalHeader ( ) - > setStretchLastSection ( true ) ;
m_tableLocation - > setHorizontalHeaderLabels ( listLabels ) ;
m_tableLocation - > setSelectionBehavior ( QAbstractItemView : : SelectRows ) ;
m_tableLocation - > setSelectionMode ( QAbstractItemView : : SingleSelection ) ;
m_tableLocation - > setItemDelegateForColumn ( 1 , new ClineEditDelegate ( 8 , " ^([A-Za-z]|[0-9]|[#_ \\ -])+$ " , this ) ) ;
KbdTableModel * m_modelLocation = KbdTableDataMgr : : getInstance ( ) - > createModel ( TBL_LOCATION ) ;
if ( m_modelLocation = = NULL )
return ;
m_modelLocation - > load ( true ) ;
const ColMgrDataList & modelCols = m_modelLocation - > getHeadCols ( ) ;
m_tableLocation - > setRowCount ( m_modelLocation - > rowCount ( ) ) ;
for ( int i = 0 ; i < m_modelLocation - > rowCount ( ) ; i + + )
{
QStringList data = m_modelLocation - > getRowData ( i ) ;
QTableWidgetItem * item = new QTableWidgetItem ( data . at ( modelCols . findCol ( CN_LOCATION_ID ) ) ) ;
item - > setFlags ( Qt : : ItemIsEnabled | Qt : : ItemIsSelectable ) ;
m_tableLocation - > setItem ( i , 0 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( CN_TAG_NAME ) ) ) ;
m_tableLocation - > setItem ( i , 1 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( CN_DESC ) ) ) ;
m_tableLocation - > setItem ( i , 2 , item ) ;
}
}
void SystemConfigWizard : : initNodePageData ( )
{
m_textNodeNote - > setPlainText ( tr ( " 1, 根据实际工程情况添加节点信息。 \n "
" 2, 选中节点添加对应节点网卡信息。 \n "
" 3, 数据库服务器的网卡名称必须是电脑实际的网卡名称。 \n "
" 4, 网卡名称示例, windows: Realtek PCIe GBE Family Controller ,linux:eth1。 " ) ) ;
m_textNodeNote - > setReadOnly ( true ) ;
QStringList listLabels ;
listLabels < < tr ( " 节点名 " ) < < tr ( " 主机描述 " ) < < tr ( " 节点类型 " ) < < tr ( " 部署类型 " )
< < tr ( " 所属位置 " ) < < tr ( " 是否使用 " ) < < tr ( " 网卡个数 " ) ;
m_tableNode - > setColumnCount ( listLabels . size ( ) ) ;
m_tableNode - > horizontalHeader ( ) - > setStretchLastSection ( true ) ;
m_tableNode - > setHorizontalHeaderLabels ( listLabels ) ;
m_tableNode - > setSelectionBehavior ( QAbstractItemView : : SelectRows ) ;
m_tableNode - > setSelectionMode ( QAbstractItemView : : SingleSelection ) ;
// 注释主机描述的正则表达式限制
//m_tableNode->setItemDelegateForColumn(1,new ClineEditDelegate(64,"^([A-Za-z]|[0-9]|[#_\\-])+$",this));
m_tableNode - > setItemDelegateForColumn ( 6 , new ClineEditDelegate ( 2 , " ^([1-2]) " , this ) ) ;
listLabels . clear ( ) ;
listLabels < < tr ( " 网卡名称 " ) < < tr ( " IP地址 " ) < < tr ( " 子网掩码 " ) < < tr ( " 网关 " ) ;
m_tableNetworkCard - > setColumnCount ( listLabels . size ( ) ) ;
m_tableNetworkCard - > horizontalHeader ( ) - > setStretchLastSection ( true ) ;
m_tableNetworkCard - > setHorizontalHeaderLabels ( listLabels ) ;
m_tableNetworkCard - > setSelectionBehavior ( QAbstractItemView : : SelectRows ) ;
m_tableNetworkCard - > setSelectionMode ( QAbstractItemView : : SingleSelection ) ;
QString sreReg = " ^$|^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]) \\ .(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0) \\ .(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0) \\ .(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$ " ;
m_tableNetworkCard - > setItemDelegateForColumn ( 1 , new ClineEditDelegate ( 16 , sreReg , this ) ) ;
m_tableNetworkCard - > setItemDelegateForColumn ( 2 , new ClineEditDelegate ( 16 , sreReg , this ) ) ;
m_tableNetworkCard - > setItemDelegateForColumn ( 3 , new ClineEditDelegate ( 16 , sreReg , this ) ) ;
KbdTableModel * m_modelNode = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_node_info.xml " ) ;
if ( m_modelNode = = NULL )
return ;
m_modelNode - > load ( true ) ;
const ColMgrDataList & modelCols = m_modelNode - > getHeadCols ( ) ;
QList < QStringList > listDatas ;
for ( int i = 0 ; i < m_modelNode - > rowCount ( ) ; i + + )
{
QStringList data = m_modelNode - > getRowData ( i ) ;
if ( data . at ( modelCols . findCol ( " NODE_TYPE " ) ) = = tr ( " 4:虚拟节点 " ) )
{
m_virtualNodeTag = data . at ( modelCols . findCol ( " NODE_NAME " ) ) ;
continue ;
}
listDatas < < data ;
}
m_tableNode - > setRowCount ( listDatas . size ( ) ) ;
for ( int i = 0 ; i < listDatas . size ( ) ; i + + )
{
QStringList data = listDatas . at ( i ) ;
QTableWidgetItem * item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " NODE_NAME " ) ) ) ;
m_tableNode - > setItem ( i , 0 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( CN_DESC ) ) ) ;
m_tableNode - > setItem ( i , 1 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " NODE_TYPE " ) ) ) ;
m_tableNode - > setItem ( i , 2 , item ) ;
item = new QTableWidgetItem ( getDeploytype ( data . at ( modelCols . findCol ( " NODE_NAME " ) ) ) ) ;
m_tableNode - > setItem ( i , 3 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " LOCATION_ID " ) ) ) ;
m_tableNode - > setItem ( i , 4 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " IS_USED " ) ) ) ;
m_tableNode - > setItem ( i , 5 , item ) ;
QString nic_num = data . at ( modelCols . findCol ( " NIC_NUM " ) ) ;
item = new QTableWidgetItem ( nic_num ) ;
m_tableNode - > setItem ( i , 6 , item ) ;
QStringList nicInfo ;
QList < QStringList > listNicInfo ;
nicInfo < < data . at ( modelCols . findCol ( " NIC1_NAME " ) ) ;
nicInfo < < data . at ( modelCols . findCol ( " NIC1_ADDRESS " ) ) ;
nicInfo < < data . at ( modelCols . findCol ( " NIC1_NETMASK " ) ) ;
nicInfo < < data . at ( modelCols . findCol ( " NIC1_GATEWAY " ) ) ;
listNicInfo < < nicInfo ;
if ( nic_num = = " 2 " )
{
nicInfo . clear ( ) ;
nicInfo < < data . at ( modelCols . findCol ( " NIC2_NAME " ) ) ;
nicInfo < < data . at ( modelCols . findCol ( " NIC2_ADDRESS " ) ) ;
nicInfo < < data . at ( modelCols . findCol ( " NIC2_NETMASK " ) ) ;
nicInfo < < data . at ( modelCols . findCol ( " NIC2_GATEWAY " ) ) ;
listNicInfo < < nicInfo ;
}
m_mapNetworkCard . insert ( m_tableNode - > item ( i , 0 ) , listNicInfo ) ;
}
}
void SystemConfigWizard : : initDbNodePageData ( )
{
m_textDbNodeNote - > setPlainText ( tr ( " 1, 根据实际情况配置相应数据库节点的连接信息。 \n "
" 2, 一个数据库服务器节点时, 不配置虚拟节点信息 \n "
" 3, 存在两个及以上数据库服务器节点时, 必须配置虚拟节点信息, 用于数据库同步。 " ) ) ;
m_textDbNodeNote - > setReadOnly ( true ) ;
QStringList listLabels ;
listLabels < < tr ( " 数据库标识 " ) < < tr ( " 节点名称 " ) < < tr ( " 数据库类型 " ) < < tr ( " 数据库名 " )
< < tr ( " 数据库用户名 " ) < < tr ( " 数据库密码 " ) < < tr ( " 数据库端口 " ) ;
m_tableDbNode - > setColumnCount ( listLabels . size ( ) ) ;
m_tableDbNode - > horizontalHeader ( ) - > setStretchLastSection ( true ) ;
m_tableDbNode - > setHorizontalHeaderLabels ( listLabels ) ;
m_tableDbNode - > setSelectionBehavior ( QAbstractItemView : : SelectRows ) ;
m_tableDbNode - > setSelectionMode ( QAbstractItemView : : SingleSelection ) ;
KbdTableModel * m_modelDbNode = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_dbconfig_node.xml " ) ;
if ( m_modelDbNode = = NULL )
return ;
m_modelDbNode - > load ( true ) ;
const ColMgrDataList & modelCols = m_modelDbNode - > getHeadCols ( ) ;
QList < QStringList > listDatas ;
for ( int i = 0 ; i < m_modelDbNode - > rowCount ( ) ; i + + )
{
QStringList data = m_modelDbNode - > getRowData ( i ) ;
if ( data . at ( modelCols . findCol ( " NODE_NAME " ) ) . split ( " : " ) . first ( ) = = m_virtualNodeTag )
continue ;
listDatas < < data ;
}
m_tableDbNode - > setRowCount ( listDatas . size ( ) ) ;
for ( int i = 0 ; i < listDatas . size ( ) ; i + + )
{
QStringList data = listDatas . at ( i ) ;
QTableWidgetItem * item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " DB_NAME " ) ) ) ;
m_tableDbNode - > setItem ( i , 0 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " NODE_NAME " ) ) ) ;
m_tableDbNode - > setItem ( i , 1 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " DB_TYPE " ) ) ) ;
m_tableDbNode - > setItem ( i , 2 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " DB_SERVICE_NAME " ) ) ) ;
m_tableDbNode - > setItem ( i , 3 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " USER_NAME " ) ) ) ;
m_tableDbNode - > setItem ( i , 4 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " USER_PASSWORD " ) ) ) ;
m_tableDbNode - > setItem ( i , 5 , item ) ;
item = new QTableWidgetItem ( data . at ( modelCols . findCol ( " DB_PORT " ) ) ) ;
m_tableDbNode - > setItem ( i , 6 , item ) ;
}
listLabels . clear ( ) ;
listLabels < < tr ( " 虚拟节点IP " ) < < tr ( " 子网掩码 " ) < < tr ( " 网关 " ) ;
m_tableVirtualNode - > setColumnCount ( listLabels . size ( ) ) ;
m_tableVirtualNode - > horizontalHeader ( ) - > setStretchLastSection ( true ) ;
m_tableVirtualNode - > setHorizontalHeaderLabels ( listLabels ) ;
m_tableVirtualNode - > setSelectionBehavior ( QAbstractItemView : : SelectRows ) ;
m_tableVirtualNode - > setSelectionMode ( QAbstractItemView : : SingleSelection ) ;
QString sreReg = " ^$|^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]) \\ .(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0) \\ .(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0) \\ .(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$ " ;
m_tableVirtualNode - > setItemDelegateForColumn ( 0 , new ClineEditDelegate ( 16 , sreReg , this ) ) ;
m_tableVirtualNode - > setItemDelegateForColumn ( 1 , new ClineEditDelegate ( 16 , sreReg , this ) ) ;
m_tableVirtualNode - > setItemDelegateForColumn ( 2 , new ClineEditDelegate ( 16 , sreReg , this ) ) ;
KbdTableModel * model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_node_info.xml " ) ;
if ( model = = NULL )
return ;
const ColMgrDataList & modelNewcols = model - > getHeadCols ( ) ;
for ( int i = 0 ; i < model - > rowCount ( ) ; i + + )
{
QStringList data = model - > getRowData ( i ) ;
if ( data . at ( modelNewcols . findCol ( " NODE_TYPE " ) ) = = " 4:虚拟节点 " )
{
QString nic_num = data . at ( modelNewcols . findCol ( " NIC_NUM " ) ) ;
m_tableVirtualNode - > setRowCount ( 1 ) ;
QTableWidgetItem * item = new QTableWidgetItem ( data . at ( modelNewcols . findCol ( " NIC1_ADDRESS " ) ) ) ;
m_tableVirtualNode - > setItem ( 0 , 0 , item ) ;
item = new QTableWidgetItem ( data . at ( modelNewcols . findCol ( " NIC1_NETMASK " ) ) ) ;
m_tableVirtualNode - > setItem ( 0 , 1 , item ) ;
item = new QTableWidgetItem ( data . at ( modelNewcols . findCol ( " NIC1_GATEWAY " ) ) ) ;
m_tableVirtualNode - > setItem ( 0 , 2 , item ) ;
if ( nic_num = = " 2 " )
{
m_tableVirtualNode - > setRowCount ( 2 ) ;
QTableWidgetItem * item = new QTableWidgetItem ( data . at ( modelNewcols . findCol ( " NIC2_ADDRESS " ) ) ) ;
m_tableVirtualNode - > setItem ( 1 , 0 , item ) ;
item = new QTableWidgetItem ( data . at ( modelNewcols . findCol ( " NIC2_NETMASK " ) ) ) ;
m_tableVirtualNode - > setItem ( 1 , 1 , item ) ;
item = new QTableWidgetItem ( data . at ( modelNewcols . findCol ( " NIC2_GATEWAY " ) ) ) ;
m_tableVirtualNode - > setItem ( 1 , 2 , item ) ;
}
}
}
}
void SystemConfigWizard : : setNodetableDelegate ( )
{
QList < QStringList > listData ;
listData < < ( QStringList ( ) < < tr ( " 1:工作站 " ) < < " 1 " ) ;
listData < < ( QStringList ( ) < < tr ( " 2:应用服务器 " ) < < " 2 " ) ;
listData < < ( QStringList ( ) < < tr ( " 3:数据库服务器 " ) < < " 3 " ) ;
m_tableNode - > setItemDelegateForColumn ( 2 , new CboxDelegate ( listData , this ) ) ;
listData . clear ( ) ;
listData < < ( QStringList ( ) < < tr ( " 0:主服务器 " ) < < " 0 " ) ;
listData < < ( QStringList ( ) < < tr ( " 1:备服务器 " ) < < " 1 " ) ;
m_tableNode - > setItemDelegateForColumn ( 3 , new CboxDelegate ( listData , this ) ) ;
listData . clear ( ) ;
for ( int i = 0 ; i < m_tableLocation - > rowCount ( ) ; i + + )
{
QString locationID = m_tableLocation - > item ( i , 0 ) - > text ( ) ;
QString des = m_tableLocation - > item ( i , 2 ) - > text ( ) ;
listData < < ( QStringList ( ) < < locationID + " : " + des < < locationID ) ;
}
m_tableNode - > setItemDelegateForColumn ( 4 , new CboxDelegate ( listData , this ) ) ;
listData . clear ( ) ;
listData < < ( QStringList ( ) < < tr ( " 1:使用 " ) < < " 1 " ) ;
listData < < ( QStringList ( ) < < tr ( " 0:不使用 " ) < < " 0 " ) ;
m_tableNode - > setItemDelegateForColumn ( 5 , new CboxDelegate ( listData , this ) ) ;
}
void SystemConfigWizard : : setDbNodetableDelegate ( )
{
m_listNodeNoUse . clear ( ) ;
QList < QStringList > listData ;
listData < < ( QStringList ( ) < < tr ( " 0:主数据库 " ) < < " 0 " ) ;
listData < < ( QStringList ( ) < < tr ( " 1:备数据库 " ) < < " 1 " ) ;
m_tableDbNode - > setItemDelegateForColumn ( 0 , new CboxDelegate ( listData , this ) ) ;
listData . clear ( ) ;
for ( int i = 0 ; i < m_tableNode - > rowCount ( ) ; i + + )
{
QString bUse = m_tableNode - > item ( i , 5 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString nodeTag = m_tableNode - > item ( i , 0 ) - > text ( ) ;
QString des = m_tableNode - > item ( i , 1 ) - > text ( ) ;
if ( bUse = = " 0 " )
{
m_listNodeNoUse < < nodeTag + " : " + des ;
continue ;
}
listData < < ( QStringList ( ) < < nodeTag + " : " + des < < nodeTag ) ;
}
m_tableDbNode - > setItemDelegateForColumn ( 1 , new CboxDelegate ( listData , this ) ) ;
listData . clear ( ) ;
listData < < ( QStringList ( ) < < tr ( " 0:无效 " ) < < " 0 " ) ;
listData < < ( QStringList ( ) < < tr ( " 1:Oracle " ) < < " 1 " ) ;
listData < < ( QStringList ( ) < < tr ( " 2:MySQL " ) < < " 2 " ) ;
listData < < ( QStringList ( ) < < tr ( " 3:openGauss " ) < < " 3 " ) ;
listData < < ( QStringList ( ) < < tr ( " 4:Kingbase " ) < < " 4 " ) ;
m_tableDbNode - > setItemDelegateForColumn ( 2 , new CboxDelegate ( listData , this ) ) ;
}
void SystemConfigWizard : : useLocalNic ( )
{
QList < QNetworkInterface > listInterface = QNetworkInterface : : allInterfaces ( ) ;
for ( int i = 0 ; i < listInterface . size ( ) ; i + + )
{
if ( ! listInterface . at ( i ) . isValid ( ) )
continue ;
if ( ! listInterface . at ( i ) . flags ( ) . testFlag ( QNetworkInterface : : IsRunning ) | | listInterface . at ( i ) . flags ( ) . testFlag ( QNetworkInterface : : IsLoopBack ) )
continue ;
if ( listInterface . at ( i ) . humanReadableName ( ) . contains ( " VMware " ) )
continue ;
}
}
void SystemConfigWizard : : UpdateNoUseNode ( )
{
for ( int i = 0 ; i < m_tableDbNode - > rowCount ( ) ; i + + )
{
QString node = m_tableDbNode - > item ( i , 1 ) - > text ( ) ;
if ( m_listNodeNoUse . contains ( node ) )
m_tableDbNode - > removeRow ( i ) ;
}
}
QString SystemConfigWizard : : getDeploytype ( QString nodeName )
{
QString deploytype ;
KbdDbDesign ds ;
QString sql = " select NODE1 from sys_model_deploy_info where APP_ID = '2'; " ;
QStringList result ;
ds . getOneColumnResult ( sql , result ) ;
if ( result . isEmpty ( ) )
return QString ( tr ( " 0:主服务器 " ) ) ;
if ( result . at ( 0 ) = = nodeName )
deploytype = tr ( " 0:主服务器 " ) ;
else
deploytype = tr ( " 1:备服务器 " ) ;
return deploytype ;
}
void SystemConfigWizard : : onAddLocationPageData ( )
{
int nCount = m_tableLocation - > rowCount ( ) ;
m_tableLocation - > setRowCount ( nCount + 1 ) ;
QTableWidgetItem * item = new QTableWidgetItem ( QString : : number ( nCount + 1 ) ) ;
item - > setFlags ( Qt : : ItemIsEnabled | Qt : : ItemIsSelectable ) ;
m_tableLocation - > setItem ( nCount , 0 , item ) ;
item = new QTableWidgetItem ;
m_tableLocation - > setItem ( nCount , 1 , item ) ;
item = new QTableWidgetItem ;
m_tableLocation - > setItem ( nCount , 2 , item ) ;
}
void SystemConfigWizard : : onDeleteLocationPageData ( )
{
m_tableLocation - > removeRow ( m_tableLocation - > currentRow ( ) ) ;
for ( int i = 0 ; i < m_tableLocation - > rowCount ( ) ; i + + )
m_tableLocation - > item ( i , 0 ) - > setText ( QString : : number ( i + 1 ) ) ;
}
void SystemConfigWizard : : onAddNodePageData ( )
{
int nCount = m_tableNode - > rowCount ( ) ;
m_tableNode - > setRowCount ( nCount + 1 ) ;
QTableWidgetItem * item = new QTableWidgetItem ( QHostInfo : : localHostName ( ) ) ;
m_tableNode - > setItem ( nCount , 0 , item ) ;
item = new QTableWidgetItem ;
m_tableNode - > setItem ( nCount , 1 , item ) ;
item = new QTableWidgetItem ( tr ( " 2:应用服务器 " ) ) ;
m_tableNode - > setItem ( nCount , 2 , item ) ;
item = new QTableWidgetItem ;
if ( nCount = = 0 )
item - > setText ( tr ( " 0:主服务器 " ) ) ;
else
item - > setText ( tr ( " 1:备服务器 " ) ) ;
m_tableNode - > setItem ( nCount , 3 , item ) ;
item = new QTableWidgetItem ;
m_tableNode - > setItem ( nCount , 4 , item ) ;
item = new QTableWidgetItem ( tr ( " 1:使用 " ) ) ;
m_tableNode - > setItem ( nCount , 5 , item ) ;
item = new QTableWidgetItem ( " 1 " ) ;
m_tableNode - > setItem ( nCount , 6 , item ) ;
QList < QStringList > listNic ;
m_mapNetworkCard . insert ( m_tableNode - > item ( nCount , 0 ) , listNic ) ;
}
void SystemConfigWizard : : onDeleteNodePageData ( )
{
int nRow = m_tableNode - > currentRow ( ) ;
m_mapNetworkCard . erase ( m_mapNetworkCard . find ( m_tableNode - > item ( nRow , 0 ) ) ) ;
m_tableNode - > removeRow ( nRow ) ;
}
void SystemConfigWizard : : onAddNetworkCardData ( )
{
int nCount = m_tableNetworkCard - > rowCount ( ) ;
if ( nCount > 1 )
{
onMsg ( tr ( " 最多支持两个网卡地址! " ) ) ;
return ;
}
int nNodeRow = m_tableNode - > currentRow ( ) ;
if ( nNodeRow < 0 )
return ;
int nNicNum = m_tableNode - > item ( nNodeRow , 6 ) - > text ( ) . toInt ( ) ;
if ( nNicNum > 2 | | nNicNum < 1 )
{
onMsg ( tr ( " 网卡个数配置错误 " ) ) ;
return ;
}
if ( nNicNum = = nCount )
{
onMsg ( tr ( " 当前已达到网卡个数上限 " ) ) ;
return ;
}
auto iter = m_mapNetworkCard . find ( m_tableNode - > item ( nNodeRow , 0 ) ) ;
QStringList nic ;
nic < < " NIC " < < " 127.0.0.1 " < < " 255.255.255.0 " < < " 127.0.0.1 " ;
( * iter ) < < nic ;
m_tableNetworkCard - > setRowCount ( nCount + 1 ) ;
QTableWidgetItem * item = new QTableWidgetItem ( " NIC " ) ;
m_tableNetworkCard - > setItem ( nCount , 0 , item ) ;
item = new QTableWidgetItem ( " 127.0.0.1 " ) ;
m_tableNetworkCard - > setItem ( nCount , 1 , item ) ;
item = new QTableWidgetItem ( " 255.255.255.0 " ) ;
m_tableNetworkCard - > setItem ( nCount , 2 , item ) ;
item = new QTableWidgetItem ( " 127.0.0.1 " ) ;
m_tableNetworkCard - > setItem ( nCount , 3 , item ) ;
}
void SystemConfigWizard : : onDeleteNetworkCardData ( )
{
int nRow = m_tableNetworkCard - > currentRow ( ) ;
if ( nRow = = - 1 )
nRow = m_tableNetworkCard - > rowCount ( ) - 1 ;
m_tableNetworkCard - > removeRow ( nRow ) ;
int nNodeRow = m_tableNode - > currentRow ( ) ;
auto iterCard = m_mapNetworkCard . find ( m_tableNode - > item ( nNodeRow , 0 ) ) ;
( * iterCard ) . removeAt ( nRow ) ;
}
void SystemConfigWizard : : onAddDbNodeData ( )
{
int nCount = m_tableDbNode - > rowCount ( ) ;
m_tableDbNode - > setRowCount ( nCount + 1 ) ;
QTableWidgetItem * item = new QTableWidgetItem ( " 2:MySQL " ) ;
m_tableDbNode - > setItem ( nCount , 2 , item ) ;
2025-03-13 10:45:13 +08:00
item = new QTableWidgetItem ( EMS_DEFAULT_DATABASE ) ;
2025-03-12 11:08:50 +08:00
m_tableDbNode - > setItem ( nCount , 3 , item ) ;
item = new QTableWidgetItem ( " root " ) ;
m_tableDbNode - > setItem ( nCount , 4 , item ) ;
2025-03-13 10:45:13 +08:00
item = new QTableWidgetItem ( EMS_DEFAULT_PASSWD ) ;
2025-03-12 11:08:50 +08:00
m_tableDbNode - > setItem ( nCount , 5 , item ) ;
item = new QTableWidgetItem ( " 3306 " ) ;
m_tableDbNode - > setItem ( nCount , 6 , item ) ;
item = new QTableWidgetItem ;
if ( nCount = = 0 )
item - > setText ( tr ( " 0:主数据库 " ) ) ;
else
item - > setText ( tr ( " 1:备数据库 " ) ) ;
m_tableDbNode - > setItem ( nCount , 0 , item ) ;
item = new QTableWidgetItem ;
m_tableDbNode - > setItem ( nCount , 1 , item ) ;
}
void SystemConfigWizard : : onAddVirtualNodeData ( )
{
int nCount = m_tableVirtualNode - > rowCount ( ) ;
if ( nCount > 1 )
{
onMsg ( tr ( " 最多支持两个网卡地址! " ) ) ;
return ;
}
m_tableVirtualNode - > setRowCount ( nCount + 1 ) ;
QTableWidgetItem * item = new QTableWidgetItem ( " 127.0.0.1 " ) ;
m_tableVirtualNode - > setItem ( nCount , 0 , item ) ;
item = new QTableWidgetItem ( " 255.255.255.0 " ) ;
m_tableVirtualNode - > setItem ( nCount , 1 , item ) ;
item = new QTableWidgetItem ( " 127.0.0.1 " ) ;
m_tableVirtualNode - > setItem ( nCount , 2 , item ) ;
}
void SystemConfigWizard : : onDeleteVirtualNodeData ( )
{
m_tableVirtualNode - > removeRow ( m_tableVirtualNode - > currentRow ( ) ) ;
}
void SystemConfigWizard : : onDeleteDbNodeData ( )
{
m_tableDbNode - > removeRow ( m_tableDbNode - > currentRow ( ) ) ;
}
void SystemConfigWizard : : onNodeTableClieck ( )
{
m_tableNetworkCard - > reset ( ) ;
int nRow = m_tableNode - > currentRow ( ) ;
auto iterNic = m_mapNetworkCard . find ( m_tableNode - > item ( nRow , 0 ) ) ;
if ( iterNic = = m_mapNetworkCard . end ( ) )
return ;
m_tableNetworkCard - > setRowCount ( iterNic - > size ( ) ) ;
for ( int i = 0 ; i < iterNic - > size ( ) ; i + + )
{
QTableWidgetItem * item = new QTableWidgetItem ( iterNic - > at ( i ) . at ( 0 ) ) ;
m_tableNetworkCard - > setItem ( i , 0 , item ) ;
item = new QTableWidgetItem ( iterNic - > at ( i ) . at ( 1 ) ) ;
m_tableNetworkCard - > setItem ( i , 1 , item ) ;
item = new QTableWidgetItem ( iterNic - > at ( i ) . at ( 2 ) ) ;
m_tableNetworkCard - > setItem ( i , 2 , item ) ;
item = new QTableWidgetItem ( iterNic - > at ( i ) . at ( 3 ) ) ;
m_tableNetworkCard - > setItem ( i , 3 , item ) ;
}
}
void SystemConfigWizard : : onSaveNetworkCardData ( QTableWidgetItem * item )
{
int nNodeRow = m_tableNode - > currentRow ( ) ;
int nNicRow = item - > row ( ) ;
int nNicCol = item - > column ( ) ;
auto iter = m_mapNetworkCard . find ( m_tableNode - > item ( nNodeRow , 0 ) ) ;
( * iter ) [ nNicRow ] . replace ( nNicCol , item - > text ( ) ) ;
}
void SystemConfigWizard : : onNicNumChange ( QTableWidgetItem * item )
{
int nNicCol = item - > column ( ) ;
if ( nNicCol ! = 6 )
return ;
int nNicNum = item - > text ( ) . toInt ( ) ;
if ( nNicNum > 2 | | nNicNum < 1 )
{
onMsg ( tr ( " 网卡个数配置错误 " ) ) ;
item - > setText ( " 1 " ) ;
return ;
}
if ( nNicNum = = 2 & & m_tableNetworkCard - > rowCount ( ) = = 1 )
onAddNetworkCardData ( ) ;
if ( nNicNum = = 1 & & m_tableNetworkCard - > rowCount ( ) = = 2 )
onDeleteNetworkCardData ( ) ;
}
bool SystemConfigWizard : : checkLocationInfo ( )
{
if ( m_tableLocation - > rowCount ( ) = = 0 )
{
onMsg ( tr ( " 未配置位置信息 " ) ) ;
return false ;
}
for ( int i = 0 ; i < m_tableLocation - > rowCount ( ) ; i + + )
{
if ( m_tableLocation - > item ( i , 1 ) - > text ( ) . isEmpty ( ) )
{
onMsg ( tr ( " 位置标签名不能为空 " ) ) ;
return false ;
}
if ( m_tableLocation - > item ( i , 2 ) - > text ( ) . isEmpty ( ) )
{
onMsg ( tr ( " 位置描述不能为空 " ) ) ;
return false ;
}
}
return true ;
}
bool SystemConfigWizard : : checkNodeInfo ( )
{
if ( m_tableNode - > rowCount ( ) = = 0 )
{
onMsg ( tr ( " 未配置节点信息 " ) ) ;
return false ;
}
for ( int i = 0 ; i < m_tableNode - > rowCount ( ) ; i + + )
{
QString nodeName = m_tableNode - > item ( i , 0 ) - > text ( ) ;
if ( nodeName . isEmpty ( ) )
{
onMsg ( tr ( " 节点名不能为空 " ) ) ;
return false ;
}
if ( m_tableNode - > item ( i , 1 ) - > text ( ) . isEmpty ( ) )
{
onMsg ( tr ( " 主机描述描述不能为空 " ) ) ;
return false ;
}
if ( m_tableNode - > item ( i , 4 ) - > text ( ) . isEmpty ( ) )
{
onMsg ( tr ( " 所属位置不能为空 " ) ) ;
return false ;
}
QString bUse = m_tableNode - > item ( i , 5 ) - > text ( ) . split ( " : " ) . first ( ) ;
auto iter = m_mapNetworkCard . find ( m_tableNode - > item ( i , 0 ) ) ;
if ( iter ! = m_mapNetworkCard . end ( ) )
{
if ( iter - > isEmpty ( ) )
{
onMsg ( tr ( " 存在未配置网卡信息的节点 " ) ) ;
return false ;
}
for ( int j = 0 ; j < iter - > size ( ) ; j + + )
{
if ( bUse = = " 0 " )
continue ;
if ( iter - > at ( j ) . at ( 1 ) . startsWith ( " 127. " ) )
{
if ( nodeName ! = QHostInfo : : localHostName ( ) )
{
onMsg ( QString ( tr ( " 节点%1, 非本机节点, 不能配置本地回环地址 " ) ) . arg ( nodeName ) ) ;
return false ;
}
}
}
}
}
int nNum = 0 ;
for ( int i = 0 ; i < m_tableNode - > rowCount ( ) ; i + + )
{
if ( m_tableNode - > item ( i , 3 ) - > text ( ) . split ( " : " ) . first ( ) = = " 0 " )
nNum + + ;
}
if ( nNum > 1 )
{
onMsg ( tr ( " 最多一个主服务器节点 " ) ) ;
return false ;
}
return true ;
}
bool SystemConfigWizard : : checkDbNodeInfo ( )
{
if ( m_tableDbNode - > rowCount ( ) = = 0 )
{
onMsg ( tr ( " 未配置数据库节点信息 " ) ) ;
return false ;
}
if ( m_tableDbNode - > rowCount ( ) > 1 )
{
if ( m_tableVirtualNode - > rowCount ( ) < 1 )
{
onMsg ( tr ( " 当前存在多个数据库节点,请添加虚拟节点配置信息! " ) ) ;
return false ;
}
}
QSet < QString > setDbType ;
int nNum = 0 ;
for ( int i = 0 ; i < m_tableDbNode - > rowCount ( ) ; i + + )
{
if ( m_tableDbNode - > item ( i , 1 ) - > text ( ) . isEmpty ( ) )
{
onMsg ( tr ( " 节点名称不能为空 " ) ) ;
return false ;
}
if ( m_tableDbNode - > item ( i , 0 ) - > text ( ) = = " 0:主数据库 " )
nNum + + ;
setDbType < < m_tableDbNode - > item ( i , 2 ) - > text ( ) ;
}
if ( nNum > 1 )
{
onMsg ( tr ( " 只能有一个主数据库节点 " ) ) ;
return false ;
}
if ( setDbType . size ( ) > 1 )
{
onMsg ( tr ( " 多个数据库节点只能使用同一种数据库类型 " ) ) ;
return false ;
}
return true ;
}
void SystemConfigWizard : : writeConfigToDb ( )
{
bool success = false ;
QString retStr = KbdTableDataMgr : : getInstance ( ) - > startTransaction ( ) ;
if ( ! retStr . isEmpty ( ) )
{
onMsg ( retStr ) ;
return ;
}
do
{
if ( ! createDomain ( ) )
break ;
if ( ! createStation ( ) )
break ;
if ( ! createNode ( ) )
break ;
if ( ! createDeploy ( ) )
break ;
if ( ! createDbNode ( ) )
break ;
if ( ! createDbDomain ( ) )
break ;
success = true ;
} while ( false ) ;
if ( KbdTableDataMgr : : getInstance ( ) - > commit ( ) ? false : ( ( success = false ) | | true ) )
onMsg ( tr ( " 此次修改失败,已启动回滚! " ) ) ;
if ( success )
{
onMsg ( tr ( " 配置成功 " ) ) ;
2025-03-13 10:45:13 +08:00
int nRtn = N_MessageBox : : information ( this , tr ( " 消息 " ) , tr ( " 是否导出全部配置? " ) , N_MessageBox : : Yes , N_MessageBox : : No ) ;
if ( nRtn = = N_MessageBox : : Yes )
2025-03-12 11:08:50 +08:00
{
if ( configExportAll ( ) )
onMsg ( tr ( " 导出成功 " ) ) ;
else
onMsg ( tr ( " 导出失败 " ) ) ;
}
}
}
bool SystemConfigWizard : : configExportAll ( )
{
if ( Common : : isSysRun ( ) )
{
onMsg ( tr ( " 当前系统正在运行,配置未导出 " ) ) ;
return false ;
}
QDir dir ( Common : : getSysModelPath ( ) ) ;
if ( ! dir . exists ( ) )
{
dir . mkpath ( Common : : getSysModelPath ( ) ) ;
}
bool bSuccess = false ;
QString filePath ;
do
{
KbdTableModel * model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_app_info.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_dbconfig_domain.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_dbconfig_node.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_deploy_info.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_domain_info.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_location_info.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " SYS_MODEL_MSG_RELAY.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_node_info.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_process_info.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
model = KbdTableDataMgr : : getInstance ( ) - > createModel ( " sys_model_sub_system_info.xml " ) ;
filePath = Common : : getSysModelPath ( ) + " / " + model - > getTableName ( ) + " .xml " ;
if ( ! model - > exportFile ( filePath ) )
break ;
bSuccess = true ;
} while ( false ) ;
if ( ! bSuccess )
onMsg ( QString ( tr ( " 文件:%1,导出失败! " ) . arg ( filePath ) ) ) ;
Common : : reloadKeepalived ( ) ;
return bSuccess ;
}
void SystemConfigWizard : : accept ( )
{
if ( ! checkDbNodeInfo ( ) )
return ;
writeConfigToDb ( ) ;
QWizard : : accept ( ) ;
}
bool SystemConfigWizard : : createDomain ( )
{
//删除原位置,节点,应用部署信息,数据库节点,数据库部署信息;
QStringList listSql ;
listSql < < " DELETE FROM sys_model_domain_info; " ;
listSql < < " DELETE FROM sys_model_location_info; " ;
listSql < < " DELETE FROM sys_model_node_info; " ;
listSql < < " DELETE FROM sys_model_deploy_info; " ;
listSql < < " DELETE FROM sys_model_dbconfig_node; " ;
listSql < < " DELETE FROM sys_model_dbconfig_domain; " ;
if ( ! KbdTableDataMgr : : getInstance ( ) - > executeOnly ( listSql ) )
{
onMsg ( tr ( " 清理配置表失败! " ) ) ;
return false ;
}
QString sql = " INSERT INTO sys_model_domain_info VALUES (1,'domain1',1,'监控中心域'); " ;
if ( ! KbdTableDataMgr : : getInstance ( ) - > executeOnly ( sql ) )
{
onMsg ( tr ( " 创建域节点失败! " ) ) ;
return false ;
}
return true ;
}
bool SystemConfigWizard : : createStation ( )
{
//写入位置配置信息
QStringList listLocation ;
for ( int i = 0 ; i < m_tableLocation - > rowCount ( ) ; i + + )
{
QStringList cfgInfo ;
cfgInfo < < m_tableLocation - > item ( i , 0 ) - > text ( ) ;
2025-03-13 10:45:13 +08:00
cfgInfo < < m_tableLocation - > item ( i , 1 ) - > text ( ) . replace ( " ' " , " '' " ) ;
cfgInfo < < m_tableLocation - > item ( i , 2 ) - > text ( ) . replace ( " ' " , " '' " ) ;
2025-03-12 11:08:50 +08:00
cfgInfo < < " 1 " ;
cfgInfo < < m_tableLocation - > item ( i , 0 ) - > text ( ) ;
listLocation < < " (' " + cfgInfo . join ( " ',' " ) + " ') " ;
}
QString sql = " INSERT INTO sys_model_location_info (LOCATION_ID,TAG_NAME,DESCRIPTION,DOMAIN_ID,LOCATION_NO) VALUES %1; " ;
if ( ! KbdTableDataMgr : : getInstance ( ) - > executeOnly ( sql . arg ( listLocation . join ( " , " ) ) ) )
{
onMsg ( tr ( " 创建位置信息失败! " ) ) ;
return false ;
}
return true ;
}
bool SystemConfigWizard : : createNode ( )
{
//写入节点配置信息
QStringList listSql ;
for ( int i = 0 ; i < m_tableNode - > rowCount ( ) ; i + + )
{
QString nodeName = m_tableNode - > item ( i , 0 ) - > text ( ) ;
QString des = m_tableNode - > item ( i , 1 ) - > text ( ) ;
QString nodeType = m_tableNode - > item ( i , 2 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString location = m_tableNode - > item ( i , 4 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString isUsed = m_tableNode - > item ( i , 5 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString nicNum = m_tableNode - > item ( i , 6 ) - > text ( ) ;
auto iter = m_mapNetworkCard . find ( m_tableNode - > item ( i , 0 ) ) ;
QString nicName , nicIP , nicNetMask , nicGateway ;
QString nic2Name , nic2IP , nic2NetMask , nic2Gateway ;
if ( iter = = m_mapNetworkCard . end ( ) )
return false ;
nicName = iter - > at ( 0 ) . at ( 0 ) ;
nicIP = iter - > at ( 0 ) . at ( 1 ) ;
nicNetMask = iter - > at ( 0 ) . at ( 2 ) ;
nicGateway = iter - > at ( 0 ) . at ( 3 ) ;
if ( iter - > size ( ) = = 2 )
{
nic2Name = iter - > at ( 1 ) . at ( 0 ) ;
nic2IP = iter - > at ( 1 ) . at ( 1 ) ;
nic2NetMask = iter - > at ( 1 ) . at ( 2 ) ;
nic2Gateway = iter - > at ( 1 ) . at ( 3 ) ;
}
QString sql = " insert into sys_model_node_info "
" (NODE_NAME,LOCATION_ID,DESCRIPTION,NODE_TYPE,IS_USED,NIC_NUM,NIC1_NAME,NIC1_ADDRESS,NIC1_NETMASK,NIC1_GATEWAY,NIC2_NAME,NIC2_ADDRESS,NIC2_NETMASK,NIC2_GATEWAY) "
" values ('%1','%2','%3','%4','%5','%6','%7','%8','%9','%10','%11','%12','%13','%14'); " ;
listSql < < sql . arg ( nodeName ) . arg ( location ) . arg ( des ) . arg ( nodeType ) . arg ( isUsed ) . arg ( nicNum )
. arg ( nicName ) . arg ( nicIP ) . arg ( nicNetMask ) . arg ( nicGateway )
. arg ( nic2Name ) . arg ( nic2IP ) . arg ( nic2NetMask ) . arg ( nic2Gateway ) ;
}
if ( m_tableDbNode - > rowCount ( ) > 1 )
{
QString nodeName = " virtual-node " ;
QString des = " 虚拟节点 " ;
QString nodeType = " 4 " ;
QString location = " 1 " ;
QString isUsed = " 1 " ;
QString nicNum = QString : : number ( m_tableVirtualNode - > rowCount ( ) ) ;
QString nicName , nicIP , nicNetMask , nicGateway ;
QString nic2Name , nic2IP , nic2NetMask , nic2Gateway ;
nicName = " NIC1 " ;
nicIP = m_tableVirtualNode - > item ( 0 , 0 ) - > text ( ) ;
nicNetMask = m_tableVirtualNode - > item ( 0 , 1 ) - > text ( ) ;
nicGateway = m_tableVirtualNode - > item ( 0 , 2 ) - > text ( ) ;
if ( nicNum = = " 2 " )
{
nic2Name = " NIC2 " ;
nic2IP = m_tableVirtualNode - > item ( 1 , 0 ) - > text ( ) ;
nic2NetMask = m_tableVirtualNode - > item ( 1 , 1 ) - > text ( ) ;
nic2Gateway = m_tableVirtualNode - > item ( 1 , 2 ) - > text ( ) ;
}
QString sql = " insert into sys_model_node_info "
" (NODE_NAME,LOCATION_ID,DESCRIPTION,NODE_TYPE,IS_USED,NIC_NUM,NIC1_NAME,NIC1_ADDRESS,NIC1_NETMASK,NIC1_GATEWAY,NIC2_NAME,NIC2_ADDRESS,NIC2_NETMASK,NIC2_GATEWAY) "
" values ('%1','%2','%3','%4','%5','%6','%7','%8','%9','%10','%11','%12','%13','%14'); " ;
listSql < < sql . arg ( nodeName ) . arg ( location ) . arg ( des ) . arg ( nodeType ) . arg ( isUsed ) . arg ( nicNum )
. arg ( nicName ) . arg ( nicIP ) . arg ( nicNetMask ) . arg ( nicGateway )
. arg ( nic2Name ) . arg ( nic2IP ) . arg ( nic2NetMask ) . arg ( nic2Gateway ) ;
}
if ( ! KbdTableDataMgr : : getInstance ( ) - > executeOnly ( listSql ) )
{
onMsg ( tr ( " 创建节点信息失败! " ) ) ;
return false ;
}
return true ;
}
bool SystemConfigWizard : : createDeploy ( )
{
QStringList listNode ;
for ( int i = 0 ; i < m_tableNode - > rowCount ( ) ; i + + )
{
QString nodeType = m_tableNode - > item ( i , 2 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString deployType = m_tableNode - > item ( i , 3 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString bUse = m_tableNode - > item ( i , 5 ) - > text ( ) . split ( " : " ) . first ( ) ;
if ( bUse = = " 0 " )
continue ;
if ( nodeType = = " 2 " )
{
if ( deployType = = " 0 " )
listNode . insert ( 0 , m_tableNode - > item ( i , 0 ) - > text ( ) ) ;
else
listNode < < m_tableNode - > item ( i , 0 ) - > text ( ) ;
}
}
if ( listNode . empty ( ) )
{
onMsg ( tr ( " 未配置有效应用服务器节点! " ) ) ;
return false ;
}
QStringList listSql ;
QString nodeNum = QString : : number ( listNode . size ( ) ) ;
while ( listNode . size ( ) < 8 )
listNode < < QString ( ) ;
bool success ;
QString sql ;
sql = " insert into sys_model_deploy_info (DOMAIN_ID,APP_ID,DESCRIPTION,NUM,NODE1,NODE2,NODE3,NODE4,NODE5,NODE6,NODE7,NODE8) " \
" values ('1','%1','%2','%3','%4','%5','%6','%7','%8','%9','%10','%11'); " ;
listSql < < sql . arg ( " 2 " ) . arg ( " 公共应用 " ) . arg ( nodeNum ) . arg ( listNode . at ( 0 ) ) . arg ( listNode . at ( 1 ) ) . arg ( listNode . at ( 2 ) )
. arg ( listNode . at ( 3 ) ) . arg ( listNode . at ( 4 ) ) . arg ( listNode . at ( 5 ) ) . arg ( listNode . at ( 6 ) ) . arg ( listNode . at ( 7 ) ) ;
listSql < < sql . arg ( " 3 " ) . arg ( " 通用应用 " ) . arg ( nodeNum ) . arg ( listNode . at ( 0 ) ) . arg ( listNode . at ( 1 ) ) . arg ( listNode . at ( 2 ) )
. arg ( listNode . at ( 3 ) ) . arg ( listNode . at ( 4 ) ) . arg ( listNode . at ( 5 ) ) . arg ( listNode . at ( 6 ) ) . arg ( listNode . at ( 7 ) ) ;
listSql < < sql . arg ( " 4 " ) . arg ( " 电力监控 " ) . arg ( nodeNum ) . arg ( listNode . at ( 0 ) ) . arg ( listNode . at ( 1 ) ) . arg ( listNode . at ( 2 ) )
. arg ( listNode . at ( 3 ) ) . arg ( listNode . at ( 4 ) ) . arg ( listNode . at ( 5 ) ) . arg ( listNode . at ( 6 ) ) . arg ( listNode . at ( 7 ) ) ;
success = KbdTableDataMgr : : getInstance ( ) - > executeOnly ( listSql ) ;
if ( ! success )
{
onMsg ( tr ( " 创建域节点失败! " ) ) ;
return false ;
}
return true ;
}
bool SystemConfigWizard : : createDbNode ( )
{
QStringList listSql ;
QString sql = " insert into sys_model_dbconfig_node (NODE_NAME,DB_TYPE,DB_SERVICE_NAME,USER_NAME,USER_PASSWORD,NIC_CUR_ID,DB_NAME,DB_HOST_PRIOR,IS_DB_SWITCH,IS_DIRECT_ACCESS,DB_PORT) " \
" values ('%1','%2','%3','%4','%5','1','%6','1','1','1','%7'); " ;
for ( int i = 0 ; i < m_tableDbNode - > rowCount ( ) ; i + + )
{
QString dbName = m_tableDbNode - > item ( i , 0 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString nodeName = m_tableDbNode - > item ( i , 1 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString dbType = m_tableDbNode - > item ( i , 2 ) - > text ( ) . split ( " : " ) . first ( ) ;
QString dbServerName = m_tableDbNode - > item ( i , 3 ) - > text ( ) ;
QString userName = m_tableDbNode - > item ( i , 4 ) - > text ( ) ;
QString userPass = m_tableDbNode - > item ( i , 5 ) - > text ( ) ;
QString dbPort = m_tableDbNode - > item ( i , 6 ) - > text ( ) ;
listSql < < sql . arg ( nodeName ) . arg ( dbType ) . arg ( dbServerName ) . arg ( userName ) . arg ( userPass ) . arg ( dbName ) . arg ( dbPort ) ;
if ( dbName = = " 0 " & & m_tableDbNode - > rowCount ( ) > 1 )
{
listSql < < sql . arg ( " virtual-node " ) . arg ( dbType ) . arg ( dbServerName ) . arg ( userName ) . arg ( userPass ) . arg ( " 1 " ) . arg ( dbPort ) ;
}
}
if ( ! KbdTableDataMgr : : getInstance ( ) - > executeOnly ( listSql ) )
{
onMsg ( tr ( " 创建数据库节点失败! " ) ) ;
return false ;
}
return true ;
}
bool SystemConfigWizard : : createDbDomain ( )
{
QStringList listNode ;
for ( int i = 0 ; i < m_tableDbNode - > rowCount ( ) ; i + + )
{
listNode < < m_tableDbNode - > item ( i , 1 ) - > text ( ) . split ( " : " ) . first ( ) ;
}
QString sql ;
if ( listNode . size ( ) = = 1 )
{
sql = QString ( " insert into sys_model_dbconfig_domain (DOMAIN_ID,FIRST_CONNECT,NUM1,LOCAL1) " \
" values ('1','%1','1','%1'); " ) . arg ( listNode . at ( 0 ) ) ;
}
else
{
int nodeNum = listNode . size ( ) ;
while ( listNode . size ( ) < 4 )
listNode < < QString ( ) ;
sql = QString ( " insert into sys_model_dbconfig_domain (DOMAIN_ID,FIRST_CONNECT,NUM1,LOCAL1,LOCAL2,LOCAL3,LOCAL4) " \
" values ('1','%1','%2','%3','%4','%5','%6'); " ) . arg ( " virtual-node " ) . arg ( nodeNum ) . arg ( listNode . at ( 0 ) )
. arg ( listNode . at ( 1 ) ) . arg ( listNode . at ( 2 ) ) . arg ( listNode . at ( 3 ) ) ;
}
if ( ! KbdTableDataMgr : : getInstance ( ) - > executeOnly ( sql ) )
{
onMsg ( tr ( " 创建数据库部署失败! " ) ) ;
return false ;
}
return true ;
}
void SystemConfigWizard : : onMsg ( const QString & text )
{
2025-03-13 10:45:13 +08:00
N_MessageBox : : information ( this , tr ( " 消息 " ) , text ) ;
2025-03-12 11:08:50 +08:00
}
CboxDelegate : : CboxDelegate ( QList < QStringList > listBoxData , QObject * parent ) : QItemDelegate ( parent )
{
m_cbBoxData = listBoxData ;
}
CboxDelegate : : ~ CboxDelegate ( )
{
}
QWidget * CboxDelegate : : createEditor ( QWidget * parent , const QStyleOptionViewItem & , const QModelIndex & ) const
{
QComboBox * cbBox = new QComboBox ( parent ) ;
cbBox - > setView ( new QListView ) ;
for ( int i = 0 ; i < m_cbBoxData . size ( ) ; i + + )
cbBox - > addItem ( m_cbBoxData [ i ] . first ( ) , m_cbBoxData [ i ] . last ( ) ) ;
return cbBox ;
}
void CboxDelegate : : setEditorData ( QWidget * editor , const QModelIndex & index ) const
{
QString strValue = index . data ( ) . toString ( ) ;
QComboBox * cb = static_cast < QComboBox * > ( editor ) ;
cb - > setCurrentText ( strValue ) ;
}
void CboxDelegate : : setModelData ( QWidget * editor , QAbstractItemModel * model , const QModelIndex & index ) const
{
QComboBox * cb = static_cast < QComboBox * > ( editor ) ;
model - > setData ( index , cb - > currentText ( ) ) ;
model - > setData ( index , cb - > currentData ( ) , Qt : : UserRole ) ;
}
ClineEditDelegate : : ClineEditDelegate ( int length , QString regExp , QObject * parent ) : QItemDelegate ( parent )
{
m_length = length ;
m_regExp = regExp ;
}
ClineEditDelegate : : ~ ClineEditDelegate ( )
{
}
QWidget * ClineEditDelegate : : createEditor ( QWidget * parent , const QStyleOptionViewItem & , const QModelIndex & ) const
{
QLineEdit * lintEdit = new QLineEdit ( parent ) ;
lintEdit - > setMaxLength ( m_length ) ;
lintEdit - > setValidator ( new KbdRegExpValidator ( m_regExp , lintEdit ) ) ;
return lintEdit ;
}
void ClineEditDelegate : : setEditorData ( QWidget * editor , const QModelIndex & index ) const
{
QString strValue = index . data ( ) . toString ( ) ;
QLineEdit * lintEdit = static_cast < QLineEdit * > ( editor ) ;
lintEdit - > setText ( strValue ) ;
}
void ClineEditDelegate : : setModelData ( QWidget * editor , QAbstractItemModel * model , const QModelIndex & index ) const
{
QLineEdit * lintEdit = static_cast < QLineEdit * > ( editor ) ;
model - > setData ( index , lintEdit - > text ( ) ) ;
}