Client/¼½ºÆêÆ/log/ÈÕÖ¾_¼½ºÆêÆ_1106.docBinary files differ
Client/Áõ×Óº½/log/ÈÕÖ¾_Áõ×Óº½_1106.docBinary files differ
Client/ËÎê»i/log/ÈÕÖ¾_ËÎê»i_1106.docBinary files differ
Client/Ö캽/code/kunlunclient/clientmainwindow.cpp
New file @@ -0,0 +1,52 @@ #include "clientmainwindow.h" #include "ui_clientmainwindow.h" #include <QDebug> #pragma execution_character_set("utf-8") ClientMainWindow::ClientMainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::ClientMainWindow) { ui->setupUi(this); m_client = new QTcpSocket(this); m_client->connectToHost("127.0.0.1",16888); if(m_client->waitForConnected()){ qDebug()<<"conn success"; //å ³èæ¶å æ§½ connect(m_client,SIGNAL(readyRead()),this,SLOT(myRead())); //è°ç¨çé¢åå§å initUi(); }else{ qDebug()<<"conn fail:"<<m_client->errorString(); } } ClientMainWindow::~ClientMainWindow() { delete ui; } void ClientMainWindow::initUi() { //m_logSer = new LogQuery(this); m_logSer = new LogQuery(m_client,this); ui->tabWidget->addTab(m_logSer,"æ¥å¿æ¥è¯¢"); connect(this,SIGNAL(queryResSignal(LogQueryRes*)),m_logSer,SLOT(queryResSlot(LogQueryRes*))); } void ClientMainWindow::myRead() { QByteArray buffer = m_client->readAll(); qDebug()<< "buffer.size():"<<buffer.size(); qDebug()<< "buffer:"<<buffer; int type = ((Head*)buffer.data())->type; qDebug()<<"type:"<<type; if(type == LOGSEARCH_RES){ LogQueryRes *res = (LogQueryRes*)buffer.data(); qDebug()<< "status:"<<res->status; emit queryResSignal(res);//åä¿¡å·ç»æ¥å¿æ¥è¯¢çé¢ } } Client/Ö캽/code/kunlunclient/clientmainwindow.h
New file @@ -0,0 +1,34 @@ #ifndef CLIENTMAINWINDOW_H #define CLIENTMAINWINDOW_H #include <QMainWindow> #include "logquery.h" #include "common.h" #include <QTcpSocket> #pragma execution_character_set("utf-8") namespace Ui { class ClientMainWindow; } class ClientMainWindow : public QMainWindow { Q_OBJECT public: explicit ClientMainWindow(QWidget *parent = 0); ~ClientMainWindow(); void initUi(); signals: void queryResSignal(LogQueryRes *);//æ¥å¿æ¥è¯¢ååºä¿¡å· private slots: void myRead(); private: Ui::ClientMainWindow *ui; LogQuery *m_logSer; QTcpSocket *m_client; }; #endif // CLIENTMAINWINDOW_H Client/Ö캽/code/kunlunclient/clientmainwindow.ui
New file @@ -0,0 +1,60 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>ClientMainWindow</class> <widget class="QMainWindow" name="ClientMainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>663</width> <height>537</height> </rect> </property> <property name="windowTitle"> <string>ClientMainWindow</string> </property> <widget class="QWidget" name="centralWidget"> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <widget class="QTabWidget" name="tabWidget"> <property name="currentIndex"> <number>1</number> </property> <widget class="QWidget" name="tab"> <attribute name="title"> <string>宿¶å¤§å±</string> </attribute> </widget> <widget class="QWidget" name="tab_2"> <attribute name="title"> <string>ç³»ç»è®¾ç½®</string> </attribute> </widget> </widget> </item> </layout> </widget> <widget class="QMenuBar" name="menuBar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>663</width> <height>23</height> </rect> </property> </widget> <widget class="QToolBar" name="mainToolBar"> <attribute name="toolBarArea"> <enum>TopToolBarArea</enum> </attribute> <attribute name="toolBarBreak"> <bool>false</bool> </attribute> </widget> <widget class="QStatusBar" name="statusBar"/> </widget> <layoutdefault spacing="6" margin="11"/> <resources/> <connections/> </ui> Client/Ö캽/code/kunlunclient/common.h
New file @@ -0,0 +1,1062 @@ #ifndef COMMON_H #define COMMON_H #include <string.h> enum TypeInfo { //注åç»å½ LOGIN_REQ, // ç»å½è¯·æ± LOGIN_RES, // ç»å½ååº REGISTER_REQ, //注åè¯·æ± REGISTER_RES, //注åååº RESET_REQ, //éç½®å¯ç è¯·æ± RESET_RES, //éç½®å¯ç ååº //æé管ç QUERY_PMS_REQ, // æåå·¥ç¼å·ãååæè使¥è¯¢äººåæéä¿¡æ¯è¯·æ± UPDATE_PMS_REQ, // æè§è²idæ´æ°æéä¿¡æ¯è¯·æ± QUERY_PMS_RES, // æ¥è¯¢äººååè§è²ä¿¡æ¯çååºç»æä½ UPDATE_PMS_RES, // æéæ´æ°ç»æååºä½ //设å¤ç®¡ç AD_REQ,//æ·»å 设å¤è¯·æ± AD_RES,//æ·»å 设å¤ååº MD_REQ,//ä¿®æ¹è®¾å¤è¯·æ± MD_RES,//ä¿®æ¹è®¾å¤ååº QD_REQ,//æ¥è¯¢è®¾å¤è¯·æ± QD_RES,//æ¥è¯¢è®¾å¤ååº //å°å¾æ 注 MML_REQ,//å°å¾æ 注å è½½è¯·æ± MML_RES,//å°å¾æ 注å è½½ååº MMI_REQ,//å°å¾æ 注æå ¥è¯·æ± MMI_RES,//å°å¾æ 注æå ¥ååº MMD_REQ,//å°å¾æ 注å é¤è¯·æ± MMD_RES,//å°å¾æ 注å é¤ååº //大屿¾ç¤º ENVIRONMENT_REQ,//ç¯å¢æ°æ®è¯·æ± ENVIRONMENT_RES,//ç¯å¢æ°æ®ååº DEVICESTATUS_REQ,//设å¤ç¶æè¯·æ± DEVICESTATUS_RES,//设å¤ç¶æååº MOVEMENTRECORD_REQ,//æä½æ¥å¿è¯·æ± MOVEMENTRECORD_RES,//æä½æ¥å¿ååº ALARMRECORD_REQ,//è¦æ¥è®°å½è¯·æ± ALARMRECORD_RES,//è¦æ¥è®°å½ååº YIELD_REQ,//ç ¤ç¿äº§éè¯·æ± YIELD_RES,//ç ¤ç¿äº§éååº //è¦æ¥ç®¡ç WARNING_REQ, // è¦æ¥è¯·æ± WARNING_RES, // è¦æ¥ååº //ç产计å管ç ADD_PDPLAN_REQ,//æ·»å 䏿¡ç产计åç请æ±ç»æä½ ADD_PDPLAN_RES,//æ·»å 䏿¡ç产计åçååºç»æä½ DEL_PDPLAN_REQ,//å é¤ä¸æ¡ç产计åç请æ±ç»æä½ DEL_PDPLAN_RES,//å é¤ä¸æ¡ç产计åçååºç»æä½ UPDATE_PDPLAN_REQ,//æ´æ¹ä¸æ¡ç产计åç请æ±ç»æä½ UPDATE_PDPLAN_RES,//æ´æ¹ä¸æ¡ç产计åçååºç»æä½ QUERY_PDPLAN_REQ,//æ¥è¯¢ä¸æ¡ç产计åç请æ±ç»æä½ QUERY_PDPLAN_RES,//æ¥è¯¢ä¸æ¡ç产计åçååºç»æä½ ADD_MONOUTPUT_REQ,//æ·»å æäº§éç请æ±ç»æä½ ADD_MONOUTPUT_RES,//æ·»å æäº§éçååºç»æä½ DEL_MONOUTPUT_REQ,//å é¤æäº§éç请æ±ç»æä½ DEL_MONOUTPUT_RES,//å é¤æäº§éçååºç»æä½ UPDATE_MONOUTPUT_REQ,//æ´æ°æäº§éç请æ±ç»æä½ UPDATE_MONOUTPUT_RES,//æ´æ°æäº§éçååºç»æä½ QUERY_MONOUTPUT_REQ,//æ¥è¯¢æäº§éç请æ±ç»æä½ QUERY_MONOUTPUT_RES,//æ¥è¯¢æäº§éçååºç»æä½ //èªå¨å级 VERSION_NUM_REQ, // çæ¬å·è¯·æ± VERSION_NUM_RES, // çæ¬å·ååº UPLOAD_FILE_REQ, // ä¸ä¼ æä»¶çè¯·æ± UPLOAD_FILE_RES, // ä¸ä¼ æä»¶çååº VERSION_INFOENTRY_REQ, // çæ¬ä¿¡æ¯å½å ¥è¯·æ± VERSION_INFOENTRY_RES, //çæ¬ä¿¡æ¯å½å ¥ååº VERSION_UPDATE_REQ, // çæ¬æ´æ°è¯·æ± VERSION_UPDATE_RES, // çæ¬æ´æ°ååº FILE_DOWNLOADS_REQ, // çæ¬æ´æ°æä»¶ä¸è½½è¯·æ± FILE_DOWNLOADS_RES, // çæ¬æ´æ°æä»¶ä¸è½½ååº DOWNLOAD_SUCCESSFULLY_RES, // æ´æ°æä»¶ä¸è½½æåçååº //æ¥å¿ LOGSEARCH_REQ,//æ¥å¿æ¥è¯¢è¯·æ± LOGSEARCH_RES,//æ¥å¿æ¥è¯¢ååº }; struct Head { int type; int len; }; //注åç»å½ //ç»å½è¯·æ± struct LoginReq { Head head; char userName[32]; char password[32]; LoginReq() { head.type = LOGIN_REQ; head.len = sizeof(LoginReq); } }; struct Permission { int admin;//è¶ çº§ç®¡çå int loggerSearch; //æ¥å¿æ¥è¯¢ int queryHistory; //åå²è®°å½ int mapMark;//å°å¾ int versionManage; // çæ¬ç®¡ç int warning; //è¦æ¥ int devManage; //设å¤ç®¡ç int productPlan;//ç产计å char roleName[32]; // è§è²å }; //ç»å½ååº struct LoginRes { Head head; char userName[32]; int status; // ç»å½ç¶æ // ç»å½æåæ¶ï¼è¯¥è´¦å·å¯¹åºçæéç»å Permission per; LoginRes() { head.type = LOGIN_RES; head.len = sizeof(LoginRes); } }; //注åè¯·æ± struct RegisterReq { Head head; char userName[32]; char password[32]; char email[50]; char capcha[10];//éªè¯ç char telephone[32]; RegisterReq() { head.type = REGISTER_REQ; head.len = sizeof(RegisterReq); } }; //注åååº struct RegisterRes { Head head; char userName[32]; int status; // 注åç¶æ RegisterRes() { head.type = REGISTER_RES; head.len = sizeof(RegisterRes); } }; //éç½®å¯ç è¯·æ± struct ResetReq { Head head; char email[50]; char capcha[10];//éªè¯ç char password[32];//æ°å¯ç char confirmPassword[32];//确认å¯ç ResetReq() { head.type = RESET_REQ; head.len = sizeof(ResetReq); } }; //éç½®å¯ç ååº struct ResetRes { Head head; char user_name[32]; int status; // éç½®å¯ç ç¶æ ResetRes() { head.type = RESET_RES; head.len = sizeof(ResetRes); } }; //æé管ç // æåå·¥ç¼å·ãååæè使¥è¯¢äººåæéä¿¡æ¯è¯·æ± struct QueryPmsReq { Head head; char userNo[32]; char name[32]; char permissonType[32]; QueryPmsReq() { head.type = QUERY_PMS_REQ; memset(userNo, 0, 32); memset(permissonType, 0, 32); memset(name, 0, 32); head.len = sizeof(QueryPmsReq); } }; // æè§è²idæ´æ°æéä¿¡æ¯è¯·æ± struct UpdatePmsReq { Head head; // 人å表主é®id int id; int queryHistory; int loggerSearch; int mapMark; int devManage; int productPlan; int warningManage; int versionManage; //çæ¬ç®¡ç int admin; //ç³»ç»ç®¡çå UpdatePmsReq() { head.type = QUERY_PMS_RES; head.len = sizeof(UpdatePmsReq); } } ; // å个人ååæéèåæ¥è¯¢ç»æä½ struct PmsRes { int queryHistory; int loggerSearch; int mapMark; int devManage; int productPlan; int id; char userNo[32]; char name[32]; char permissonType[32]; // è§è²ç±»å int versionManage; //çæ¬ç®¡ç int admin; //ç³»ç»ç®¡çå char department[32]; char loginTime[32]; char registerTime[32]; }; // æ¥è¯¢äººååè§è²ä¿¡æ¯çååºç»æä½ struct QueryPmsRes { Head head; int success; // 1为æå ,0为失败 PmsRes pmsList[0]; QueryPmsRes() { head.type = QUERY_PMS_REQ; } }; // æéæ´æ°ç»æååºä½ struct UpdatePmsRes { Head head; int success; // 1为æå ,0为失败 UpdatePmsRes() { head.type = UPDATE_PMS_RES; head.len = sizeof(UpdatePmsRes); } }; //设å¤ç®¡ç struct DevicesInfo { int deviceID; char deviceName[32];//设å¤åç§° char deviceStatus[32];//设å¤ç¶æ char manufacturer[100];//åå®¶ char devicesType[32];//设å¤ç±»å double longitude;//ç»åº¦ double latitude;//纬度 char purchasingTime[15];//è´ä¹°æ¶é´ char installTime[15];//å®è£ æ¶é´ char devicesSerialNumber[32];//设å¤ç¼ç }; //æ·»å è®¾å¤ struct ADReq//æ·»å è¯·æ± { Head head; char deviceName[32]; ADReq() { head.type = AD_REQ; head.len = sizeof(ADReq); } }; struct ADRes//æ·»å ååº { Head head; int type; ADRes() { head.type = AD_RES; head.len = sizeof(ADRes); } }; //ä¿®æ¹è®¾å¤ struct MDRes//ä¿®æ¹è¯·æ± { Head head; DevicesInfo info; MDRes() { head.type = MD_RES; head.len = sizeof(MDRes); } }; struct MDReq//ä¿®æ¹ååº { Head head; int type; MDReq() { head.type = MD_REQ; head.len = sizeof(MDReq); } }; //æ¥è¯¢è®¾å¤ struct QDReq//æ¥è¯¢è¯·æ± { Head head; DevicesInfo info; QDReq() { head.type = QD_REQ; head.len = sizeof(QDReq); } }; struct QDRes//æ¥è¯¢ååº { Head head; int type; QDRes() { head.type = QD_RES; head.len = sizeof(QDRes); } }; //å°å¾æ 注 struct MarkInfo { int markId;//æ æ³¨ç¹id double latitude;//纬度 double longitude;//ç»åº¦ int deviceId;//设å¤ID int deviceStatus;//设å¤ç¶æ char deviceName[32];//设å¤åç§° }; //å°å¾æ 注å è½½è¯·æ± struct MMLReq//å°å¾ { Head head; MMLReq() { head.type = MML_REQ; head.len = sizeof(MMLReq); } }; //å°å¾æ 注å è½½ååºï¼ struct MMLRes { Head head; int status;//æä½ç¶æ MarkInfo info[0]; MMLRes() { head.type = MML_RES; head.len = sizeof(MMLRes); } }; //å°å¾æ 注æå ¥è¯·æ± struct MMIReq//å°å¾ { Head head; MarkInfo info[0]; MMIReq() { head.type = MMI_REQ; head.len = sizeof(MMIReq); } }; //å°å¾æ 注æå ¥ååºï¼ struct MMIRes { Head head; int status;//æä½ç¶æ MarkInfo info[0]; MMIRes() { head.type = MMI_RES; head.len = sizeof(MMIRes); } }; //å°å¾æ 注å é¤è¯·æ± struct MMDReq//å°å¾ { Head head; MarkInfo info[0]; MMDReq() { head.type = MMD_REQ; head.len = sizeof(MMDReq); } }; //å°å¾æ 注å é¤ååºï¼ struct MMDRes { Head head; int status;//æä½ç¶æ MarkInfo info[0]; MMDRes() { head.type = MMD_RES; head.len = sizeof(MMDRes); } }; //大屿¾ç¤º //ç¯å¢æ°æ®è¯·æ± struct EnvironmentReq { Head head; EnvironmentReq() { head.type = ENVIRONMENT_REQ; head.len = sizeof(EnvironmentReq); } }; //ç¯å¢æ°æ®ååº struct Environment { double longitude;//ç»åº¦ double latitude;//纬度 float temp;//温度 float humidity;//湿度 float oxygen;//æ°§æ°æµåº¦ float carbon;//䏿°§å碳æµåº¦ }; struct EnvironmentRes { Head head; int status; Environment environment[0]; EnvironmentRes() { head.type = ENVIRONMENT_RES; head.len = sizeof(EnvironmentRes); } }; //设å¤ç¶æè¯·æ± struct DeviceStatusReq { Head head; DeviceStatusReq() { head.type = DEVICESTATUS_REQ; head.len = sizeof(DeviceStatusReq); } }; //设å¤ç¶æååº struct DeviceStatus { double longitude;//ç»åº¦ double latitude;//纬度 int deviceID;//设å¤ç¼å· char deviceName[32];//设å¤åç§° char deviceStatus[32];//设å¤ç¶æ }; struct DeviceStatusRes { Head head; int status; DeviceStatus deviceStatus[0]; DeviceStatusRes() { head.type = DEVICESTATUS_RES; head.len = sizeof(DeviceStatusRes); } }; //æä½æ¥å¿è¯·æ± struct MovementRecordReq { Head head; MovementRecordReq() { head.type = MOVEMENTRECORD_REQ; head.len = sizeof(MovementRecordReq); } }; //æä½æ¥å¿ååº struct MovementRecord { double longitude;//ç»åº¦ double latitude;//纬度 char userName;//æä½ç¨æ·å char operateTime[32];//æä½æ¶é´ char deviceName[32];//æä½è®¾å¤ char movement[256];//æä½æè¿° }; struct MovementRecordRes { Head head; int status; MovementRecord movementRecord[0]; MovementRecordRes() { head.type = MOVEMENTRECORD_RES; head.len = sizeof(MovementRecordRes); } }; //è¦æ¥è®°å½è¯·æ± struct AlarmRecordReq { Head head; AlarmRecordReq() { head.type = ALARMRECORD_REQ; head.len = sizeof(AlarmRecordReq); } }; //è¦æ¥è®°å½ååº struct AlarmRecord { double longitude;//ç»åº¦ double latitude;//纬度 char alarmTime[32];//è¦æ¥æ¶é´ char alarmtype[32];//å¤çæ¶é´ char alarmContent[256];//è¦æ¥å 容 }; struct AlarmRecordRes { Head head; int status; AlarmRecord alarmRecord[0]; AlarmRecordRes() { head.type = ALARMRECORD_RES; head.len = sizeof(AlarmRecordRes); } }; //ç ¤ç¿äº§éè¯·æ± struct YieldReq { Head head; YieldReq() { head.type = YIELD_REQ; head.len = sizeof(YieldReq); } }; //ç ¤ç¿äº§éååº struct Yield { int month;//æä»½ int output;//产é }; struct YieldRes { Head head; int status; Yield yield[0]; YieldRes() { head.type = YIELD_RES; head.len = sizeof(YieldRes); } }; //è¦æ¥ç®¡ç // è¦æ¥è¯·æ±ç»æä½ struct WarningReq { Head head; float oxygenWarning; float carbonWarning; float tempWarning; float humidityWarning; WarningReq() { head.type = WARNING_REQ; head.len = sizeof(WarningReq); } }; struct DataThreshold { //éå¼ float oxygenThreshold; float carbonThreshold; float tempThreshold; float humidityThreshold; }; struct Data { float oxygen; // æ°§æ°æµåº¦ float carbon; // 䏿°§å碳æµåº¦ float temp; // 温度 float humidity; // 湿度 }; // è¦æ¥ååºç»æä½ struct WarningRes { Head head; int status; // ååºç¶æï¼æ¯å¦ 0 表示æåï¼1 表示失败çï¼ const char* message; // ååºæ¶æ¯æè¿° WarningRes(int stat, const char* msg) { head.type = WARNING_RES; head.len = sizeof(WarningRes); status = stat; message = msg; } }; //ç产计å管ç struct PdplanInfo { int planId;//订åç¼å· char planName[32];//订ååå char startDate[32];//èµ·å§æ¥æ char closingDate[32];//äº¤ä»æ¥æ char pdName[8];//产åå double plannedPd;//计åç产é double actualPd;//å®é ç产é double progress;//ç产è¿åº¦ int finishOntime;//æ¯å¦ææå®æ }; struct MonoutputInfo { int month;//æä»½ double aOutput;//a产åæäº§é double bOutput;//b产åæäº§é double cOutput;//c产åæäº§é }; //æ·»å 䏿¡ç产计åç请æ±ç»æä½ struct AddPdplanReq { Head head; PdplanInfo info[0]; AddPdplanReq() { head.type = ADD_PDPLAN_REQ; head.len = sizeof(AddPdplanReq); } }; //æ·»å 䏿¡ç产计åçååºç»æä½ struct AddPdplanRes { Head head; int status;//表示æ¯å¦æ·»å æåï¼0å¦1æ¯ AddPdplanRes() { head.type = ADD_PDPLAN_RES; head.len = sizeof(AddPdplanRes); } }; //å é¤ä¸æ¡ç产计åç请æ±ç»æä½ struct DelPdplanReq { Head head; PdplanInfo info[0]; DelPdplanReq() { head.type = DEL_PDPLAN_REQ; head.len = sizeof(DelPdplanReq); } }; //å é¤ä¸æ¡ç产计åçååºç»æä½ struct DelPdplanRes { Head head; int status;//表示æ¯å¦å 餿åï¼0å¦1æ¯ DelPdplanRes() { head.type = DEL_PDPLAN_RES; head.len = sizeof(DelPdplanRes); } }; //æ´æ¹ä¸æ¡ç产计åç请æ±ç»æä½. struct UpdatePdplanReq { Head head; PdplanInfo info[0]; UpdatePdplanReq() { head.type = UPDATE_PDPLAN_REQ; head.len = sizeof(UpdatePdplanReq); } }; //æ´æ¹ä¸æ¡ç产计åçååºç»æä½ struct UpdatePdplanRes { Head head; int status;//表示æ¯å¦æ´æ°æåï¼0å¦1æ¯ PdplanInfo info[0]; UpdatePdplanRes() { head.type = UPDATE_PDPLAN_RES; head.len = sizeof(UpdatePdplanRes); } }; //æ¥è¯¢ä¸æ¡ç产计åç请æ±ç»æä½ struct QueryPdplanReq { Head head; int planId;//订åç¼å· char planName[32];//订åååå char startDate[32];//èµ·å§æ¥æ char closingDate[32];//äº¤ä»æ¥æ char pdName[8];//产åå double plannedPd;//计åç产é double actualPd;//å®é ç产é double progress;//ç产è¿åº¦ int finishOntime;//æ¯å¦ææå®æ QueryPdplanReq() { head.type = QUERY_PDPLAN_REQ; head.len = sizeof(QueryPdplanReq); } }; //æ¥è¯¢ä¸æ¡ç产计åçååºç»æä½ struct QueryPdplanRes { Head head; int status;//表示æ¯å¦æ·»å æåï¼0å¦1æ¯ PdplanInfo info[0]; QueryPdplanRes() { head.type = QUERY_PDPLAN_RES; head.len = sizeof(QueryPdplanRes); } }; //æ·»å æäº§éç请æ±ç»æä½ struct AddMonoutputReq { Head head; MonoutputInfo info[0]; AddMonoutputReq() { head.type = ADD_MONOUTPUT_REQ; head.len = sizeof(AddMonoutputReq); } }; //æ·»å æäº§éçååºç»æä½ struct AddMonoutputRes { Head head; int status;//表示æ¯å¦æ·»å æåï¼0å¦1æ¯ AddMonoutputRes() { head.type = ADD_MONOUTPUT_RES; head.len = sizeof(AddMonoutputRes); } }; //å é¤æäº§éç请æ±ç»æä½ struct DelMonoutputReq { Head head; MonoutputInfo info[0]; DelMonoutputReq() { head.type = DEL_MONOUTPUT_REQ; head.len = sizeof(DelMonoutputReq); } }; //å é¤æäº§éçååºç»æä½ struct DelMonoutputRes { Head head; int status;//表示æ¯å¦å 餿åï¼0å¦1æ¯ DelMonoutputRes() { head.type = DEL_MONOUTPUT_RES; head.len = sizeof(DelMonoutputRes); } }; //æ´æ¹æäº§éç请æ±ç»æä½. struct UpdateMonoutputReq { Head head; MonoutputInfo info[0]; UpdateMonoutputReq() { head.type = UPDATE_MONOUTPUT_REQ; head.len = sizeof(UpdateMonoutputReq); } }; //æ´æ¹æäº§éçååºç»æä½ struct UpdateMonoutputRes { Head head; int status;//表示æ¯å¦æ´æ°æåï¼0å¦1æ¯ MonoutputInfo info[0]; UpdateMonoutputRes() { head.type = UPDATE_MONOUTPUT_RES; head.len = sizeof(UpdateMonoutputRes); } }; //æ¥è¯¢æäº§éç请æ±ç»æä½ struct QueryMonoutputReq { Head head; int month;//æä»½ double aOutput;//a产åæäº§é double bOutput;//b产åæäº§é double cOutput;//c产åæäº§é QueryMonoutputReq() { head.type = QUERY_MONOUTPUT_REQ; head.len = sizeof(QueryMonoutputReq); } }; //æ¥è¯¢æäº§éçååºç»æä½ struct QueryMonoutputRes { Head head; int status;//表示æ¯å¦æ·»å æåï¼0å¦1æ¯ MonoutputInfo info[0]; QueryMonoutputRes() { head.type = QUERY_MONOUTPUT_RES; head.len = sizeof(QueryMonoutputRes); } }; //å岿¥è¯¢åæ // å岿¥è¯¢è¯·æ±ç»æä½ struct HistoryQueryReq { Head head; //æ ¹æ®æ¶é´èå´æ¥è¯¢ char startTime[32]; char endTime[32]; //å ³é®åæ¥è¯¢ char keyWord[32]; HistoryQueryReq() { // åå§åæ°æ®å¤´ head.type = QUERY_MONOUTPUT_REQ; head.len = sizeof(HistoryQueryReq); // åå§åæ¥è¯¢æ¡ä»¶å段 memset(startTime, 0, sizeof(startTime)); memset(endTime, 0, sizeof(endTime)); } }; // å岿¥è¯¢ååºç»æä½ // ç³»ç»è¿è¡ç¶æè¡¨ç¸å ³ä¿¡æ¯ struct HistroyInfo { WarningRes warn;//è¦æ¥æ¥è¯¢ QDRes dev;//è®¾å¤æ¥è¯¢ QueryPdplanRes pro;//çäº§è®¡åæ¥è¯¢ }; struct HistoryQueryRes { Head head; HistroyInfo sys[0]; HistoryQueryRes() { // åå§åæ°æ®å¤´ head.type = QUERY_MONOUTPUT_RES; head.len = sizeof(HistoryQueryRes); } }; //èªå¨å级 struct VersionNumReq // çæ¬å·è¯·æ± { Head head; VersionNumReq() { head.type = VERSION_NUM_REQ; head.len = sizeof(VersionNumReq); } }; struct VersionNumRes // çæ¬å·ååº { Head head; char versionId[64]; // çæ¬å· VersionNumRes() { head.type = VERSION_NUM_RES; head.len = sizeof(VersionNumRes); } }; // æä»¶ä¼ è¾ struct FileInfo { char fileName[256]; long long fileSize; char s_filepath[128]; char content[0]; }; struct UploadFileReq // ä¸ä¼ æä»¶çè¯·æ± { Head head; FileInfo fileInfo; UploadFileReq() { head.type = UPLOAD_FILE_REQ; head.len = sizeof(UploadFileReq); } }; struct UploadFileRes { // ä¸ä¼ æä»¶çååº Head head; bool state = false; char fileName[256]; long long file_size; UploadFileRes() { head.type = UPLOAD_FILE_RES; head.len = sizeof(UploadFileRes); } }; // çæ¬ä¿¡æ¯å½å ¥ // è¯·æ± struct VersionInfoEntryReq { Head head; char versionId[64]; // çæ¬å· char versionIdOld[64]; // ä¸ä¸ä¸ªçæ¬å· int fileNum; char context[0]; //å å«ä¸è½½æä»¶ä¿¡æ¯ VersionInfoEntryReq() { head.type = VERSION_INFOENTRY_REQ; head.len = sizeof(VersionInfoEntryReq); } }; // çæ¬ä¿¡æ¯å½å ¥ååº struct VersionInfoEntryRes { Head head; bool state = false; VersionInfoEntryRes() { head.type = VERSION_INFOENTRY_RES; head.len = sizeof(VersionInfoEntryRes); } }; // çæ¬æ´æ°è¯·æ± struct VersionUpdateReq { Head head; char curVersionId[64]; // çæ¬å· VersionUpdateReq() { head.type = VERSION_UPDATE_REQ; head.len = sizeof(VersionUpdateReq); } }; // çæ¬æ´æ°ååº struct VersionUpdateRes { Head head; bool state = false; char versionId[64]; // çæ¬å· char updateDate[32]; // æ´æ°æ¶é´ char versionDescription[1024]; //æ´æ°æè¿° VersionUpdateRes() { head.type = VERSION_UPDATE_RES; head.len = sizeof(VersionUpdateRes); } }; // çæ¬æ´æ°æä»¶ä¸è½½è¯·æ± struct FileDownloadsReq { Head head; char versionId[64]; // çæ¬å· FileDownloadsReq() { head.type = FILE_DOWNLOADS_REQ; head.len = sizeof(FileDownloadsReq); } }; // çæ¬æ´æ°æä»¶ä¸è½½ååº struct FileDownloadsRes { Head head; char versionId[64]; // çæ¬å· char filename[128]; //æä»¶å long long filesize; //æä»¶å¤§å° char c_filepath[128]; //客æ·ç«¯æ¾ææ°çæ¬çæ¬å°è·¯å¾ int fileNum; // æä»¶æ°é long long allFileSize; // æä»¶æ»å¤§å° char content[0]; FileDownloadsRes() { head.type = FILE_DOWNLOADS_RES; head.len = sizeof(FileDownloadsRes); } }; // æ´æ°æä»¶ä¸è½½æåçååº struct DownloadSuccessfullyRes { Head head; bool state = false; char fileName[256]; long long fileSize; DownloadSuccessfullyRes() { head.type = DOWNLOAD_SUCCESSFULLY_RES; head.len = sizeof(DownloadSuccessfullyRes); } }; //æ¥å¿ struct ParsedLog { int id; char timeStamp[64]; // æ¶é´æ³ char deviceId[64]; // 设å¤ID char level[16]; // æ¥å¿çº§å« char content[256]; // æ¥å¿å 容 char userId[64]; // ç¨æ·ID char fileName[32]; //æä»¶å int problemLine; //产çé误è¡å· char functionName[32]; //彿°å }; // æ¥å¿æ¥è¯¢è¯·æ±ç»æä½ struct LogQueryReq { Head head; // æ°æ®å¤´ char startTime[20]; // æ ¹æ®å®é éè¦è°æ´å¤§å° char endTime[20]; // æ ¹æ®å®é éè¦è°æ´å¤§å° char content[256]; // æ¥å¿å 容 char level[16]; //æ¥å¿çº§å« char deviceId[64]; // 设å¤ID // æ åæé 彿° LogQueryReq() { head.type = LOGSEARCH_REQ; head.len = sizeof(LogQueryReq); } }; // æ¥å¿æ¥è¯¢ååºç»æä½ struct LogQueryRes { Head head; int status; // ååºç¶æ (å¦ 0 表示æåï¼é 0 表示失败) ParsedLog parsedLog[0]; // ä½¿ç¨ææ§æ°ç»å卿¥è¯¢ç»æ // æ åæé 彿° LogQueryRes() { head.type = LOGSEARCH_RES; head.len = sizeof(LogQueryRes); } }; #endif // COMMON_H Client/Ö캽/code/kunlunclient/kunlunclient.pro
New file @@ -0,0 +1,39 @@ #------------------------------------------------- # # Project created by QtCreator 2024-11-04T19:54:13 # #------------------------------------------------- QT += core gui network greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = kunlunclient TEMPLATE = app # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ clientmainwindow.cpp \ logquery.cpp HEADERS += \ clientmainwindow.h \ logquery.h \ common.h FORMS += \ clientmainwindow.ui \ logquery.ui Client/Ö캽/code/kunlunclient/kunlunclient.pro.user
New file @@ -0,0 +1,806 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> <!-- Written by QtCreator 4.5.0, 2024-11-06T21:44:24. --> <qtcreator> <data> <variable>EnvironmentId</variable> <value type="QByteArray">{197a2871-47a7-48be-824d-e8eb4f5b395c}</value> </data> <data> <variable>ProjectExplorer.Project.ActiveTarget</variable> <value type="int">0</value> </data> <data> <variable>ProjectExplorer.Project.EditorSettings</variable> <valuemap type="QVariantMap"> <value type="bool" key="EditorConfiguration.AutoIndent">true</value> <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value> <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value> <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0"> <value type="QString" key="language">Cpp</value> <valuemap type="QVariantMap" key="value"> <value type="QByteArray" key="CurrentPreferences">CppGlobal</value> </valuemap> </valuemap> <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1"> <value type="QString" key="language">QmlJS</value> <valuemap type="QVariantMap" key="value"> <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value> </valuemap> </valuemap> <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value> <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value> <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value> <value type="int" key="EditorConfiguration.IndentSize">4</value> <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value> <value type="int" key="EditorConfiguration.MarginColumn">80</value> <value type="bool" key="EditorConfiguration.MouseHiding">true</value> <value type="bool" key="EditorConfiguration.MouseNavigation">true</value> <value type="int" key="EditorConfiguration.PaddingMode">1</value> <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value> <value type="bool" key="EditorConfiguration.ShowMargin">false</value> <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value> <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value> <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value> <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value> <value type="int" key="EditorConfiguration.TabSize">8</value> <value type="bool" key="EditorConfiguration.UseGlobal">true</value> <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value> <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value> <value type="bool" key="EditorConfiguration.cleanIndentation">true</value> <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value> <value type="bool" key="EditorConfiguration.inEntireDocument">false</value> </valuemap> </data> <data> <variable>ProjectExplorer.Project.PluginSettings</variable> <valuemap type="QVariantMap"/> </data> <data> <variable>ProjectExplorer.Project.Target.0</variable> <valuemap type="QVariantMap"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MinGW 32bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MinGW 32bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win32_mingw53_kit</value> <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Release</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Profile</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">é¨ç½²</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">卿¬å°é¨ç½²</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value> </valuemap> <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value> <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value> <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value> <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value> <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value> <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value> <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value> <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value> <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> <value type="int">0</value> <value type="int">1</value> <value type="int">2</value> <value type="int">3</value> <value type="int">4</value> <value type="int">5</value> <value type="int">6</value> <value type="int">7</value> <value type="int">8</value> <value type="int">9</value> <value type="int">10</value> <value type="int">11</value> <value type="int">12</value> <value type="int">13</value> <value type="int">14</value> </valuelist> <value type="int" key="PE.EnvironmentAspect.Base">2</value> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">kunlunclient</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:B:/Qt/QtProject/kunlunclient/kunlunclient.pro</value> <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">kunlunclient.pro</value> <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value> <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MinGW_32bit-Debug</value> <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value> <value type="bool" key="RunConfiguration.UseCppDebugger">false</value> <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseMultiProcess">false</value> <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> </valuemap> <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value> </valuemap> </data> <data> <variable>ProjectExplorer.Project.Target.1</variable> <valuemap type="QVariantMap"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MSVC2015 32bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MSVC2015 32bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win32_msvc2015_kit</value> <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_32bit-Debug</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_32bit-Release</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_32bit-Profile</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">é¨ç½²</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">卿¬å°é¨ç½²</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value> </valuemap> <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value> <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value> <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value> <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value> <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value> <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value> <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value> <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value> <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> <value type="int">0</value> <value type="int">1</value> <value type="int">2</value> <value type="int">3</value> <value type="int">4</value> <value type="int">5</value> <value type="int">6</value> <value type="int">7</value> <value type="int">8</value> <value type="int">9</value> <value type="int">10</value> <value type="int">11</value> <value type="int">12</value> <value type="int">13</value> <value type="int">14</value> </valuelist> <value type="int" key="PE.EnvironmentAspect.Base">-1</value> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value> <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value> <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value> <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value> <value type="bool" key="RunConfiguration.UseCppDebugger">false</value> <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseMultiProcess">false</value> <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> </valuemap> <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value> </valuemap> </data> <data> <variable>ProjectExplorer.Project.Target.2</variable> <valuemap type="QVariantMap"> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.9.4 MSVC2015 64bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.9.4 MSVC2015 64bit</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.594.win64_msvc2015_64_kit</value> <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_64bit-Debug</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_64bit-Release</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">B:/Qt/QtProject/build-kunlunclient-Desktop_Qt_5_9_4_MSVC2015_64bit-Profile</value> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value> <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value> <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value> <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æå»º</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value> </valuemap> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value> <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/> <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value> <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value> </valuemap> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">æ¸ ç</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value> <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value> <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value> </valuemap> <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">é¨ç½²</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value> </valuemap> <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">卿¬å°é¨ç½²</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value> </valuemap> <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value> <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value> <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value> <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value> <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value> <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value> <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value> <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value> <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value> <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> <value type="int">0</value> <value type="int">1</value> <value type="int">2</value> <value type="int">3</value> <value type="int">4</value> <value type="int">5</value> <value type="int">6</value> <value type="int">7</value> <value type="int">8</value> <value type="int">9</value> <value type="int">10</value> <value type="int">11</value> <value type="int">12</value> <value type="int">13</value> <value type="int">14</value> </valuelist> <value type="int" key="PE.EnvironmentAspect.Base">-1</value> <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/> <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value> <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value> <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value> <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value> <value type="bool" key="RunConfiguration.UseCppDebugger">false</value> <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseMultiProcess">false</value> <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> </valuemap> <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value> </valuemap> </data> <data> <variable>ProjectExplorer.Project.TargetCount</variable> <value type="int">3</value> </data> <data> <variable>ProjectExplorer.Project.Updater.FileVersion</variable> <value type="int">18</value> </data> <data> <variable>Version</variable> <value type="int">18</value> </data> </qtcreator> Client/Ö캽/code/kunlunclient/logquery.cpp
New file @@ -0,0 +1,216 @@ #include "logquery.h" #include "ui_logquery.h" #include <QTcpSocket> #include <QMessageBox> #include <QStandardItemModel> #pragma execution_character_set("utf-8") LogQuery::LogQuery(QWidget *parent) : QMainWindow(parent), ui(new Ui::LogQuery) { ui->setupUi(this); m_client = nullptr;//置空 } LogQuery::LogQuery(QTcpSocket *client, QWidget *parent): QMainWindow(parent), ui(new Ui::LogQuery) { ui->setupUi(this); connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(onComboBoxIndexChanged(int))); ui->dateTimeEdit_end->setDateTime(QDateTime::currentDateTime()); //æä¼¸ ææ ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui->spinBox->setValue(10); // int nWidth = ui->tableView->width(); // ui->tableView->setColumnWidth(0, qRound(nWidth*0.1)); // ui->tableView->setColumnWidth(1, qRound(nWidth*0.5)); // ui->tableView->setColumnWidth(2, qRound(nWidth*0.3)); // ui->tableView->setColumnWidth(3, qRound(nWidth*0.15)); // ui->tableView->setColumnWidth(4, qRound(nWidth*0.15)); // ui->tableView->setColumnWidth(5, qRound(nWidth*0.3)); // ui->tableView->setColumnWidth(6, qRound(nWidth*0.3)); // ui->tableView->setColumnWidth(7, qRound(nWidth*0.3)); // ui->tableView->setColumnWidth(8, qRound(nWidth*0.3)); m_client = client;//å ±äº«å¥æ¥å } LogQuery::~LogQuery() { delete ui; } void LogQuery::on_pushButton_search_clicked() { QString selectedFilter = ui->comboBox->currentText(); QByteArray request; // 卿åé 请æ±ç»æä½ int size = sizeof(LogQueryReq) + sizeof(ParsedLog); LogQueryReq* req = (LogQueryReq*)new char[size]; req->head.type = LOGSEARCH_REQ; req->head.len = size; // åå§åè¯·æ±æ°æ® initializeRequestData(req); // æ ¹æ®éå®çç鿡件填å è¯·æ±æ°æ® if (selectedFilter == "æ¶é´") { QString startTime = ui->dateTimeEdit_start->dateTime().toString("yyyy-MM-dd HH:mm:ss"); QString endTime = ui->dateTimeEdit_end->dateTime().toString("yyyy-MM-dd HH:mm:ss"); // å°å¼å§æ¶é´åç»ææ¶é´è®¾ç½®å°è¯·æ±ä¸ strcpy(req->startTime, startTime.toLocal8Bit().constData()); strcpy(req->endTime, endTime.toLocal8Bit().constData()); } else if (selectedFilter == "æ¥å¿å 容" || selectedFilter == "æ¥å¿çº§å«" || selectedFilter == "设å¤ID") { QString filterValue = ui->lineEdit->text(); if (filterValue.isEmpty()) { QMessageBox::warning(this, "è¦å", "请è¾å ¥ç鿡件ï¼"); delete[] req; // éæ¾å å return; } // æ ¹æ®ç鿡件填å ç¸åºçåæ®µ if (selectedFilter == "æ¥å¿å 容") { strcpy(req->content, filterValue.toLocal8Bit().data()); } else if (selectedFilter == "æ¥å¿çº§å«") { strcpy(req->level, filterValue.toLocal8Bit().data()); } else if (selectedFilter == "设å¤ID") { strcpy(req->deviceId, filterValue.toLocal8Bit().data()); } } else { QMessageBox::warning(this, "è¦å", "è¯·éæ©ææçç鿡件ï¼"); delete[] req; // éæ¾å å return; } // å°ç»æä½è½¬ä¸º QByteArray request = QByteArray((char*)(req), req->head.len); // åéè¯·æ± if (m_client != nullptr) { qDebug() << __FUNCTION__ << m_client->write(request); } // éæ¾å å delete[] req; currentPage = 1; // éæ°è®¡ç®æ»é¡µæ° totalPages = (logs.size() + logsPerPage - 1) / logsPerPage; displayCurrentPage(); updatePageLabel(); } void LogQuery::queryResSlot(LogQueryRes *res) { if (res->status == 1) { // è§£ææ¥å¿æ°æ® logs.clear(); int maxLogs = ui->spinBox->value(); int logCount = (res->head.len - sizeof(LogQueryRes)) / sizeof(ParsedLog); qDebug()<<"logcount = "<<logCount; int displayCount = qMin(maxLogs, logCount); // æ¾ç¤ºæ°éä¸è¶ è¿æå¤§å¼ for (int i = 0; i < displayCount; ++i) { logs.append(res->parsedLog[i]); } totalPages = (logs.size()+logsPerPage -1)/ logsPerPage;//è®¡ç®æ»é¡µæ° currentPage = 1; // é置页ç updatePageLabel();//æ´æ°æ ç¾ displayCurrentPage(); // æ¾ç¤ºç¬¬ä¸é¡µ } else{ ui->tableView->setModel(nullptr); QMessageBox::warning(this, "è¦å", "æ ç¸å ³å 容"); } } void LogQuery::initializeRequestData(LogQueryReq *req) { req->startTime[0] = '\0'; req->endTime[0] = '\0'; req->level[0] = '\0'; req->deviceId[0] = '\0'; req->content[0] = '\0'; } void LogQuery::updatePageLabel() { ui->label_currentPage->setText(QString("å½å页ï¼%1 / %2").arg(currentPage).arg(totalPages)); // å¦æåªæä¸é¡µæè æ²¡ææ°æ®ï¼ç¦ç¨ä¸ä¸é¡µæé® ui->pushButton_up->setEnabled(currentPage > 1); // ç¦ç¨ä¸ä¸é¡µæé® ui->pushButton_down->setEnabled(currentPage < totalPages); // ç¦ç¨ä¸ä¸é¡µæé® } void LogQuery::on_pushButton_up_clicked() { if (currentPage > 0) { --currentPage; updatePageLabel(); displayCurrentPage(); // æ¾ç¤ºä¸ä¸é¡µ } } void LogQuery::on_pushButton_down_clicked() { if (currentPage < totalPages) { ++currentPage; updatePageLabel(); displayCurrentPage(); } } void LogQuery::onComboBoxIndexChanged(int index) { ui->lineEdit->clear(); } void LogQuery::displayCurrentPage() { QStandardItemModel* model = new QStandardItemModel(); model->setHorizontalHeaderLabels({"ID", "æ¶é´", "设å¤ID", "æ¥å¿çº§å«", "æ¥å¿å 容", "ç¨æ·ID", "é误æä»¶å", "é误è¡å·", "éè¯¯å½æ°å"}); int start = (currentPage -1)* logsPerPage; int end = qMin(start + logsPerPage, logs.size()); // å¡«å å½åé¡µçæ¥å¿æ¡ç® for (int i = start; i < end; ++i) { ParsedLog parsedLog = logs[i]; QList<QStandardItem *> rowItems; rowItems.append(new QStandardItem(QString::number(parsedLog.id))); rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.timeStamp))); rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.deviceId))); rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.level))); rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.content))); rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.userId))); rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.fileName))); rowItems.append(new QStandardItem(QString::number(parsedLog.problemLine))); rowItems.append(new QStandardItem(QString::fromLocal8Bit(parsedLog.functionName))); model->appendRow(rowItems); } // æ´æ°è¡¨æ ¼è§å¾ ui->tableView->setModel(model); ui->tableView->resizeColumnsToContents(); } Client/Ö캽/code/kunlunclient/logquery.h
New file @@ -0,0 +1,49 @@ #ifndef LOGQUERY_H #define LOGQUERY_H #include <QMainWindow> #include "common.h" #include <QTcpSocket> #pragma execution_character_set("utf-8") namespace Ui { class LogQuery; } class LogQuery : public QMainWindow { Q_OBJECT public: explicit LogQuery(QWidget *parent = 0); explicit LogQuery(QTcpSocket *client,QWidget *parent = 0); ~LogQuery(); private slots: void on_pushButton_search_clicked(); void queryResSlot(LogQueryRes *res); void on_pushButton_up_clicked(); void on_pushButton_down_clicked(); void onComboBoxIndexChanged(int index); private: void displayCurrentPage(); Ui::LogQuery *ui; QTcpSocket *m_client; QVector<ParsedLog> logs; int currentPage = 1; // å½å页ç ï¼ä»1å¼å§ int totalPages = 1; // æ»é¡µæ° const int logsPerPage = 10; // æ¯é¡µæ¾ç¤ºçæ¥å¿æ°é void initializeRequestData(LogQueryReq* req);//åå§åè¯·æ±æ°æ® void updatePageLabel(); }; #endif // LOGQUERY_H Client/Ö캽/code/kunlunclient/logquery.ui
New file @@ -0,0 +1,209 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>LogQuery</class> <widget class="QMainWindow" name="LogQuery"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>600</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget"> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0"> <widget class="QGroupBox" name="groupBox"> <property name="title"> <string>æ¥è¯¢æ¡ä»¶</string> </property> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QComboBox" name="comboBox"> <item> <property name="text"> <string>æ¶é´</string> </property> </item> <item> <property name="text"> <string>æ¥å¿å 容</string> </property> </item> <item> <property name="text"> <string>æ¥å¿çº§å«</string> </property> </item> <item> <property name="text"> <string>设å¤ID</string> </property> </item> </widget> </item> <item> <widget class="QLineEdit" name="lineEdit"/> </item> </layout> </item> <item row="1" column="0"> <layout class="QHBoxLayout" name="horizontalLayout_2"> <item> <widget class="QLabel" name="label"> <property name="text"> <string>å¼å§ï¼</string> </property> </widget> </item> <item> <widget class="QDateTimeEdit" name="dateTimeEdit_start"> <property name="calendarPopup"> <bool>true</bool> </property> </widget> </item> <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QLabel" name="label_2"> <property name="text"> <string>ç»æï¼</string> </property> </widget> </item> <item> <widget class="QDateTimeEdit" name="dateTimeEdit_end"> <property name="calendarPopup"> <bool>true</bool> </property> </widget> </item> <item> <spacer name="horizontalSpacer_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> </layout> </item> <item row="2" column="0"> <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> <widget class="QPushButton" name="pushButton_search"> <property name="text"> <string>æ¥è¯¢</string> </property> </widget> </item> <item> <spacer name="horizontalSpacer_3"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QSpinBox" name="spinBox"/> </item> </layout> </item> </layout> </widget> </item> <item row="1" column="0"> <widget class="QGroupBox" name="groupBox_2"> <property name="title"> <string>æ¥è¯¢ç»æ</string> </property> <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> <widget class="QTableView" name="tableView"/> </item> </layout> </widget> </item> <item row="2" column="0"> <layout class="QHBoxLayout" name="horizontalLayout_5"> <item> <widget class="QLabel" name="label_currentPage"> <property name="text"> <string/> </property> </widget> </item> <item> <spacer name="horizontalSpacer_4"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </item> <item> <widget class="QPushButton" name="pushButton_up"> <property name="text"> <string>ä¸ä¸é¡µ</string> </property> </widget> </item> <item> <widget class="QPushButton" name="pushButton_down"> <property name="text"> <string>ä¸ä¸é¡µ</string> </property> </widget> </item> </layout> </item> </layout> </widget> <widget class="QMenuBar" name="menubar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>23</height> </rect> </property> </widget> <widget class="QStatusBar" name="statusbar"/> </widget> <resources/> <connections/> </ui> Client/Ö캽/code/kunlunclient/main.cpp
New file @@ -0,0 +1,11 @@ #include "clientmainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); ClientMainWindow w; w.show(); return a.exec(); } Client/Ö캽/code/·þÎñ¶Ë/LogSearch.cpp
New file @@ -0,0 +1,91 @@ #include "stdafx.h" #include "LogSearch.h" #include <iostream> #include "MysqlConn.h" using namespace std; LogSearch::LogSearch() { } LogSearch::~LogSearch() { } bool LogSearch::searchLogBusiness(SOCKET client, LogQueryReq * req) { //// åå§å SQL æ¥è¯¢è¯å¥ string sql = "SELECT * FROM parsed_logs WHERE"; if (*(req->startTime) && *(req->endTime)) { sql += " time_stamp BETWEEN '" + string(req->startTime) + "' AND '" + string(req->endTime) + "'"; } if (*(req->level)) { sql += " level LIKE '%" + string(req->level) + "%'"; } if (*(req->deviceId)) { sql += " device_id LIKE '%" + string(req->deviceId) + "%'"; } if ((*req->content)) { sql += " content LIKE '%" + string(req->content) + "%'"; } // æå°æå»ºç SQL è¯å¥ï¼æ¹ä¾¿è°è¯ cout << "SQL: " << sql << endl; // 设置 MySQL è¿æ¥å¹¶æ§è¡æ¥è¯¢ MysqlConn conn; vector<vector<string>> result; bool querySuccess = conn.query(sql, result); if (!querySuccess) { cout << "æ¥è¯¢å¤±è´¥" << endl; return false; } int len = sizeof(LogQueryRes) + result.size() * sizeof(ParsedLog); // å¨æè®¡ç®æ°æ®é¿åº¦ LogQueryRes* res = (LogQueryRes*)malloc(len); // 为 LogQueryRes ç»æä½åå ¶ææ§æ°ç»åé å å // åå§åç»æä½ res->head.type = LOGSEARCH_RES; res->head.len = len; res->status = (result.empty()) ? 0 : 1; // å¦æç»æä¸ºç©ºï¼è®¾ç½®ç¶æä¸º 0 // å°æ¥è¯¢ç»æå¡«å å° parsedLog æ°ç»ä¸ for (const auto& row : result) { cout << "è¡ï¼" << row.size() << endl; for (const auto& item : row) { cout << item << " "; } } cout << endl; for (size_t i = 0; i < result.size(); ++i) { const auto& row = result[i]; ParsedLog parlog; if (row.size() >= 9) { parlog.id = stoi(row[0]); strncpy(parlog.timeStamp, row[1].c_str(), sizeof(parlog.timeStamp)); strncpy(parlog.deviceId, row[2].c_str(), sizeof(parlog.deviceId)); strncpy(parlog.level, row[3].c_str(), sizeof(parlog.level)); strncpy(parlog.content, row[4].c_str(), sizeof(parlog.content)); strncpy(parlog.userId, row[5].c_str(), sizeof(parlog.userId)); strncpy(parlog.fileName, row[6].c_str(), sizeof(parlog.fileName)); parlog.problemLine = stoi(row[7]); strncpy(parlog.functionName, row[8].c_str(), sizeof(parlog.functionName)); res->parsedLog[i] = parlog; // å¡«å æ°æ® } } // åéååº cout << __FUNCTION__ << send(client, (char*)res, res->head.len, 0) << endl; // éæ¾å å free(res); // éæ¾åé çå å } Client/Ö캽/code/·þÎñ¶Ë/LogSearch.h
New file @@ -0,0 +1,17 @@ #pragma once #include "common.h" #include <WinSock2.h> #include "mysql1/include/jdbc/mysql_driver.h" #include "mysql1/include/jdbc/mysql_connection.h" #include "mysql1/include/jdbc/cppconn/prepared_statement.h" #include "mysql1/include/jdbc/cppconn/resultset.h" #include "mysql1/include/jdbc/cppconn//exception.h" #include <iostream> class LogSearch { public: LogSearch(); virtual ~LogSearch(); bool searchLogBusiness(SOCKET client, LogQueryReq* req); }; Client/Ö캽/log/Ö캽1105.docBinary files differ
Client/ÀîÏüÔö/log/ÀúÊ·²éѯ_ÀîÏüÔö_1104.docBinary files differ
Client/ÀîÏüÔö/log/ÀúÊ·²éѯ_ÀîÏüÔö_1105.docBinary files differ
Client/ÍõöÎöÎ/log/ÈÕÖ¾_ÍõöÎöÎ_1106.docBinary files differ
Client/Éê@/log/ÈÕÖ¾_Éê@_1106.docBinary files differ
Client/Ö£¿ÎÄ/log/Ö£¿ÎÄ1106.docBinary files differ
Client/ÀèºëÁØ/log/É豸¹ÜÀí_ÀèºëÁØ_1106.docBinary files differ
Client/¹¨ÆôÏé/log/ÈÕ־ģ°å_¹¨ÆôÏé_1106.docBinary files differ
Server/ÍõçûÔª/code/ConnectionPool.cpp
@@ -1,125 +1,101 @@ #include "stdafx.h" #include "ConnectionPool.h" #include <fstream> #include <iostream> #include <thread> ConnectionPool* ConnectionPool::getInstance() { static ConnectionPool connPool; return &connPool; } ConnectionPool::ConnectionPool() { // å è½½é ç½®æä»¶ if (!parseJsonFile()) { std::cout << "parseJsonFile is failed!" << std::endl; return; } for ( int i = 0 ; i < m_min_conn ; i++ ) { addConnection( ); } // å建ä¸ä¸ªçº¿ç¨ï¼å¯¹è¿æ¥æ°è¿è¡çæ§ ï¼è¿æ¥æ°ä¸è¶³å°±åç»§ç»å建 std::thread producer(&ConnectionPool::produce, this); // å¯¹è¿æ¥æ°è¿è¡çæ§ ï¼å¦ææå¤ªå¤ç©ºé²å¾çº¿ç¨ ï¼é£ä¹å°±å¯¹å ¶è¿è¡éæ¯ std::thread recycler( &ConnectionPool::recycle, this); // 线ç¨å离 producer.detach(); recycler.detach(); m_min_conn = 5; // å设æå°è¿æ¥æ°ä¸º 5 m_max_conn = 10; // å设æå¤§è¿æ¥æ°ä¸º 10 m_timeout = 1000; // åè®¾è¿æ¥è¶ æ¶æ¶é´ä¸º 1000 æ¯«ç§ max_del_time = 60000; // å设æå¤§ç©ºé²æ¶é´ä¸º 60000 æ¯«ç§ for (int i = 0; i < m_min_conn; i++) { addConnection(); } // å建ä¸ä¸ªçº¿ç¨ï¼å¯¹è¿æ¥æ°è¿è¡çæ§ ï¼è¿æ¥æ°ä¸è¶³å°±åç»§ç»å建 thread producer(&ConnectionPool::produce, this); // å¯¹è¿æ¥æ°è¿è¡çæ§ ï¼å¦ææå¤ªå¤ç©ºé²å¾çº¿ç¨ ï¼é£ä¹å°±å¯¹å ¶è¿è¡éæ¯ thread recycler(&ConnectionPool::recycle, this); // 线ç¨å离 producer.detach(); recycler.detach(); } bool ConnectionPool::parseJsonFile() { /*std::ifstream ifs("dbconf.json"); Reader rd; Value root; rd.parse(ifs, root); if ( root.isObject( ) ) { m_ip = root["ip"].asString(); m_port = root["port"].asInt(); m_userName = root["userName"].asString(); m_passwd = root["password"].asString(); m_db = root["dbName"].asString(); m_min_conn = root["minSize"].asInt(); m_max_conn = root["maxSize"].asInt(); max_del_time = root["maxDleTime"].asInt(); m_timeout = root["timeout"].asInt(); return true; }*/ return false; } void ConnectionPool::description() { std::cout << m_ip << ". " << m_userName << ". " << m_passwd << ". " << m_db << ". " << m_port << ". " << m_max_conn << ". " << m_min_conn << ". " << m_timeout << ". " << max_del_time << std::endl; } ConnectionPool::~ConnectionPool() { while (!m_connkQueue.empty()) { MysqlConn* conn = m_connkQueue.front(); m_connkQueue.pop(); delete conn; } while (!m_connkQueue.empty()) { MysqlConn* conn = m_connkQueue.front(); m_connkQueue.pop(); delete conn; } } void ConnectionPool::addConnection() { MysqlConn* conn = new MysqlConn(); if ( !conn->connect( m_ip, m_userName, m_passwd, m_db, m_port ) ) { std::cout << "ConnectionPool connect to mysql is failed!" << std::endl; delete conn; return; } conn->refreshActiveTime( ); m_connkQueue.push(conn); m_cond.notify_one(); // å¤éä¸ä¸ªçº¿ç¨ MysqlConn* conn = new MysqlConn(); if (!conn->isConnected()) { cout << "ConnectionPool connect to mysql is failed!" << endl; delete conn; return; } conn->refreshActiveTime(); m_connkQueue.push(conn); m_cond.notify_one(); // å¤éä¸ä¸ªçº¿ç¨ } void ConnectionPool::produce(){ while (true) { std::unique_lock<std::mutex> lock(m_mutex); while (m_connkQueue.size() >= m_min_conn) { // è¿æ¥éåçæ°éå¤§äºæå°çè¿æ¥æ° m_cond.wait(lock); } addConnection(); } void ConnectionPool::produce() { while (true) { unique_lock<mutex> lock(m_mutex); while (m_connkQueue.size() >= m_min_conn) { // è¿æ¥éåçæ°éå¤§äºæå°çè¿æ¥æ° m_cond.wait(lock); } addConnection(); } } // å é¤ç©ºé²è¿æ¥ void ConnectionPool::recycle() { while ( true ) { std::this_thread::sleep_for( std::chrono::milliseconds(500)); // ä¼ç 500 ms std::unique_lock<std::mutex>lock(m_mutex); while ( m_connkQueue.size() > m_min_conn ) { MysqlConn* conn = m_connkQueue.front( ); if (conn->getActiveTime() >= max_del_time) { m_connkQueue.pop(); delete conn; } else { break; } } } while (true) { this_thread::sleep_for(chrono::milliseconds(500)); // ä¼ç 500 ms unique_lock<mutex> lock(m_mutex); while (m_connkQueue.size() > m_min_conn) { MysqlConn* conn = m_connkQueue.front(); if (conn->getActiveTime() >= max_del_time) { m_connkQueue.pop(); delete conn; } else { break; } } } } std::shared_ptr<MysqlConn> ConnectionPool::getMysqlConn() { std::unique_lock<std::mutex>lock(m_mutex); while ( m_connkQueue.empty()) { // 妿çå¾ ä¸æ®µæ¶é´å,éåè¿æ¯ä¸ºç©º,è¿åä¸ä¸ª null if ( std::cv_status::timeout == m_cond.wait_for(lock, std::chrono::milliseconds(m_timeout)) ) { if( m_connkQueue.empty( ) ) return nullptr; } } std::shared_ptr<MysqlConn> connPtr(std::move(m_connkQueue.front()), [this](MysqlConn* conn) { std::unique_lock <std::mutex>lock(m_mutex) ; conn->refreshActiveTime(); m_connkQueue.push(conn); }); m_connkQueue.pop(); m_cond.notify_one(); // å¤éé»å¡çç产è 线ç¨,å¼å§ç产 return connPtr; shared_ptr<MysqlConn> ConnectionPool::getMysqlConn() { unique_lock<mutex> lock(m_mutex); while (m_connkQueue.empty()) { // 妿çå¾ ä¸æ®µæ¶é´å,éåè¿æ¯ä¸ºç©º,è¿åä¸ä¸ª null if (cv_status::timeout == m_cond.wait_for(lock, chrono::milliseconds(m_timeout))) { if (m_connkQueue.empty()) return nullptr; } } shared_ptr<MysqlConn> connPtr(move(m_connkQueue.front()), [this](MysqlConn* conn) { unique_lock<mutex> lock(m_mutex); conn->refreshActiveTime(); m_connkQueue.push(conn); }); m_connkQueue.pop(); m_cond.notify_one(); // å¤éé»å¡çç产è 线ç¨,å¼å§ç产 return connPtr; } void ConnectionPool::description() { cout << m_ip << ". " << m_userName << ". " << m_passwd << ". " << m_db << ". " << m_port << ". " << m_max_conn << ". " << m_min_conn << ". " << m_timeout << ". " << max_del_time << endl; } ConnectionPool* ConnectionPool::getInstance() { static ConnectionPool connPool; return &connPool; } Server/ÍõçûÔª/code/ConnectionPool.h
@@ -1,50 +1,44 @@ #pragma once #include <queue> #include <mutex> #include <condition_variable> //#include <json/json.h> #include "MysqlConn.h" //using namespace Json; class ConnectionPool { public: static ConnectionPool* getInstance( ); static ConnectionPool* getInstance(); std::shared_ptr<MysqlConn> getMysqlConn(); // 仿°æ®åºè¿æ¥æ± è·åè¿æ¥ shared_ptr<MysqlConn> getMysqlConn(); // 仿°æ®åºè¿æ¥æ± è·åè¿æ¥ ConnectionPool(const ConnectionPool& other) = delete; ConnectionPool& operator = (const ConnectionPool & other ) = delete; ~ConnectionPool(); ConnectionPool(const ConnectionPool& other) = delete; ConnectionPool& operator=(const ConnectionPool& other) = delete; void description(); ~ConnectionPool(); void description(); protected: ConnectionPool( ); // æé 彿° ConnectionPool(); // æé 彿° private: bool parseJsonFile(); // è§£æé ç½® // ä¸åéè¦è§£æé ç½®æä»¶ç彿° // bool parseJsonFile(); // è§£æé ç½® void produce(); void recycle(); void addConnection(); // å¢å è¿æ¥æ° void produce(); void recycle(); void addConnection(); // å¢å è¿æ¥æ° std::string m_ip; std::string m_userName; std::string m_passwd; std::string m_db; unsigned short m_port; // åæ»çæ°æ®åºè¿æ¥åæ° string m_ip = "127.0.0.1"; string m_userName = "root"; string m_passwd = "123456"; string m_db = "mayi_kunlun"; unsigned short m_port = 3306; int m_max_conn; int m_min_conn; int m_max_conn; int m_min_conn; int m_timeout; // è¿æ¥è¶ æ¶æ¶é´ int max_del_time; // æå¤§å 餿¶é´( è¿æ¥ç©ºé²æ¶é´è¶ è¿è¿ä¸ª,å°±ç»å½åè¿æ¥å ³é ) std::queue<MysqlConn*>m_connkQueue ; // è¿æ¥éå std::mutex m_mutex; // äºæ¥é std::condition_variable m_cond; // æ¡ä»¶åé int m_timeout; // è¿æ¥è¶ æ¶æ¶é´ int max_del_time; // æå¤§å 餿¶é´( è¿æ¥ç©ºé²æ¶é´è¶ è¿è¿ä¸ª,å°±ç»å½åè¿æ¥å ³é ) queue<MysqlConn*> m_connkQueue; // è¿æ¥éå mutex m_mutex; // äºæ¥é condition_variable m_cond; // æ¡ä»¶åé }; Server/ÍõçûÔª/code/MysqlConn.cpp
@@ -1,37 +1,60 @@ #include "stdafx.h" #include "MysqlConn.h" #include <regex> // åå§åè¿æ¥ // åå§åè¿æ¥ MysqlConn::MysqlConn() { mysql_ = mysql_init(mysql_); // 设置å符é if (mysql_) mysql_set_character_set(mysql_, "gbk"); } // è¿æ¥æ°æ®åº bool MysqlConn::connect(std::string ip, std::string userName, std::string passwd, std::string db, int port) { mysql_ = mysql_real_connect(mysql_, ip.c_str(), userName.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0); if (!mysql_) { return false; m_mysql = mysql_init(nullptr); if (!m_mysql) { cout << "Failed to initialize MySQL." << endl; return; } return true; // 设置å符é if (m_mysql) mysql_set_character_set(m_mysql, "gbk"); // 使ç¨åæ»çåæ°è¿æ¥æ°æ®åº m_mysql = mysql_real_connect(m_mysql, "127.0.0.1", "root", "123456", "mayi_kunlun", 3306, nullptr, 0); if (!m_mysql) { cout << "MysqlConn connect to mysql is failed!" << endl; // ç¡®ä¿å¨è¿æ¥å¤±è´¥æ¶æ£ç¡®æ¸ çèµæº mysql_close(m_mysql); m_mysql = nullptr; } // åå§å row_ å res_ m_row = nullptr; m_res = nullptr; } bool MysqlConn::isConnected() { return m_mysql != nullptr; } // è¿æ¥æ°æ®åº //bool MysqlConn::connect() { // string ip = "127.0.0.1"; // string userName = "root"; // string passwd = "123456"; // string db = "mayi_kunlun"; // int port = 3306; // m_mysql = mysql_real_connect(mysql_, ip.c_str(), userName.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0); // if (!m_mysql) { // return false; // } // return true; //} // éæ¾èµæº MysqlConn::~MysqlConn() { if (mysql_) { mysql_close(mysql_); mysql_ = nullptr; if (m_mysql) { mysql_close(m_mysql); m_mysql = nullptr; } freeRes(); } // æ´æ°æ°æ® bool MysqlConn::update(std::string sql) { bool MysqlConn::update(string sql) { // åæ°åæ¥è¯¢ä¼ååçå®å ¨æ£æ¥ MYSQL_STMT* stmt = mysql_stmt_init(mysql_); MYSQL_STMT* stmt = mysql_stmt_init(m_mysql); if (!stmt) { return false; } @@ -53,11 +76,36 @@ return true; } bool MysqlConn::query(string sql, vector<vector<string>>& result) { freeRes(); int ret = mysql_query(m_mysql, sql.c_str()); if (ret != 0) { fprintf(stderr, "Query failed: %s\n", mysql_error(m_mysql)); return false; } // è·åæ¥è¯¢ç»æ m_res = mysql_store_result(m_mysql); if (!m_res) return false; //å°ç»æé转å°äºç»´æ°ç»resultéé¢ //int col_cnt = m_mysql->field_count; int col_cnt = mysql_field_count(m_mysql); cout << col_cnt << endl; while (m_row = mysql_fetch_row(m_res)) { vector<string> tmp; for (int i = 0; i < col_cnt; i++) { tmp.push_back(m_row[i]); } result.push_back(tmp); } return true; } // æ¥è¯¢æ°æ®åº bool MysqlConn::query(std::string sql) { bool MysqlConn::query(string sql) { freeRes(); // åæ°åæ¥è¯¢ä¼ååçå®å ¨æ£æ¥ MYSQL_STMT* stmt = mysql_stmt_init(mysql_); MYSQL_STMT* stmt = mysql_stmt_init(m_mysql); if (!stmt) { return false; } @@ -75,8 +123,8 @@ mysql_stmt_close(stmt); return false; } res_ = mysql_stmt_result_metadata(stmt); if (!res_) { m_res = mysql_stmt_result_metadata(stmt); if (!m_row) { mysql_stmt_close(stmt); return false; } @@ -86,59 +134,60 @@ // å¾å°ç»æé bool MysqlConn::getResult() { if (res_) { row_ = mysql_fetch_row(res_); if (row_) return true; if (m_row) { m_row = mysql_fetch_row(m_res); if (m_row) return true; } return false; } // è·åç»æéçåæ®µ std::string MysqlConn::getField(int index) { int cols = mysql_num_fields(res_); if (index >= cols || index < 0) return std::string(""); string MysqlConn::getField(int index) { int cols = mysql_num_fields(m_res); if (!m_res || index >= cols || index < 0) return string(""); char* value = row_[index]; unsigned long len = mysql_fetch_lengths(res_)[index]; return std::string(value, len); char* value = m_row[index]; // ä½¿ç¨æ¾å¼ç±»åè½¬æ¢ unsigned long len = static_cast<unsigned long>(mysql_fetch_lengths(m_res)[index]); return string(value, len); } // äºå¡æä½ bool MysqlConn::transaction() { return mysql_autocommit(mysql_, false); return mysql_autocommit(m_mysql, false); } // æäº¤äºå¡ bool MysqlConn::commit() { return mysql_commit(mysql_); return mysql_commit(m_mysql); } // äºå¡åæ» bool MysqlConn::rollback() { return mysql_rollback(mysql_); return mysql_rollback(m_mysql); } void MysqlConn::refreshActiveTime() { activeTime_ = std::chrono::steady_clock::now(); m_activeTime = chrono::steady_clock::now(); } long long MysqlConn::getActiveTime() { // 纳米 std::chrono::nanoseconds nased = std::chrono::steady_clock::now() - activeTime_; chrono::nanoseconds nased = chrono::steady_clock::now() - m_activeTime; // è½¬æ¢ææ¯«ç±³ std::chrono::microseconds millsed = std::chrono::duration_cast<std::chrono::microseconds>(nased); chrono::microseconds millsed = chrono::duration_cast<chrono::microseconds>(nased); return millsed.count(); // å¤å°æ¯«ç§ } // å®å ¨æ ¡éªå®ç°ï¼è¿éç®åä½¿ç¨æ£å表达å¼å¤ææ¯å¦å å«å±é©å符 bool MysqlConn::isSqlSafe(const std::string& sql) { std::regex dangerousPattern(".*(['\";\\-+=]).*"); return!std::regex_search(sql, dangerousPattern); bool MysqlConn::isSqlSafe(const string& sql) { regex dangerousPattern(".*(['\";\\-+=]).*"); return!regex_search(sql, dangerousPattern); } void MysqlConn::freeRes() { if (res_) { mysql_free_result(res_); res_ = nullptr; if (m_res) { mysql_free_result(m_res); m_res = nullptr; } } Server/ÍõçûÔª/code/MysqlConn.h
@@ -2,48 +2,53 @@ #include <string> #include <WinSock2.h> //#include <mysql.h> #include "MySQL/include/mysql.h" #include <string.h> #include <chrono> #include <iostream> #include <memory> #include <queue> #include <mutex> #include <condition_variable> #include <regex> #pragma comment(lib,"./MySQL/lib/libmysql.lib") using namespace std; class MysqlConn { public: // åå§åè¿æ¥ MysqlConn(); // è¿æ¥æ°æ®åº bool connect(std::string ip, std::string userName, std::string passwd, std::string db , int port = 3306); //bool connect(); // éæ¾èµæº ~MysqlConn( ); ~MysqlConn(); // æ´æ°æ°æ®åº ( insert update delete ) bool update(std::string sql); bool update(string sql); // æ¥è¯¢æ°æ®åº bool query(std::string sql); bool query(string sql, vector<vector<string>>& result); bool query(string sql); // å¾å°ç»æé bool getResult(); // è·åç»æéçåæ®µ std::string getField(int index); string getField(int index); // äºå¡æä½ bool transaction(); // æäº¤äºå¡ bool commit( ); bool commit(); // äºå¡åæ» bool rollback(); void refreshActiveTime( ); // å·æ°æ´»è·æ¶é´ void refreshActiveTime(); // å·æ°æ´»è·æ¶é´ long long getActiveTime(); // è·åå½åæ´»è·çæ¶é´é´é // å®å ¨æ ¡éªæ¥å£ bool isSqlSafe(const std::string& sql); private: bool isSqlSafe(const string& sql); bool isConnected(); protected: void freeRes(); MYSQL* mysql_ = NULL ; MYSQL_RES* res_ = NULL; MYSQL_ROW row_ = nullptr; std::chrono::steady_clock::time_point activeTime_; MYSQL* m_mysql; MYSQL_RES* m_res; MYSQL_ROW m_row; chrono::steady_clock::time_point m_activeTime; }; Server/ÍõçûÔª/log/ÈÕ־ģ°å_ÍõçûÔª_1101.docBinary files differ
Server/ÍõçûÔª/log/ÈÕ־ģ°å_ÍõçûÔª_1103 .docBinary files differ
Server/ÍõçûÔª/log/ÈÕ־ģ°å_ÍõçûÔª_1104.docBinary files differ
Server/ÍõçûÔª/log/ÈÕ־ģ°å_ÍõçûÔª_1105.docBinary files differ
Server/ÍõçûÔª/log/ÈÕ־ģ°å_ÍõçûÔª_1106.docBinary files differ
Server/³Â³þµ¤/log/ÈÕÖ¾_³Â³þµ¤_1105.docBinary files differ
Server/ÂíÓ庼/log/20241106À¥ÂØÈÕ±¨.docBinary files differ
Server/ÂíÓ庼/log/ÈÕÖ¾_ÂíÓ庼_20241106.docBinary files differ
common.h
@@ -50,7 +50,11 @@ //è¦æ¥ç®¡ç WARNING_REQ, // è¦æ¥è¯·æ± WARNING_RES, // è¦æ¥ååº WARNING_RES, // è¦æ¥ååº DATA_REQ, // æ°æ®è¯·æ± DATA_RES, // æ°æ®ååº THRESHOLD_REQ, //éå¼è¯·æ± THRESHOLD_RES, //éå¼ååº //ç产计å管ç @@ -351,6 +355,7 @@ { Head head; int status; DevicesInfo info[0]; QDRes() { head.type = QD_RES; head.len = sizeof(QDRes); @@ -574,51 +579,99 @@ }; //è¦æ¥ç®¡ç // è¦æ¥è¯·æ±ç»æä½ struct warningInfo { char device_name[32];//设å¤åç§° char des[32];//è¦æ¥æè¿° char time[32];//è¦æ¥æ¶é´ float warningdata;//è¦æ¥æ°æ® char type[16];//è¦æ¥ç±»å char status[16];//è¦æ¥ç¶æ }; struct dataInfo { char device_name[32]; char type[16];//ç¯å¢æ°æ®ç±»å float data; char time[32];//ä¸ä¼ æ°æ®æ¶é´ }; struct threshInfo { char device_name[32]; char type[16];//ç¯å¢ç±»å float min;//æå°éå¼ float max;//æå¤§éå¼ char time[32];//éå¼ä¿®æ¹æ¶é´ }; //è¦æ¥è¯·æ±ç»æä½ struct WarningReq { Head head; Head head; warningInfo info[0]; float oxygenWarning; float carbonWarning; float tempWarning; float humidityWarning; WarningReq() { head.type = WARNING_REQ; head.len = sizeof(WarningReq); } }; WarningReq() { head.type = WARNING_REQ; head.len = sizeof(WarningReq); } //æ°æ®è¯·æ±ç»æä½ struct DataReq { Head head; dataInfo Info[0]; DataReq() { head.type = DATA_REQ; head.len = sizeof(DataReq); } }; //éå¼è¯·æ±ç»æä½ struct ThresholdReq { Head head; threshInfo threInfo[0]; ThresholdReq() { head.type = THRESHOLD_REQ; head.len = sizeof(ThresholdReq); } }; struct DataThreshold { //éå¼ float oxygenThreshold; float carbonThreshold; float tempThreshold; float humidityThreshold; }; struct Data { float oxygen; // æ°§æ°æµåº¦ float carbon; // 䏿°§å碳æµåº¦ float temp; // 温度 float humidity; // 湿度 }; // è¦æ¥ååºç»æä½ //è¦æ¥ååºç»æä½ struct WarningRes { Head head; int status; // ååºç¶æï¼æ¯å¦ 0 表示æåï¼1 表示失败çï¼ const char* message; // ååºæ¶æ¯æè¿° Head head; int status;// ååºç¶æ warningInfo warninginfo[0]; WarningRes(int stat, const char* msg) { head.type = WARNING_RES; head.len = sizeof(WarningRes); status = stat; message = msg; } WarningRes() { head.type = WARNING_RES; head.len = sizeof(WarningRes); } }; struct DataRes { Head head; int status;// ååºç¶æ dataInfo datainfo[0]; DataRes() { head.type = DATA_RES; head.len = sizeof(DataRes); } }; struct ThresholdRes { Head head; int status;// ååºç¶æ threshInfo threInfo[0]; ThresholdRes() { head.type = THRESHOLD_RES; head.len = sizeof(ThresholdRes); } }; //ç产计å管ç struct PdplanInfo { kunlun.sql
@@ -22,14 +22,17 @@ -- å¯¼åº è¡¨ mayi_kunlun.data_info ç»æ CREATE TABLE IF NOT EXISTS `data_info` ( `id` int NOT NULL AUTO_INCREMENT, `device_id` int DEFAULT NULL, `type` varchar(50) DEFAULT NULL, `device_name` varchar(50) DEFAULT NULL, `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `data` float DEFAULT NULL, `time` datetime DEFAULT NULL, `time` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='æ°æ®'; ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='æ°æ®'; -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.data_info çæ°æ®ï¼~0 rows (大约) -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.data_info çæ°æ®ï¼~2 rows (大约) INSERT INTO `data_info` (`id`, `device_name`, `type`, `data`, `time`) VALUES (1, 'å', '使¯', 1, '1'), (2, 'ç', ' ç', 2, '2'); -- å¯¼åº è¡¨ mayi_kunlun.devices_management_info ç»æ CREATE TABLE IF NOT EXISTS `devices_management_info` ( @@ -47,13 +50,15 @@ `mark_name` varchar(50) DEFAULT NULL, `mark_time` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.devices_management_info çæ°æ®ï¼~3 rows (大约) -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.devices_management_info çæ°æ®ï¼~5 rows (大约) INSERT INTO `devices_management_info` (`id`, `devices_name`, `devices_type`, `devices_serial_number`, `devices_status`, `area`, `longitude`, `latitude`, `purchasing_time`, `install_time`, `manufacturer`, `mark_name`, `mark_time`) VALUES (2, '12', '3', '2', '2', '3', 4, 6, '6', '3', '3', NULL, NULL), (3, '3', '1', '3', '3', '1', 2, 5, '6', '3', '6', NULL, NULL), (4, '10', '1', '3', '3', '1', 2, 5, '9', '3', '6', NULL, NULL); (6, '6', '6', '6', '6', '8', 8, 8, '8', '8', '8', NULL, NULL), (7, '1', '4', '4', '2', '6', 6, 9, '9', '2', '2', NULL, NULL), (8, '1', '2', '3', '2', '3', 2, 2, '3', '3', '1', NULL, NULL), (9, '10', '2', '3', '2', '3', 2, 2, '3', '3', '1', NULL, NULL), (10, '6', '5', '5', '5', '5', 5, 5, '5', '5', '5', NULL, NULL); -- å¯¼åº è¡¨ mayi_kunlun.month_info ç»æ CREATE TABLE IF NOT EXISTS `month_info` ( @@ -70,7 +75,7 @@ -- å¯¼åº è¡¨ mayi_kunlun.parsed_logs ç»æ CREATE TABLE IF NOT EXISTS `parsed_logs` ( `id` int NOT NULL AUTO_INCREMENT, `time_stamp` timestamp NOT NULL DEFAULT (0), `time_stamp` varchar(50) NOT NULL DEFAULT '0', `device_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL, `level` varchar(16) NOT NULL, `content` varchar(256) NOT NULL, @@ -79,9 +84,12 @@ `problem_line` int NOT NULL, `function_name` varchar(64) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.parsed_logs çæ°æ®ï¼~0 rows (大约) -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.parsed_logs çæ°æ®ï¼~2 rows (大约) INSERT INTO `parsed_logs` (`id`, `time_stamp`, `device_id`, `level`, `content`, `user_id`, `file_name`, `problem_line`, `function_name`) VALUES (1, '2024-05-10 10:05:06', '5', '5', '5', '5', '5', 7, '5'), (2, '2020-05-01 11:05:02', '2', '3', '6', '3', '1', 2, '3'); -- å¯¼åº è¡¨ mayi_kunlun.production_plan ç»æ CREATE TABLE IF NOT EXISTS `production_plan` ( @@ -117,24 +125,14 @@ -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.role_info çæ°æ®ï¼~0 rows (大约) -- å¯¼åº è¡¨ mayi_kunlun.student ç»æ CREATE TABLE IF NOT EXISTS `student` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `age` int DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.student çæ°æ®ï¼~0 rows (大约) -- å¯¼åº è¡¨ mayi_kunlun.threshold_info ç»æ CREATE TABLE IF NOT EXISTS `threshold_info` ( `id` int NOT NULL AUTO_INCREMENT, `device_id` int DEFAULT NULL, `min_threshold` float DEFAULT NULL, `max_threshold` float DEFAULT NULL, `device_name` varchar(50) DEFAULT NULL, `type` varchar(50) DEFAULT NULL, `time` datetime DEFAULT NULL, `min` float DEFAULT NULL, `max` float DEFAULT NULL, `time` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='éå¼'; @@ -184,27 +182,27 @@ `version_description` char(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', `version_creatime` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.version_info çæ°æ®ï¼~2 rows (大约) -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.version_info çæ°æ®ï¼~3 rows (大约) INSERT INTO `version_info` (`id`, `version_id`, `version_id_old`, `version_description`, `version_creatime`) VALUES (1, '1.3', '1.3', '225', '2024-10-29 15:47:00'), (2, '1.4', '1.4', '226', '2024-10-30 02:47:30'), (3, '1.5', '1.5', '227', '2024-11-01 15:48:18'); -- å¯¼åº è¡¨ mayi_kunlun.warningdata_info ç»æ CREATE TABLE IF NOT EXISTS `warningdata_info` ( -- å¯¼åº è¡¨ mayi_kunlun.warning_info ç»æ CREATE TABLE IF NOT EXISTS `warning_info` ( `id` int NOT NULL AUTO_INCREMENT, `device_id` int NOT NULL, `device_name` varchar(50) NOT NULL DEFAULT '', `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `des` varchar(50) NOT NULL, `time` datetime NOT NULL, `warningdata` float NOT NULL, `type` varchar(50) NOT NULL, `warning_data` float NOT NULL, `time` varchar(50) NOT NULL DEFAULT '', `status` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='è¦æ¥æ°æ®'; -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.warningdata_info çæ°æ®ï¼~0 rows (大约) -- æ£å¨å¯¼åºè¡¨ mayi_kunlun.warning_info çæ°æ®ï¼~0 rows (大约) /*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; ~$±í.docxBinary files differ
±í.docxBinary files differ