core.cpp 95 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638
  1. #include "core.h"
  2. #include "ytservicecore.h"
  3. #include <QDebug>
  4. #include <time.h>
  5. #include <openssl/md5.h>
  6. #include <string.h>
  7. #include "../../DataProcessService/ytUserInfoProcess/userinfo.h"
  8. //extern YT_SERVICE_SHM *ytShm;
  9. #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
  10. void chkmd5(const char *data, char *md5){
  11. MD5_CTX ctx;
  12. unsigned char tmp,md[16];
  13. int i;
  14. MD5_Init(&ctx);
  15. MD5_Update(&ctx,data,strlen(data));
  16. MD5_Final(md,&ctx);
  17. for(i=0;i<16;i++){
  18. tmp = (md[i]>>4)&0x0f;
  19. if(tmp<10)
  20. md5[i*2+0] = (char)(tmp+0x30);
  21. else
  22. md5[i*2+0] = (char)(tmp+0x37);
  23. tmp = md[i]&0x0f;
  24. if(tmp<10)
  25. md5[i*2+1] = (char)(tmp+0x30);
  26. else
  27. md5[i*2+1] = (char)(tmp+0x37);
  28. }
  29. md5[32] = 0x00;
  30. }
  31. Core::Core(QObject *parent) :
  32. QObject(parent)
  33. {
  34. isRunning = false;
  35. isSending = false;
  36. isSending2 = false;
  37. isSending3 = false;
  38. times = 0;
  39. jaworktime = 0;
  40. ypSyncdataList.clear();
  41. cnSyncdataLiet.clear();
  42. jaSyncdataLiet.clear();
  43. sqlList.clear();
  44. sqlList2.clear();
  45. sqlList3.clear();
  46. work_time = 0;
  47. logThread = new LogThread(this);
  48. logThread->start();
  49. ytShm->updatetime[CORE_MAIN] = time(static_cast<time_t *>(nullptr));
  50. ytShm->updatetime[DB_THREAD] = ytShm->updatetime[CORE_MAIN] ;
  51. db = QSqlDatabase::addDatabase("QSQLITE","dog_conf");
  52. db.setDatabaseName("db/watchdog2.db");
  53. mdb = QSqlDatabase::addDatabase("QMYSQL","jdxf2_db");
  54. mdb.setDatabaseName("jdxf");
  55. mdb.setHostName("47.98.201.187");
  56. mdb.setPort(3306);
  57. mdb.setUserName("root");
  58. mdb.setPassword("Yt2018IoT");
  59. mdbOpened = mdb.open();
  60. if(db.open()){
  61. db_init();
  62. }
  63. thread = new DB_SyncThread(this);
  64. timer = new QTimer(this);
  65. netAccessManager = new QNetworkAccessManager(this);
  66. connect(timer,SIGNAL(timeout()),this,SLOT(time_out()));
  67. connect(thread,SIGNAL(SyncData(QString,QString)),this,SLOT(SyncData(QString,QString)));
  68. connect(thread,SIGNAL(cnSyncData(QString,QString,int)),this,SLOT(cnSyncData(QString,QString,int)));
  69. connect(thread,SIGNAL(jaSyncData(int,QString,QString)),this,SLOT(jaSyncData(int,QString,QString)));
  70. connect(netAccessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(finishedSlot(QNetworkReply*)));
  71. connect(thread,SIGNAL(companyAlarmChanged(QString)),this,SLOT(companyAlarmChanged(QString)));
  72. cnnetAccessManager = new QNetworkAccessManager(this);
  73. janetAccessManager = new QNetworkAccessManager(this);
  74. connect(cnnetAccessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(finishedSlot2(QNetworkReply*)));
  75. connect(janetAccessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(finishedSlot3(QNetworkReply*)));
  76. dc = new DataCenter(this);
  77. connect(dc,&DataCenter::needSync,this,&Core::needSync);
  78. wsCenter = new WSCenter(this);
  79. subReportServer = new SubSysReport(this);
  80. connect(subReportServer,&SubSysReport::subReport,this,&Core::subReport);
  81. for(quint16 i=0;i<16;i++){
  82. wxThreads[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/GeneralPush/voice");
  83. connect(wxThreads[i],&WechartThreads::wxchart,this,&Core::wxchart);
  84. wxThreads[i]->start();
  85. }
  86. wxcur = 0;
  87. for(quint16 i=0;i<16;i++){
  88. wxThreads1[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/bj");
  89. connect(wxThreads1[i],&WechartThreads::wxchart,this,&Core::wxchart);
  90. wxThreads1[i]->start();
  91. }
  92. wxcur1 = 0;
  93. for(quint16 i=0;i<16;i++){
  94. wxThreads2[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/message_water");
  95. connect(wxThreads2[i],&WechartThreads::wxchart,this,&Core::wxchart);
  96. wxThreads2[i]->start();
  97. }
  98. wxcur2 = 0;
  99. for(quint16 i=0;i<16;i++){
  100. wxThreads3[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/message_electrical");
  101. connect(wxThreads3[i],&WechartThreads::wxchart,this,&Core::wxchart);
  102. wxThreads3[i]->start();
  103. }
  104. wxcur3 = 0;
  105. for(quint16 i=0;i<16;i++){
  106. wxThreads4[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Rtuwarn/message_sendalarm");
  107. connect(wxThreads4[i],&WechartThreads::wxchart,this,&Core::wxchart);
  108. wxThreads4[i]->start();
  109. }
  110. wxcur4 = 0;
  111. for(quint16 i=0;i<16;i++){
  112. wxThreads5[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Firewarn/message_sendalarm");
  113. connect(wxThreads5[i],&WechartThreads::wxchart,this,&Core::wxchart);
  114. wxThreads5[i]->start();
  115. }
  116. wxcur5 = 0;
  117. time_out();
  118. }
  119. void Core::start()
  120. {
  121. timer->start(1000);
  122. thread->start();
  123. dc->start();
  124. subReportServer->start();
  125. }
  126. void Core::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag)
  127. {
  128. UN_REFERENCED_PARAMETER(idx);
  129. logThread->appendData(QString("[ %1 47.98.201.73 (wx) %2 ] %3")
  130. .arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz"))
  131. .arg(dirflag?">>>":"<<<")
  132. .arg(data.replace('\n',"\\n").replace('\r',"\\r")));
  133. }
  134. void Core::AlarmReport(QString addr, quint64 insertid, quint16 type, QString companyCode, QString evt_name, QString evt, QString alarm_time,int version)
  135. {
  136. // UN_REFERENCED_PARAMETER(insertid);
  137. QString phonelist = "";
  138. QString bz = "";
  139. // for(int i=0;i<10240;i++){
  140. // if(QString::compare(QString(rtuList->rtus[i].Device_Code),addr)==0){
  141. // companyCode = QString(rtuList->rtus[i].Company_Code);
  142. // break;
  143. // }
  144. // }
  145. if(companyCode.length()>0){
  146. for(int i=0;i<102400;i++){
  147. if(companyCode.compare(QString(sysConfShm->userInfo[i].CompanyCode))==0){
  148. QString phone = QString(sysConfShm->userInfo[i].CellPhone);
  149. if(phone.trimmed().length()>0){
  150. if(phonelist.length()==0)
  151. phonelist = phone;
  152. else
  153. phonelist.append(","+phone);
  154. }
  155. }
  156. }
  157. if(phonelist.length()>0){
  158. if(version==0){
  159. if(type==3){
  160. QString data = QString("IMEI=%1&evt=%2&insert_id=%3&time=%4&bz=%5&user_from=smoke&phone=%6").arg(addr).arg(evt).arg(insertid).arg(alarm_time).arg(bz).arg(phonelist)
  161. .replace(",","%2C").replace(":","%3A").replace(" ","+");
  162. wxThreads1[wxcur1&0x0f]->appendData(data);
  163. wxcur1++;
  164. wxcur1 &= 0x0f;
  165. }else if(type==2){
  166. QString data = QString("IMEI=%1&evt=%2&insert_id=%3&phone=%4&time=%5&bz=%6&user_from=water").arg(addr).arg(evt).arg(insertid).arg(phonelist)
  167. .replace(",","%2C").replace(":","%3A").replace(" ","+").arg(alarm_time).arg(bz);
  168. wxThreads2[wxcur2&0x0f]->appendData(data);
  169. wxcur2++;
  170. wxcur2 &= 0x0f;
  171. }else if(type==7){
  172. QString data = QString("device_code=%1&evt=%2&insert_id=%3&phone=%4&time=%5&bz=%6&user_from=electric").arg(addr).arg(evt).arg(insertid).arg(phonelist)
  173. .replace(",","%2C").replace(":","%3A").replace(" ","+").arg(alarm_time).arg(bz);
  174. wxThreads3[wxcur3&0x0f]->appendData(data);
  175. wxcur3++;
  176. wxcur3 &= 0x0f;
  177. }else if(type==6){
  178. QString data = QString("id=%1&types=%2&insert_id=%3&phone=%4&time=%5&bz=%6&user_from=rtu").arg(addr).arg(evt_name).arg(insertid).arg(phonelist)
  179. .replace(",","%2C").replace(":","%3A").replace(" ","+").arg(alarm_time).arg(bz);
  180. wxThreads4[wxcur4&0x0f]->appendData(data);
  181. wxcur4++;
  182. wxcur4 &= 0x0f;
  183. }else if(type==1){
  184. QString data = QString("id=%1&types=%2&insert_id=%3&phone=%4&time=%5&bz=%6&user_from=userinfo").arg(addr).arg(evt).arg(insertid).arg(phonelist)
  185. .replace(",","%2C").replace(":","%3A").replace(" ","+").arg(alarm_time).arg(bz);
  186. wxThreads5[wxcur5&0x0f]->appendData(data);
  187. wxcur5++;
  188. wxcur5 &= 0x0f;
  189. }
  190. }else if(version==1){
  191. QString data = QString("device_code=%1&evt_name=%2&insert_id=%3&phone=%4&evt=%5&time=%6&bz=%7&user_from=zong").arg(addr).arg(evt_name).arg(insertid).arg(phonelist)
  192. .replace(",","%2C").replace(":","%3A").replace(" ","+").arg(evt).arg(alarm_time).arg(bz);
  193. wxThreads[wxcur&0x0f]->appendData(data);
  194. wxcur++;
  195. wxcur &= 0x0f;
  196. }
  197. }
  198. }
  199. }
  200. QList<CnPno> Core::getPnoValue(QString pnoset)
  201. {
  202. QList<CnPno> list;
  203. QJsonParseError json_error;
  204. QJsonDocument jsonDoc(QJsonDocument::fromJson(pnoset.toUtf8(),&json_error));
  205. if(json_error.error == QJsonParseError::NoError){
  206. QJsonArray json_root = jsonDoc.array();
  207. for(int i=0;i<json_root.size();i++){
  208. QJsonObject obj = json_root.at(i).toObject();
  209. QString name = obj.value("name").toString();
  210. int port = obj.value("port").toInt();
  211. QString defvalue = obj.value("default").toString();
  212. if((port>-2)&&(name.length()>0))
  213. list.append(CnPno(name,port,defvalue));
  214. }
  215. }
  216. // int i,port;
  217. // json_object *pno, *obj;
  218. // char name[1024],value[1024];
  219. // obj = json_tokener_parse(pnoset.toUtf8().data());
  220. // if(json_object_get_type(obj)==json_type_array){
  221. // for(i=0;i<json_object_array_length(obj);i++){
  222. // pno = json_object_array_get_idx(obj,i);
  223. // bzero(name,sizeof(name));
  224. // bzero(value,sizeof(value));
  225. // port=-2;
  226. // json_object_object_foreach(pno,key,val){
  227. // if(strcmp(key,"name")==0)
  228. // sprintf(name,"%s",json_object_get_string(val));
  229. // else if(strcmp(key,"port")==0)
  230. // port = json_object_get_int(val);
  231. // else if(strcmp(key,"default")==0)
  232. // sprintf(value,"%s",json_object_get_string(val));
  233. // }
  234. // if((port>-2)&&(strlen(name)>0)){
  235. // list.append(CnPno(QString::fromUtf8(name),port,QString::fromUtf8(value)));
  236. // }
  237. // }
  238. // }
  239. // json_object_put(obj);
  240. return list;
  241. }
  242. void Core::chkInList1(QString devid)
  243. {
  244. QSqlQuery qry;
  245. QString sql;
  246. bool found = false;
  247. for(int i=0;i<syncDevList.length();i++){
  248. if(devid.compare(syncDevList.at(i).OwnerCode)==0){
  249. if(syncDevList.at(i).ObjType.compare("YTFC")==0){
  250. found = true;
  251. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  252. // system(QString("echo \"[YTFC] dev:%1 obj:%2 start:%3 rec:%4\">> /root/test.log").arg(syncDevList.at(i).OwnerCode).arg(syncDevList.at(i).ObjCode).arg(syncDevList.at(i).StartPort).arg(syncDevList.at(i).RecCur).toUtf8().data());
  253. QDateTime dataTime = QDateTime::fromTime_t(0);
  254. QString PowerAlarm="off";
  255. QString ManualAct = "off";
  256. QString DevWorking01 = "off";
  257. QString DevWorking02 = "off";
  258. QString DevAlarm01 = "off";
  259. QString DevAlarm02 = "off";
  260. QString FireAutoAct = "off";
  261. sql = QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1'").arg(devid);
  262. // system(QString("echo \"[YTFC] %1\" >> /root/test.log").arg(sql).toUtf8().data());
  263. // qDebug()<<sql.toUtf8().data();
  264. qry = mdb.exec(sql);
  265. while(qry.next()){
  266. int code = qry.value(1).toInt();
  267. if((code>0)&&(code<8)){
  268. int value = qry.value(2).toInt();
  269. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  270. dataTime = qry.value(3).toDateTime();
  271. if(code==1){
  272. if(value==0)
  273. PowerAlarm = "on";
  274. }else if(code==2){
  275. if(value==0)
  276. ManualAct = "on";
  277. }else if(code==3){
  278. if(value==0)
  279. DevWorking01 = "on";
  280. }else if(code==4){
  281. if(value==0)
  282. DevWorking02 = "on";
  283. }else if(code==5){
  284. if(value==0)
  285. DevAlarm01 = "on";
  286. }else if(code==6){
  287. if(value==0)
  288. DevAlarm02 = "on";
  289. }else if(code==7){
  290. if(value==0)
  291. FireAutoAct = "on";
  292. }
  293. }
  294. }
  295. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  296. {
  297. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  298. QString jsonstr = QString("{\"dataCode\":\"DATA_FIRECONT\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"PowerAlarm\":\"%3\",\"ManualAct\":\"%4\",\"DevWorking01\":\"%5\",\"DevWorking02\":\"%6\",\"DevAlarm01\":\"%7\",\"DevAlarm02\":\"%8\",\"FireAutoAct\":\"%9\"}}")
  299. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(PowerAlarm).arg(ManualAct).arg(DevWorking01).arg(DevWorking02).arg(DevAlarm01).arg(DevAlarm02).arg(FireAutoAct);
  300. // system(QString("echo \"[YTFC] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  301. SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  302. }
  303. }else if(syncDevList.at(i).ObjType.compare("YTCI")==0){
  304. found = true;
  305. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  306. // system(QString("echo \"[YTCI] dev:%1 obj:%2 start:%3 rec:%4\">> /root/test.log").arg(syncDevList.at(i).OwnerCode).arg(syncDevList.at(i).ObjCode).arg(syncDevList.at(i).StartPort).arg(syncDevList.at(i).RecCur).toUtf8().data());
  307. QString Temperature = "0.0";
  308. QString Humidity = "0.0";
  309. QDateTime dataTime = QDateTime::fromTime_t(0);
  310. sql = QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1' and point_code>%2 order by point_code limit 0,2").arg(devid).arg((syncDevList.at(i).StartPort>0)?(syncDevList.at(i).StartPort+63):0);
  311. // system(QString("echo \"[YTCI]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  312. // qDebug()<<sql.toUtf8().data();
  313. qry = mdb.exec(sql);
  314. int nrow = 0;
  315. while(qry.next()){
  316. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  317. dataTime = qry.value(3).toDateTime();
  318. if(nrow==0)
  319. Temperature = qry.value(2).toString();
  320. else if(nrow==1)
  321. Humidity = qry.value(2).toString();
  322. nrow++;
  323. }
  324. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  325. {
  326. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  327. QString jsonstr = QString("{\"dataCode\":\"DATA_ENVIRONM\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"Temperature\":%3,\"Humidity\":%4}}")
  328. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(Temperature).arg(Humidity);
  329. // system(QString("echo \"[YTCI] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  330. SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  331. }
  332. }else if(syncDevList.at(i).ObjType.compare("YTWP")==0){
  333. found = true;
  334. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  335. // system(QString("echo \"[YTWP] dev:%1 obj:%2 start:%3 rec:%4\">> /root/test.log").arg(syncDevList.at(i).OwnerCode).arg(syncDevList.at(i).ObjCode).arg(syncDevList.at(i).StartPort).arg(syncDevList.at(i).RecCur).toUtf8().data());
  336. QString WaterPressure = "0.0";
  337. QDateTime dataTime = QDateTime::fromTime_t(0);
  338. sql = QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1' and point_code>%2 order by point_code limit 0,1").arg(devid).arg((syncDevList.at(i).StartPort>0)?(syncDevList.at(i).StartPort+63):3);
  339. // system(QString("echo \"[YTWP]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  340. // qDebug()<<sql.toUtf8().data();
  341. qry = mdb.exec(sql);
  342. if(qry.next()){
  343. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  344. dataTime = qry.value(3).toDateTime();
  345. WaterPressure = qry.value(2).toString();
  346. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  347. {
  348. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  349. QString jsonstr = QString("{\"dataCode\":\"DATA_WATERPRE\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"WaterPressure\":%3}}")
  350. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(WaterPressure);
  351. // system(QString("echo \"[YTWP] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  352. SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  353. }
  354. }
  355. }else if(syncDevList.at(i).ObjType.compare("YTLL")==0){
  356. found = true;
  357. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  358. // system(QString("echo \"[YTLL] dev:%1 obj:%2 start:%3 rec:%4\">> /root/test.log").arg(syncDevList.at(i).OwnerCode).arg(syncDevList.at(i).ObjCode).arg(syncDevList.at(i).StartPort).arg(syncDevList.at(i).RecCur).toUtf8().data());
  359. QString LiquidLevel = "0.0";
  360. QDateTime dataTime = QDateTime::fromTime_t(0);
  361. sql = QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1' and point_code>%2 order by point_code limit 0,1").arg(devid).arg((syncDevList.at(i).StartPort>0)?(syncDevList.at(i).StartPort+63):3);
  362. // system(QString("echo \"[YTLL]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  363. // qDebug()<<sql.toUtf8().data();
  364. qry = mdb.exec(sql);
  365. if(qry.next()){
  366. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  367. dataTime = qry.value(3).toDateTime();
  368. LiquidLevel = qry.value(2).toString();
  369. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  370. {
  371. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  372. QString jsonstr = QString("{\"dataCode\":\"DATA_LIQUIDLE\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"LiquidLevel\":%3}}")
  373. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(LiquidLevel);
  374. // system(QString("echo \"[YTLL] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  375. SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  376. }
  377. }
  378. }else if(syncDevList.at(i).ObjType.compare("YTEF")==0){
  379. found = true;
  380. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  381. // system(QString("echo \"[YTEF] dev:%1 obj:%2 start:%3 rec:%4\">> /root/test.log").arg(syncDevList.at(i).OwnerCode).arg(syncDevList.at(i).ObjCode).arg(syncDevList.at(i).StartPort).arg(syncDevList.at(i).RecCur).toUtf8().data());
  382. QString HighVoltageAlarm ="off";
  383. QString LowVoltageAlarm = "off";
  384. QString HighCurrentAlarm = "off";
  385. QString ElectricityLeakage = "off";
  386. QString HighTemperatureA = "off";
  387. QString HighTemperatureB = "off";
  388. QString HighTemperatureC = "off";
  389. QString VoltageA = "0.0";
  390. QString VoltageB = "0.0";
  391. QString VoltageC = "0.0";
  392. QString CurrentA = "0.0";
  393. QString CurrentB = "0.0";
  394. QString CurrentC = "0.0";
  395. QString TemperatureA = "0.0";
  396. QString TemperatureB = "0.0";
  397. QString TemperatureC = "0.0";
  398. QDateTime dataTime = QDateTime::fromTime_t(0);
  399. sql =QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1'").arg(devid);
  400. // system(QString("echo \"[YTEF]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  401. // qDebug()<<sql.toUtf8().data();
  402. qry = mdb.exec(sql);
  403. while(qry.next()){
  404. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  405. dataTime = qry.value(3).toDateTime();
  406. int code = qry.value(1).toInt();
  407. if(code==1){
  408. if(qry.value(2).toInt()==1)
  409. HighVoltageAlarm = "on";
  410. }else if(code==2){
  411. if(qry.value(2).toInt()==1)
  412. LowVoltageAlarm = "on";
  413. }else if(code==3){
  414. if(qry.value(2).toInt()==1)
  415. HighCurrentAlarm = "on";
  416. }else if(code==4){
  417. if(qry.value(2).toInt()==1)
  418. ElectricityLeakage = "on";
  419. }else if(code==5){
  420. if(qry.value(2).toInt()==1)
  421. HighTemperatureA = "on";
  422. }else if(code==6){
  423. if(qry.value(2).toInt()==1)
  424. HighTemperatureB = "on";
  425. }else if(code==7){
  426. if(qry.value(2).toInt()==1)
  427. HighTemperatureC = "on";
  428. }else if(code==65)
  429. VoltageA = qry.value(2).toString();
  430. else if(code==66)
  431. VoltageB = qry.value(2).toString();
  432. else if(code==67)
  433. VoltageC = qry.value(2).toString();
  434. else if(code==68)
  435. CurrentA = qry.value(2).toString();
  436. else if(code==69)
  437. CurrentB = qry.value(2).toString();
  438. else if(code==70)
  439. CurrentC = qry.value(2).toString();
  440. else if(code==71)
  441. TemperatureA = qry.value(2).toString();
  442. else if(code==72)
  443. TemperatureB = qry.value(2).toString();
  444. else if(code==73)
  445. TemperatureC = qry.value(2).toString();
  446. }
  447. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  448. {
  449. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  450. QString jsonstr = QString("{\"dataCode\":\"DATA_ElECTRIC\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"HighVoltageAlarm\":\"%3\",\"LowVoltageAlarm\":\"%4\",\"HighCurrentAlarm\":\"%5\",\"ElectricityLeakage\":\"%6\",\"HighTemperatureA\":\"%7\",\"HighTemperatureB\":\"%8\",\"HighTemperatureC\":\"%9\",\"VoltageA\":%10,\"VoltageB\":%11,\"VoltageC\":%12,\"CurrentA\":%13,\"CurrentB\":%14,\"CurrentC\":%15,\"TemperatureA\":%16,\"TemperatureB\":%17,\"TemperatureC\":%18}}")
  451. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(HighVoltageAlarm).arg(LowVoltageAlarm).arg(HighCurrentAlarm).arg(ElectricityLeakage).arg(HighTemperatureA).arg(HighTemperatureB).arg(HighTemperatureC).arg(VoltageA).arg(VoltageB).arg(VoltageC).arg(CurrentA).arg(CurrentB).arg(CurrentC).arg(TemperatureA).arg(TemperatureB).arg(TemperatureC);
  452. // system(QString("echo \"[YTEF] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  453. SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  454. }
  455. }else if(syncDevList.at(i).ObjType.compare("YTVA")==0){
  456. found = true;
  457. QString VideoAlarm01 = "off";
  458. QString VideoAlarm02 = "off";
  459. QDateTime dataTime = QDateTime::fromTime_t(0);
  460. sql =QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1'").arg(devid);
  461. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  462. qry = mdb.exec(sql);
  463. while(qry.next()){
  464. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t()){
  465. dataTime = qry.value(3).toDateTime();
  466. int code = qry.value(1).toInt();
  467. if(code==1){
  468. if(qry.value(2).toInt()==1){
  469. VideoAlarm01 = "on";
  470. VideoAlarm02 = "off";
  471. }
  472. }else if(code==2){
  473. if(qry.value(2).toInt()==1){
  474. VideoAlarm01 = "off";
  475. VideoAlarm02 = "on";
  476. }
  477. }
  478. }
  479. }
  480. // mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  481. QString jsonstr = QString("{\"dataCode\":\"DATA_VIDEOALA\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"VideoAlarm01\":\"%3\",\"VideoAlarm02\":\"%4\"}}")
  482. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(VideoAlarm01).arg(VideoAlarm02);
  483. // system(QString("echo \"[YTVA] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  484. SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  485. }
  486. }
  487. }
  488. if(!found){
  489. for(int i=0;i<cnDevList.length();i++){
  490. // if(found&&(devid.compare(cnDevList.at(i).OwnerCode)!=0))
  491. // break;
  492. if(devid.compare(cnDevList.at(i).OwnerCode)==0){
  493. found = true;
  494. if(cnDevList.at(i).ObjType.compare("YTUI")!=0){
  495. CNSyncDev cndev = cnDevList.at(i);
  496. uint MaxT = 0;
  497. QString sql = QString("select point_code, point_data, data_time from sp_owner_status where device_id=%1").arg(devid);
  498. QString jdata = "";
  499. jdata.append(QString("\"devCategory\":%1").arg(cndev.devCategory));
  500. jdata.append(QString(",\"devDesc\":\"%1\"").arg(cndev.ObjName));
  501. jdata.append(QString(",\"devId\":\"%1\"").arg(cndev.ObjCode));
  502. jdata.append(QString(",\"devName\":\"%1\"").arg(cndev.ObjName));
  503. jdata.append(QString(",\"ownBid\":\"%1\"").arg(cndev.ownBid));
  504. jdata.append(QString(",\"type\":%1").arg(cndev.subType));
  505. qry = mdb.exec(sql);
  506. if(cnDevList.at(i).StartPort.length()>0){
  507. QList<CnPno> pnoList = getPnoValue(cnDevList.at(i).StartPort);
  508. for(int i=0;i<pnoList.length();i++){
  509. if(pnoList.at(i).Pno<0){
  510. if(pnoList.at(i).PName.compare("devStatus")==0)
  511. jdata.append(QString(",\"devStatus\":%1").arg(pnoList.at(i).Default.length()>0?pnoList.at(i).Default:"0"));
  512. else
  513. jdata.append(QString(",\"%1\":\"%2\"").arg(pnoList.at(i).PName).arg(pnoList.at(i).Default));
  514. }
  515. }
  516. while(qry.next()){
  517. uint cTime = qry.value(2).toDateTime().toTime_t();
  518. if(cTime>MaxT)
  519. MaxT = cTime;
  520. for(int i=0;i<pnoList.length();i++){
  521. if(pnoList.at(i).Pno==qry.value(0).toInt()){
  522. if(pnoList.at(i).PName.compare("startStatus")==0)
  523. jdata.append(QString(",\"%1\":\"%2\"").arg(pnoList.at(i).PName).arg(qry.value(1).toInt()));
  524. else if(pnoList.at(i).PName.indexOf("Status")>=0)
  525. jdata.append(QString(",\"%1\":%2").arg(pnoList.at(i).PName).arg(qry.value(1).toInt()));
  526. else
  527. jdata.append(QString(",\"%1\":%2").arg(pnoList.at(i).PName).arg(qry.value(1).toString()));
  528. break;
  529. }
  530. }
  531. }
  532. }else{
  533. while(qry.next()){
  534. uint cTime = qry.value(2).toDateTime().toTime_t();
  535. if(cTime>MaxT)
  536. MaxT = cTime;
  537. if(cndev.ObjType.compare("YTWP")==0){
  538. if(qry.value(0).toInt()==1)
  539. jdata.append(QString(",\"devStatus\":%1").arg(qry.value(1).toInt()));
  540. else if(qry.value(0).toInt()==2)
  541. jdata.append(QString(",\"power\":%1").arg(qry.value(1).toInt()));
  542. else if(qry.value(0).toInt()==3)
  543. jdata.append(QString(",\"signal\":%1").arg((qry.value(1).toInt()==5)?100:(qry.value(1).toInt()*20)));
  544. else if(qry.value(0).toInt()==4)
  545. jdata.append(QString(",\"value\":%1").arg(qry.value(1).toDouble()));
  546. }
  547. }
  548. if(cndev.ObjType.compare("YTWP")==0)
  549. jdata.append(QString(",\"unit\":\"MPa\""));
  550. }
  551. jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(MaxT).toString("yyyy-MM-dd HH:mm:ss")));
  552. cnSyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",cndev.devCategory);
  553. }else{
  554. }
  555. }
  556. }
  557. }
  558. }
  559. void Core::subReport(quint16 subType, QString DeviceID, quint64 insertId, quint16 flag, QString CompanyCode, QString evt_name, QString evt, QString alarm_time){
  560. if(!mdbOpened)
  561. {
  562. mdbOpened = mdb.open();
  563. }
  564. bool found = false;
  565. QSqlQuery qry1;
  566. QSqlQuery qry2;
  567. QSqlQuery qry3;
  568. QSqlQuery qry4;
  569. QSqlQuery qry5;
  570. QSqlQuery qry6;
  571. QSqlQuery qry11;
  572. logThread->appendData(QString("huojingceshi[%1, %2, %3, %4]").arg(subType).arg(DeviceID).arg(insertId).arg(flag));
  573. QString sql11 = QString("select VERSION from jdxf_t_test where ID=%1").arg(1);
  574. qry11 = mdb.exec(sql11);
  575. if(subType==1){
  576. if(flag==1){
  577. QString sql1 = QString("select port,data3,clr,clnr,clwb from sp_hj2017 where id=%1").arg(insertId);
  578. QString sql2 = QString("select company from sp_owner where owner_code=%1").arg(DeviceID);
  579. qry1 = mdb.exec(sql1);
  580. qry2 = mdb.exec(sql2);
  581. while(qry2.next()){
  582. QString sql4= QString("SELECT phone FROM sp_owner_phone WHERE owner_code = %1 AND phone NOT IN ('13301708833','18901601933','13817464316','15262166206','18621761642','18800178436','17317231730','13262875757','17630065224','17621295894','18773792538','15365185591') GROUP BY owner_code").arg(qry2.value(0).toString());
  583. qry4 = mdb.exec(sql4);
  584. }
  585. QString jdata = "";
  586. for(int i=0;i<jaDevList.length();i++){
  587. JASyncDev jadev = jaDevList.at(i);
  588. if(jadev.Detection_id==DeviceID){
  589. while(qry1.next()){
  590. if(qry1.value(0).toInt()==2||qry1.value(0).toInt()==4){
  591. while(qry4.next()){
  592. time_t myt=time(NULL);
  593. QString data3 = qry1.value(1).toString();
  594. QStringList list = data3.split(",");
  595. jdata.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  596. jdata.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  597. jdata.append(QString(",\"format\":\"%1\"").arg("json"));
  598. jdata.append(QString(",\"v\":\"%1\"").arg("1.0"));
  599. jdata.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  600. if(qry1.value(0).toInt()==2){
  601. jdata.append(QString(",\"type\":%1").arg(1));
  602. }else{
  603. jdata.append(QString(",\"type\":%1").arg(2));
  604. }
  605. jdata.append(QString(",\"pid\":\"%1\"").arg(jadev.Pid));
  606. jdata.append(QString(",\"mainframe_id\":\"%1\"").arg(jadev.Mainframe_id));
  607. jdata.append(QString(",\"loop_number\":\"%1\"").arg(list.at(1)));
  608. jdata.append(QString(",\"position_number\":\"%1\"").arg(list.at(2)));
  609. if(qry1.value(4).toInt()==1){
  610. jdata.append(QString(",\"status\":%1").arg(1));
  611. }else{
  612. jdata.append(QString(",\"status\":%1").arg(3));
  613. }
  614. jdata.append(QString(",\"handler\":\"%1\"").arg(qry1.value(2).toString()));
  615. if(qry1.value(2).toString().indexOf(QString::fromUtf8("admin"))==0){
  616. jdata.append(QString(",\"mobile\":%1").arg("15122423833"));
  617. }else{
  618. jdata.append(QString(",\"mobile\":%1").arg(qry4.value(0).toString()));
  619. }
  620. if(qry1.value(3).toString().isEmpty()){
  621. }else{
  622. jdata.append(QString(",\"reason\":\"%1\"").arg(qry1.value(3).toString()));
  623. }
  624. QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  625. jasign.append(QString("format%1").arg("json"));
  626. jasign.append(QString("handler%1").arg(qry1.value(2).toString()));
  627. jasign.append(QString("loop_number%1").arg(list.at(1)));
  628. jasign.append(QString("mainframe_id%1").arg(jadev.Mainframe_id));
  629. if(qry1.value(2).toString().indexOf(QString::fromUtf8("admin"))==0){
  630. jasign.append(QString("mobile%1").arg("15122423833"));
  631. }else{
  632. jasign.append(QString("mobile%1").arg(qry4.value(0).toString()));
  633. }
  634. jasign.append(QString("pid%1").arg(jadev.Pid));
  635. jasign.append(QString("position_number%1").arg(list.at(2)));
  636. if(qry1.value(3).toString().isEmpty()){
  637. }else{
  638. jasign.append(QString("reason%1").arg(qry1.value(3).toString()));
  639. }
  640. jasign.append(QString("sign_method%1").arg("md5"));
  641. if(qry1.value(4).toInt()==1){
  642. jasign.append(QString("status%1").arg(1));
  643. }else{
  644. jasign.append(QString("status%1").arg(3));
  645. }
  646. jasign.append(QString("timestamp%1").arg(myt));
  647. if(qry1.value(0).toInt()==2){
  648. jasign.append(QString("type%1").arg(1));
  649. }else{
  650. jasign.append(QString("type%1").arg(2));
  651. }
  652. jasign.append(QString("v%1").arg("1.0"));
  653. jasign.append(QString("%1").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  654. char md5str[33];
  655. chkmd5(jasign.replace("\r","").replace("\n","").replace(" ","").toUtf8().data(),md5str);
  656. md5str[32]='\0';
  657. jdata.append(QString(",\"sign\":\"%1\"").arg(md5str));
  658. QString jasign3=jdata.replace("\r","").replace("\n","").replace(" ","");
  659. jaSyncData(2,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jasign3+"}");
  660. }
  661. }
  662. // else if(qry1.value(0).toInt()==8){
  663. // time_t myt=time(NULL);
  664. // QString data3 = qry1.value(1).toString();
  665. // QStringList list = data3.split(",");
  666. // jdata.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  667. // jdata.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  668. // jdata.append(QString(",\"format\":\"%1\"").arg("json"));
  669. // jdata.append(QString(",\"v\":\"%1\"").arg("1.0"));
  670. // jdata.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  671. // jdata.append(QString(",\"pid\":\"%1\"").arg(cndev.Pid));
  672. // jdata.append(QString(",\"mainframe_id\":\"%1\"").arg(cndev.Mainframe_id));
  673. // jdata.append(QString(",\"loop_number\":\"%1\"").arg(list.at(1)));
  674. // jdata.append(QString(",\"position_number\":\"%1\"").arg(list.at(2)));
  675. // jdata.append(QString(",\"handler\":\"%1\"").arg(qry1.value(2).toString()));
  676. // }
  677. }
  678. }
  679. }
  680. }else if(flag==2){
  681. // QString sql = QString("select company from sp_owner where owner_code=%1").arg(DeviceID);
  682. // qry = mdb.exec(sql);
  683. for(int i=0;i<jaDevList.length();i++){
  684. JASyncDev jadev = jaDevList.at(i);
  685. if(jadev.Detection_id==DeviceID){
  686. found = true;
  687. QString sql1 = QString("select port,data3,data4 from sp_hj2017 where id=%1").arg(insertId);
  688. qry1 = mdb.exec(sql1);
  689. QString jdata = "";
  690. while(qry1.next()){
  691. if(qry1.value(0).toInt()<256){
  692. time_t myt=time(NULL);
  693. QString data3 = qry1.value(1).toString();
  694. QStringList list = data3.split(",");
  695. jdata.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  696. jdata.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  697. jdata.append(QString(",\"format\":\"%1\"").arg("json"));
  698. jdata.append(QString(",\"v\":\"%1\"").arg("1.0"));
  699. jdata.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  700. jdata.append(QString(",\"pid\":\"%1\"").arg(jadev.Pid));
  701. jdata.append(QString(",\"bid\":\"%1\"").arg(jadev.Bid));
  702. jdata.append(QString(",\"fid\":\"%1\"").arg(jadev.Fid));
  703. jdata.append(QString(",\"zid\":\"%1\"").arg(jadev.Zid));
  704. jdata.append(QString(",\"report_time\":\"%1\"").arg(myt));
  705. jdata.append(QString(",\"tid\":\"%1\"").arg(jadev.Tid));
  706. jdata.append(QString(",\"name\":\"%1\"").arg(qry1.value(2).toString().replace("\r","").replace("\n","").replace(" ","")));
  707. jdata.append(QString(",\"detection_id\":\"%1\"").arg(jadev.Detection_id));
  708. jdata.append(QString(",\"sid\":\"%1\"").arg(jadev.Sid));
  709. jdata.append(QString(",\"mainframe_id\":\"%1\"").arg(jadev.Mainframe_id));
  710. jdata.append(QString(",\"mainframe_name\":\"%1\"").arg(jadev.Mainframe_name));
  711. jdata.append(QString(",\"loop_number\":\"%1\"").arg(list.at(1)));
  712. jdata.append(QString(",\"position_number\":\"%1\"").arg(list.at(2)));
  713. jdata.append(QString(",\"val\":%1").arg(qry1.value(0).toInt()));
  714. QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  715. jasign.append(QString("bid%1").arg(jadev.Bid));
  716. jasign.append(QString("detection_id%1").arg(jadev.Detection_id));
  717. jasign.append(QString("fid%1").arg(jadev.Fid));
  718. jasign.append(QString("format%1").arg("json"));
  719. jasign.append(QString("loop_number%1").arg(list.at(1)));
  720. jasign.append(QString("mainframe_id%1").arg(jadev.Mainframe_id));
  721. jasign.append(QString("mainframe_name%1").arg(jadev.Mainframe_name));
  722. jasign.append(QString("name%1").arg(qry1.value(2).toString().replace("\r","").replace("\n","").replace(" ","")));
  723. jasign.append(QString("pid%1").arg(jadev.Pid));
  724. jasign.append(QString("position_number%1").arg(list.at(2)));
  725. jasign.append(QString("report_time%1").arg(myt));
  726. jasign.append(QString("sid%1").arg(jadev.Sid));
  727. jasign.append(QString("sign_method%1").arg("md5"));
  728. jasign.append(QString("tid%1").arg(jadev.Tid));
  729. jasign.append(QString("timestamp%1").arg(myt));
  730. jasign.append(QString("v%1").arg("1.0"));
  731. jasign.append(QString("val%1").arg(qry1.value(0).toInt()));
  732. jasign.append(QString("zid%1").arg(jadev.Zid));
  733. jasign.append(QString("%1").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  734. char md5str[33];
  735. chkmd5(jasign.replace("\r","").replace("\n","").replace(" ","").toUtf8().data(),md5str);
  736. md5str[32]='\0';
  737. jdata.append(QString(",\"sign\":\"%1\"").arg(md5str));
  738. QString jasign3=jdata.replace("\r","").replace("\n","").replace(" ","");
  739. jaSyncData(1,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jasign3+"}");
  740. }
  741. }
  742. }
  743. }
  744. if(!found){
  745. chkInList1(DeviceID);
  746. }
  747. AlarmReport(DeviceID,insertId,subType,CompanyCode,evt_name,evt,alarm_time,qry11.value(0).toInt());
  748. }else if(flag==3){
  749. chkInList1(DeviceID);
  750. }
  751. }else if(subType==6){
  752. if(flag==2){
  753. for(int i=0;i<jaDevList.length();i++){
  754. QString jdata1 = "";
  755. JASyncDev jadev1 = jaDevList.at(i);
  756. if(jadev1.Device_id==DeviceID){
  757. found = true;
  758. time_t myt=time(NULL);
  759. QString sql5 = QString("select data2, data4, ncmd from sp_rtu2017 where id=%1").arg(insertId);
  760. qry5 = mdb.exec(sql5);
  761. while(qry5.next()){
  762. QString rtudata= QString("%1 %2").arg(qry5.value(0).toString()).arg(qry5.value(1).toString());
  763. QString sql6 = QString("update sp_owner_status set content='%1' where device_id='%2' and point_code='%3'").arg(rtudata).arg(DeviceID).arg(qry5.value(2).toInt());
  764. qry6 = mdb.exec(sql6);
  765. }
  766. QString sql3 = QString("select point_code, point_data, content, data_time from sp_owner_status where device_id=%1").arg(DeviceID);
  767. qry3 = mdb.exec(sql3);
  768. jdata1.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  769. jdata1.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  770. jdata1.append(QString(",\"format\":\"%1\"").arg("json"));
  771. jdata1.append(QString(",\"v\":\"%1\"").arg("1.0"));
  772. jdata1.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  773. jdata1.append(QString(",\"pid\":\"%1\"").arg(jadev1.Pid));
  774. jdata1.append(QString(",\"bid\":\"%1\"").arg(jadev1.Bid));
  775. jdata1.append(QString(",\"fid\":\"%1\"").arg(jadev1.Fid));
  776. jdata1.append(QString(",\"zid\":\"%1\"").arg(jadev1.Zid));
  777. jdata1.append(QString(",\"report_time\":\"%1\"").arg(myt));
  778. jdata1.append(QString(",\"mid\":\"%1\"").arg(jadev1.Mid));
  779. jdata1.append(QString(",\"device_name\":\"%1\"").arg(jadev1.Device_name));
  780. QList<JaPno> pnoList = getJaPnoValue(jaDevList.at(i).Device_data);
  781. QJsonArray jajsonArray;
  782. for(int i=0;i<pnoList.length();i++){
  783. if(pnoList.at(i).Pno==0){
  784. QJsonObject jaobjRTU;
  785. jaobjRTU.insert("attr_id", pnoList.at(i).Attr);
  786. jaobjRTU.insert("attr_val", pnoList.at(i).Default1);
  787. jajsonArray.append(jaobjRTU);
  788. }
  789. }
  790. QString device_code;
  791. while(qry3.next()){
  792. for(int i=0;i<pnoList.length();i++){
  793. if(pnoList.at(i).Pno==qry3.value(0).toInt()&&qry3.value(0).toInt()!=0){
  794. device_code=QString("%1%2").arg(jadev1.Device_id).arg(jadev1.Val);
  795. if(qry3.value(2).toString().indexOf(QString::fromUtf8("正常"))==0||qry3.value(2).toString().indexOf(QString::fromUtf8("自动"))==0||qry3.value(2).toString().indexOf(QString::fromUtf8("停止"))==0){
  796. QJsonObject jaobjRTU1;
  797. jaobjRTU1.insert("attr_id", pnoList.at(i).Attr);
  798. jaobjRTU1.insert("attr_val", pnoList.at(i).Default1);
  799. jajsonArray.append(jaobjRTU1);
  800. }else if(qry3.value(2).toString().indexOf(QString::fromUtf8("关闭"))==0||qry3.value(2).toString().indexOf(QString::fromUtf8("手动"))==0||qry3.value(2).toString().indexOf(QString::fromUtf8("运行"))==0||qry3.value(2).toString().indexOf(QString::fromUtf8("故障"))==0){
  801. QJsonObject jaobjRTU2;
  802. jaobjRTU2.insert("attr_id", pnoList.at(i).Attr);
  803. jaobjRTU2.insert("attr_val", pnoList.at(i).Default2);
  804. jajsonArray.append(jaobjRTU2);
  805. }else{
  806. QJsonObject jaobjRTU3;
  807. jaobjRTU3.insert("attr_id", pnoList.at(i).Attr);
  808. jaobjRTU3.insert("attr_val", pnoList.at(i).Default1);
  809. jajsonArray.append(jaobjRTU3);
  810. }
  811. break;
  812. }
  813. }
  814. }
  815. jdata1.append(QString(",\"device_id\":\"%1\"").arg(device_code));
  816. jdata1.append(QString(",\"device_data\":\"%1\"").arg(QString(QJsonDocument(jajsonArray).toJson()).replace("\"","\\\"")));
  817. QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  818. jasign.append(QString("bid%1").arg(jadev1.Bid));
  819. jasign.append(QString("device_data%1").arg(QString(QJsonDocument(jajsonArray).toJson())));
  820. jasign.append(QString("device_id%1").arg(device_code));
  821. jasign.append(QString("device_name%1").arg(jadev1.Device_name));
  822. jasign.append(QString("fid%1").arg(jadev1.Fid));
  823. jasign.append(QString("format%1").arg("json"));
  824. jasign.append(QString("mid%1").arg(jadev1.Mid));
  825. jasign.append(QString("pid%1").arg(jadev1.Pid));
  826. jasign.append(QString("report_time%1").arg(myt));
  827. jasign.append(QString("sign_method%1").arg("md5"));
  828. jasign.append(QString("timestamp%1").arg(myt));
  829. jasign.append(QString("v%1").arg("1.0"));
  830. jasign.append(QString("zid%1").arg(jadev1.Zid));
  831. jasign.append(QString("%1").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  832. char md5str[33];
  833. chkmd5(jasign.replace("\r","").replace("\n","").replace(" ","").toUtf8().data(),md5str);
  834. md5str[32]='\0';
  835. jdata1.append(QString(",\"sign\":\"%1\"").arg(md5str));
  836. QString jasign3=jdata1.replace("\r","").replace("\n","").replace(" ","");
  837. jaSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jasign3+"}");
  838. }
  839. }
  840. if(!found){
  841. chkInList1(DeviceID);
  842. }
  843. AlarmReport(DeviceID,insertId,subType,CompanyCode,evt_name,evt,alarm_time,qry11.value(0).toInt());
  844. }else if(flag==3){
  845. chkInList1(DeviceID);
  846. }
  847. }else{
  848. if(flag==3){
  849. chkInList1(DeviceID);
  850. }else if(flag==2){
  851. chkInList1(DeviceID);
  852. AlarmReport(DeviceID,insertId,subType,CompanyCode,evt_name,evt,alarm_time,qry11.value(0).toInt());
  853. }
  854. }
  855. mdb.close();
  856. mdbOpened = false;
  857. }
  858. void Core::needSync(QString deviceCode)
  859. {
  860. logThread->appendData(QString("[ %1 dataupdate ] %2").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(deviceCode));
  861. thread->appendDevDataList(deviceCode);
  862. }
  863. void Core::companyAlarmChanged(QString companyCode)
  864. {
  865. wsCenter->checkLastNote(companyCode);
  866. }
  867. void Core::SyncData(QString uuid, QString jsonstr)
  868. {
  869. ypSyncdataList.append(SyncRep(uuid,jsonstr));
  870. }
  871. void Core::cnSyncData(QString uuid, QString jsonstr, int devCategory)
  872. {
  873. cnSyncdataLiet.append(CnSyncRep(uuid,jsonstr,devCategory));
  874. }
  875. void Core::jaSyncData(int xh,QString uuid,QString jsonstr)
  876. {
  877. qDebug()<<jsonstr.toUtf8().data();
  878. jaSyncdataLiet.append(JaSyncRep(xh,uuid,jsonstr));
  879. }
  880. void Core::finishedSlot(QNetworkReply *reply)
  881. {
  882. if(ypSyncdataList.length()>0){
  883. SyncRep rep = ypSyncdataList.first();
  884. if(reply->error()==QNetworkReply::NoError){
  885. QString bak_info = QString::fromUtf8(reply->readAll());
  886. sqlList2.append(QString::fromUtf8("update `ypsync_t_rec` set `send`=1, `reply_str`='%1', `reply_time`='%2' where `uuid`='%3'")
  887. .arg(bak_info).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  888. }else
  889. sqlList2.append(QString::fromUtf8("update `ypsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
  890. .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  891. ypSyncdataList.removeFirst();
  892. }
  893. isSending = false;
  894. }
  895. void Core::finishedSlot2(QNetworkReply *reply)
  896. {
  897. if(cnSyncdataLiet.length()>0){
  898. CnSyncRep rep = cnSyncdataLiet.first();
  899. if(reply->error()==QNetworkReply::NoError){
  900. QString bak_info = QString::fromUtf8(reply->readAll());
  901. sqlList2.append(QString::fromUtf8("update `cnsync_t_rec` set `send`=1, `reply_str`='%1', `reply_time`='%2' where `uuid`='%3'")
  902. .arg(bak_info).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  903. // printf("%s\n",bak_info.toUtf8().data());
  904. }else
  905. sqlList2.append(QString::fromUtf8("update `cnsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
  906. .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  907. cnSyncdataLiet.removeFirst();
  908. }
  909. isSending2 = false;
  910. }
  911. void Core::finishedSlot3(QNetworkReply *reply)
  912. {
  913. if(jaSyncdataLiet.length()>0){
  914. JaSyncRep rep = jaSyncdataLiet.first();
  915. if(reply->error()==QNetworkReply::NoError){
  916. QString bak_info = QString::fromUtf8(reply->readAll());
  917. sqlList2.append(QString::fromUtf8("update `jasync_t_rec` set `send`=1, `reply_str`='%1', `reply_time`='%2' where `uuid`='%3'")
  918. .arg(bak_info).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  919. printf("%s\n",bak_info.toUtf8().data());
  920. }else
  921. sqlList2.append(QString::fromUtf8("update `jasync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
  922. .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  923. jaSyncdataLiet.removeFirst();
  924. }
  925. isSending3 = false;
  926. }
  927. void Core::reply_timeout()
  928. {
  929. if(ypSyncdataList.length()>0){
  930. SyncRep rep = ypSyncdataList.first();
  931. sqlList2.append(QString::fromUtf8("update `ypsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
  932. .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  933. ypSyncdataList.removeFirst();
  934. }
  935. isSending = false;
  936. }
  937. void Core::reply_timeout2()
  938. {
  939. if(cnSyncdataLiet.length()>0){
  940. CnSyncRep rep = cnSyncdataLiet.first();
  941. sqlList2.append(QString::fromUtf8("update `cnsync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
  942. .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  943. cnSyncdataLiet.removeFirst();
  944. }
  945. isSending2 = false;
  946. }
  947. void Core::reply_timeout3()
  948. {
  949. if(jaSyncdataLiet.length()>0){
  950. JaSyncRep rep = jaSyncdataLiet.first();
  951. sqlList2.append(QString::fromUtf8("update `jasync_t_rec` set `reply_time`='%1' where `uuid`='%2'")
  952. .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Id));
  953. jaSyncdataLiet.removeFirst();
  954. }
  955. isSending3 = false;
  956. }
  957. void Core::time_out()
  958. {
  959. QSqlQuery qry;
  960. QSqlQuery qry1;
  961. int ret = 0;
  962. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  963. ytShm->updatetime[CORE_MAIN] = tmp_time;
  964. if(!mdbOpened)
  965. {
  966. mdbOpened = mdb.open();
  967. }
  968. if(isRunning)
  969. return;
  970. isRunning = true;
  971. if((tmp_time-jaworktime)>=1800){
  972. jaworktime=tmp_time;
  973. jaDevList.clear();
  974. qry = mdb.exec("select pid,bid,fid,tid,mid,zid,val,device_id,device_name,device_data,name,detection_id,sid,mainframe_id,mainframe_name,loop_number,position_number,report_time,device_type,company_code from sp_jingan_share");
  975. while(qry.next()){
  976. jaDevList.append(JASyncDev(qry.value(0).toString(),
  977. qry.value(1).toString(),
  978. qry.value(2).toString(),
  979. qry.value(3).toString(),
  980. qry.value(4).toString(),
  981. qry.value(5).toString(),
  982. qry.value(6).toInt(),
  983. qry.value(7).toString(),
  984. qry.value(8).toString(),
  985. qry.value(9).toString().trimmed(),
  986. qry.value(10).toString(),
  987. qry.value(11).toString(),
  988. qry.value(12).toString(),
  989. qry.value(13).toString(),
  990. qry.value(14).toString(),
  991. qry.value(15).toString(),
  992. qry.value(16).toString(),
  993. qry.value(17).toString(),
  994. qry.value(18).toInt(),
  995. qry.value(19).toString()));
  996. }
  997. qry.clear();
  998. syncDevList.clear();
  999. qry = mdb.exec("select owner_code,dwtype,object_code,start_port,rec_cur from sp_yangpu_share");
  1000. while(qry.next()){
  1001. syncDevList.append(YPSyncDev(qry.value(0).toString(),
  1002. qry.value(1).toString(),
  1003. qry.value(2).toString(),
  1004. qry.value(3).toInt(),
  1005. qry.value(4).toUInt()));
  1006. }
  1007. qry.clear();
  1008. cnDevList.clear();
  1009. qry = mdb.exec("select owner_code,dwtype,object_code,start_port,rec_cur,object_name, ownBid, devCategory, type from sp_changning_share");
  1010. while(qry.next()){
  1011. cnDevList.append(CNSyncDev(qry.value(0).toString(),
  1012. qry.value(5).toString(),
  1013. qry.value(1).toString(),
  1014. qry.value(2).toString(),
  1015. qry.value(3).toString().trimmed(),
  1016. qry.value(4).toUInt(),
  1017. qry.value(6).toString(),
  1018. qry.value(7).toInt(),
  1019. qry.value(8).toInt()));
  1020. }
  1021. qry.clear();
  1022. for(int i=0;i<jaDevList.length();i++){
  1023. JASyncDev cndev = jaDevList.at(i);
  1024. time_t myt=time(NULL);
  1025. QString jdata = "";
  1026. if(cndev.Device_type==2){
  1027. QString sql = QString("select point_code, point_data, dwtype, data_time from sp_owner_status where device_id=%1").arg(cndev.Device_id);
  1028. jdata.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  1029. jdata.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  1030. jdata.append(QString(",\"format\":\"%1\"").arg("json"));
  1031. jdata.append(QString(",\"v\":\"%1\"").arg("1.0"));
  1032. jdata.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  1033. jdata.append(QString(",\"pid\":\"%1\"").arg(cndev.Pid));
  1034. jdata.append(QString(",\"bid\":\"%1\"").arg(cndev.Bid));
  1035. jdata.append(QString(",\"fid\":\"%1\"").arg(cndev.Fid));
  1036. jdata.append(QString(",\"zid\":\"%1\"").arg(cndev.Zid));
  1037. jdata.append(QString(",\"report_time\":\"%1\"").arg(myt));
  1038. qry = mdb.exec(sql);
  1039. if(jaDevList.at(i).Device_data.length()>0){
  1040. jdata.append(QString(",\"mid\":\"%1\"").arg(cndev.Mid));
  1041. jdata.append(QString(",\"device_name\":\"%1\"").arg(cndev.Device_name));
  1042. jdata.append(QString(",\"device_id\":\"%1\"").arg(cndev.Device_id));
  1043. QJsonParseError json_error;
  1044. QJsonArray jajsonArray;
  1045. QJsonDocument jsonDoc(QJsonDocument::fromJson(jaDevList.at(i).Device_data.toUtf8(),&json_error));
  1046. QJsonObject jaobj;
  1047. QJsonObject jaobj2;
  1048. QJsonObject jaobj3;
  1049. if(json_error.error == QJsonParseError::NoError){
  1050. while(qry.next()){
  1051. if(qry.value(2).toInt()==2){
  1052. if(qry.value(0).toInt()==4){
  1053. QJsonArray json_root = jsonDoc.array();
  1054. if(json_root.size()>1){
  1055. QString qryval = qry.value(1).toString();
  1056. float num = qryval.toFloat();
  1057. QJsonObject obj = json_root.at(0).toObject();
  1058. QJsonObject obj2 = json_root.at(1).toObject();
  1059. QJsonObject obj3 = json_root.at(2).toObject();
  1060. jaobj.insert("attr_id", obj.value("attr_id"));
  1061. jaobj.insert("attr_val", obj.value("attr_val"));
  1062. jaobj2.insert("attr_id", obj2.value("attr_id"));
  1063. jaobj2.insert("attr_val", qry.value(1).toString());
  1064. jaobj3.insert("attr_id", obj3.value("attr_id"));
  1065. jaobj3.insert("attr_val", obj3.value("attr_val"));
  1066. jajsonArray.append(jaobj);
  1067. jajsonArray.append(jaobj2);
  1068. jajsonArray.append(jaobj3);
  1069. }else{
  1070. QJsonObject obj = json_root.at(0).toObject();
  1071. jaobj.insert("attr_id", obj.value("attr_id"));
  1072. jaobj.insert("attr_val", qry.value(1).toString());
  1073. jajsonArray.append(jaobj);
  1074. }
  1075. jdata.append(QString(",\"device_data\":\"%1\"").arg(QString(QJsonDocument(jajsonArray).toJson()).replace("\"","\\\"")));
  1076. QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  1077. jasign.append(QString("bid%1").arg(cndev.Bid));
  1078. jasign.append(QString("device_data%1").arg(QString(QJsonDocument(jajsonArray).toJson())));
  1079. jasign.append(QString("device_id%1").arg(cndev.Device_id));
  1080. jasign.append(QString("device_name%1").arg(cndev.Device_name));
  1081. jasign.append(QString("fid%1").arg(cndev.Fid));
  1082. jasign.append(QString("format%1").arg("json"));
  1083. jasign.append(QString("mid%1").arg(cndev.Mid));
  1084. jasign.append(QString("pid%1").arg(cndev.Pid));
  1085. jasign.append(QString("report_time%1").arg(myt));
  1086. jasign.append(QString("sign_method%1").arg("md5"));
  1087. jasign.append(QString("timestamp%1").arg(myt));
  1088. jasign.append(QString("v%1").arg("1.0"));
  1089. jasign.append(QString("zid%1").arg(cndev.Zid));
  1090. jasign.append(QString("%1").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  1091. char md5str[33];
  1092. chkmd5(jasign.replace("\r","").replace("\n","").replace(" ","").toUtf8().data(),md5str);
  1093. md5str[32]='\0';
  1094. jdata.append(QString(",\"sign\":\"%1\"").arg(md5str));
  1095. }
  1096. }
  1097. }
  1098. }
  1099. }
  1100. QString jasign2=jdata.replace("\r","").replace("\n","").replace(" ","");
  1101. jaSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jasign2+"}");
  1102. }else if(cndev.Device_type==6){
  1103. QString sql = QString("select point_code, point_data, content, data_time from sp_owner_status where device_id=%1").arg(cndev.Device_id);
  1104. jdata.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  1105. jdata.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  1106. jdata.append(QString(",\"format\":\"%1\"").arg("json"));
  1107. jdata.append(QString(",\"v\":\"%1\"").arg("1.0"));
  1108. jdata.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  1109. jdata.append(QString(",\"pid\":\"%1\"").arg(cndev.Pid));
  1110. jdata.append(QString(",\"bid\":\"%1\"").arg(cndev.Bid));
  1111. jdata.append(QString(",\"fid\":\"%1\"").arg(cndev.Fid));
  1112. jdata.append(QString(",\"zid\":\"%1\"").arg(cndev.Zid));
  1113. jdata.append(QString(",\"report_time\":\"%1\"").arg(myt));
  1114. qry = mdb.exec(sql);
  1115. jdata.append(QString(",\"mid\":\"%1\"").arg(cndev.Mid));
  1116. jdata.append(QString(",\"device_name\":\"%1\"").arg(cndev.Device_name));
  1117. QList<JaPno> pnoList = getJaPnoValue(jaDevList.at(i).Device_data);
  1118. QJsonArray jajsonArray;
  1119. for(int i=0;i<pnoList.length();i++){
  1120. if(pnoList.at(i).Pno==0){
  1121. QJsonObject jaobjRTU;
  1122. jaobjRTU.insert("attr_id", pnoList.at(i).Attr);
  1123. jaobjRTU.insert("attr_val", pnoList.at(i).Default1);
  1124. jajsonArray.append(jaobjRTU);
  1125. }
  1126. }
  1127. QString device_code;
  1128. while(qry.next()){
  1129. for(int i=0;i<pnoList.length();i++){
  1130. if(pnoList.at(i).Pno==qry.value(0).toInt()&&qry.value(0).toInt()!=0){
  1131. device_code=QString("%1%2").arg(cndev.Device_id).arg(cndev.Val);
  1132. 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){
  1133. QJsonObject jaobjRTU1;
  1134. jaobjRTU1.insert("attr_id", pnoList.at(i).Attr);
  1135. jaobjRTU1.insert("attr_val", pnoList.at(i).Default1);
  1136. jajsonArray.append(jaobjRTU1);
  1137. }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){
  1138. QJsonObject jaobjRTU2;
  1139. jaobjRTU2.insert("attr_id", pnoList.at(i).Attr);
  1140. jaobjRTU2.insert("attr_val", pnoList.at(i).Default2);
  1141. jajsonArray.append(jaobjRTU2);
  1142. }else{
  1143. QJsonObject jaobjRTU3;
  1144. jaobjRTU3.insert("attr_id", pnoList.at(i).Attr);
  1145. jaobjRTU3.insert("attr_val", pnoList.at(i).Default1);
  1146. jajsonArray.append(jaobjRTU3);
  1147. }
  1148. break;
  1149. }
  1150. }
  1151. }
  1152. jdata.append(QString(",\"device_id\":\"%1\"").arg(device_code));
  1153. jdata.append(QString(",\"device_data\":\"%1\"").arg(QString(QJsonDocument(jajsonArray).toJson()).replace("\"","\\\"")));
  1154. QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  1155. jasign.append(QString("bid%1").arg(cndev.Bid));
  1156. jasign.append(QString("device_data%1").arg(QString(QJsonDocument(jajsonArray).toJson())));
  1157. jasign.append(QString("device_id%1").arg(device_code));
  1158. jasign.append(QString("device_name%1").arg(cndev.Device_name));
  1159. jasign.append(QString("fid%1").arg(cndev.Fid));
  1160. jasign.append(QString("format%1").arg("json"));
  1161. jasign.append(QString("mid%1").arg(cndev.Mid));
  1162. jasign.append(QString("pid%1").arg(cndev.Pid));
  1163. jasign.append(QString("report_time%1").arg(myt));
  1164. jasign.append(QString("sign_method%1").arg("md5"));
  1165. jasign.append(QString("timestamp%1").arg(myt));
  1166. jasign.append(QString("v%1").arg("1.0"));
  1167. jasign.append(QString("zid%1").arg(cndev.Zid));
  1168. jasign.append(QString("%1").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  1169. char md5str[33];
  1170. chkmd5(jasign.replace("\r","").replace("\n","").replace(" ","").toUtf8().data(),md5str);
  1171. md5str[32]='\0';
  1172. jdata.append(QString(",\"sign\":\"%1\"").arg(md5str));
  1173. QString jasign3=jdata.replace("\r","").replace("\n","").replace(" ","");
  1174. jaSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jasign3+"}");
  1175. }else if(cndev.Device_type==1){
  1176. // QString sql = QString("select point_code, point_data, content, data_time from sp_owner_status where device_id=%1").arg(cndev.Device_id);
  1177. jdata.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  1178. jdata.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  1179. jdata.append(QString(",\"format\":\"%1\"").arg("json"));
  1180. jdata.append(QString(",\"v\":\"%1\"").arg("1.0"));
  1181. jdata.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  1182. jdata.append(QString(",\"pid\":\"%1\"").arg(cndev.Pid));
  1183. jdata.append(QString(",\"bid\":\"%1\"").arg(cndev.Bid));
  1184. jdata.append(QString(",\"fid\":\"%1\"").arg(cndev.Fid));
  1185. jdata.append(QString(",\"zid\":\"%1\"").arg(cndev.Zid));
  1186. jdata.append(QString(",\"report_time\":\"%1\"").arg(myt));
  1187. // qry = mdb.exec(sql);
  1188. jdata.append(QString(",\"mid\":\"%1\"").arg(cndev.Mid));
  1189. jdata.append(QString(",\"device_name\":\"%1\"").arg(cndev.Device_name));
  1190. jdata.append(QString(",\"device_id\":\"%1\"").arg("10"+cndev.Device_id));
  1191. QJsonParseError json_error;
  1192. QJsonArray jajsonArray;
  1193. QJsonDocument jsonDoc(QJsonDocument::fromJson(jaDevList.at(i).Device_data.toUtf8(),&json_error));
  1194. QJsonObject jaobj;
  1195. QJsonObject jaobj2;
  1196. QJsonObject jaobj3;
  1197. QJsonObject jaobj4;
  1198. QJsonObject jaobj5;
  1199. QJsonObject jaobj6;
  1200. if(json_error.error == QJsonParseError::NoError){
  1201. QJsonArray json_root = jsonDoc.array();
  1202. if(json_root.size()>1){
  1203. QJsonObject obj = json_root.at(0).toObject();
  1204. QJsonObject obj2 = json_root.at(1).toObject();
  1205. QJsonObject obj3 = json_root.at(2).toObject();
  1206. QJsonObject obj4 = json_root.at(3).toObject();
  1207. QJsonObject obj5 = json_root.at(4).toObject();
  1208. QJsonObject obj6 = json_root.at(5).toObject();
  1209. jaobj.insert("attr_id", obj.value("attr"));
  1210. jaobj.insert("attr_val", obj.value("default1"));
  1211. jaobj2.insert("attr_id", obj2.value("attr"));
  1212. jaobj2.insert("attr_val", obj2.value("default1"));
  1213. jaobj3.insert("attr_id", obj3.value("attr"));
  1214. jaobj3.insert("attr_val", obj3.value("default1"));
  1215. jaobj4.insert("attr_id", obj4.value("attr"));
  1216. jaobj4.insert("attr_val", obj4.value("default1"));
  1217. jaobj5.insert("attr_id", obj5.value("attr"));
  1218. jaobj5.insert("attr_val", obj5.value("default1"));
  1219. jaobj6.insert("attr_id", obj6.value("attr"));
  1220. jaobj6.insert("attr_val", obj6.value("default1"));
  1221. jajsonArray.append(jaobj);
  1222. jajsonArray.append(jaobj2);
  1223. jajsonArray.append(jaobj3);
  1224. jajsonArray.append(jaobj4);
  1225. jajsonArray.append(jaobj5);
  1226. jajsonArray.append(jaobj6);
  1227. }
  1228. }
  1229. jdata.append(QString(",\"device_data\":\"%1\"").arg(QString(QJsonDocument(jajsonArray).toJson()).replace("\"","\\\"")));
  1230. QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  1231. jasign.append(QString("bid%1").arg(cndev.Bid));
  1232. jasign.append(QString("device_data%1").arg(QString(QJsonDocument(jajsonArray).toJson())));
  1233. jasign.append(QString("device_id%1").arg("10"+cndev.Device_id));
  1234. jasign.append(QString("device_name%1").arg(cndev.Device_name));
  1235. jasign.append(QString("fid%1").arg(cndev.Fid));
  1236. jasign.append(QString("format%1").arg("json"));
  1237. jasign.append(QString("mid%1").arg(cndev.Mid));
  1238. jasign.append(QString("pid%1").arg(cndev.Pid));
  1239. jasign.append(QString("report_time%1").arg(myt));
  1240. jasign.append(QString("sign_method%1").arg("md5"));
  1241. jasign.append(QString("timestamp%1").arg(myt));
  1242. jasign.append(QString("v%1").arg("1.0"));
  1243. jasign.append(QString("zid%1").arg(cndev.Zid));
  1244. jasign.append(QString("%1").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  1245. char md5str[33];
  1246. chkmd5(jasign.replace("\r","").replace("\n","").replace(" ","").toUtf8().data(),md5str);
  1247. md5str[32]='\0';
  1248. jdata.append(QString(",\"sign\":\"%1\"").arg(md5str));
  1249. QString jasign4=jdata.replace("\r","").replace("\n","").replace(" ","");
  1250. jaSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jasign4+"}");
  1251. // QString pointData = qry.value(1).toString();
  1252. // if(pointData.compare("H02P1")==0){
  1253. // jdata.append(QString(",\"val\":%1").arg(2));
  1254. // }else if(pointData.compare("H02P2")==0){
  1255. // jdata.append(QString(",\"val\":%1").arg(4));
  1256. // }else if(pointData.compare("H02P3")==0){
  1257. // jdata.append(QString(",\"val\":%1").arg(8));
  1258. // }else if(pointData.compare("H02P4")==0){
  1259. // jdata.append(QString(",\"val\":%1").arg(16));
  1260. // }else{
  1261. // jdata.append(QString(",\"val\":%1").arg(32));
  1262. // }
  1263. // QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  1264. // jasign.append(QString("\"bid\"\"%1\"").arg(cndev.Bid));
  1265. // jasign.append(QString("\"device_data\"\"%1\"").arg("QString(QJsonDocument(jajsonArray).toJson())"));
  1266. // jasign.append(QString("\"device_id\"\"%1\"").arg(cndev.Device_id));
  1267. // jasign.append(QString("\"device_name\"\"%1\"").arg(cndev.Device_name));
  1268. // jasign.append(QString("\"fid\"\"%1\"").arg(cndev.Fid));
  1269. // jasign.append(QString("\"format\"\"%1\"").arg("json"));
  1270. // jasign.append(QString("\"mid\"\"%1\"").arg(cndev.Mid));
  1271. // jasign.append(QString("\"pid\"\"%1\"").arg(cndev.Pid));
  1272. // jasign.append(QString("\"report_time\"\"%1\"").arg(myt));
  1273. // jasign.append(QString("\"sign_method\"\"%1\"").arg("md5"));
  1274. // jasign.append(QString("\"timestamp\"\"%1\"").arg(myt));
  1275. // jasign.append(QString("\"v\"\"%1\"").arg("1.0"));
  1276. // jasign.append(QString("\"zid\"\"%1\"").arg(cndev.Zid));
  1277. // jasign.append(QString("\"%1\"").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  1278. // char md5str[33];
  1279. // chkmd5(jasign.toUtf8().data(),md5str);
  1280. // md5str[32]='\0';
  1281. // jdata.append(QString(",\"sign\":\"%1\"").arg(md5str));
  1282. }else if(cndev.Device_type==7){
  1283. QString sql = QString("select point_code, point_data, content, data_time from sp_owner_status where device_id=%1").arg(cndev.Device_id);
  1284. jdata.append(QString("\"app_key\":\"%1\"").arg("9e555b8b2244ebc1f59695824b86c5a0"));
  1285. jdata.append(QString(",\"timestamp\":\"%1\"").arg(myt));
  1286. jdata.append(QString(",\"format\":\"%1\"").arg("json"));
  1287. jdata.append(QString(",\"v\":\"%1\"").arg("1.0"));
  1288. jdata.append(QString(",\"sign_method\":\"%1\"").arg("md5"));
  1289. jdata.append(QString(",\"pid\":\"%1\"").arg(cndev.Pid));
  1290. jdata.append(QString(",\"bid\":\"%1\"").arg(cndev.Bid));
  1291. jdata.append(QString(",\"fid\":\"%1\"").arg(cndev.Fid));
  1292. jdata.append(QString(",\"zid\":\"%1\"").arg(cndev.Zid));
  1293. jdata.append(QString(",\"report_time\":\"%1\"").arg(myt));
  1294. qry = mdb.exec(sql);
  1295. jdata.append(QString(",\"mid\":\"%1\"").arg(cndev.Mid));
  1296. jdata.append(QString(",\"device_name\":\"%1\"").arg(cndev.Device_name));
  1297. QList<JaPno> pnoList = getJaPnoValue(jaDevList.at(i).Device_data);
  1298. QJsonArray jajsonArray;
  1299. // for(int i=0;i<pnoList.length();i++){
  1300. // if(pnoList.at(i).Pno==0){
  1301. // QJsonObject jaobjRTU;
  1302. // jaobjRTU.insert("attr_id", pnoList.at(i).Attr);
  1303. // jaobjRTU.insert("attr_val", pnoList.at(i).Default1);
  1304. // jajsonArray.append(jaobjRTU);
  1305. // }
  1306. // }
  1307. QString device_code;
  1308. while(qry.next()){
  1309. for(int i=0;i<pnoList.length();i++){
  1310. if(pnoList.at(i).Pno==qry.value(0).toInt()&&qry.value(0).toInt()!=0){
  1311. device_code=QString("%1%2").arg(cndev.Device_id).arg(cndev.Val);
  1312. if(pnoList.at(i).Default1.indexOf(QString::fromUtf8("正常"))==0){
  1313. if(qry.value(1).toInt()==0){
  1314. QJsonObject jaobjRTU1;
  1315. jaobjRTU1.insert("attr_id", pnoList.at(i).Attr);
  1316. jaobjRTU1.insert("attr_val", 0);
  1317. jajsonArray.append(jaobjRTU1);
  1318. }else{
  1319. QJsonObject jaobjRTU2;
  1320. jaobjRTU2.insert("attr_id", pnoList.at(i).Attr);
  1321. jaobjRTU2.insert("attr_val", 300);
  1322. jajsonArray.append(jaobjRTU2);
  1323. }
  1324. }else{
  1325. QJsonObject jaobjRTU;
  1326. jaobjRTU.insert("attr_id", pnoList.at(i).Attr);
  1327. jaobjRTU.insert("attr_val", qry.value(1).toString());
  1328. jajsonArray.append(jaobjRTU);
  1329. }
  1330. break;
  1331. }
  1332. }
  1333. }
  1334. jdata.append(QString(",\"device_id\":\"%1\"").arg(device_code));
  1335. jdata.append(QString(",\"device_data\":\"%1\"").arg(QString(QJsonDocument(jajsonArray).toJson()).replace("\"","\\\"")));
  1336. QString jasign = "ff6322b1163b11ea91d31bbf0a452a93app_key9e555b8b2244ebc1f59695824b86c5a0";
  1337. jasign.append(QString("bid%1").arg(cndev.Bid));
  1338. jasign.append(QString("device_data%1").arg(QString(QJsonDocument(jajsonArray).toJson())));
  1339. jasign.append(QString("device_id%1").arg(device_code));
  1340. jasign.append(QString("device_name%1").arg(cndev.Device_name));
  1341. jasign.append(QString("fid%1").arg(cndev.Fid));
  1342. jasign.append(QString("format%1").arg("json"));
  1343. jasign.append(QString("mid%1").arg(cndev.Mid));
  1344. jasign.append(QString("pid%1").arg(cndev.Pid));
  1345. jasign.append(QString("report_time%1").arg(myt));
  1346. jasign.append(QString("sign_method%1").arg("md5"));
  1347. jasign.append(QString("timestamp%1").arg(myt));
  1348. jasign.append(QString("v%1").arg("1.0"));
  1349. jasign.append(QString("zid%1").arg(cndev.Zid));
  1350. jasign.append(QString("%1").arg("ff6322b1163b11ea91d31bbf0a452a93"));
  1351. char md5str[33];
  1352. chkmd5(jasign.replace("\r","").replace("\n","").replace(" ","").toUtf8().data(),md5str);
  1353. md5str[32]='\0';
  1354. jdata.append(QString(",\"sign\":\"%1\"").arg(md5str));
  1355. QString jasign3=jdata.replace("\r","").replace("\n","").replace(" ","");
  1356. jaSyncData(3,QUuid::createUuid().toString().replace("{","").replace("}",""),"{"+jasign3+"}");
  1357. }
  1358. }
  1359. }
  1360. if((!isSending2)&&(cnSyncdataLiet.length()>0)){
  1361. isSending2 = true;
  1362. CnSyncRep rep = cnSyncdataLiet.first();
  1363. QByteArray Report = rep.JsonStr.toUtf8();
  1364. QNetworkRequest *req = new QNetworkRequest();
  1365. if((rep.devCategory>200)&&(rep.devCategory<207))
  1366. req->setUrl(QUrl("http://www.cnfire119.cn/open/data/acquisition/YLB/add?appkey=20190806608233073670094848&secret=72c15b023b0fab056ed3b9c7c45bff0c "));
  1367. else if(rep.devCategory==91)
  1368. req->setUrl(QUrl("http://www.cnfire119.cn/open/data/acquisition/WaterPump/add?appkey=20190806608233073670094848&secret=72c15b023b0fab056ed3b9c7c45bff0c "));
  1369. req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
  1370. req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
  1371. sqlList2.append(QString("insert into `cnsync_t_rec` (`id`,`uuid`,`data_str`, `send`, `store_time`) values (NULL,'%1','%2',0,'%3')")
  1372. .arg(rep.Id).arg(
  1373. req->url().toString()+"\r\n"+
  1374. // req->header(QNetworkRequest::ContentTypeHeader).toString()+"\r\n"+
  1375. // req->header(QNetworkRequest::ContentLengthHeader).toString()+"\r\n"+
  1376. rep.JsonStr).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1377. QNetworkReply *reply = cnnetAccessManager->post(*req,Report);
  1378. QReplayTimeout *pTimeout = new QReplayTimeout(reply,10000);
  1379. connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout2()));
  1380. }
  1381. if((!isSending3)&&(jaSyncdataLiet.length()>0)){
  1382. isSending3 = true;
  1383. JaSyncRep rep = jaSyncdataLiet.first();
  1384. QByteArray Report = rep.JsonStr.toUtf8();
  1385. QNetworkRequest *req = new QNetworkRequest();
  1386. if(rep.Xh==1){
  1387. req->setUrl(QUrl("http://jareceive.119.net/fireapi/matrix/position"));
  1388. }else if(rep.Xh==0){
  1389. req->setUrl(QUrl("http://jareceive.119.net/fireapi/matrix/receiveAll"));
  1390. }else if(rep.Xh==2){
  1391. req->setUrl(QUrl("http://jareceive.119.net/fireapi/operation/handleEvent"));
  1392. // req->setUrl(QUrl("http://www.jd-ioe.com:80/ytapi/admin/order/jingan"));
  1393. }else if(rep.Xh==3){
  1394. req->setUrl(QUrl("http://receive.119.net/fireapi/matrix/receiveAll"));
  1395. }
  1396. // req->setUrl(QUrl("http://www.jd-ioe.com:80/ytapi/admin/order/jingan"));
  1397. req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
  1398. req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
  1399. sqlList2.append(QString("insert into `jasync_t_rec` (`id`,`uuid`,`data_str`, `send`, `store_time`) values (NULL,'%1','%2',0,'%3')")
  1400. .arg(rep.Id).arg(
  1401. req->url().toString()+"\r\n"+
  1402. // req->header(QNetworkRequest::ContentTypeHeader).toString()+"\r\n"+
  1403. // req->header(QNetworkRequest::ContentLengthHeader).toString()+"\r\n"+
  1404. rep.JsonStr).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1405. QNetworkReply *reply = janetAccessManager->post(*req,Report);
  1406. QReplayTimeout *pTimeout = new QReplayTimeout(reply,10000);
  1407. connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout3()));
  1408. }
  1409. if((!isSending)&&(ypSyncdataList.length()>0)){
  1410. isSending = true;
  1411. SyncRep rep = ypSyncdataList.first();
  1412. sqlList2.append(QString("insert into `ypsync_t_rec` (`id`,`uuid`,`data_str`, `send`, `store_time`) values (NULL,'%1','%2',0,'%3')")
  1413. .arg(rep.Id).arg(rep.JsonStr).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1414. QByteArray Report = rep.JsonStr.toUtf8();
  1415. QNetworkRequest *req = new QNetworkRequest();
  1416. req->setUrl(QUrl("http://218.242.51.14:8088/api-devicelog-collect/data/NonLoraData"));
  1417. req->setHeader(QNetworkRequest::ContentTypeHeader,"application/json; charset=UTF-8");
  1418. req->setHeader(QNetworkRequest::ContentLengthHeader,QString("%1").arg(Report.length()).toUtf8());
  1419. QNetworkReply *reply = netAccessManager->post(*req,Report);
  1420. QReplayTimeout *pTimeout = new QReplayTimeout(reply,10000);
  1421. connect(pTimeout, SIGNAL(net_timeout()),this,SLOT(reply_timeout()));
  1422. }
  1423. if(sqlList.length()>0){
  1424. if(db.transaction()){
  1425. while(sqlList.length()>0){
  1426. db.exec(sqlList.first());
  1427. sqlList.removeFirst();
  1428. }
  1429. db.commit();
  1430. }
  1431. }
  1432. if(sqlList2.length()>0){
  1433. QSqlDatabase recdb;
  1434. if(QSqlDatabase::contains("rec_db"))
  1435. recdb = QSqlDatabase::database("rec_db");
  1436. else
  1437. recdb = QSqlDatabase::addDatabase("QSQLITE","rec_db");
  1438. recdb.setDatabaseName(QString("db/watchdoglog%1.db").arg(QDate::currentDate().toString("yyyyMMdd")));
  1439. if(recdb.open()){
  1440. if(!chk_table("ypsync_t_rec",recdb.tables()))
  1441. {
  1442. 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))");
  1443. }
  1444. if(!chk_table("cnsync_t_rec",recdb.tables())){
  1445. 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))");
  1446. }
  1447. if(!chk_table("jasync_t_rec",recdb.tables())){
  1448. 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))");
  1449. }
  1450. if(recdb.transaction()){
  1451. while(sqlList2.length()>0){
  1452. recdb.exec(sqlList2.first());
  1453. sqlList2.removeFirst();
  1454. }
  1455. recdb.commit();
  1456. }
  1457. recdb.close();
  1458. }
  1459. // QSqlDatabase::removeDatabase("rec_db");
  1460. }
  1461. if((tmp_time-work_time)>59){
  1462. work_time = tmp_time;
  1463. qry = db.exec("select `app_name`, `app_path`, `keep_working`, `wait_time` , `log_limit`, `keep_size` from `app_t_conf`");
  1464. while(qry.next()){
  1465. QString app_name = qry.value(0).toString();
  1466. QString app_path = qry.value(1).toString();
  1467. bool keep_working = (qry.value(2).toUInt()==1);
  1468. uint wait_time = qry.value(3).toUInt();
  1469. bool log_limit = (qry.value(4).toUInt()==1);
  1470. qint64 keep_size = qry.value(5).toLongLong();
  1471. if(app_name.compare("workerman")==0){
  1472. QFileInfoList loglist= QDir(QString("%1").arg(app_path)).entryInfoList();
  1473. qint64 current_size = 0;
  1474. uint current_time = 0;
  1475. // bool nofile = true;
  1476. for(int i=0;i<loglist.length();i++)
  1477. {
  1478. QFileInfo info = loglist.at(i);
  1479. if(((info.isFile())&&(!info.isDir()))&&(info.suffix().indexOf("log")>=0))
  1480. {
  1481. // nofile = false;
  1482. current_size += info.size();
  1483. if(info.lastModified().toTime_t()>current_time)
  1484. current_time = info.lastModified().toTime_t();
  1485. }
  1486. }
  1487. if(log_limit){
  1488. if(current_size>keep_size){
  1489. ret = system(QString("rm -f %1/*.log").arg(app_path).toUtf8().data());
  1490. db.exec(QString("insert into operation_t_rec (`id`, `app_name`, `operation_type`, `operation_comment`,`store_time`) values (NULL,'%1',2,'delete file %2/*.log', '%3')").arg(app_name).arg(app_path).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1491. }
  1492. }
  1493. }else{
  1494. QDir dir(QString("%1/log").arg(app_path));
  1495. dir.setSorting(QDir::Time|QDir::Reversed);
  1496. QFileInfoList loglist = dir.entryInfoList();
  1497. qint64 current_size = 0;
  1498. uint current_time = 0;
  1499. // bool nofile = true;
  1500. for(int i=0;i<loglist.length();i++)
  1501. {
  1502. QFileInfo info = loglist.at(i);
  1503. if((info.isFile())&&(!info.isDir()))
  1504. {
  1505. // nofile = false;
  1506. current_size += info.size();
  1507. if(info.lastModified().toTime_t()>current_time)
  1508. current_time = info.lastModified().toTime_t();
  1509. }
  1510. }
  1511. if(log_limit){
  1512. if(current_size>keep_size)
  1513. {
  1514. for(int i=0;i<loglist.length();i++)
  1515. {
  1516. QFileInfo info = loglist.at(i);
  1517. qint64 f_size = info.size();
  1518. if((info.isFile())&&(!info.isDir())&&(f_size>0))
  1519. {
  1520. if(QFile(info.absoluteFilePath()).remove())
  1521. {
  1522. db.exec(QString("insert into operation_t_rec (`id`, `app_name`, `operation_type`, `operation_comment`,`store_time`) values (NULL,'%1',2,'delete file %2', '%3')").arg(app_name).arg(info.fileName()).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1523. current_size -= f_size;
  1524. }
  1525. }
  1526. if(current_size<=keep_size)
  1527. break;
  1528. }
  1529. ret = system(QString("rm -f %1/vendor/workerman/*.log").arg(app_path).toUtf8().data());
  1530. }
  1531. }
  1532. uint c_time = QDateTime::currentDateTime().toTime_t();
  1533. if(keep_working)
  1534. {
  1535. if(((c_time-wait_time)>(current_time+(times*60)))
  1536. &&(current_time>0))
  1537. {
  1538. ret = system(QString("cd %1 && php start.php restart -d && cd").arg(app_path).toUtf8().data());
  1539. db.exec(QString("insert into operation_t_rec (`id`, `app_name`, `operation_type`, `operation_comment`,`store_time`) values (NULL,'%1',1,'restart(%2)', '%3')").arg(app_name).arg(QDateTime::fromTime_t(current_time).toString("yyyy-MM-dd HH:mm:ss")).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1540. }
  1541. }
  1542. }
  1543. }
  1544. qry.clear();
  1545. }
  1546. times++;
  1547. isRunning = false;
  1548. mdb.close();
  1549. mdbOpened = false;
  1550. }
  1551. QList<JaPno> Core::getJaPnoValue(QString pnoset)
  1552. {
  1553. QList<JaPno> list;
  1554. QJsonParseError json_error;
  1555. QJsonDocument jsonDoc(QJsonDocument::fromJson(pnoset.toUtf8(),&json_error));
  1556. if(json_error.error == QJsonParseError::NoError){
  1557. QJsonArray json_root = jsonDoc.array();
  1558. for(int i=0;i<json_root.size();i++){
  1559. QJsonObject obj = json_root.at(i).toObject();
  1560. QString name = obj.value("name").toString();
  1561. QString attr = obj.value("attr").toString();
  1562. int port = obj.value("port").toInt();
  1563. QString defvalue1 = obj.value("default1").toString();
  1564. QString defvalue2 = obj.value("default2").toString();
  1565. if((port>-2)&&(name.length()>0))
  1566. list.append(JaPno(name,attr,port,defvalue1,defvalue2));
  1567. }
  1568. }
  1569. return list;
  1570. }
  1571. bool Core::chk_table(QString tablename, QStringList tables)
  1572. {
  1573. for(int i=0;i<tables.length();i++)
  1574. {
  1575. if(tables.at(i).compare(tablename)==0)
  1576. return true;
  1577. }
  1578. return false;
  1579. }
  1580. void Core::db_init()
  1581. {
  1582. if(!chk_table("app_t_conf",db.tables()))
  1583. {
  1584. db.exec("create table `app_t_conf` (`id` integer primary key autoincrement, `app_name` text(30), `app_path` text(256), `keep_working` integer , `wait_time` integer, `log_limit` integer, `keep_size` integer)");
  1585. db.exec("insert into `app_t_conf` (`id`, `app_name`, `app_path`, `keep_working`, `wait_time` , `log_limit`, `keep_size` ) values (NULL, 'workerman', '/usky/jd_ctiserver/vendor/workerman', 1, 1800, 1, 524288000)");
  1586. db.exec("insert into `app_t_conf` (`id`, `app_name`, `app_path`, `keep_working`, `wait_time` , `log_limit`, `keep_size` ) values (NULL, 'jd_rtu', '/jd_rtu', 1, 1800, 1, 524288000)");
  1587. db.exec("insert into `app_t_conf` (`id`, `app_name`, `app_path`, `keep_working`, `wait_time` , `log_limit`, `keep_size` ) values (NULL, 'jd_efire', '/usky/jd_electrical', 1, 3600, 1, 524288000)");
  1588. db.exec("insert into `app_t_conf` (`id`, `app_name`, `app_path`, `keep_working`, `wait_time` , `log_limit`, `keep_size` ) values (NULL, 'jd_userinfo', '/usky/jd_userinfo', 1, 900, 1, 524288000)");
  1589. db.exec("insert into `app_t_conf` (`id`, `app_name`, `app_path`, `keep_working`, `wait_time` , `log_limit`, `keep_size` ) values (NULL, 'jd_water', '/usky/jd_water', 1, 900, 1, 524288000)");
  1590. }
  1591. if(!chk_table("operation_t_rec",db.tables()))
  1592. {
  1593. db.exec("create table `operation_t_rec` (`id` integer primary key autoincrement, `app_name` text(30), `operation_type` integer, `operation_comment` text(256), `store_time` text(20))");
  1594. }
  1595. }