Просмотр исходного кода

75服务器推送代码(新增db线程+定时推送(每6个小时推送一次))

james 1 год назад
Родитель
Сommit
729d50390d
3 измененных файлов с 242 добавлено и 224 удалено
  1. 236 214
      ytServiceCore/core.cpp
  2. 4 0
      ytServiceCore/core.h
  3. 2 10
      ytServiceCore/ytServiceCore.pro

+ 236 - 214
ytServiceCore/core.cpp

@@ -43,6 +43,9 @@ Core::Core(QObject *parent) :
     sqlList.clear();
     sqlList2.clear();
     sqlList3.clear();
+    hour = 25;
+    hour1 = 25;
+    minute = 255;
     logThread = new LogThread(this);
     logThread->start();
     ytShm->updatetime[CORE_MAIN] = time(static_cast<time_t *>(nullptr));
@@ -59,6 +62,10 @@ Core::Core(QObject *parent) :
     if(db.open()){
         db_init();
     }
+
+    dbThread = new DataBaseThread(this);
+    dbThread->start();
+
     timer = new QTimer(this);
     netAccessManager = new QNetworkAccessManager(this);
     connect(timer,SIGNAL(timeout()),this,SLOT(time_out()));
@@ -68,6 +75,11 @@ Core::Core(QObject *parent) :
     time_out();
 }
 
+Core::~Core(){
+    logThread->stop();
+    dbThread->stop();
+}
+
 void Core::appendLog(QString log){
     logThread->appendData(log);
 }
@@ -105,10 +117,10 @@ void Core::finishedSlot(QNetworkReply *reply)
         if(reply->error()==QNetworkReply::NoError){
             ypCount=0;
             QString bak_info = QString::fromUtf8(reply->readAll());
-            sqlList2.append(QString::fromUtf8("update `ypsync_t_rec` set `send`=1, `reply_str`='%1', `reply_time`='%2' where `uuid`='%3'")
+            dbThread->appendSql(QString::fromUtf8("update `ypsync_t_rec` set `send`=1, `reply_str`='%1', `reply_time`='%2' where `uuid`='%3'")
                            .arg(bak_info).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
         }else
-            sqlList2.append(QString::fromUtf8("update `ypsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
+            dbThread->appendSql(QString::fromUtf8("update `ypsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
                            .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
         ypSyncdataList.removeFirst();
     }
@@ -122,11 +134,11 @@ void Core::finishedSlot9(QNetworkReply *reply)
         XfzdSyncRep rep = XfzdSyncdataLiet.first();
         if(reply->error()==QNetworkReply::NoError){
             QString bak_info = QString::fromUtf8(reply->readAll());
-            sqlList2.append(QString::fromUtf8("update `xfzdsync_t_rec` set `send`=1, `reply_str`='%1', `reply_time`='%2' where `uuid`='%3'")
+            dbThread->appendSql(QString::fromUtf8("update `xfzdsync_t_rec` set `send`=1, `reply_str`='%1', `reply_time`='%2' where `uuid`='%3'")
                            .arg(bak_info).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
 //            printf("%s\n",bak_info.toUtf8().data());
         }else
-            sqlList2.append(QString::fromUtf8("update `xfzdsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
+            dbThread->appendSql(QString::fromUtf8("update `xfzdsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
                            .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
         XfzdSyncdataLiet.removeFirst();
     }
@@ -138,7 +150,7 @@ void Core::reply_timeout()
 {
     if(ypSyncdataList.length()>0){
         SyncRep rep = ypSyncdataList.first();
-        sqlList2.append(QString::fromUtf8("update `ypsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
+        dbThread->appendSql(QString::fromUtf8("update `ypsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
                        .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
         ypSyncdataList.removeFirst();
     }
@@ -149,7 +161,7 @@ void Core::reply_timeout9()
 {
     if(XfzdSyncdataLiet.length()>0){
         XfzdSyncRep rep = XfzdSyncdataLiet.first();
-        sqlList2.append(QString::fromUtf8("update `xfzdsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
+        dbThread->appendSql(QString::fromUtf8("update `xfzdsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
                        .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
         XfzdSyncdataLiet.removeFirst();
     }
@@ -286,192 +298,202 @@ void Core::time_out()
         }
     }
 
-    if((tmp_time-xfzdworktime)>44000){
-        xfzdworktime=tmp_time;
-        for(int i=0;i<XfzdDevList.length();i++){
-            time_t tmp_time = time(static_cast<time_t *>(nullptr));
-            ytShm->updatetime[CORE_MAIN] = tmp_time;
-                    qry.clear();
-                    XfzdSyncDev xfzddev = XfzdDevList.at(i);
-                    time_t myt=time(NULL);
-                    QString jdata = "";
-                    QString sql = QString("select point_code, point_data, content, data_time from sp_owner_status where device_id=%1").arg(xfzddev.DeviceCode);
-                    jdata.append(QString("\"descript\":\"%1\"").arg(xfzddev.Descript));
-                    jdata.append(QString(",\"deviceName\":\"%1\"").arg(xfzddev.DeviceName));
-                    if(xfzddev.devCategory==6){
-                        jdata.append(QString(",\"deviceNo\":\"%1\"").arg(xfzddev.DeviceCode+xfzddev.Port));
-                    }else{
-                        jdata.append(QString(",\"deviceNo\":\"%1\"").arg(xfzddev.DeviceCode));
-                    }
-                    jdata.append(QString(",\"deviceType\":\"%1\"").arg(xfzddev.DeviceType));
-                    jdata.append(QString(",\"deviceTypeName\":\"%1\"").arg(xfzddev.DeviceTypeName));
-                    jdata.append(QString(",\"openProjectId\":\"%1\"").arg(xfzddev.OpenProjectId));
-                    jdata.append(QString(",\"floor\":\"%1\"").arg(xfzddev.DeviceFloor));
-                    qry = mdb.exec(sql);
-
-                    if(xfzddev.devCategory==2){
-                        while(qry.next()){
-                            if(qry.value(0).toInt()==4){
-                                jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
-                                jdata.append(QString(",\"pressure\":\"%1\"").arg(qry.value(1).toString()));
-                            }else if(qry.value(0).toInt()==1){
-                                if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))==0){
-                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
-                                }else if(qry.value(2).toString().indexOf(QString::fromUtf8("低压"))==0){
-                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(1));
-                                }else if(qry.value(2).toString().indexOf(QString::fromUtf8("高压"))==0){
-                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(2));
-                                }
-                            }
-                        }
-                        if(xfzddev.DeviceType==302){
-                            XfzdSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                        }else if(xfzddev.DeviceType==301){
-                            XfzdSyncData(1,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                        }else if(xfzddev.DeviceType==305){
-                            XfzdSyncData(13,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                        }else if(xfzddev.DeviceType==304){
-                            XfzdSyncData(14,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                        }
-                    }else if(xfzddev.devCategory==5){
-                        while(qry.next()){
-                            if(qry.value(0).toInt()==4){
-                                jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
-                                jdata.append(QString(",\"level\":\"%1\"").arg(qry.value(1).toString()));
-                            }else if(qry.value(0).toInt()==1){
-                                if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))==0){
-                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
-                                }else if(qry.value(2).toString().indexOf(QString::fromUtf8("低液位"))==0){
-                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(1));
-                                }else if(qry.value(2).toString().indexOf(QString::fromUtf8("高液位"))==0){
-                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(2));
-                                }
-                            }
-                        }
-                        if(xfzddev.DeviceType==402){
-                            XfzdSyncData(2,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+//    if((tmp_time-xfzdworktime)>44000){
+//        xfzdworktime=tmp_time;
+    hour = QDateTime::currentDateTime().time().hour();
+    minute = QDateTime::currentDateTime().time().minute();
+    if(hour1 != hour){
+        hour1 = hour;
+
+        if(hour%6 == 0){
+
+            for(int i=0;i<XfzdDevList.length();i++){
+                time_t tmp_time = time(static_cast<time_t *>(nullptr));
+                ytShm->updatetime[CORE_MAIN] = tmp_time;
+                        qry.clear();
+                        XfzdSyncDev xfzddev = XfzdDevList.at(i);
+                        time_t myt=time(NULL);
+                        QString jdata = "";
+                        QString sql = QString("select point_code, point_data, content, data_time from sp_owner_status where device_id=%1").arg(xfzddev.DeviceCode);
+                        jdata.append(QString("\"descript\":\"%1\"").arg(xfzddev.Descript));
+                        jdata.append(QString(",\"deviceName\":\"%1\"").arg(xfzddev.DeviceName));
+                        if(xfzddev.devCategory==6){
+                            jdata.append(QString(",\"deviceNo\":\"%1\"").arg(xfzddev.DeviceCode+xfzddev.Port));
                         }else{
-                            XfzdSyncData(3,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                            jdata.append(QString(",\"deviceNo\":\"%1\"").arg(xfzddev.DeviceCode));
                         }
-                    }else if(xfzddev.devCategory==6){
-                        if(xfzddev.DeviceType==258||xfzddev.DeviceType==256||xfzddev.DeviceType==452){
-                            QList<CnPno> pnoList = getPnoValue(xfzddev.Data);
-                            QJsonArray jajsonArray;
-                            for(int i=0;i<pnoList.length();i++){
-                                if(pnoList.at(i).Pno==-1){
-                                    if(pnoList.at(i).PName.compare("powerStatus")==0){
-                                        jdata.append(QString(",\"powerState\":\"%1\"").arg(0));
-                                    }else if(pnoList.at(i).PName.compare("runStatus")==0){
-                                        jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(0));
-                                    }else if(pnoList.at(i).PName.compare("startStatus")==0){
-                                        jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(0));
-                                    }else if(pnoList.at(i).PName.compare("faultStatus")==0){
-                                        jdata.append(QString(",\"faultStatus\":\"%1\"").arg(0));
-                                    }
+                        jdata.append(QString(",\"deviceType\":\"%1\"").arg(xfzddev.DeviceType));
+                        jdata.append(QString(",\"deviceTypeName\":\"%1\"").arg(xfzddev.DeviceTypeName));
+                        jdata.append(QString(",\"openProjectId\":\"%1\"").arg(xfzddev.OpenProjectId));
+                        jdata.append(QString(",\"floor\":\"%1\"").arg(xfzddev.DeviceFloor));
+                        qry = mdb.exec(sql);
+
+                        if(xfzddev.devCategory==2){
+                            while(qry.next()){
+                                if(qry.value(0).toInt()==4){
                                     jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
+                                    jdata.append(QString(",\"pressure\":\"%1\"").arg(qry.value(1).toString()));
+                                }else if(qry.value(0).toInt()==1){
+                                    if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))==0){
+                                        jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
+                                    }else if(qry.value(2).toString().indexOf(QString::fromUtf8("低压"))==0){
+                                        jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(1));
+                                    }else if(qry.value(2).toString().indexOf(QString::fromUtf8("高压"))==0){
+                                        jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(2));
+                                    }
                                 }
                             }
-                            QString device_code;
+                            if(xfzddev.DeviceType==302){
+                                XfzdSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                            }else if(xfzddev.DeviceType==301){
+                                XfzdSyncData(1,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                            }else if(xfzddev.DeviceType==305){
+                                XfzdSyncData(13,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                            }else if(xfzddev.DeviceType==304){
+                                XfzdSyncData(14,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                            }
+                        }else if(xfzddev.devCategory==5){
                             while(qry.next()){
-                                for(int i=0;i<pnoList.length();i++){
-                                    if(pnoList.at(i).Pno==qry.value(0).toInt()&&qry.value(0).toInt()!=0){
-                                        if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("自动"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("停止"))==0){
-                                            if(pnoList.at(i).PName.compare("powerStatus")==0){
-                                                jdata.append(QString(",\"powerState\":\"%1\"").arg(0));
-                                            }else if(pnoList.at(i).PName.compare("runStatus")==0){
-                                                jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(0));
-                                            }else if(pnoList.at(i).PName.compare("startStatus")==0){
-                                                jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(0));
-                                            }else if(pnoList.at(i).PName.compare("faultStatus")==0){
-                                                jdata.append(QString(",\"faultStatus\":\"%1\"").arg(0));
-                                            }
-                                        }else if(qry.value(2).toString().indexOf(QString::fromUtf8("关闭"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("手动"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("运行"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("故障"))==0){
-                                            if(pnoList.at(i).PName.compare("powerStatus")==0){
-                                                jdata.append(QString(",\"powerState\":\"%1\"").arg(1));
-                                            }else if(pnoList.at(i).PName.compare("runStatus")==0){
-                                                jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(1));
-                                            }else if(pnoList.at(i).PName.compare("startStatus")==0){
-                                                jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(1));
-                                            }else if(pnoList.at(i).PName.compare("faultStatus")==0){
-                                                jdata.append(QString(",\"faultStatus\":\"%1\"").arg(1));
-                                            }
-                                        }else{
-                                            if(pnoList.at(i).PName.compare("powerStatus")==0){
-                                                jdata.append(QString(",\"powerState\":\"%1\"").arg(0));
-                                            }else if(pnoList.at(i).PName.compare("runStatus")==0){
-                                                jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(0));
-                                            }else if(pnoList.at(i).PName.compare("startStatus")==0){
-                                                jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(0));
-                                            }else if(pnoList.at(i).PName.compare("faultStatus")==0){
-                                                jdata.append(QString(",\"faultStatus\":\"%1\"").arg(0));
-                                            }
-                                        }
-                                        break;
+                                if(qry.value(0).toInt()==4){
+                                    jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
+                                    jdata.append(QString(",\"level\":\"%1\"").arg(qry.value(1).toString()));
+                                }else if(qry.value(0).toInt()==1){
+                                    if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))==0){
+                                        jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
+                                    }else if(qry.value(2).toString().indexOf(QString::fromUtf8("低液位"))==0){
+                                        jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(1));
+                                    }else if(qry.value(2).toString().indexOf(QString::fromUtf8("高液位"))==0){
+                                        jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(2));
                                     }
                                 }
                             }
-                            if(xfzddev.DeviceType==258){
-                                XfzdSyncData(4,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                            }else if(xfzddev.DeviceType==256){
-                                XfzdSyncData(5,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                            }else if(xfzddev.DeviceType==452){
-                                XfzdSyncData(12,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                            if(xfzddev.DeviceType==402){
+                                XfzdSyncData(2,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                            }else{
+                                XfzdSyncData(3,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
                             }
-                        }else{
-                            QList<CnPno> pnoList = getPnoValue(xfzddev.Data);
-                            jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
-                            while(qry.next()){
+                        }else if(xfzddev.devCategory==6){
+                            if(xfzddev.DeviceType==258||xfzddev.DeviceType==256||xfzddev.DeviceType==452){
+                                QList<CnPno> pnoList = getPnoValue(xfzddev.Data);
+                                QJsonArray jajsonArray;
                                 for(int i=0;i<pnoList.length();i++){
-                                    if(pnoList.at(i).PName.compare("value")==0){
+                                    if(pnoList.at(i).Pno==-1){
+                                        if(pnoList.at(i).PName.compare("powerStatus")==0){
+                                            jdata.append(QString(",\"powerState\":\"%1\"").arg(0));
+                                        }else if(pnoList.at(i).PName.compare("runStatus")==0){
+                                            jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(0));
+                                        }else if(pnoList.at(i).PName.compare("startStatus")==0){
+                                            jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(0));
+                                        }else if(pnoList.at(i).PName.compare("faultStatus")==0){
+                                            jdata.append(QString(",\"faultStatus\":\"%1\"").arg(0));
+                                        }
+                                        jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
+                                    }
+                                }
+                                QString device_code;
+                                while(qry.next()){
+                                    for(int i=0;i<pnoList.length();i++){
                                         if(pnoList.at(i).Pno==qry.value(0).toInt()&&qry.value(0).toInt()!=0){
-                                            jdata.append(QString(",\"pressure\":\"%1\"").arg(qry.value(1).toString()));
-                                            if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))!=-1){
-                                                jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
-                                            }else if(qry.value(2).toString().indexOf(QString::fromUtf8("低压"))!=-1){
-                                                jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(1));
-                                            }else if(qry.value(2).toString().indexOf(QString::fromUtf8("高压"))!=-1){
-                                                jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(2));
-                                            }else {
-                                                jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
+                                            if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("自动"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("停止"))==0){
+                                                if(pnoList.at(i).PName.compare("powerStatus")==0){
+                                                    jdata.append(QString(",\"powerState\":\"%1\"").arg(0));
+                                                }else if(pnoList.at(i).PName.compare("runStatus")==0){
+                                                    jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(0));
+                                                }else if(pnoList.at(i).PName.compare("startStatus")==0){
+                                                    jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(0));
+                                                }else if(pnoList.at(i).PName.compare("faultStatus")==0){
+                                                    jdata.append(QString(",\"faultStatus\":\"%1\"").arg(0));
+                                                }
+                                            }else if(qry.value(2).toString().indexOf(QString::fromUtf8("关闭"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("手动"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("运行"))==0||qry.value(2).toString().indexOf(QString::fromUtf8("故障"))==0){
+                                                if(pnoList.at(i).PName.compare("powerStatus")==0){
+                                                    jdata.append(QString(",\"powerState\":\"%1\"").arg(1));
+                                                }else if(pnoList.at(i).PName.compare("runStatus")==0){
+                                                    jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(1));
+                                                }else if(pnoList.at(i).PName.compare("startStatus")==0){
+                                                    jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(1));
+                                                }else if(pnoList.at(i).PName.compare("faultStatus")==0){
+                                                    jdata.append(QString(",\"faultStatus\":\"%1\"").arg(1));
+                                                }
+                                            }else{
+                                                if(pnoList.at(i).PName.compare("powerStatus")==0){
+                                                    jdata.append(QString(",\"powerState\":\"%1\"").arg(0));
+                                                }else if(pnoList.at(i).PName.compare("runStatus")==0){
+                                                    jdata.append(QString(",\"manualAutomaticState\":\"%1\"").arg(0));
+                                                }else if(pnoList.at(i).PName.compare("startStatus")==0){
+                                                    jdata.append(QString(",\"startStopStatus\":\"%1\"").arg(0));
+                                                }else if(pnoList.at(i).PName.compare("faultStatus")==0){
+                                                    jdata.append(QString(",\"faultStatus\":\"%1\"").arg(0));
+                                                }
                                             }
                                             break;
                                         }
                                     }
                                 }
-                            }
-                            if(xfzddev.DeviceType==302){
-                                XfzdSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                            }else if(xfzddev.DeviceType==301){
-                                XfzdSyncData(1,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                            }else if(xfzddev.DeviceType==305){
-                                XfzdSyncData(13,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                            }else if(xfzddev.DeviceType==304){
-                                XfzdSyncData(14,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
-                            }
-                        }
-                    }else if(xfzddev.devCategory==1){
-                        while(qry.next()){
-                            if(qry.value(0).toInt()==1){
-                                if(qry.value(2).toString().indexOf(QString::fromUtf8("监测连线故障"))==0){
-                                    jdata.append(QString(",\"connectStatus\":\"%1\"").arg(1));
-                                }else{
-                                    jdata.append(QString(",\"connectStatus\":\"%1\"").arg(0));
+                                if(xfzddev.DeviceType==258){
+                                    XfzdSyncData(4,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                }else if(xfzddev.DeviceType==256){
+                                    XfzdSyncData(5,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                }else if(xfzddev.DeviceType==452){
+                                    XfzdSyncData(12,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
                                 }
-                                jdata.append(QString(",\"workStatus\":\"%1\"").arg(0));
-                                jdata.append(QString(",\"mainPower\":\"%1\"").arg(0));
+                            }else{
+                                QList<CnPno> pnoList = getPnoValue(xfzddev.Data);
                                 jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
-                                XfzdSyncData(15,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                while(qry.next()){
+                                    for(int i=0;i<pnoList.length();i++){
+                                        if(pnoList.at(i).PName.compare("value")==0){
+                                            if(pnoList.at(i).Pno==qry.value(0).toInt()&&qry.value(0).toInt()!=0){
+                                                jdata.append(QString(",\"pressure\":\"%1\"").arg(qry.value(1).toString()));
+                                                if(qry.value(2).toString().indexOf(QString::fromUtf8("正常"))!=-1){
+                                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
+                                                }else if(qry.value(2).toString().indexOf(QString::fromUtf8("低压"))!=-1){
+                                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(1));
+                                                }else if(qry.value(2).toString().indexOf(QString::fromUtf8("高压"))!=-1){
+                                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(2));
+                                                }else {
+                                                    jdata.append(QString(",\"alarmStatus\":\"%1\"").arg(0));
+                                                }
+                                                break;
+                                            }
+                                        }
+                                    }
+                                }
+                                if(xfzddev.DeviceType==302){
+                                    XfzdSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                }else if(xfzddev.DeviceType==301){
+                                    XfzdSyncData(1,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                }else if(xfzddev.DeviceType==305){
+                                    XfzdSyncData(13,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                }else if(xfzddev.DeviceType==304){
+                                    XfzdSyncData(14,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                }
+                            }
+                        }else if(xfzddev.devCategory==1){
+                            while(qry.next()){
+                                if(qry.value(0).toInt()==1){
+                                    if(qry.value(2).toString().indexOf(QString::fromUtf8("监测连线故障"))==0){
+                                        jdata.append(QString(",\"connectStatus\":\"%1\"").arg(1));
+                                    }else{
+                                        jdata.append(QString(",\"connectStatus\":\"%1\"").arg(0));
+                                    }
+                                    jdata.append(QString(",\"workStatus\":\"%1\"").arg(0));
+                                    jdata.append(QString(",\"mainPower\":\"%1\"").arg(0));
+                                    jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(myt).toString("yyyy-MM-dd HH:mm:ss")));
+                                    XfzdSyncData(15,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",xfzddev.devCategory,xfzddev.DeviceCode);
+                                }
                             }
                         }
-                    }
+            }
         }
     }
 
+
+
     if((!isSending)&&(ypSyncdataList.length()>0)){
         isSending = true;
         ypCount=ypCount+1;
         SyncRep rep = ypSyncdataList.first();
-        sqlList2.append(QString("insert into `ypsync_t_rec` (`id`,`uuid`,`data_str`, `send`, `store_time`) values (NULL,'%1','%2',0,'%3')")
+        dbThread->appendSql(QString("insert into `ypsync_t_rec` (`id`,`uuid`,`data_str`, `send`, `store_time`) values (NULL,'%1','%2',0,'%3')")
                 .arg(rep.Id).arg(rep.JsonStr).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
         QByteArray Report = rep.JsonStr.toUtf8();
         QNetworkRequest *req = new QNetworkRequest();
@@ -525,7 +547,7 @@ void Core::time_out()
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setRawHeader("appKey","850404889644236801");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
-        sqlList2.append(QString("insert into `xfzdsync_t_rec` (`id`,`uuid`,`data_str`, `send`, `store_time`, `device_code`) values (NULL,'%1','%2',0,'%3','%4')")
+        dbThread->appendSql(QString("insert into `xfzdsync_t_rec` (`id`,`uuid`,`data_str`, `send`, `store_time`, `device_code`) values (NULL,'%1','%2',0,'%3','%4')")
                         .arg(rep.Id).arg(
                             req->url().toString()+"\r\n"+
                             rep.JsonStr).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.deviceCode));
@@ -543,55 +565,55 @@ void Core::time_out()
             db.commit();
         }
     }
-    if(sqlList2.length()>0){
-        QSqlDatabase recdb;
-        if(QSqlDatabase::contains("rec_db"))
-            recdb = QSqlDatabase::database("rec_db");
-        else
-            recdb = QSqlDatabase::addDatabase("QSQLITE","rec_db");
-        recdb.setDatabaseName(QString("/root/db/watchdoglog%1.db").arg(QDate::currentDate().toString("yyyyMMdd")));
-        if(recdb.open()){
-            if(!chk_table("ypsync_t_rec",recdb.tables()))
-            {
-                recdb.exec("create table `ypsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("ypsync_t_rec_dis",recdb.tables()))
-            {
-                recdb.exec("create table `ypsync_t_rec_dis` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("ypsync_t_rec_xy",recdb.tables()))
-            {
-                recdb.exec("create table `ypsync_t_rec_xy` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("cnsync_t_rec",recdb.tables())){
-                recdb.exec("create table `cnsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("jasync_t_rec",recdb.tables())){
-                recdb.exec("create table `jasync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("hpsync_t_rec",recdb.tables())){
-                recdb.exec("create table `hpsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("newcnsync_t_rec",recdb.tables())){
-                recdb.exec("create table `newcnsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("ypywsync_t_rec",recdb.tables())){
-                recdb.exec("create table `ypywsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
-            }
-            if(!chk_table("xfzdsync_t_rec",recdb.tables())){
-                recdb.exec("create table `xfzdsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20), `device_code` text(40))");
-            }
-            if(recdb.transaction()){
-                while(sqlList2.length()>0){
-                    recdb.exec(sqlList2.first());
-                    sqlList2.removeFirst();
-                }
-                recdb.commit();
-            }
-            recdb.close();
-        }
-//        QSqlDatabase::removeDatabase("rec_db");
-    }
+//    if(sqlList2.length()>0){
+//        QSqlDatabase recdb;
+//        if(QSqlDatabase::contains("rec_db"))
+//            recdb = QSqlDatabase::database("rec_db");
+//        else
+//            recdb = QSqlDatabase::addDatabase("QSQLITE","rec_db");
+//        recdb.setDatabaseName(QString("/root/db/watchdoglog%1.db").arg(QDate::currentDate().toString("yyyyMMdd")));
+//        if(recdb.open()){
+//            if(!chk_table("ypsync_t_rec",recdb.tables()))
+//            {
+//                recdb.exec("create table `ypsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("ypsync_t_rec_dis",recdb.tables()))
+//            {
+//                recdb.exec("create table `ypsync_t_rec_dis` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("ypsync_t_rec_xy",recdb.tables()))
+//            {
+//                recdb.exec("create table `ypsync_t_rec_xy` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("cnsync_t_rec",recdb.tables())){
+//                recdb.exec("create table `cnsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("jasync_t_rec",recdb.tables())){
+//                recdb.exec("create table `jasync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("hpsync_t_rec",recdb.tables())){
+//                recdb.exec("create table `hpsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("newcnsync_t_rec",recdb.tables())){
+//                recdb.exec("create table `newcnsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("ypywsync_t_rec",recdb.tables())){
+//                recdb.exec("create table `ypywsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20))");
+//            }
+//            if(!chk_table("xfzdsync_t_rec",recdb.tables())){
+//                recdb.exec("create table `xfzdsync_t_rec` (`id` integer primary key autoincrement, `uuid` text(40), `data_str` text(1024), `send` integer , `store_time` text(20), `reply_str` text(1024), `reply_time` text(20), `device_code` text(40))");
+//            }
+//            if(recdb.transaction()){
+//                while(sqlList2.length()>0){
+//                    recdb.exec(sqlList2.first());
+//                    sqlList2.removeFirst();
+//                }
+//                recdb.commit();
+//            }
+//            recdb.close();
+//        }
+//      QSqlDatabase::removeDatabase("rec_db");
+//    }
     if((tmp_time-work_time)>59){
         work_time = tmp_time;
         qry = db.exec("select `app_name`, `app_path`, `keep_working`, `wait_time` , `log_limit`, `keep_size` from `app_t_conf`");

+ 4 - 0
ytServiceCore/core.h

@@ -20,6 +20,7 @@
 #include "QReplyTimeout.h"
 #include "wscenter.h"
 #include "logthread.h"
+#include "databasethread.h"
 
 class YpYwSyncRep {
 public:
@@ -127,6 +128,7 @@ class Core : public QObject
     Q_OBJECT
 public:
     explicit Core(QObject *parent = 0);
+    ~Core();
     void start();
     bool chk_table(QString tablename, QStringList tables);
     void db_init();
@@ -148,6 +150,7 @@ public slots:
 private:
     QSqlDatabase db,mdb;
     time_t lhworktime,work_time,xfzdworktime,lhworktime1;
+    int hour,hour1,minute;
     bool isRunning,isSending,mdbOpened,isSending9;
     int ypCount,ypdisCount,ypxyCount,cnCount,jaCount,hpCount;
     QTimer *timer;
@@ -162,6 +165,7 @@ private:
     WSCenter *wsCenter;
     uint times;
     LogThread *logThread;
+    DataBaseThread *dbThread;
 //    WSCenter *wsCenter;
 };
 

+ 2 - 10
ytServiceCore/ytServiceCore.pro

@@ -11,23 +11,18 @@ TEMPLATE = app
 
 SOURCES += main.cpp \
     core.cpp \
-    db_syncthread.cpp \
-    datacenter.cpp \
     webdatathread.cpp \
     wscenter.cpp \
     programconf.cpp \
     wsclient.cpp \
     logthread.cpp \
-    subsysreport.cpp \
-    subreportthread.cpp
+    databasethread.cpp
 
 HEADERS += \
     ytServiceShm.h \
     core.h \
-    db_syncthread.h \
     QReplyTimeout.h \
     ../../WebInterface/WebDataCore/WebDataShm.h \
-    datacenter.h \
     webdatathread.h \
     AlarmSet.h \
     wscenter.h \
@@ -35,9 +30,6 @@ HEADERS += \
     programconf.h \
     wsclient.h \
     logthread.h \
-    subreportthread.h \
-    subsysreport.h \
-    redis.h
+    databasethread.h
 
 LIBS += -ljson-c -lssl -lcrypto
-LIBS += "/usr/local/lib/libhiredis.a"