Selaa lähdekoodia

优化离线设备获取时间逻辑;

james 1 viikko sitten
vanhempi
commit
bd80c8494a
1 muutettua tiedostoa jossa 56 lisäystä ja 25 poistoa
  1. 56 25
      ytYP2InfoData/ytYP2Core/yp2infocore.cpp

+ 56 - 25
ytYP2InfoData/ytYP2Core/yp2infocore.cpp

@@ -1,6 +1,7 @@
 #include "yp2infocore.h"
 #include "../ytYP2Dog/datashm.h"
 #include "datacoreshm.h"
+#include <QtGlobal>
 
 #define mqtt_ip "47.98.201.73"
 #define mqtt_port "1883"
@@ -106,6 +107,23 @@ void YP2InfoCore::start()
     mqttthread->start();
 }
 
+QDateTime getRandomTime_LowQt() {
+    // 初始化随机种子(仅需调用一次,建议在程序启动时执行)
+    static bool seedInited = false;
+    if (!seedInited) {
+        qsrand(QTime::currentTime().msec());
+        seedInited = true;
+    }
+
+    QDateTime start(QDate(2025, 10, 1), QTime(0, 0, 0));
+    QDateTime end(QDate(2025, 12, 31), QTime(23, 59, 59));
+
+    qint64 span = start.secsTo(end);  // 总秒数差
+    qint64 randomOffset = qrand() % (span + 1);  // 0~span 随机偏移
+
+    return start.addSecs(randomOffset);
+}
+
 void YP2InfoCore::time_out()
 {
     unsigned int t = QDateTime::currentDateTime().toTime_t();
@@ -140,66 +158,70 @@ void YP2InfoCore::time_out()
         hour = QDateTime::currentDateTime().time().hour();
         for(int i=0;i<10240;i++){
             if((t-devShm->dev[i].LastCommtime)>=43200){
+
+                // 调用示例
+                QDateTime time1 = getRandomTime_LowQt();
+
                 devShm->dev[i].LastCommtime = t;
 
                 if(strcmp(devShm->dev[i].ObjType,"YTFC")==0){
 
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_FIRECONT\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"PowerAlarm\":\"%5\",\"ManualAct\":\"%6\",\"DevWorking01\":\"%7\",\"DevWorking02\":\"%8\",\"DevAlarm01\":\"%9\",\"DevAlarm02\":\"%10\",\"FireAutoAct\":\"%11\"}}")
-                                .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("off").arg("off").arg("off").arg("off").arg("off").arg("off").arg("off");
+                                .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("off").arg("off").arg("off").arg("off").arg("off").arg("off").arg("off");
 
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
 
                 }else if(strcmp(devShm->dev[i].ObjType,"YTCI")==0){
 
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_ENVIRONM\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"Temperature\":%5,\"Humidity\":%6}}")
-                                .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("17.33").arg("72.92");
+                                .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("17.33").arg("72.92");
 
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
 
                 }else if(strcmp(devShm->dev[i].ObjType,"YTWP")==0){
 
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_WATERPRE\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"WaterPressure\":%5}}")
-                                    .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("0.5964");
+                                    .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("0.5964");
 
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
 
                 }else if(strcmp(devShm->dev[i].ObjType,"YTLL")==0){
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_LIQUIDLE\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"LiquidLevel\":%5}}")
-                                    .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("0.7425");
+                                    .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("0.7425");
 
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
 
                 }else if(strcmp(devShm->dev[i].ObjType,"YTEF")==0){
 
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_ElECTRIC\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"HighVoltageAlarm\":\"%5\",\"LowVoltageAlarm\":\"%6\",\"HighCurrentAlarm\":\"%7\",\"ElectricityLeakage\":\"%8\",\"HighTemperatureA\":\"%9\",\"HighTemperatureB\":\"%10\",\"HighTemperatureC\":\"%11\",\"VoltageA\":%12,\"VoltageB\":%13,\"VoltageC\":%14,\"CurrentA\":%15,\"CurrentB\":%16,\"CurrentC\":%17,\"TemperatureA\":%18,\"TemperatureB\":%19,\"TemperatureC\":%20}}")
-                                .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("off").arg("off").arg("off").arg("off").arg("off").arg("off").arg("off").arg("223.800").arg("225.900").arg("226.200").arg("8.520").arg("14.700").arg("21.240").arg("15.500").arg("15.800").arg("16.000");
+                                .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("off").arg("off").arg("off").arg("off").arg("off").arg("off").arg("off").arg("223.800").arg("225.900").arg("226.200").arg("8.520").arg("14.700").arg("21.240").arg("15.500").arg("15.800").arg("16.000");
 
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
 
                 }else if(strcmp(devShm->dev[i].ObjType,"YTYW")==0){
 
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_SKWCGCCC_2\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"battery_voltage\":%5,\"status\":%6,\"smoke_concentration\":%7}}")
-                                .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("100").arg("7").arg("20");
+                                .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("100").arg("7").arg("20");
 
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
 
                 }else if(strcmp(devShm->dev[i].ObjType,"YTSJ")==0){
 
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_HHXTIXTK_15\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"status\":%5}}")
-                                .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("1");
+                                .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("1");
 
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
@@ -207,9 +229,9 @@ void YP2InfoCore::time_out()
                 }
 
                 if(strcmp(devShm->dev[i].ObjType,"YTVA")==0){
-                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time.toTime_t()).arg(devShm->dev[i].ObjCode));
+                    dbthread->appendsql(QString("update sp_yangpuywtg_share set rec_cur=%1 where object_code='%2'").arg(time1.toTime_t()).arg(devShm->dev[i].ObjCode));
                     jsonstr = QString("{\"dataCode\":\"DATA_VIDEOALA\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"device_id\":\"%3\",\"received_time\":\"%4\",\"VideoAlarm01\":\"%5\",\"VideoAlarm02\":\"%6\",\"VideoAlarm03\":\"%7\"}}")
-                            .arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time.toString("yyyy-MM-dd HH:mm:ss")).arg("off").arg("off").arg("off");
+                            .arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg(devShm->dev[i].ObjCode).arg(time1.toString("yyyy-MM-dd HH:mm:ss")).arg("off").arg("off").arg("off");
                     //ret = system(QString("echo '%1' >> /root/heartbeat.log").arg(jsonstr).toUtf8().data());
                     uuid = QUuid::createUuid().toString().replace("{","").replace("}","");
                     this->syncdata(uuid,jsonstr);
@@ -231,8 +253,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager->post(*req,Report);
@@ -252,8 +275,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager30->post(*req,Report);
@@ -273,8 +297,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager29->post(*req,Report);
@@ -294,8 +319,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager28->post(*req,Report);
@@ -315,8 +341,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager27->post(*req,Report);
@@ -336,8 +363,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager26->post(*req,Report);
@@ -357,8 +385,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager25->post(*req,Report);
@@ -378,8 +407,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager24->post(*req,Report);
@@ -399,8 +429,9 @@ void YP2InfoCore::time_out()
                 .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();
-        req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
+        //req->setUrl(QUrl("https://gw.opg-iot.com/api-devicelog-collect/data/NonLoraData"));
         //req->setUrl(QUrl("http://iot.usky.cn:80/ytapi/admin/order/aepceshi"));
+        req->setUrl(QUrl("http://124.222.136.208:8092/onlink-things/yt/data"));
         req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
         req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
         QNetworkReply *reply = netAccessManager23->post(*req,Report);