db_syncthread.cpp 162 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390
  1. #include "db_syncthread.h"
  2. #include "ytservicecore.h"
  3. #include <time.h>
  4. #include <openssl/md5.h>
  5. #include <string.h>
  6. //void chkmd5(const char *data, char *md5){
  7. // MD5_CTX ctx;
  8. // unsigned char tmp,md[16];
  9. // int i;
  10. // MD5_Init(&ctx);
  11. // MD5_Update(&ctx,data,strlen(data));
  12. // MD5_Final(md,&ctx);
  13. // for(i=0;i<16;i++){
  14. // tmp = (md[i]>>4)&0x0f;
  15. // if(tmp<10)
  16. // md5[i*2+0] = (char)(tmp+0x30);
  17. // else
  18. // md5[i*2+0] = (char)(tmp+0x37);
  19. // tmp = md[i]&0x0f;
  20. // if(tmp<10)
  21. // md5[i*2+1] = (char)(tmp+0x30);
  22. // else
  23. // md5[i*2+1] = (char)(tmp+0x37);
  24. // }
  25. // md5[32] = 0x00;
  26. //}
  27. bool compareAlarmSet(const AlarmSet &a1, const AlarmSet &a2)
  28. {
  29. if(a1.AlarmTime>a2.AlarmTime)
  30. return true;
  31. return false;
  32. }
  33. DB_SyncThread::DB_SyncThread(QObject *parent) :
  34. QThread(parent)
  35. {
  36. isWorking = false;
  37. deviceDataList.clear();
  38. day = 255;
  39. initTime = true;
  40. // logThread = new LogThread(this);
  41. // logThread->start();
  42. ProgramConf *conf = new ProgramConf(this);
  43. mdb = QSqlDatabase::addDatabase(conf->getDbDrive(),conf->getDbConnectName());
  44. mdb.setDatabaseName(conf->getDbName());
  45. mdb.setHostName(conf->getDbHost());
  46. mdb.setPort(conf->getDbPort());
  47. mdb.setUserName(conf->getDbUser());
  48. mdb.setPassword(conf->getDbPassword());
  49. mdbOpened = mdb.open();
  50. }
  51. bool DB_SyncThread::userInfoSync(QString devid,QString deviceCode, uint sync_id,QString tbname,QDate chkday,uint ID, QString companyCode)
  52. {
  53. QString qrysql,sql;
  54. QString upsql_0="select 1;",upsql_1="select 1;";
  55. bool found = false;
  56. bool updated = false;
  57. int count=0;
  58. QSqlQuery qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_hj2017 where device_code='%1' and data1<>'U44' and time<now()").arg(devid));
  59. if(qry2.next()){
  60. mdb.exec(QString("update sp_device_sync set alm_count=%1, alm_confirm=%2 where device_id='%3'")
  61. .arg(qry2.value(0).toInt())
  62. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  63. .arg(devid));
  64. }
  65. qry2.clear();
  66. qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_hj2017 where device_code='%1' and data1='U44' and time<now()").arg(devid));
  67. if(qry2.next()){
  68. mdb.exec(QString("update sp_device_sync set com_count=%1, com_confirm=%2 where device_id='%3'")
  69. .arg(qry2.value(0).toInt())
  70. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  71. .arg(devid));
  72. }
  73. qry2.clear();
  74. for(int i=0;i<dList.length();i++){
  75. if(dList.at(i).compare(deviceCode)==0)
  76. {
  77. found = true;
  78. break;
  79. }
  80. }
  81. if(!found){
  82. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','0','','1970-01-01 08:00:00','');").arg(deviceCode));
  83. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','1','','1970-01-01 08:00:00','');").arg(deviceCode));
  84. dList.append(deviceCode);
  85. pcList.append(0);
  86. dList.append(deviceCode);
  87. pcList.append(1);
  88. }
  89. qrysql = QString("select id, data3, data5, time, data2, data4 from `%1` where id> %2 and time>'%3-%4-%5 00:00:00' order by id").arg(tbname).arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0'));
  90. qry2 = mdb.exec(qrysql);
  91. while(qry2.next()){
  92. setCompanyAlarmSet(deviceCode, AlarmSet(0xffffffff,"",QString::fromUtf8("%1,%2").arg(qry2.value(4).toString()).arg(qry2.value(5).toString()),1,qry2.value(3).toDateTime().toTime_t(),1));
  93. updated = true;
  94. if(count==0)
  95. sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  96. .arg(qry2.value(0).toUInt()).arg(devid).arg(qry2.value(1).isNull()?"0":"1")
  97. .arg(qry2.value(2).isNull()?"":qry2.value(2).toString()).arg(qry2.value(3).isNull()?"1970-01-01 08:00:00":qry2.value(3).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  98. .arg(qry2.value(4).isNull()?"":qry2.value(4).toString()).arg(qry2.value(5).isNull()?"":qry2.value(5).toString());
  99. else
  100. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  101. .arg(qry2.value(0).toUInt()).arg(devid).arg(qry2.value(1).isNull()?"0":"1")
  102. .arg(qry2.value(2).isNull()?"":qry2.value(2).toString()).arg(qry2.value(3).isNull()?"1970-01-01 08:00:00":qry2.value(3).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  103. .arg(qry2.value(4).isNull()?"":qry2.value(4).toString()).arg(qry2.value(5).isNull()?"":qry2.value(5).toString());
  104. if(qry2.value(1).isNull())
  105. upsql_0 = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3 %4', point_name='通信报警',dwtype=%5 where device_id='%6' and point_code='%7';")
  106. .arg(qry2.value(2).isNull()?"":qry2.value(2).toString()).arg(qry2.value(3).isNull()?"1970-01-01 08:00:00":qry2.value(3).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  107. .arg(qry2.value(4).isNull()?"":qry2.value(4).toString()).arg(qry2.value(5).isNull()?"":qry2.value(5).toString())
  108. .arg(1).arg(devid).arg("0");
  109. else
  110. upsql_1 = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3 %4', point_name='主机报警',dwtype=%5 where device_id='%6' and point_code!='0';")
  111. .arg(qry2.value(2).isNull()?"":qry2.value(2).toString()).arg(qry2.value(3).isNull()?"1970-01-01 08:00:00":qry2.value(3).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  112. .arg(qry2.value(4).isNull()?"":qry2.value(4).toString()).arg(qry2.value(5).isNull()?"":qry2.value(5).toString())
  113. .arg(1).arg(devid);
  114. sync_id = qry2.value(0).toUInt();
  115. count++;
  116. if(count>=100){
  117. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  118. ytShm->updatetime[DB_THREAD] = tmp_time;
  119. sql.append(";");
  120. mdb.exec(sql);
  121. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  122. mdb.exec(upsql_0);
  123. mdb.exec(upsql_1);
  124. sql = "";
  125. count=0;
  126. }
  127. }
  128. if(count>0){
  129. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  130. ytShm->updatetime[DB_THREAD] = tmp_time;
  131. sql.append(";");
  132. mdb.exec(sql);
  133. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  134. mdb.exec(upsql_0);
  135. mdb.exec(upsql_1);
  136. sql = "";
  137. count=0;
  138. }
  139. return updated;
  140. }
  141. bool DB_SyncThread::waterInfoSync(QString devid, QString deviceCode, uint sync_id, QString tbname, QDate chkday, uint ID,int dwtype, QString companyCode)
  142. {
  143. QString qrysql,sql,upsql;
  144. int count=0;
  145. bool updated = false;
  146. bool found = false;
  147. QSqlQuery qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_sj2017 where device_code='%1' and data1<>'WP4' and data1<>'LL4' and time<now()").arg(devid));
  148. // .arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')));
  149. if(qry2.next()){
  150. mdb.exec(QString("update sp_device_sync set alm_count=%1, alm_confirm=%2 where device_id='%3'")
  151. .arg(qry2.value(0).toInt())
  152. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  153. .arg(devid));
  154. }
  155. qry2.clear();
  156. qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_sj2017 where device_code='%1' and ( data1='WP4' or data1='LL4' ) and time<now()").arg(devid));
  157. if(qry2.next()){
  158. mdb.exec(QString("update sp_device_sync set com_count=%1, com_confirm=%2 where device_id='%3'")
  159. .arg(qry2.value(0).toInt())
  160. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  161. .arg(devid));
  162. }
  163. qry2.clear();
  164. for(int i=0;i<dList.length();i++){
  165. if(dList.at(i).compare(deviceCode)==0)
  166. {
  167. found = true;
  168. break;
  169. }
  170. }
  171. if(!found){
  172. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','1','','1970-01-01 08:00:00','');").arg(deviceCode));
  173. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','2','','1970-01-01 08:00:00','');").arg(deviceCode));
  174. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','3','','1970-01-01 08:00:00','');").arg(deviceCode));
  175. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','4','','1970-01-01 08:00:00','');").arg(deviceCode));
  176. dList.append(deviceCode);
  177. pcList.append(1);
  178. dList.append(deviceCode);
  179. pcList.append(2);
  180. dList.append(deviceCode);
  181. pcList.append(3);
  182. dList.append(deviceCode);
  183. pcList.append(4);
  184. }
  185. qrysql = QString("select id, time, data1, data2, data3, data4 from `%1` where id>%2 and time>'%3-%4-01 00:00:00' and time<now() order by id ").arg(tbname).arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0'));
  186. qry2 = mdb.exec(qrysql);
  187. while(qry2.next()){
  188. QString dat1 = qry2.value(2).toString();
  189. setCompanyAlarmSet(deviceCode, AlarmSet(0xffffffff,"",
  190. QString::fromUtf8("%1,%2").arg(QString::compare(dat1,"WP1")==0?QString::fromUtf8("低压"):
  191. (QString::compare(dat1,"WP2")==0?QString::fromUtf8("高压"):
  192. (QString::compare(dat1,"WP3")==0?QString::fromUtf8("故障"):
  193. (QString::compare(dat1,"WP4")==0?QString::fromUtf8("离线"):
  194. (QString::compare(dat1,"WP0")==0?QString::fromUtf8("恢复"):
  195. (QString::compare(dat1,"LL1")==0?QString::fromUtf8("低液位"):
  196. (QString::compare(dat1,"LL2")==0?QString::fromUtf8("高液位"):
  197. (QString::compare(dat1,"LL3")==0?QString::fromUtf8("故障"):
  198. (QString::compare(dat1,"LL4")==0?QString::fromUtf8("离线"):
  199. (QString::compare(dat1,"LL0")==0?QString::fromUtf8("恢复"):"")))))))))).arg(qry2.value(5).toString()),
  200. 2,qry2.value(1).toDateTime().toTime_t(),1));
  201. updated = true;
  202. if(count==0){
  203. sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6')")
  204. .arg(qry2.value(0).toUInt()).arg(devid).arg(1).arg(qry2.value(2).isNull()?"0":qry2.value(2).toString())
  205. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  206. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  207. .arg(qry2.value(0).toUInt()).arg(devid).arg(2).arg(qry2.value(3).isNull()?"0":qry2.value(3).toString())
  208. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  209. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  210. .arg(qry2.value(0).toUInt()).arg(devid).arg(3).arg(qry2.value(4).isNull()?"0":qry2.value(4).toString())
  211. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  212. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  213. .arg(qry2.value(0).toUInt()).arg(devid).arg(4).arg(qry2.value(5).isNull()?"0":qry2.value(5).toString())
  214. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  215. }else{
  216. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  217. .arg(qry2.value(0).toUInt()).arg(devid).arg(1).arg(qry2.value(2).isNull()?"0":qry2.value(2).toString())
  218. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  219. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  220. .arg(qry2.value(0).toUInt()).arg(devid).arg(2).arg(qry2.value(3).isNull()?"0":qry2.value(3).toString())
  221. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  222. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  223. .arg(qry2.value(0).toUInt()).arg(devid).arg(3).arg(qry2.value(4).isNull()?"0":qry2.value(4).toString())
  224. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  225. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  226. .arg(qry2.value(0).toUInt()).arg(devid).arg(4).arg(qry2.value(5).isNull()?"0":qry2.value(5).toString())
  227. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  228. }
  229. QString wp = qry2.value(2).toString();
  230. if(wp.compare("WP0")==0)
  231. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  232. .arg(0)
  233. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  234. .arg(QString::fromUtf8("正常")).arg(dwtype).arg(devid).arg(1);
  235. else if(wp.compare("WP1")==0)
  236. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  237. .arg(1)
  238. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  239. .arg(QString::fromUtf8("低压")).arg(dwtype).arg(devid).arg(1);
  240. else if(wp.compare("WP2")==0)
  241. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  242. .arg(2)
  243. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  244. .arg(QString::fromUtf8("高压")).arg(dwtype).arg(devid).arg(1);
  245. else if(wp.compare("WP3")==0)
  246. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  247. .arg(3)
  248. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  249. .arg(QString::fromUtf8("故障")).arg(dwtype).arg(devid).arg(1);
  250. else if(wp.compare("WP4")==0)
  251. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  252. .arg(4)
  253. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  254. .arg(QString::fromUtf8("离线")).arg(dwtype).arg(devid).arg(1);
  255. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='剩余电量',dwtype=%4 where device_id='%5' and point_code='%6';")
  256. .arg(qry2.value(3).isNull()?"0":qry2.value(3).toString())
  257. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  258. .arg("").arg(dwtype).arg(devid).arg(2));
  259. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='无线信号',dwtype=%4 where device_id='%5' and point_code='%6';")
  260. .arg(qry2.value(4).isNull()?"0":qry2.value(4).toString())
  261. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  262. .arg("").arg(dwtype).arg(devid).arg(3));
  263. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='水压/水位',dwtype=%4 where device_id='%5' and point_code='%6';")
  264. .arg(qry2.value(5).isNull()?"0":qry2.value(5).toString())
  265. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  266. .arg("").arg(dwtype).arg(devid).arg(4));
  267. count += 4;
  268. sync_id = qry2.value(0).toUInt();
  269. if(count>=100){
  270. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  271. ytShm->updatetime[DB_THREAD] = tmp_time;
  272. sql.append(";");
  273. mdb.exec(sql);
  274. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  275. mdb.exec(upsql);
  276. count=0;
  277. sql="";
  278. }
  279. }
  280. if(count>0){
  281. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  282. ytShm->updatetime[DB_THREAD] = tmp_time;
  283. sql.append(";");
  284. mdb.exec(sql);
  285. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  286. mdb.exec(upsql);
  287. count=0;
  288. sql="";
  289. }
  290. return updated;
  291. }
  292. bool DB_SyncThread::manholeCoverSync(QString devid, QString deviceCode, uint sync_id, QString tbname, QDate chkday, uint ID,int dwtype, QString companyCode)
  293. {
  294. QString qrysql,sql,upsql;
  295. int count=0;
  296. bool updated = false;
  297. bool found = false;
  298. QSqlQuery qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_iw2017 where device_code='%1' and time<now()").arg(devid));
  299. if(qry2.next()){
  300. mdb.exec(QString("update sp_device_sync set alm_count=%1, alm_confirm=%2 where device_id='%3'")
  301. .arg(qry2.value(0).toInt())
  302. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  303. .arg(devid));
  304. }
  305. qry2.clear();
  306. // qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_sj2017 where device_code='%1' and ( data1='WP4' or data1='LL4' ) and time<now()").arg(devid));
  307. // if(qry2.next()){
  308. // mdb.exec(QString("update sp_device_sync set com_count=%1, com_confirm=%2 where device_id='%3'")
  309. // .arg(qry2.value(0).toInt())
  310. // .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  311. // .arg(devid));
  312. // }
  313. // qry2.clear();
  314. for(int i=0;i<dList.length();i++){
  315. if(dList.at(i).compare(deviceCode)==0)
  316. {
  317. found = true;
  318. break;
  319. }
  320. }
  321. if(!found){
  322. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','1','','1970-01-01 08:00:00','');").arg(deviceCode));
  323. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','2','','1970-01-01 08:00:00','');").arg(deviceCode));
  324. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','3','','1970-01-01 08:00:00','');").arg(deviceCode));
  325. dList.append(deviceCode);
  326. pcList.append(1);
  327. dList.append(deviceCode);
  328. pcList.append(2);
  329. dList.append(deviceCode);
  330. pcList.append(3);
  331. }
  332. qrysql = QString("select id, addtime, openStatus, voltage, rssi, angle from `%1` where id>%2 and addtime>'%3-%4-01 00:00:00' and addtime<now() order by id ").arg(tbname).arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0'));
  333. qry2 = mdb.exec(qrysql);
  334. while(qry2.next()){
  335. int dat1 = qry2.value(2).toInt();
  336. setCompanyAlarmSet(deviceCode, AlarmSet(0xffffffff,"",
  337. QString::fromUtf8("%1,%2").arg(dat1==0?QString::fromUtf8("正常"):
  338. (dat1==1?QString::fromUtf8("井盖打开"):"")).arg(qry2.value(5).toString()),
  339. 2,qry2.value(1).toDateTime().toTime_t(),1));
  340. updated = true;
  341. if(count==0){
  342. sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6')")
  343. .arg(qry2.value(0).toUInt()).arg(devid).arg(1).arg(qry2.value(2).isNull()?"0":qry2.value(2).toString())
  344. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  345. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  346. .arg(qry2.value(0).toUInt()).arg(devid).arg(2).arg(qry2.value(3).isNull()?"0":qry2.value(3).toString())
  347. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  348. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  349. .arg(qry2.value(0).toUInt()).arg(devid).arg(3).arg(qry2.value(4).isNull()?"0":qry2.value(4).toString())
  350. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  351. }else{
  352. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  353. .arg(qry2.value(0).toUInt()).arg(devid).arg(1).arg(qry2.value(2).isNull()?"0":qry2.value(2).toString())
  354. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  355. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  356. .arg(qry2.value(0).toUInt()).arg(devid).arg(2).arg(qry2.value(3).isNull()?"0":qry2.value(3).toString())
  357. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  358. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  359. .arg(qry2.value(0).toUInt()).arg(devid).arg(3).arg(qry2.value(4).isNull()?"0":qry2.value(4).toString())
  360. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss")).arg("");
  361. }
  362. int wp = qry2.value(2).toInt();
  363. if(wp==0)
  364. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  365. .arg(0)
  366. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  367. .arg(QString::fromUtf8("正常")).arg(dwtype).arg(devid).arg(1);
  368. else if(wp==1)
  369. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  370. .arg(1)
  371. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  372. .arg(QString::fromUtf8("井盖打开")).arg(dwtype).arg(devid).arg(1);
  373. // else if(wp.compare("WP4")==0)
  374. // upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  375. // .arg(4)
  376. // .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  377. // .arg(QString::fromUtf8("离线")).arg(dwtype).arg(devid).arg(1);
  378. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='剩余电量',dwtype=%4 where device_id='%5' and point_code='%6';")
  379. .arg(qry2.value(3).isNull()?"0":qry2.value(3).toString())
  380. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  381. .arg("").arg(dwtype).arg(devid).arg(2));
  382. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='无线信号',dwtype=%4 where device_id='%5' and point_code='%6';")
  383. .arg(qry2.value(4).isNull()?"0":qry2.value(4).toString())
  384. .arg(qry2.value(1).isNull()?"1970-01-01 08:00:00":qry2.value(1).toDateTime().toString("yyyy-MM_dd HH:mm:ss"))
  385. .arg("").arg(dwtype).arg(devid).arg(3));
  386. count += 3;
  387. sync_id = qry2.value(0).toUInt();
  388. if(count>=100){
  389. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  390. ytShm->updatetime[DB_THREAD] = tmp_time;
  391. sql.append(";");
  392. mdb.exec(sql);
  393. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  394. mdb.exec(upsql);
  395. count=0;
  396. sql="";
  397. }
  398. }
  399. if(count>0){
  400. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  401. ytShm->updatetime[DB_THREAD] = tmp_time;
  402. sql.append(";");
  403. mdb.exec(sql);
  404. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  405. mdb.exec(upsql);
  406. count=0;
  407. sql="";
  408. }
  409. return updated;
  410. }
  411. bool DB_SyncThread::smokerInfoSync(QString devid, QString deviceCode, uint sync_id, QString tbname, QDate chkday, uint ID, QString companyCode)
  412. {
  413. QString qrysql,sql,upsql;
  414. int count=0;
  415. bool found = false;
  416. bool updated = false;
  417. for(int i=0;i<dList.length();i++){
  418. if(dList.at(i).compare(deviceCode)==0)
  419. {
  420. found = true;
  421. count++;
  422. // break;
  423. }
  424. }
  425. if(!found){
  426. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','1','','1970-01-01 08:00:00','');").arg(deviceCode));
  427. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','2','','1970-01-01 08:00:00','');").arg(deviceCode));
  428. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','3','','1970-01-01 08:00:00','');").arg(deviceCode));
  429. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','4','','1970-01-01 08:00:00','');").arg(deviceCode));
  430. dList.append(deviceCode);
  431. pcList.append(1);
  432. dList.append(deviceCode);
  433. pcList.append(2);
  434. dList.append(deviceCode);
  435. pcList.append(3);
  436. dList.append(deviceCode);
  437. pcList.append(4);
  438. }else if(count==3){
  439. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','4','','1970-01-01 08:00:00','');").arg(deviceCode));
  440. dList.append(deviceCode);
  441. pcList.append(4);
  442. }
  443. count=0;
  444. QSqlQuery qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_hj2017 where device_code='%1' and data1<>'U44' and time<now()").arg(devid));
  445. if(qry2.next()){
  446. mdb.exec(QString("update sp_device_sync set alm_count=%1, alm_confirm=%2 where device_id='%3'")
  447. .arg(qry2.value(0).toInt())
  448. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  449. .arg(devid));
  450. }
  451. qry2.clear();
  452. qrysql = QString("select id, DeviceStatus, BatteryLevel, SensorLevel, storeTime,TData from %1 where id>%2 and storeTime>'%3-%4-01 00:00:00' and storeTime<now() and DeviceType=1")
  453. .arg(tbname).arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0'));
  454. qry2 = mdb.exec(qrysql);
  455. while(qry2.next()){
  456. updated = true;
  457. int sta = qry2.value(1).toInt();
  458. if(count==0){
  459. sql = QString::fromUtf8("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6')")
  460. .arg(qry2.value(0).toUInt()).arg(devid).arg(1).arg(qry2.value(1).toString())
  461. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  462. .arg(sta==1?QString::fromUtf8("报警")
  463. :(sta==2?QString::fromUtf8("报警静音")
  464. :(sta==4?QString::fromUtf8("低压")
  465. :(sta==5?QString::fromUtf8("故障")
  466. :(sta==7?QString::fromUtf8("正常")
  467. :"")))));
  468. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  469. .arg(qry2.value(0).toUInt()).arg(devid).arg(2).arg(qry2.value(2).toString())
  470. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  471. .arg("");
  472. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  473. .arg(qry2.value(0).toUInt()).arg(devid).arg(3).arg(qry2.value(3).toString())
  474. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  475. .arg("");
  476. if(qry2.value(5).toString().compare("-")!=0){
  477. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  478. .arg(qry2.value(0).toUInt()).arg(devid).arg(4).arg(qry2.value(5).toString())
  479. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  480. .arg("");
  481. }
  482. }else{
  483. sql += QString::fromUtf8(", (NULL,%1,'%2','%3','%4','%5','%6')")
  484. .arg(qry2.value(0).toUInt()).arg(devid).arg(1).arg(qry2.value(1).toString())
  485. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  486. .arg(sta==1?QString::fromUtf8("报警")
  487. :(sta==2?QString::fromUtf8("报警静音")
  488. :(sta==4?QString::fromUtf8("低压")
  489. :(sta==5?QString::fromUtf8("故障")
  490. :(sta==7?QString::fromUtf8("正常")
  491. :"")))));
  492. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  493. .arg(qry2.value(0).toUInt()).arg(devid).arg(2).arg(qry2.value(2).toString())
  494. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  495. .arg("");
  496. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  497. .arg(qry2.value(0).toUInt()).arg(devid).arg(3).arg(qry2.value(3).toString())
  498. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  499. .arg("");
  500. if(qry2.value(5).toString().compare("-")!=0){
  501. sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6')")
  502. .arg(qry2.value(0).toUInt()).arg(devid).arg(4).arg(qry2.value(5).toString())
  503. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  504. .arg("");
  505. }
  506. }
  507. upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='状态',dwtype=%4 where device_id='%5' and point_code='%6';")
  508. .arg(sta==7?0:sta)
  509. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  510. .arg(sta==1?QString::fromUtf8("报警")
  511. :(sta==2?QString::fromUtf8("报警静音")
  512. :(sta==4?QString::fromUtf8("低压")
  513. :(sta==5?QString::fromUtf8("故障")
  514. :(sta==7?QString::fromUtf8("正常")
  515. :"")))))
  516. .arg(3).arg(devid).arg(1);
  517. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='剩余电量',dwtype=%4 where device_id='%5' and point_code='%6';")
  518. .arg(qry2.value(2).toString())
  519. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  520. .arg("").arg(3).arg(devid).arg(2));
  521. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='无线信号',dwtype=%4 where device_id='%5' and point_code='%6';")
  522. .arg(qry2.value(3).toString())
  523. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  524. .arg("").arg(3).arg(devid).arg(3));
  525. if(qry2.value(5).toString().compare("-")!=0){
  526. upsql.append(QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3', point_name='温度',dwtype=%4 where device_id='%5' and point_code='%6';")
  527. .arg(qry2.value(5).toString())
  528. .arg(qry2.value(4).isNull()?"1970-01-01 08:00:00":qry2.value(4).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  529. .arg("").arg(6).arg(devid).arg(4));
  530. }
  531. count += 3;
  532. sync_id = qry2.value(0).toUInt();
  533. if(count>=100){
  534. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  535. ytShm->updatetime[DB_THREAD] = tmp_time;
  536. sql.append(";");
  537. mdb.exec(sql);
  538. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  539. mdb.exec(upsql);
  540. count=0;
  541. sql="";
  542. }
  543. }
  544. if(count>0){
  545. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  546. ytShm->updatetime[DB_THREAD] = tmp_time;
  547. sql.append(";");
  548. mdb.exec(sql);
  549. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  550. mdb.exec(upsql);
  551. count=0;
  552. sql="";
  553. }
  554. return updated;
  555. }
  556. bool DB_SyncThread::rtuInfoSync(QString devid, QString deviceCode, uint sync_id, QString tbname, QDate chkday, uint ID, QString companyCode)
  557. {
  558. QString qrysql,sql,upsql="";
  559. int count=0;
  560. bool found = false;
  561. bool updated= false;
  562. QSqlQuery qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_rtu2017 where device_code='%1' and status<>'44' and time<now()").arg(devid));
  563. // .arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')));
  564. if(qry2.next()){
  565. mdb.exec(QString("update sp_device_sync set alm_count=%1, alm_confirm=%2 where device_id='%3'")
  566. .arg(qry2.value(0).toInt())
  567. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  568. .arg(devid));
  569. }
  570. qry2.clear();
  571. qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_rtu2017 where device_code='%1' and status='44' and time<now()").arg(devid));
  572. // .arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')));;
  573. if(qry2.next()){
  574. mdb.exec(QString("update sp_device_sync set com_count=%1, com_confirm=%2 where device_id='%3'")
  575. .arg(qry2.value(0).toInt())
  576. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  577. .arg(devid));
  578. }
  579. qry2.clear();
  580. found = false;
  581. for(int i=0;i<dList.length();i++){
  582. if(dList.at(i).compare(deviceCode)==0){
  583. found = true;
  584. break;
  585. }
  586. }
  587. if(!found){
  588. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','','%2','','1970-01-01 08:00:00','');").arg(deviceCode).arg(0));
  589. dList.append(deviceCode);
  590. pcList.append(0);
  591. }
  592. qrysql = QString("select id, status, port, ncmd, data3, data2, data4, time, data1 from %1 where id>%2 and time>'%3-%4-%5 00:00:00' and time<now()")
  593. .arg(tbname).arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0'));
  594. qry2 = mdb.exec(qrysql);
  595. QSqlQuery qry3 = mdb.exec(QString("select iotype,ports,ioname,systypeup from sp_owner_port where owner_code='%1'").arg(devid));
  596. QStringList nameList,vonameList;
  597. QList<int> typeList,portList;
  598. while(qry3.next()){
  599. typeList.append(qry3.value(0).toInt());
  600. portList.append(qry3.value(1).toInt());
  601. nameList.append(qry3.value(2).toString());
  602. vonameList.append(qry3.value(3).toString());
  603. found = false;
  604. if(qry3.value(0).toInt()==1){
  605. for(int i=0;i<dList.length();i++){
  606. if(dList.at(i).compare(deviceCode)==0){
  607. if(pcList.at(i)==qry3.value(1).toInt()){
  608. found = true;
  609. break;
  610. }
  611. }
  612. }
  613. if(found)
  614. mdb.exec(QString("update sp_owner_status set point_name='%1',dwtype=6 where device_id='%2' and point_code='%3'")
  615. .arg(qry3.value(2).toString()).arg(devid).arg(qry3.value(1).toInt()));
  616. else{
  617. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','%2','%3','','1970-01-01 08:00:00','');").arg(deviceCode).arg(qry3.value(2).toString()).arg(qry3.value(1).toInt()));
  618. dList.append(deviceCode);
  619. pcList.append(qry3.value(1).toInt());
  620. }
  621. }else{
  622. for(int i=0;i<dList.length();i++){
  623. if(dList.at(i).compare(deviceCode)==0){
  624. if(pcList.at(i)==(qry3.value(1).toInt()+64)){
  625. found = true;
  626. break;
  627. }
  628. }
  629. }
  630. if(found)
  631. mdb.exec(QString("update sp_owner_status set point_name='%1',dwtype=6 where device_id='%2' and point_code='%3'")
  632. .arg(qry3.value(2).toString()).arg(devid).arg(qry3.value(1).toInt()+64));
  633. else{
  634. mdb.exec(QString("insert into sp_owner_status (id,device_id,point_name,point_code,point_data,data_time,content) values (NULL,'%1','%2','%3','','1970-01-01 08:00:00','');").arg(deviceCode).arg(qry3.value(2).toString()).arg(qry3.value(1).toInt()+64));
  635. dList.append(deviceCode);
  636. pcList.append(qry3.value(1).toInt()+64);
  637. }
  638. }
  639. }
  640. qry3.clear();
  641. while(qry2.next()){
  642. updated = true;
  643. if(qry2.value(1).toString().compare("44")==0)
  644. {
  645. // if(count==0)
  646. // sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  647. // .arg(qry2.value(0).toUInt()).arg(devid).arg(0).arg(1).arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  648. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString());
  649. // else
  650. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  651. // .arg(qry2.value(0).toUInt()).arg(devid).arg(0).arg(1).arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  652. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString());
  653. // upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3 %4', point_name='通信报警',dwtype=%5 where device_id='%6' and point_code='%7';")
  654. // .arg(0).arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  655. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString()).arg(6).arg(devid).arg(0);
  656. // mdb.exec(upsql);
  657. }else{
  658. setCompanyAlarmSet(deviceCode, AlarmSet(0xffffffff,"",QString::fromUtf8("%1,%2").arg(qry2.value(5).toString()).arg(qry2.value(6).toString()),6,qry2.value(7).toDateTime().toTime_t(),1));
  659. // upsql = QString::fromUtf8("update sp_owner_status set point_data='',content='' where device_id='%1' and point_code='0'").arg(devid);
  660. // mdb.exec(upsql);
  661. // if(!qry2.value(2).isNull()){
  662. // if(qry2.value(2).toString().compare("E3")==0){
  663. // int tmpIdx = qry2.value(3).toString().toInt(nullptr,16);
  664. // if(tmpIdx>0){
  665. // QString pv = "0";
  666. // QString pname = "", vname="";
  667. // for(int Idx=0;Idx<vonameList.length();Idx++){
  668. // if((typeList.at(Idx)==1)&&(portList.at(Idx)==tmpIdx)){
  669. // pname = nameList.at(Idx);
  670. // vname = vonameList.at(Idx);
  671. // break;
  672. // }
  673. // }
  674. // if((vname.compare(QString::fromUtf8("故障"))==0)
  675. // ||(vname.compare(QString::fromUtf8("手动"))==0)
  676. // ||(vname.compare(QString::fromUtf8("运行"))==0)
  677. // ||(vname.compare(QString::fromUtf8("接线"))==0)
  678. // ||(vname.compare(QString::fromUtf8("正常"))==0)){
  679. // if(qry2.value(1).toInt()==0)
  680. // pv="0";
  681. // else
  682. // pv="1";
  683. // }else{
  684. // if(qry2.value(1).toInt()==0)
  685. // pv="1";
  686. // else
  687. // pv="0";
  688. // }
  689. // if(count==0)
  690. // sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  691. // .arg(qry2.value(0).toUInt()).arg(devid).arg(qry2.value(3).toInt()).arg(pv)
  692. // .arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  693. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString());
  694. // else
  695. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  696. // .arg(qry2.value(0).toUInt()).arg(devid).arg(qry2.value(3).toInt()).arg(pv)
  697. // .arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  698. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString());
  699. // upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3 %4', point_name='%5',dwtype=%6 where device_id='%7' and point_code='%8';")
  700. // .arg(pv)
  701. // .arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  702. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString()).arg(pname)
  703. // .arg(6).arg(devid).arg(tmpIdx);
  704. // mdb.exec(upsql);
  705. // }
  706. // }else if(qry2.value(2).toString().compare("E6")==0){
  707. // if(count==0)
  708. // sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  709. // .arg(qry2.value(0).toUInt()).arg(devid).arg(qry2.value(3).toInt()+64).arg(qry2.value(8).toString())
  710. // .arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  711. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString());
  712. // else
  713. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','%6 %7')")
  714. // .arg(qry2.value(0).toUInt()).arg(devid).arg(qry2.value(3).toInt()+64).arg(qry2.value(8).toString())
  715. // .arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  716. // .arg(qry2.value(5).toString()).arg(qry2.value(6).toString());
  717. // int tmpIdx = qry2.value(3).toInt();
  718. // if(tmpIdx>0){
  719. // QString pname = "";
  720. // for(int Idx=0;Idx<nameList.length();Idx++){
  721. // if((typeList.at(Idx)==2)&&(portList.at(Idx)==tmpIdx)){
  722. // pname = nameList.at(Idx);
  723. // break;
  724. // }
  725. // }
  726. // upsql = QString::fromUtf8("update sp_owner_status set point_data='%1', data_time='%2', content='%3 %4 %5',dwtype=%6 where device_id='%7' and point_code='%8';")
  727. // .arg(qry2.value(8).toString())
  728. // .arg(qry2.value(7).isNull()?"1970-01-01 00:00:00":qry2.value(7).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  729. // .arg(pname).arg(qry2.value(5).toString())
  730. // .arg(qry2.value(6).toString())
  731. // .arg(6)
  732. // .arg(devid)
  733. // .arg(tmpIdx+64);
  734. // mdb.exec(upsql);
  735. // }
  736. // }
  737. // }
  738. }
  739. count++;
  740. sync_id = qry2.value(0).toUInt();
  741. if(count>=100){
  742. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  743. ytShm->updatetime[DB_THREAD] = tmp_time;
  744. // sql.append(";");
  745. // mdb.exec(sql);
  746. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  747. // mdb.exec(upsql);
  748. count=0;
  749. // sql="";
  750. // upsql="";
  751. }
  752. }
  753. if(count>0){
  754. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  755. ytShm->updatetime[DB_THREAD] = tmp_time;
  756. // sql.append(";");
  757. // mdb.exec(sql);
  758. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  759. // mdb.exec(upsql);
  760. count=0;
  761. // sql="";
  762. // upsql="";
  763. }
  764. return updated;
  765. }
  766. bool DB_SyncThread::videoalarmSync(QString devid, QString deviceCode, uint sync_id, QString tbname, QDate chkday, uint ID, QString companyCode)
  767. {
  768. QString sql,upsql;
  769. int count=0;
  770. bool updated = false;
  771. QString csql = QString("select count(*) as count, sum(clzt) as sum from sp_video2017 where device_code='%1' and time<now()").arg(devid);
  772. // printf("%s\n",csql.toUtf8().data());
  773. QSqlQuery qry2 = mdb.exec(csql);
  774. // .arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')));
  775. if(qry2.next()){
  776. csql = QString("update sp_device_sync set alm_count=%1, alm_confirm=%2 where device_id='%3'")
  777. .arg(qry2.value(0).toInt())
  778. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  779. .arg(devid);
  780. // printf("%s\n",csql.toUtf8().data());
  781. mdb.exec(csql);
  782. }
  783. qry2.clear();
  784. qry2 =mdb.exec(QString("select count(*) from sp_owner_status where device_id='%1'").arg(devid));
  785. if(qry2.next()){
  786. if(qry2.value(0).toInt()==0){
  787. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',16,'占道侦测告警',1,0,'1970-01-01 08:00:00','')").arg(devid));
  788. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',16,'火点侦测告警',2,0,'1970-01-01 08:00:00','')").arg(devid));
  789. }
  790. }
  791. qry2.clear();
  792. // printf("%s\n",QString("select id,port,time from sp_video2017 where id>%1 and time>'%2-%3-%4 00:00:00' and device_code='%5'").arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')).arg(devid).toUtf8().data());
  793. qry2 = mdb.exec(QString("select id,port,time,data4 from sp_video2017 where id>%1 and time>'%2-%3-%4 00:00:00' and time<now() and device_code='%5'").arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')).arg(devid));
  794. while(qry2.next()){
  795. updated = true;
  796. // system(QString("echo '%1 %2'>> /root/data.txt").arg(deviceCode).arg(qry2.value(2).toString()).toUtf8().data());
  797. setCompanyAlarmSet(deviceCode,AlarmSet(0xffffffff,"",qry2.value(3).toString(),16,qry2.value(2).toDateTime().toTime_t(),1));
  798. if(count==0){
  799. if(qry2.value(1).toInt()==1){
  800. sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5',''),(NULL,%6,'%7','%8','%9','%10','')")
  801. .arg(qry2.value(0).toInt()).arg(devid).arg(1).arg(1).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  802. .arg(qry2.value(0).toInt()).arg(devid).arg(2).arg(0).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  803. }else{
  804. sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5',''),(NULL,%6,'%7','%8','%9','%10','')")
  805. .arg(qry2.value(0).toInt()).arg(devid).arg(1).arg(0).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  806. .arg(qry2.value(0).toInt()).arg(devid).arg(2).arg(1).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  807. }
  808. }else{
  809. if(qry2.value(1).toInt()==1)
  810. sql += QString(", (NULL,%1,'%2','%3','%4','%5',''),(NULL,%6,'%7','%8','%9','%10','')")
  811. .arg(qry2.value(0).toInt()).arg(devid).arg(1).arg(1).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  812. .arg(qry2.value(0).toInt()).arg(devid).arg(2).arg(0).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  813. else
  814. sql += QString(", (NULL,%1,'%2','%3','%4','%5',''),(NULL,%6,'%7','%8','%9','%10','')")
  815. .arg(qry2.value(0).toInt()).arg(devid).arg(1).arg(0).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"))
  816. .arg(qry2.value(0).toInt()).arg(devid).arg(2).arg(1).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  817. }
  818. if(qry2.value(1).toInt()==1)
  819. upsql = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='占道侦测告警' where device_id='%3' and point_code=1;")
  820. .arg(1).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  821. else
  822. upsql = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='火点侦测告警' where device_id='%3' and point_code=2;")
  823. .arg(1).arg(qry2.value(2).isNull()?"1970-01-01 08:00:00":qry2.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  824. sync_id = qry2.value(0).toUInt();
  825. count++;
  826. if(count>=100){
  827. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  828. ytShm->updatetime[DB_THREAD] = tmp_time;
  829. sql.append(";");
  830. // printf("%s\n%s",sql.toUtf8().data(),upsql.toUtf8().data());
  831. mdb.exec(sql);
  832. mdb.exec(upsql);
  833. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  834. count = 0;
  835. sql="";
  836. upsql="";
  837. }
  838. }
  839. if(count>0){
  840. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  841. ytShm->updatetime[DB_THREAD] = tmp_time;
  842. sql.append(";");
  843. // printf("%s\n%s",sql.toUtf8().data(),upsql.toUtf8().data());
  844. mdb.exec(sql);
  845. mdb.exec(upsql);
  846. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  847. count = 0;
  848. sql="";
  849. upsql="";
  850. }
  851. return updated;
  852. }
  853. bool DB_SyncThread::efireInfoSync(QString devid, QString deviceCode, uint sync_id, QString tbname, QDate chkday, uint ID, QString companyCode, QString owner_xh)
  854. {
  855. QString upsql1, upsql2, upsql3, upsql4,upsql5,upsql6,sql;
  856. int count=0;
  857. bool updated = false;
  858. QSqlQuery qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_ef2017 where device_code='%1' and data1='EF9' and time<now()").arg(devid));
  859. // .arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')));
  860. if(qry2.next()){
  861. mdb.exec(QString("update sp_device_sync set com_count=%1, com_confirm=%2 where device_id='%3'")
  862. .arg(qry2.value(0).toInt())
  863. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  864. .arg(devid));
  865. }
  866. qry2.clear();
  867. qry2 = mdb.exec(QString("select count(*) as count, sum(clzt) as sum from sp_ef2017 where device_code='%1' and data1<>'EF9' and time<now()").arg(devid));
  868. // .arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')));
  869. if(qry2.next()){
  870. mdb.exec(QString("update sp_device_sync set alm_count=%1, alm_confirm=%2 where device_id='%3'")
  871. .arg(qry2.value(0).toInt())
  872. .arg(qry2.value(0).toInt()>0?qry2.value(1).toInt():0)
  873. .arg(devid));
  874. }
  875. qry2.clear();
  876. qry2 =mdb.exec(QString("select count(*) from sp_owner_status where device_id='%1'").arg(devid));
  877. if(qry2.next()){
  878. if(owner_xh.compare("ARCM300D")==0){
  879. mdb.exec(QString::fromUtf8("delete from sp_owner_status where device_id='%1'").arg(devid));
  880. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电过压',1,0,'1970-01-01 08:00:00','')").arg(devid));
  881. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电低压',2,0,'1970-01-01 08:00:00','')").arg(devid));
  882. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电过流',3,0,'1970-01-01 08:00:00','')").arg(devid));
  883. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'电压',65,0,'1970-01-01 08:00:00','')").arg(devid));
  884. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'电流',68,0,'1970-01-01 08:00:00','')").arg(devid));
  885. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'电能',71,0,'1970-01-01 08:00:00','')").arg(devid));
  886. }else{
  887. if(qry2.value(0).toInt()==0){
  888. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电过压',1,0,'1970-01-01 08:00:00','')").arg(devid));
  889. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电低压',2,0,'1970-01-01 08:00:00','')").arg(devid));
  890. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电过流',3,0,'1970-01-01 08:00:00','')").arg(devid));
  891. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'漏电报警',4,0,'1970-01-01 08:00:00','')").arg(devid));
  892. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相线缆温度超高',5,0,'1970-01-01 08:00:00','')").arg(devid));
  893. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相线缆温度超高',6,0,'1970-01-01 08:00:00','')").arg(devid));
  894. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相线缆温度超高',7,0,'1970-01-01 08:00:00','')").arg(devid));
  895. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相电压',65,0,'1970-01-01 08:00:00','')").arg(devid));
  896. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相电压',66,0,'1970-01-01 08:00:00','')").arg(devid));
  897. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相电压',67,0,'1970-01-01 08:00:00','')").arg(devid));
  898. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相电流',68,0,'1970-01-01 08:00:00','')").arg(devid));
  899. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相电流',69,0,'1970-01-01 08:00:00','')").arg(devid));
  900. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相电流',70,0,'1970-01-01 08:00:00','')").arg(devid));
  901. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相线缆温度',71,0,'1970-01-01 08:00:00','')").arg(devid));
  902. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相线缆温度',72,0,'1970-01-01 08:00:00','')").arg(devid));
  903. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相线缆温度',73,0,'1970-01-01 08:00:00','')").arg(devid));
  904. }else if(qry2.value(0).toInt()==6){
  905. mdb.exec(QString::fromUtf8("delete from sp_owner_status where device_id='%1'").arg(devid));
  906. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电过压',1,0,'1970-01-01 08:00:00','')").arg(devid));
  907. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电低压',2,0,'1970-01-01 08:00:00','')").arg(devid));
  908. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'供电过流',3,0,'1970-01-01 08:00:00','')").arg(devid));
  909. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'漏电报警',4,0,'1970-01-01 08:00:00','')").arg(devid));
  910. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相线缆温度超高',5,0,'1970-01-01 08:00:00','')").arg(devid));
  911. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相线缆温度超高',6,0,'1970-01-01 08:00:00','')").arg(devid));
  912. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相线缆温度超高',7,0,'1970-01-01 08:00:00','')").arg(devid));
  913. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相电压',65,0,'1970-01-01 08:00:00','')").arg(devid));
  914. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相电压',66,0,'1970-01-01 08:00:00','')").arg(devid));
  915. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相电压',67,0,'1970-01-01 08:00:00','')").arg(devid));
  916. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相电流',68,0,'1970-01-01 08:00:00','')").arg(devid));
  917. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相电流',69,0,'1970-01-01 08:00:00','')").arg(devid));
  918. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相电流',70,0,'1970-01-01 08:00:00','')").arg(devid));
  919. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'A相线缆温度',71,0,'1970-01-01 08:00:00','')").arg(devid));
  920. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'B相线缆温度',72,0,'1970-01-01 08:00:00','')").arg(devid));
  921. mdb.exec(QString::fromUtf8("insert into sp_owner_status (id, device_id, dwtype, point_name, point_code, point_data, data_time, content) values (NULL,'%1',7,'C相线缆温度',73,0,'1970-01-01 08:00:00','')").arg(devid));
  922. }
  923. }
  924. }
  925. qry2.clear();
  926. qry2 = mdb.exec(QString("select id from %1 where id>%2 and data_time>'%3-%4-%5 00:00:00' and data_time<now()")
  927. .arg(tbname).arg(sync_id).arg(chkday.year(),4,10,QChar('0')).arg(chkday.month(),2,10,QChar('0')).arg(chkday.day(),2,10,QChar('0')));
  928. while(qry2.next()){
  929. updated = true;
  930. // switch(qry2.value(0).toInt()){
  931. // case 1:
  932. // if(count==0){
  933. // sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','')")
  934. // .arg(qry2.value(11).toInt()).arg(devid).arg(4).arg(qry2.value(2).toInt())
  935. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  936. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  937. // .arg(qry2.value(11).toInt()).arg(devid).arg(1).arg(qry2.value(12).toInt())
  938. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  939. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  940. // .arg(qry2.value(11).toInt()).arg(devid).arg(2).arg(qry2.value(13).toInt())
  941. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  942. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  943. // .arg(qry2.value(11).toInt()).arg(devid).arg(3).arg(qry2.value(14).toInt())
  944. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  945. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  946. // .arg(qry2.value(11).toInt()).arg(devid).arg(65).arg(qry2.value(4).toDouble())
  947. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  948. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  949. // .arg(qry2.value(11).toInt()).arg(devid).arg(66).arg(qry2.value(5).toDouble())
  950. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  951. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  952. // .arg(qry2.value(11).toInt()).arg(devid).arg(67).arg(qry2.value(6).toDouble())
  953. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  954. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  955. // .arg(qry2.value(11).toInt()).arg(devid).arg(68).arg(qry2.value(7).toDouble())
  956. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  957. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  958. // .arg(qry2.value(11).toInt()).arg(devid).arg(69).arg(qry2.value(8).toDouble())
  959. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  960. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  961. // .arg(qry2.value(11).toInt()).arg(devid).arg(70).arg(qry2.value(9).toDouble())
  962. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  963. // }else{
  964. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  965. // .arg(qry2.value(11).toInt()).arg(devid).arg(4).arg(qry2.value(2).toInt())
  966. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  967. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  968. // .arg(qry2.value(11).toInt()).arg(devid).arg(1).arg(qry2.value(12).toInt())
  969. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  970. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  971. // .arg(qry2.value(11).toInt()).arg(devid).arg(2).arg(qry2.value(13).toInt())
  972. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  973. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  974. // .arg(qry2.value(11).toInt()).arg(devid).arg(3).arg(qry2.value(14).toInt())
  975. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  976. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  977. // .arg(qry2.value(11).toInt()).arg(devid).arg(65).arg(qry2.value(4).toDouble())
  978. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  979. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  980. // .arg(qry2.value(11).toInt()).arg(devid).arg(66).arg(qry2.value(5).toDouble())
  981. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  982. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  983. // .arg(qry2.value(11).toInt()).arg(devid).arg(67).arg(qry2.value(6).toDouble())
  984. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  985. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  986. // .arg(qry2.value(11).toInt()).arg(devid).arg(68).arg(qry2.value(7).toDouble())
  987. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  988. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  989. // .arg(qry2.value(11).toInt()).arg(devid).arg(69).arg(qry2.value(8).toDouble())
  990. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  991. // sql += QString(", (NULL,%1,'%2','%3','%4','%5','')")
  992. // .arg(qry2.value(11).toInt()).arg(devid).arg(70).arg(qry2.value(9).toDouble())
  993. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  994. // }
  995. // count += 10;
  996. // upsql1 = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='供电过压' where device_id='%3' and point_code=1;")
  997. // .arg(qry2.value(12).toInt()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  998. // upsql1 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2', point_name='供电低压' where device_id='%3' and point_code=2; ")
  999. // .arg(qry2.value(13).toInt()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1000. // upsql1 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2', point_name='供电过流' where device_id='%3' and point_code=3; ")
  1001. // .arg(qry2.value(14).toInt()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1002. // upsql1 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2', point_name='漏电报警' where device_id='%3' and point_code=4; ")
  1003. // .arg(qry2.value(2).toInt()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1004. // upsql2 = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='A相电压' where device_id='%3' and point_code=65;")
  1005. // .arg(qry2.value(4).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1006. // upsql2 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='B相电压' where device_id='%3' and point_code=66;")
  1007. // .arg(qry2.value(5).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1008. // upsql2 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='C相电压' where device_id='%3' and point_code=67;")
  1009. // .arg(qry2.value(6).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1010. // upsql3 = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='A相电流' where device_id='%3' and point_code=68; ")
  1011. // .arg(qry2.value(7).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1012. // upsql3 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='B相电流' where device_id='%3' and point_code=69; ")
  1013. // .arg(qry2.value(8).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1014. // upsql3 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='C相电流' where device_id='%3' and point_code=70; ")
  1015. // .arg(qry2.value(9).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1016. // break;
  1017. // case 2:
  1018. // if(count==0){
  1019. // sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','')")
  1020. // .arg(qry2.value(11).toInt()).arg(devid).arg(5).arg(qry2.value(2).toInt())
  1021. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1022. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1023. // .arg(qry2.value(11).toInt()).arg(devid).arg(71).arg(qry2.value(3).toDouble())
  1024. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1025. // }else{
  1026. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1027. // .arg(qry2.value(11).toInt()).arg(devid).arg(5).arg(qry2.value(2).toInt())
  1028. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1029. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1030. // .arg(qry2.value(11).toInt()).arg(devid).arg(71).arg(qry2.value(3).toDouble())
  1031. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1032. // }
  1033. // count += 2;
  1034. // upsql4 = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='A相线缆温度超高' where device_id='%3' and point_code=5;")
  1035. // .arg(qry2.value(2).toInt()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1036. // upsql4 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='A相线缆温度' where device_id='%3' and point_code=71;")
  1037. // .arg(qry2.value(3).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1038. // break;
  1039. // case 3:
  1040. // if(count==0){
  1041. // sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','')")
  1042. // .arg(qry2.value(11).toInt()).arg(devid).arg(6).arg(qry2.value(2).toInt())
  1043. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1044. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1045. // .arg(qry2.value(11).toInt()).arg(devid).arg(72).arg(qry2.value(3).toDouble())
  1046. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1047. // }else{
  1048. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1049. // .arg(qry2.value(11).toInt()).arg(devid).arg(6).arg(qry2.value(2).toInt())
  1050. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1051. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1052. // .arg(qry2.value(11).toInt()).arg(devid).arg(72).arg(qry2.value(3).toDouble())
  1053. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1054. // }
  1055. // count += 2;
  1056. // upsql5 = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='B相线缆温度超高' where device_id='%3' and point_code=6;")
  1057. // .arg(qry2.value(2).toInt()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1058. // upsql5 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='B相线缆温度' where device_id='%3' and point_code=72;")
  1059. // .arg(qry2.value(3).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1060. // break;
  1061. // case 4:
  1062. // if(count==0){
  1063. // sql = QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,%1,'%2','%3','%4','%5','')")
  1064. // .arg(qry2.value(11).toInt()).arg(devid).arg(7).arg(qry2.value(2).toInt())
  1065. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1066. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1067. // .arg(qry2.value(11).toInt()).arg(devid).arg(73).arg(qry2.value(3).toDouble())
  1068. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1069. // }else{
  1070. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1071. // .arg(qry2.value(11).toInt()).arg(devid).arg(7).arg(qry2.value(2).toInt())
  1072. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1073. // sql += QString(",(NULL,%1,'%2','%3','%4','%5','')")
  1074. // .arg(qry2.value(11).toInt()).arg(devid).arg(73).arg(qry2.value(3).toDouble())
  1075. // .arg(qry2.value(10).isNull()?"1970-01-01 08:00:00":qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss"));
  1076. // }
  1077. // count += 2;
  1078. // upsql6 = QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='C相线缆温度超高' where device_id='%3' and point_code=7;")
  1079. // .arg(qry2.value(2).toInt()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1080. // upsql6 += QString::fromUtf8("update sp_owner_status set point_data=%1, data_time='%2',point_name='C相线缆温度' where device_id='%3' and point_code=73;")
  1081. // .arg(qry2.value(3).toDouble()).arg(qry2.value(10).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(devid);
  1082. // break;
  1083. // }
  1084. sync_id = qry2.value(0).toUInt();
  1085. // if(count>=100){
  1086. // time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  1087. // ytShm->updatetime[DB_THREAD] = tmp_time;
  1088. // sql.append(";");
  1089. // mdb.exec(sql);
  1090. // mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  1091. // mdb.exec(upsql1);
  1092. // mdb.exec(upsql2);
  1093. // mdb.exec(upsql3);
  1094. // mdb.exec(upsql4);
  1095. // mdb.exec(upsql5);
  1096. // mdb.exec(upsql6);
  1097. // count=0;
  1098. // sql="";
  1099. // upsql1="";
  1100. // upsql2="";
  1101. // upsql3="";
  1102. // upsql4="";
  1103. // upsql5="";
  1104. // upsql6="";
  1105. // }
  1106. }
  1107. // if(count>0){
  1108. // time_t tmp_time = time(static_cast<time_t *>(nullptr));
  1109. // ytShm->updatetime[DB_THREAD] = tmp_time;
  1110. // sql.append(";");
  1111. // mdb.exec(sql);
  1112. mdb.exec(QString("update sp_owner_sync set sync_id=%1 where id=%2").arg(sync_id).arg(ID));
  1113. // mdb.exec(upsql1);
  1114. // mdb.exec(upsql2);
  1115. // mdb.exec(upsql3);
  1116. // mdb.exec(upsql4);
  1117. // mdb.exec(upsql5);
  1118. // mdb.exec(upsql6);
  1119. // count=0;
  1120. // sql="";
  1121. // upsql1="";
  1122. // upsql2="";
  1123. // upsql3="";
  1124. // upsql4="";
  1125. // upsql5="";
  1126. // upsql6="";
  1127. // }
  1128. return updated;
  1129. }
  1130. void DB_SyncThread::appendDevDataList(QString deviceid)
  1131. {
  1132. deviceDataList.append(deviceid);
  1133. }
  1134. void DB_SyncThread::chkInList(QString devid)
  1135. {
  1136. QSqlQuery qry;
  1137. QString sql;
  1138. bool found = false;
  1139. for(int i=0;i<syncDevList.length();i++){
  1140. if(devid.compare(syncDevList.at(i).OwnerCode)==0){
  1141. if(syncDevList.at(i).ObjType.compare("YTFC")==0){
  1142. found = true;
  1143. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  1144. // 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());
  1145. QDateTime dataTime = QDateTime::fromTime_t(0);
  1146. QString PowerAlarm="off";
  1147. QString ManualAct = "off";
  1148. QString DevWorking01 = "off";
  1149. QString DevWorking02 = "off";
  1150. QString DevAlarm01 = "off";
  1151. QString DevAlarm02 = "off";
  1152. QString FireAutoAct = "off";
  1153. sql = QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1'").arg(devid);
  1154. // system(QString("echo \"[YTFC] %1\" >> /root/test.log").arg(sql).toUtf8().data());
  1155. // qDebug()<<sql.toUtf8().data();
  1156. qry = mdb.exec(sql);
  1157. while(qry.next()){
  1158. int code = qry.value(1).toInt();
  1159. if((code>0)&&(code<8)){
  1160. int value = qry.value(2).toInt();
  1161. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  1162. dataTime = qry.value(3).toDateTime();
  1163. if(code==1){
  1164. if(value==0)
  1165. PowerAlarm = "on";
  1166. }else if(code==2){
  1167. if(value==0)
  1168. ManualAct = "on";
  1169. }else if(code==3){
  1170. if(value==0)
  1171. DevWorking01 = "on";
  1172. }else if(code==4){
  1173. if(value==0)
  1174. DevWorking02 = "on";
  1175. }else if(code==5){
  1176. if(value==0)
  1177. DevAlarm01 = "on";
  1178. }else if(code==6){
  1179. if(value==0)
  1180. DevAlarm02 = "on";
  1181. }else if(code==7){
  1182. if(value==0)
  1183. FireAutoAct = "on";
  1184. }
  1185. }
  1186. }
  1187. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  1188. {
  1189. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  1190. 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\"}}")
  1191. .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);
  1192. // system(QString("echo \"[YTFC] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  1193. emit SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  1194. }
  1195. }else if(syncDevList.at(i).ObjType.compare("YTCI")==0){
  1196. found = true;
  1197. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  1198. // 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());
  1199. QString Temperature = "0.0";
  1200. QString Humidity = "0.0";
  1201. QDateTime dataTime = QDateTime::fromTime_t(0);
  1202. 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);
  1203. // system(QString("echo \"[YTCI]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  1204. // qDebug()<<sql.toUtf8().data();
  1205. qry = mdb.exec(sql);
  1206. int nrow = 0;
  1207. while(qry.next()){
  1208. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  1209. dataTime = qry.value(3).toDateTime();
  1210. if(nrow==0)
  1211. Temperature = qry.value(2).toString();
  1212. else if(nrow==1)
  1213. Humidity = qry.value(2).toString();
  1214. nrow++;
  1215. }
  1216. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  1217. {
  1218. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  1219. QString jsonstr = QString("{\"dataCode\":\"DATA_ENVIRONM\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"Temperature\":%3,\"Humidity\":%4}}")
  1220. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(Temperature).arg(Humidity);
  1221. // system(QString("echo \"[YTCI] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  1222. emit SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  1223. }
  1224. }else if(syncDevList.at(i).ObjType.compare("YTWP")==0){
  1225. found = true;
  1226. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  1227. // 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());
  1228. QString WaterPressure = "0.0";
  1229. QDateTime dataTime = QDateTime::fromTime_t(0);
  1230. 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);
  1231. // system(QString("echo \"[YTWP]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  1232. // qDebug()<<sql.toUtf8().data();
  1233. qry = mdb.exec(sql);
  1234. if(qry.next()){
  1235. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  1236. dataTime = qry.value(3).toDateTime();
  1237. WaterPressure = qry.value(2).toString();
  1238. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  1239. {
  1240. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  1241. QString jsonstr = QString("{\"dataCode\":\"DATA_WATERPRE\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"WaterPressure\":%3}}")
  1242. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(WaterPressure);
  1243. // system(QString("echo \"[YTWP] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  1244. emit SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  1245. }
  1246. }
  1247. }else if(syncDevList.at(i).ObjType.compare("YTLL")==0){
  1248. found = true;
  1249. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  1250. // 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());
  1251. QString LiquidLevel = "0.0";
  1252. QDateTime dataTime = QDateTime::fromTime_t(0);
  1253. 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);
  1254. // system(QString("echo \"[YTLL]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  1255. // qDebug()<<sql.toUtf8().data();
  1256. qry = mdb.exec(sql);
  1257. if(qry.next()){
  1258. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  1259. dataTime = qry.value(3).toDateTime();
  1260. LiquidLevel = qry.value(2).toString();
  1261. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  1262. {
  1263. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  1264. QString jsonstr = QString("{\"dataCode\":\"DATA_LIQUIDLE\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"LiquidLevel\":%3}}")
  1265. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(LiquidLevel);
  1266. // system(QString("echo \"[YTLL] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  1267. emit SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  1268. }
  1269. }
  1270. }else if(syncDevList.at(i).ObjType.compare("YTEF")==0){
  1271. found = true;
  1272. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  1273. // 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());
  1274. QString HighVoltageAlarm ="off";
  1275. QString LowVoltageAlarm = "off";
  1276. QString HighCurrentAlarm = "off";
  1277. QString ElectricityLeakage = "off";
  1278. QString HighTemperatureA = "off";
  1279. QString HighTemperatureB = "off";
  1280. QString HighTemperatureC = "off";
  1281. QString VoltageA = "0.0";
  1282. QString VoltageB = "0.0";
  1283. QString VoltageC = "0.0";
  1284. QString CurrentA = "0.0";
  1285. QString CurrentB = "0.0";
  1286. QString CurrentC = "0.0";
  1287. QString TemperatureA = "0.0";
  1288. QString TemperatureB = "0.0";
  1289. QString TemperatureC = "0.0";
  1290. QDateTime dataTime = QDateTime::fromTime_t(0);
  1291. sql =QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1'").arg(devid);
  1292. // system(QString("echo \"[YTEF]%1\" >> /root/test.log").arg(sql).toUtf8().data());
  1293. // qDebug()<<sql.toUtf8().data();
  1294. qry = mdb.exec(sql);
  1295. while(qry.next()){
  1296. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t())
  1297. dataTime = qry.value(3).toDateTime();
  1298. int code = qry.value(1).toInt();
  1299. if(code==1){
  1300. if(qry.value(2).toInt()==1)
  1301. HighVoltageAlarm = "on";
  1302. }else if(code==2){
  1303. if(qry.value(2).toInt()==1)
  1304. LowVoltageAlarm = "on";
  1305. }else if(code==3){
  1306. if(qry.value(2).toInt()==1)
  1307. HighCurrentAlarm = "on";
  1308. }else if(code==4){
  1309. if(qry.value(2).toInt()==1)
  1310. ElectricityLeakage = "on";
  1311. }else if(code==5){
  1312. if(qry.value(2).toInt()==1)
  1313. HighTemperatureA = "on";
  1314. }else if(code==6){
  1315. if(qry.value(2).toInt()==1)
  1316. HighTemperatureB = "on";
  1317. }else if(code==7){
  1318. if(qry.value(2).toInt()==1)
  1319. HighTemperatureC = "on";
  1320. }else if(code==65)
  1321. VoltageA = qry.value(2).toString();
  1322. else if(code==66)
  1323. VoltageB = qry.value(2).toString();
  1324. else if(code==67)
  1325. VoltageC = qry.value(2).toString();
  1326. else if(code==68)
  1327. CurrentA = qry.value(2).toString();
  1328. else if(code==69)
  1329. CurrentB = qry.value(2).toString();
  1330. else if(code==70)
  1331. CurrentC = qry.value(2).toString();
  1332. else if(code==71)
  1333. TemperatureA = qry.value(2).toString();
  1334. else if(code==72)
  1335. TemperatureB = qry.value(2).toString();
  1336. else if(code==73)
  1337. TemperatureC = qry.value(2).toString();
  1338. }
  1339. // if(dataTime.toTime_t()>syncDevList.at(i).RecCur)
  1340. {
  1341. mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  1342. 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}}")
  1343. .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);
  1344. // system(QString("echo \"[YTEF] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  1345. emit SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  1346. }
  1347. }else if(syncDevList.at(i).ObjType.compare("YTVA")==0){
  1348. found = true;
  1349. QString VideoAlarm01 = "off";
  1350. QString VideoAlarm02 = "off";
  1351. QDateTime dataTime = QDateTime::fromTime_t(0);
  1352. sql =QString("select dwtype,point_code,point_data,data_time from sp_owner_status where device_id='%1'").arg(devid);
  1353. // system(QString("echo \"%1\" >> /root/test.log").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).toUtf8().data());
  1354. qry = mdb.exec(sql);
  1355. while(qry.next()){
  1356. if(dataTime.toTime_t()<qry.value(3).toDateTime().toTime_t()){
  1357. dataTime = qry.value(3).toDateTime();
  1358. int code = qry.value(1).toInt();
  1359. if(code==1){
  1360. if(qry.value(2).toInt()==1){
  1361. VideoAlarm01 = "on";
  1362. VideoAlarm02 = "off";
  1363. }
  1364. }else if(code==2){
  1365. if(qry.value(2).toInt()==1){
  1366. VideoAlarm01 = "off";
  1367. VideoAlarm02 = "on";
  1368. }
  1369. }
  1370. }
  1371. }
  1372. // mdb.exec(QString("update sp_yangpu_share set rec_cur=%1 where object_code='%2'").arg(dataTime.toTime_t()).arg(syncDevList.at(i).ObjCode));
  1373. QString jsonstr = QString("{\"dataCode\":\"DATA_VIDEOALA\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"VideoAlarm01\":\"%3\",\"VideoAlarm02\":\"%4\"}}")
  1374. .arg(syncDevList.at(i).ObjCode).arg(dataTime.toString("yyyy-MM-dd HH:mm:ss")).arg(VideoAlarm01).arg(VideoAlarm02);
  1375. // system(QString("echo \"[YTVA] %1\" >> /root/test.log").arg(jsonstr).toUtf8().data());
  1376. emit SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  1377. }
  1378. }
  1379. }
  1380. // if(!found){
  1381. // for(int i=0;i<cnDevList.length();i++){
  1382. // if(devid.compare(cnDevList.at(i).OwnerCode)==0){
  1383. // found = true;
  1384. // if(cnDevList.at(i).ObjType.compare("YTUI")!=0){
  1385. // CNSyncDev cndev = cnDevList.at(i);
  1386. // uint MaxT = 0;
  1387. // QString sql = QString("select point_code, point_data, data_time from sp_owner_status where device_id=%1").arg(devid);
  1388. // QString jdata = "";
  1389. // jdata.append(QString("\"devCategory\":%1").arg(cndev.devCategory));
  1390. // jdata.append(QString(",\"devDesc\":\"%1\"").arg(cndev.ObjName));
  1391. // jdata.append(QString(",\"devId\":\"%1\"").arg(cndev.ObjCode));
  1392. // jdata.append(QString(",\"devName\":\"%1\"").arg(cndev.ObjName));
  1393. // jdata.append(QString(",\"ownBid\":\"%1\"").arg(cndev.ownBid));
  1394. // jdata.append(QString(",\"type\":%1").arg(cndev.subType));
  1395. // qry = mdb.exec(sql);
  1396. // if(cnDevList.at(i).StartPort.length()>0){
  1397. // QList<CnPno> pnoList = getPnoValue(cnDevList.at(i).StartPort);
  1398. // for(int i=0;i<pnoList.length();i++){
  1399. // if(pnoList.at(i).Pno<0){
  1400. // if(pnoList.at(i).PName.compare("devStatus")==0)
  1401. // jdata.append(QString(",\"devStatus\":%1").arg(pnoList.at(i).Default.length()>0?pnoList.at(i).Default:"0"));
  1402. // else
  1403. // jdata.append(QString(",\"%1\":\"%2\"").arg(pnoList.at(i).PName).arg(pnoList.at(i).Default));
  1404. // }
  1405. // }
  1406. // while(qry.next()){
  1407. // uint cTime = qry.value(2).toDateTime().toTime_t();
  1408. // if(cTime>MaxT)
  1409. // MaxT = cTime;
  1410. // for(int i=0;i<pnoList.length();i++){
  1411. // if(pnoList.at(i).Pno==qry.value(0).toInt()){
  1412. // if(pnoList.at(i).PName.compare("startStatus")==0)
  1413. // jdata.append(QString(",\"%1\":\"%2\"").arg(pnoList.at(i).PName).arg(qry.value(1).toInt()));
  1414. // else if(pnoList.at(i).PName.indexOf("Status")>=0)
  1415. // jdata.append(QString(",\"%1\":%2").arg(pnoList.at(i).PName).arg(qry.value(1).toInt()));
  1416. // else
  1417. // jdata.append(QString(",\"%1\":%2").arg(pnoList.at(i).PName).arg(qry.value(1).toString()));
  1418. // break;
  1419. // }
  1420. // }
  1421. // }
  1422. // }else{
  1423. // while(qry.next()){
  1424. // uint cTime = qry.value(2).toDateTime().toTime_t();
  1425. // if(cTime>MaxT)
  1426. // MaxT = cTime;
  1427. // if(cndev.ObjType.compare("YTWP")==0||cndev.ObjType.compare("YTLL")==0){
  1428. // if(qry.value(0).toInt()==1)
  1429. // jdata.append(QString(",\"devStatus\":%1").arg(qry.value(1).toInt()));
  1430. // else if(qry.value(0).toInt()==2)
  1431. // jdata.append(QString(",\"power\":%1").arg(qry.value(1).toInt()));
  1432. // else if(qry.value(0).toInt()==3)
  1433. // jdata.append(QString(",\"signal\":%1").arg((qry.value(1).toInt()==5)?100:(qry.value(1).toInt()*20)));
  1434. // else if(qry.value(0).toInt()==4)
  1435. // jdata.append(QString(",\"value\":%1").arg(qry.value(1).toDouble()));
  1436. // }
  1437. // }
  1438. // if(cndev.ObjType.compare("YTWP")==0){
  1439. // jdata.append(QString(",\"unit\":\"MPa\""));
  1440. // }else if(cndev.ObjType.compare("YTLL")==0){
  1441. // jdata.append(QString(",\"unit\":\"m\""));
  1442. // }
  1443. // }
  1444. // jdata.append(QString(",\"logTime\":\"%1\"").arg(QDateTime::fromTime_t(MaxT).toString("yyyy-MM-dd HH:mm:ss")));
  1445. // emit cnSyncData(0,QUuid::createUuid().toString().replace("{","").replace("}",""), "{"+jdata+"}",cndev.devCategory);
  1446. // }else{
  1447. // }
  1448. // }
  1449. // }
  1450. // }
  1451. }
  1452. //QList<JaPno> DB_SyncThread::getJaPnoValue(QString pnoset)
  1453. //{
  1454. // QList<JaPno> list;
  1455. // QJsonParseError json_error;
  1456. // QJsonDocument jsonDoc(QJsonDocument::fromJson(pnoset.toUtf8(),&json_error));
  1457. // if(json_error.error == QJsonParseError::NoError){
  1458. // QJsonArray json_root = jsonDoc.array();
  1459. // for(int i=0;i<json_root.size();i++){
  1460. // QJsonObject obj = json_root.at(i).toObject();
  1461. // QString name = obj.value("name").toString();
  1462. // QString attr = obj.value("attr").toString();
  1463. // int port = obj.value("port").toInt();
  1464. // QString defvalue1 = obj.value("default1").toString();
  1465. // QString defvalue2 = obj.value("default2").toString();
  1466. // if((port>-2)&&(name.length()>0))
  1467. // list.append(JaPno(name,attr,port,defvalue1,defvalue2));
  1468. // }
  1469. // }
  1470. // return list;
  1471. //}
  1472. QList<CnPno> DB_SyncThread::getPnoValue(QString pnoset)
  1473. {
  1474. QList<CnPno> list;
  1475. QJsonParseError json_error;
  1476. QJsonDocument jsonDoc(QJsonDocument::fromJson(pnoset.toUtf8(),&json_error));
  1477. if(json_error.error == QJsonParseError::NoError){
  1478. QJsonArray json_root = jsonDoc.array();
  1479. for(int i=0;i<json_root.size();i++){
  1480. QJsonObject obj = json_root.at(i).toObject();
  1481. QString name = obj.value("name").toString();
  1482. int port = obj.value("port").toInt();
  1483. QString defvalue = obj.value("default").toString();
  1484. if((port>-2)&&(name.length()>0))
  1485. list.append(CnPno(name,port,defvalue));
  1486. }
  1487. }
  1488. // int i,port;
  1489. // json_object *pno, *obj;
  1490. // char name[1024],value[1024];
  1491. // obj = json_tokener_parse(pnoset.toUtf8().data());
  1492. // if(json_object_get_type(obj)==json_type_array){
  1493. // for(i=0;i<json_object_array_length(obj);i++){
  1494. // pno = json_object_array_get_idx(obj,i);
  1495. // bzero(name,sizeof(name));
  1496. // bzero(value,sizeof(value));
  1497. // port=-2;
  1498. // json_object_object_foreach(pno,key,val){
  1499. // if(strcmp(key,"name")==0)
  1500. // sprintf(name,"%s",json_object_get_string(val));
  1501. // else if(strcmp(key,"port")==0)
  1502. // port = json_object_get_int(val);
  1503. // else if(strcmp(key,"default")==0)
  1504. // sprintf(value,"%s",json_object_get_string(val));
  1505. // }
  1506. // if((port>-2)&&(strlen(name)>0)){
  1507. // list.append(CnPno(QString::fromUtf8(name),port,QString::fromUtf8(value)));
  1508. // }
  1509. // }
  1510. // }
  1511. // json_object_put(obj);
  1512. return list;
  1513. }
  1514. void DB_SyncThread::updatePortName()
  1515. {
  1516. QSqlQuery qry = mdb.exec("select s.owner_code, o.owner_name, o.unitinfo from sp_owner_sync s, sp_owner o where s.owner_code=o.owner_code and (s.owner_name<>o.owner_name or s.unitinfo<>o.unitinfo) group by s.owner_code");
  1517. while(qry.next()){
  1518. QString sql = QString("update sp_owner_sync set owner_name='%1', unitinfo='%2' where owner_code='%3'")
  1519. .arg(qry.value(1).toString()).arg(qry.value(2).toString()).arg(qry.value(0).toString());
  1520. printf("echo '%s' >> /root/sql.txt\n",sql.toUtf8().data());
  1521. mdb.exec(sql);
  1522. }
  1523. }
  1524. void DB_SyncThread::va_heartbeat(){
  1525. int ret = 0;
  1526. for(int i=0;i<syncDevList.length();i++){
  1527. if(syncDevList.at(i).ObjType.compare("YTVA")==0){
  1528. QString jsonstr = QString("{\"dataCode\":\"DATA_VIDEOALA\",\"deviceId\":\"%1\",\"postTime\":\"%2\",\"data\":{\"VideoAlarm01\":\"%3\",\"VideoAlarm02\":\"%4\"}}")
  1529. .arg(syncDevList.at(i).ObjCode).arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg("off").arg("off");
  1530. ret = system(QString("echo '%1' >> /root/heartbeat.log").arg(jsonstr).toUtf8().data());
  1531. emit SyncData(QUuid::createUuid().toString().replace("{","").replace("}",""), jsonstr);
  1532. }
  1533. }
  1534. }
  1535. void DB_SyncThread::set_cndevlist(QList<CNSyncDev> list){
  1536. cnDevList.clear();
  1537. cnDevList.append(list);
  1538. }
  1539. void DB_SyncThread::time_out()
  1540. {
  1541. printf("DB_SyncThread time_out start\n");
  1542. QSqlQuery qry,qry2;
  1543. QString qrysql;
  1544. if(!isWorking)
  1545. {
  1546. printf("update memory at %s\n",QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz").toUtf8().data());
  1547. UpdateTime = QDateTime::currentDateTime().toTime_t();
  1548. isWorking = true;
  1549. if(!mdbOpened)
  1550. {
  1551. mdbOpened = mdb.open();
  1552. }
  1553. else
  1554. {
  1555. if(((times++)&0x0f)==0x0f){//智慧大屏
  1556. UpdateTime = QDateTime::currentDateTime().toTime_t();
  1557. checkUsers();
  1558. checkCompany();
  1559. checkDevice();
  1560. updatePortName();
  1561. }
  1562. syncDevList.clear();
  1563. qry = mdb.exec("select owner_code,dwtype,object_code,start_port,rec_cur from sp_yangpu_share");
  1564. while(qry.next()){
  1565. syncDevList.append(YPSyncDev(qry.value(0).toString(),
  1566. qry.value(1).toString(),
  1567. qry.value(2).toString(),
  1568. qry.value(3).toInt(),
  1569. qry.value(4).toUInt()));
  1570. }
  1571. qry.clear();
  1572. if(day!=QDate::currentDate().day()){
  1573. day = QDate::currentDate().day();
  1574. va_heartbeat();
  1575. }
  1576. cnDevList.clear();
  1577. qry = mdb.exec("select owner_code,dwtype,object_code,start_port,rec_cur,object_name, ownBid, devCategory, type from sp_changning_share");
  1578. while(qry.next()){
  1579. cnDevList.append(CNSyncDev(qry.value(0).toString(),
  1580. qry.value(5).toString(),
  1581. qry.value(1).toString(),
  1582. qry.value(2).toString(),
  1583. qry.value(3).toString().trimmed(),
  1584. qry.value(4).toUInt(),
  1585. qry.value(6).toString(),
  1586. qry.value(7).toInt(),
  1587. qry.value(8).toInt()));
  1588. }
  1589. qry.clear();
  1590. qry2 = mdb.exec("select device_id,point_code from sp_owner_status");
  1591. dList.clear();
  1592. pcList.clear();
  1593. while(qry2.next()){
  1594. dList.append(qry2.value(0).toString());
  1595. pcList.append(qry2.value(1).toInt());
  1596. }
  1597. qry2.clear();
  1598. qry = mdb.exec("select id, owner_code, owner_name, unitinfo, install_time, dwtype, company, rtmp, owner_xh from sp_owner");
  1599. while(qry.next())
  1600. {
  1601. time_t tmp_time = time(static_cast<time_t *>(Q_NULLPTR));
  1602. ytShm->updatetime[DB_THREAD] = tmp_time;
  1603. int dwtype = qry.value(5).toInt();
  1604. uint ID = qry.value(0).toUInt();
  1605. QString companyCode = qry.value(6).toString();
  1606. QDate chkday = QDate::currentDate().addDays(-7);
  1607. bool need_sync = false;
  1608. qry2 =mdb.exec(QString("select count(*) from sp_device_sync where device_id='%1'").arg(qry.value(1).toString()));
  1609. if(qry2.next()){
  1610. if(qry2.value(0).toInt()==0){
  1611. mdb.exec(QString("insert into sp_device_sync (device_id,com_count,com_confirm,alm_count,alm_confirm) values ('%1',0,0,0,0)").arg(qry.value(1).toString()));
  1612. }
  1613. }
  1614. qry2.clear();
  1615. qrysql = QString("select count(*),table_name,sync_id from sp_owner_sync where id=%1").arg(ID);
  1616. qry2 = mdb.exec(qrysql);
  1617. if(qry2.next()){
  1618. QString deviceCode = qry.value(1).toString();
  1619. QString tbname = QString("sp_%1%2").arg(qry.value(5).toInt()==3?"y":(qry.value(5).toInt()==7?"e":(qry.value(5).toInt()==128?"iw":"d"))).arg(deviceCode);
  1620. uint sync_id = 0;
  1621. if(qry2.value(0).toInt()==0){
  1622. mdb.exec(QString("insert into sp_owner_sync (id, owner_code, owner_name, unitinfo, install_time, dwtype, company, rtmp, table_name, sync_id) values (%1,'%2','%3', '%4', '%5', %6, '%7', '%8', '%9', %10) ")
  1623. .arg(qry.value(0).toInt()).arg(qry.value(1).toString()).arg(qry.value(2).toString()).arg(qry.value(3).toString()).arg(qry.value(4).toString())
  1624. .arg(qry.value(5).toInt()).arg(qry.value(6).toString()).arg(qry.value(7).toString()).arg(tbname).arg(sync_id));
  1625. }else{
  1626. sync_id = qry2.value(2).toUInt();
  1627. }
  1628. qry2.clear();
  1629. switch(dwtype){
  1630. case 1://userinfo
  1631. need_sync = userInfoSync(qry.value(1).toString(),deviceCode,sync_id, tbname, chkday,ID,companyCode);
  1632. break;
  1633. case 2://water
  1634. need_sync = waterInfoSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,dwtype,companyCode);
  1635. break;
  1636. case 4:
  1637. need_sync = waterInfoSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,dwtype,companyCode);
  1638. break;
  1639. case 5:
  1640. need_sync = waterInfoSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,dwtype,companyCode);
  1641. break;
  1642. case 3:
  1643. need_sync = smokerInfoSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,companyCode);
  1644. break;
  1645. case 6:
  1646. need_sync = rtuInfoSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,companyCode);
  1647. break;
  1648. case 7:
  1649. need_sync = efireInfoSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,companyCode,qry.value(8).toString());
  1650. break;
  1651. case 16:
  1652. need_sync = videoalarmSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,companyCode);
  1653. // need_sync = false;//debug
  1654. break;
  1655. case 128:
  1656. need_sync = manholeCoverSync(qry.value(1).toString(),deviceCode,sync_id,tbname,chkday,ID,dwtype,companyCode);
  1657. break;
  1658. }
  1659. qry2.clear();
  1660. if(need_sync)
  1661. chkInList(qry.value(1).toString());
  1662. }
  1663. usleep(5000);
  1664. }
  1665. if(deviceDataList.length()>0){
  1666. while (deviceDataList.length()>0) {
  1667. chkInList(deviceDataList.first());
  1668. deviceDataList.removeFirst();
  1669. usleep(5000);
  1670. }
  1671. }
  1672. qry.clear();
  1673. qry = mdb.exec("select a.company as company, a.dwtype as dwtype, sum(a.devCount) as devCount, sum(a.com_count) as comCount, sum(a.com_confirm) as comConfirm, sum(a.alm_count) as almCount, sum(a.alm_confirm) as almConfirm from (select sp_owner.company, sp_device_sync.device_id, if(sp_owner.dwtype=3,1,sp_owner.dwtype) as dwtype, 1 as devCount, sp_device_sync.com_count, sp_device_sync.com_confirm, sp_device_sync.alm_count, sp_device_sync.alm_confirm from sp_owner, sp_device_sync where sp_owner.owner_code = sp_device_sync.device_id) a where a.dwtype in (1,2,5,6,7,16) and a.company<>'' group by a.company, a.dwtype");
  1674. while(qry.next()){
  1675. QString sql2="";
  1676. qry2 = mdb.exec(QString("select count(*) from sp_company_sync where company_code='%1'").arg(qry.value(0).toString()));
  1677. if(qry2.next()){
  1678. if(qry2.value(0).toInt()==0){
  1679. sql2 = QString("insert into sp_company_sync (company_code, device_00_count, device_00_out, device_00_out_confirm, device_00_alarm, device_00_alarm_confirm,device_01_count, device_01_out, device_01_out_confirm, device_01_alarm, device_01_alarm_confirm, device_02_count, device_02_out, device_02_out_confirm, device_02_alarm, device_02_alarm_confirm,device_06_count, device_06_out, device_06_out_confirm, device_06_alarm, device_06_alarm_confirm,device_07_count, device_07_out, device_07_out_confirm, device_07_alarm, device_07_alarm_confirm,device_16_count, device_16_out, device_16_out_confirm, device_16_alarm, device_16_alarm_confirm) values ('%1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);")
  1680. .arg(qry.value(0).toString());
  1681. }
  1682. }
  1683. qry2.clear();
  1684. if(qry.value(1).toInt()==1){
  1685. sql2 += QString("update sp_company_sync set device_01_count=%1, device_01_out=%2, device_01_out_confirm=%3, device_01_alarm=%4, device_01_alarm_confirm=%5 where company_code='%6'")
  1686. .arg(qry.value(2).toInt()).arg(qry.value(3).toInt()).arg(qry.value(4).toInt()).arg(qry.value(5).toInt()).arg(qry.value(6).toInt()).arg(qry.value(0).toString());
  1687. update_company_alarmstatus(qry.value(0).toString(),1,qry.value(2).toUInt(),qry.value(3).toUInt(),qry.value(4).toUInt(),qry.value(5).toUInt(),qry.value(6).toUInt());
  1688. }else if(qry.value(1).toInt()==2){
  1689. sql2 += QString("update sp_company_sync set device_02_count=%1, device_02_out=%2, device_02_out_confirm=%3, device_02_alarm=%4, device_02_alarm_confirm=%5 where company_code='%6'")
  1690. .arg(qry.value(2).toInt()).arg(qry.value(3).toInt()).arg(qry.value(4).toInt()).arg(qry.value(5).toInt()).arg(qry.value(6).toInt()).arg(qry.value(0).toString());
  1691. update_company_alarmstatus(qry.value(0).toString(),2,qry.value(2).toUInt(),qry.value(3).toUInt(),qry.value(4).toUInt(),qry.value(5).toUInt(),qry.value(6).toUInt());
  1692. }else if(qry.value(1).toInt()==3){
  1693. sql2 += QString("update sp_company_sync set device_03_count=%1, device_03_out=%2, device_03_out_confirm=%3, device_03_alarm=%4, device_03_alarm_confirm=%5 where company_code='%6'")
  1694. .arg(qry.value(2).toInt()).arg(qry.value(3).toInt()).arg(qry.value(4).toInt()).arg(qry.value(5).toInt()).arg(qry.value(6).toInt()).arg(qry.value(0).toString());
  1695. update_company_alarmstatus(qry.value(0).toString(),1,qry.value(2).toUInt(),qry.value(3).toUInt(),qry.value(4).toUInt(),qry.value(5).toUInt(),qry.value(6).toUInt());
  1696. }else if(qry.value(1).toInt()==5){
  1697. sql2 += QString("update sp_company_sync set device_00_count=%1, device_00_out=%2, device_00_out_confirm=%3, device_00_alarm=%4, device_00_alarm_confirm=%5 where company_code='%6'")
  1698. .arg(qry.value(2).toInt()).arg(qry.value(3).toInt()).arg(qry.value(4).toInt()).arg(qry.value(5).toInt()).arg(qry.value(6).toInt()).arg(qry.value(0).toString());
  1699. update_company_alarmstatus(qry.value(0).toString(),0,qry.value(2).toUInt(),qry.value(3).toUInt(),qry.value(4).toUInt(),qry.value(5).toUInt(),qry.value(6).toUInt());
  1700. }else if(qry.value(1).toInt()==6){
  1701. sql2 += QString("update sp_company_sync set device_06_count=%1, device_06_out=%2, device_06_out_confirm=%3, device_06_alarm=%4, device_06_alarm_confirm=%5 where company_code='%6'")
  1702. .arg(qry.value(2).toInt()).arg(qry.value(3).toInt()).arg(qry.value(4).toInt()).arg(qry.value(5).toInt()).arg(qry.value(6).toInt()).arg(qry.value(0).toString());
  1703. update_company_alarmstatus(qry.value(0).toString(),6,qry.value(2).toUInt(),qry.value(3).toUInt(),qry.value(4).toUInt(),qry.value(5).toUInt(),qry.value(6).toUInt());
  1704. }else if(qry.value(1).toInt()==7){
  1705. sql2 += QString("update sp_company_sync set device_07_count=%1, device_07_out=%2, device_07_out_confirm=%3, device_07_alarm=%4, device_07_alarm_confirm=%5 where company_code='%6'")
  1706. .arg(qry.value(2).toInt()).arg(qry.value(3).toInt()).arg(qry.value(4).toInt()).arg(qry.value(5).toInt()).arg(qry.value(6).toInt()).arg(qry.value(0).toString());
  1707. update_company_alarmstatus(qry.value(0).toString(),7,qry.value(2).toUInt(),qry.value(3).toUInt(),qry.value(4).toUInt(),qry.value(5).toUInt(),qry.value(6).toUInt());
  1708. }else if(qry.value(1).toInt()==16){
  1709. sql2 += QString("update sp_company_sync set device_16_count=%1, device_16_out=%2, device_16_out_confirm=%3, device_16_alarm=%4, device_16_alarm_confirm=%5 where company_code='%6'")
  1710. .arg(qry.value(2).toInt()).arg(qry.value(3).toInt()).arg(qry.value(4).toInt()).arg(qry.value(5).toInt()).arg(qry.value(6).toInt()).arg(qry.value(0).toString());
  1711. update_company_alarmstatus(qry.value(0).toString(),16,qry.value(2).toUInt(),qry.value(3).toUInt(),qry.value(4).toUInt(),qry.value(5).toUInt(),qry.value(6).toUInt());
  1712. }
  1713. mdb.exec(sql2);
  1714. qry2.clear();
  1715. usleep(5000);
  1716. }
  1717. qry.clear();
  1718. QDate d_day = QDate::currentDate().addDays(-7);
  1719. QTime current_time =QTime::currentTime();
  1720. int hour = current_time.hour();//当前的小时
  1721. QString delsql = QString("delete from sp_owner_sync_data where data_time<'%1-%2-%3 %4:00:00'").arg(d_day.year(),4,10,QChar('0')).arg(d_day.month(),2,10,QChar('0')).arg(d_day.day(),2,10,QChar('0')).arg(hour);
  1722. mdb.exec(delsql);
  1723. qry = mdb.exec("select sp_owner_status.id, sp_owner_status.device_id, sp_owner_status.data_time, sp_owner.dwtype from sp_owner_status, sp_owner where sp_owner_status.device_id=sp_owner.owner_code and sp_owner.dwtype=1 and sp_owner_status.point_data !='0'");
  1724. while(qry.next()){
  1725. qry2 = mdb.exec(QString("select clzt from sp_hj2017 where device_code=%1 and time='%2'")
  1726. .arg(qry.value(1).toString()).arg(qry.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1727. if((qry2.next())&&(qry2.value(0).toInt()==1))
  1728. mdb.exec(QString("update sp_owner_status set point_data='0' where id=%1").arg(qry.value(0).toInt()));
  1729. qry.clear();
  1730. usleep(5000);
  1731. }
  1732. qry.clear();
  1733. qry = mdb.exec("select sp_owner_status.id, sp_owner_status.device_id, sp_owner_status.data_time, sp_owner_status.point_data from sp_owner_status, sp_owner where sp_owner_status.point_code=1 and sp_owner_status.device_id=sp_owner.owner_code and (sp_owner.dwtype=2 or sp_owner.dwtype=5) and sp_owner_status.point_data !='0' and sp_owner_status.point_data !='WP0'");
  1734. while(qry.next()){
  1735. qry2 = mdb.exec(QString("select clzt from sp_sj2017 where device_code=%1 and time='%2'")
  1736. .arg(qry.value(1).toString()).arg(qry.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss")));
  1737. if((qry2.next())&&(qry2.value(0).toInt()==1))
  1738. mdb.exec(QString("update sp_owner_status set point_data='0',data_time='%1' where device_id='%2' and point_code=0").arg(qry.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(qry.value(1).toString()));
  1739. else
  1740. mdb.exec(QString("update sp_owner_status set point_data='%1',data_time='%2' where device_id='%3' and point_code=0").arg(qry.value(3).toString()).arg(qry.value(2).toDateTime().toString("yyyy-MM-dd HH:mm:ss")).arg(qry.value(1).toString()));
  1741. usleep(5000);
  1742. }
  1743. mdb.close();
  1744. mdbOpened = false;
  1745. }
  1746. isWorking = false;
  1747. }
  1748. }
  1749. void DB_SyncThread::setCompanyAlarmSet(QString deviceCode, AlarmSet set)
  1750. {
  1751. QString companyCode;
  1752. quint16 companyIdx = 0xffff;
  1753. quint32 deviceIdx = 0xffffffff;
  1754. AlarmSet tmp = AlarmSet(0xffffffff,"","",0xff,0,0);
  1755. for(quint32 i=0;i<102400;i++){
  1756. if(i>=webData->DevicesCount)
  1757. break;
  1758. if(QString::compare(QString(webData->devices[i].DevCode),deviceCode)==0){
  1759. deviceIdx = i;
  1760. companyCode = QString(webData->devices[i].CompanyCode);
  1761. set.DeviceIdx = deviceIdx;
  1762. set.DevName = QString(webData->devices[i].DevName);
  1763. if(set.dwType==16){
  1764. system(QString("echo '%1, %2, %3' >> /root/data.txt").arg(webData->devices[i].CompanyCode)
  1765. .arg(deviceCode).arg(QDateTime::fromTime_t(set.AlarmTime).toString("yyyy-MM-dd HH:mm:ss"))
  1766. .toUtf8().data());
  1767. }
  1768. setLastAlarmSet(static_cast<quint16>(i),set.dwType,set);
  1769. break;
  1770. }
  1771. }
  1772. for(quint16 i=0;i<10240;i++){
  1773. if(i>=webData->CompanysCount)
  1774. break;
  1775. if(QString::compare(QString(webData->companys[i].CompanyCode),companyCode)==0){
  1776. companyIdx = i;
  1777. break;
  1778. }
  1779. }
  1780. if(companyIdx<webData->CompanysCount){
  1781. for(quint8 i=0;i<10;i++){
  1782. if(set.AlarmTime>webData->CompanyAlarm[companyIdx].alarmRec[i].Time_T){
  1783. for(quint8 j=9;j>i;j--){
  1784. get_AlarmSet(companyIdx,j-1,&tmp);
  1785. set_AlarmSet(companyIdx,j,tmp);
  1786. }
  1787. set_AlarmSet(companyIdx,i,set);
  1788. break;
  1789. }
  1790. }
  1791. for(quint8 i=0;i<10;i++){
  1792. if(set.AlarmTime>webData->CompanyAlarm[10239].alarmRec[i].Time_T){
  1793. for(quint8 j=9;j>i;j--){
  1794. get_AlarmSet(10239,j-1,&tmp);
  1795. set_AlarmSet(10239,j,tmp);
  1796. }
  1797. set_AlarmSet(10239,i,set);
  1798. break;
  1799. }
  1800. }
  1801. }
  1802. }
  1803. void DB_SyncThread::set_AlarmSet(quint16 companyIdx, quint8 alarmIdx, AlarmSet set)
  1804. {
  1805. if(((companyIdx<webData->CompanysCount)||(companyIdx==10239))&&(alarmIdx<10)){
  1806. if(set.Enabled==0x01){
  1807. webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DeviceIdx = set.DeviceIdx;
  1808. sprintf(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DevName,"%s",set.DevName.toUtf8().data());
  1809. sprintf(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Data,"%s",set.AlarmData.toUtf8().data());
  1810. sprintf(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Time,"%s",QDateTime::fromTime_t(set.AlarmTime).toString("yyyy-MM-dd HH:mm:ss").toUtf8().data());
  1811. webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].dwType = set.dwType;
  1812. webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Time_T = set.AlarmTime;
  1813. webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].ShowFlag = 0x01;
  1814. }else
  1815. webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].ShowFlag = 0x00;
  1816. webData->CompanyAlarm[companyIdx].UpdateTime = UpdateTime;
  1817. }
  1818. }
  1819. void DB_SyncThread::setLastAlarmSet(quint16 companyIdx, quint8 dwtype, AlarmSet set)
  1820. {
  1821. int page=0, dwIdx=0;
  1822. // if(dwtype==16){
  1823. // system(QString("echo '16 to mem: %1 %2 %3 %4' >> /root/data.txt")
  1824. // .arg(companyIdx).arg(webData->CompanysCount).arg(set.DeviceIdx).arg(webData->DevicesCount)
  1825. // .toUtf8().data());
  1826. // }
  1827. if(((companyIdx<webData->CompanysCount)||(companyIdx==10239))&&(dwtype<20)){
  1828. if(dwtype==1){
  1829. page = 0;
  1830. dwIdx = 1;
  1831. }else if(dwtype==2){
  1832. page = 0;
  1833. dwIdx = 2;
  1834. }else if(dwtype==6){
  1835. page = 0;
  1836. dwIdx = 3;
  1837. }else if(dwtype==7){
  1838. page = 0;
  1839. dwIdx = 4;
  1840. }else if(dwtype==16){
  1841. page = 0;
  1842. dwIdx = 5;
  1843. }
  1844. if(set.Enabled==0x01)
  1845. {
  1846. // if(dwtype==16){
  1847. // system(QString("echo 'lastAlarmRec %1 %2 %3 companyIdx:%4 page:%5 dwIdx:%6' >> /root/data.txt")
  1848. // .arg(set.DevName).arg(set.AlarmData).arg(QDateTime::fromTime_t(set.AlarmTime).toString("yyyy-MM-dd HH:mm:ss"))
  1849. // .arg(companyIdx).arg(page).arg(dwIdx).toUtf8().data());
  1850. // }
  1851. webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].DeviceIdx = set.DeviceIdx;
  1852. sprintf(webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].DevName,"%s",set.DevName.toUtf8().data());
  1853. sprintf(webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].Data,"%s",set.AlarmData.toUtf8().data());
  1854. sprintf(webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].Time,"%s",QDateTime::fromTime_t(set.AlarmTime).toString("yyyy-MM-dd HH:mm:ss").toUtf8().data());
  1855. webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].dwType = set.dwType;
  1856. webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].Time_T = set.AlarmTime;
  1857. webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].ShowFlag = 0x01;
  1858. if(!initTime)
  1859. emit companyAlarmChanged(QString(webData->companys[companyIdx].CompanyCode));
  1860. }else
  1861. webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].ShowFlag = 0x00;
  1862. webData->LastAlarmRec[companyIdx][page].UpdateTime = UpdateTime;
  1863. }
  1864. }
  1865. void DB_SyncThread::get_AlarmSet(quint16 companyIdx, quint8 alarmIdx, AlarmSet *set)
  1866. {
  1867. if(((companyIdx<webData->CompanysCount)||(companyIdx==10239))&&(alarmIdx<10)){
  1868. if(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].ShowFlag==0x01){
  1869. set->Enabled = 0x01;
  1870. set->DeviceIdx = webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DeviceIdx;
  1871. set->dwType = webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].dwType;
  1872. set->AlarmTime = webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Time_T;
  1873. set->DevName = QString::fromUtf8(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DevName);
  1874. set->AlarmData = QString::fromUtf8(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Data);
  1875. }else{
  1876. set->Enabled = 0x00;
  1877. }
  1878. }
  1879. }
  1880. void DB_SyncThread::getLastAlarmSet(quint16 companyIdx, quint8 dwtype, AlarmSet *set)
  1881. {
  1882. int page=0, dwIdx=0;
  1883. if(((companyIdx<webData->CompanysCount)||(companyIdx==10239))&&(dwtype<20)){
  1884. if(dwtype==1){
  1885. page = 0;
  1886. dwIdx = 1;
  1887. }else if(dwtype==2){
  1888. page = 0;
  1889. dwIdx = 2;
  1890. }else if(dwtype==6){
  1891. page = 0;
  1892. dwIdx = 3;
  1893. }else if(dwtype==7){
  1894. page = 0;
  1895. dwIdx = 4;
  1896. }else if(dwtype==16){
  1897. page = 0;
  1898. dwIdx = 5;
  1899. }
  1900. if(webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].ShowFlag==0x01){
  1901. set->Enabled = 0x01;
  1902. set->DeviceIdx = webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].DeviceIdx;
  1903. set->dwType = webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].dwType;
  1904. set->AlarmTime = webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].Time_T;
  1905. set->DevName = QString::fromUtf8(webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].DevName);
  1906. set->AlarmData = QString::fromUtf8(webData->LastAlarmRec[companyIdx][page].alarmRec[dwIdx].Data);
  1907. }else{
  1908. set->Enabled = 0x00;
  1909. }
  1910. }
  1911. }
  1912. void DB_SyncThread::update_company_alarmstatus(QString companycode, quint8 alarmidx, uint devCount, uint devOut, uint devOutConfirm, uint devAlarmCount, uint devAlarmConfirm)
  1913. {
  1914. uint dC=0,dO=0,dOC=0,dA=0,dAC=0;
  1915. quint16 companyIdx = 0xffff;
  1916. for(quint16 i=0;i<10240;i++){
  1917. if(i>=webData->CompanysCount)
  1918. break;
  1919. if(QString::compare(QString(webData->companys[i].CompanyCode),companycode)==0){
  1920. companyIdx = i;
  1921. break;
  1922. }
  1923. }
  1924. if(companyIdx<webData->CompanysCount){
  1925. for(quint16 i=0;i<10239;i++){
  1926. if(i==companyIdx){
  1927. webData->companys[i].subType[alarmidx].DevCount = devCount;
  1928. webData->companys[i].subType[alarmidx].DevOutLineCount = devOut;
  1929. webData->companys[i].subType[alarmidx].DevOutConfirmCount = devOutConfirm;
  1930. webData->companys[i].subType[alarmidx].DevAlarmCount = devAlarmCount;
  1931. webData->companys[i].subType[alarmidx].DevAlarmConfirmCount = devAlarmConfirm;
  1932. }
  1933. dC += webData->companys[i].subType[alarmidx].DevCount;
  1934. dO += webData->companys[i].subType[alarmidx].DevOutLineCount;
  1935. dOC += webData->companys[i].subType[alarmidx].DevOutConfirmCount;
  1936. dA += webData->companys[i].subType[alarmidx].DevAlarmCount;
  1937. dAC += webData->companys[i].subType[alarmidx].DevAlarmConfirmCount;
  1938. }
  1939. webData->companys[10239].subType[alarmidx].DevCount = dC;
  1940. webData->companys[10239].subType[alarmidx].DevOutLineCount = dO;
  1941. webData->companys[10239].subType[alarmidx].DevOutConfirmCount = dOC;
  1942. webData->companys[10239].subType[alarmidx].DevAlarmCount = dA;
  1943. webData->companys[10239].subType[alarmidx].DevAlarmConfirmCount = dAC;
  1944. }
  1945. }
  1946. void DB_SyncThread::webShmInit()
  1947. {
  1948. if(!mdbOpened)
  1949. {
  1950. mdbOpened = mdb.open();
  1951. }
  1952. printf("init memory at %s\n",QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz").toUtf8().data());
  1953. UpdateTime = QDateTime::currentDateTime().toTime_t();
  1954. checkUsers();
  1955. checkCompany();
  1956. checkDevice();
  1957. checkAlarmStatus();
  1958. checkAlarmList();
  1959. initTime = false;
  1960. mdb.close();
  1961. mdbOpened = false;
  1962. }
  1963. quint32 DB_SyncThread::getDeviceIdxByDeviceCode(QString deviceCode)
  1964. {
  1965. for(quint32 i=0;i<102400;i++){
  1966. if(webData->devices[i].Enabled==0x01){
  1967. if(QString::compare(deviceCode,QString(webData->devices[i].DevCode))==0){
  1968. return i;
  1969. }
  1970. }
  1971. }
  1972. return 0xffffffff;
  1973. }
  1974. void DB_SyncThread::checkAlarmList()
  1975. {
  1976. printf("checkAlarmList start\n");
  1977. QSqlQuery qry;
  1978. QList<AlarmSet> companyAlarmList;
  1979. QList<AlarmSet> allAlarmList;
  1980. int nrow;
  1981. allAlarmList.clear();
  1982. for(quint16 i=0;i<webData->CompanysCount;i++){
  1983. if(strlen(webData->companys[i].CompanyCode)>0){
  1984. // printf("CompanyCode:%s\n",QString(webData->companys[i].CompanyCode).toUtf8().data());
  1985. companyAlarmList.clear();
  1986. qry = mdb.exec(QString("select h.device_code, h.time, h.data2, h.data4, o.owner_name from sp_hj2017 h, sp_owner o where o.owner_code = h.device_code and o.company='%1' and h.time<now() order by h.time desc limit 0, 10").arg(webData->companys[i].CompanyCode));
  1987. nrow = 0;
  1988. while(qry.next()){
  1989. // printf("alarmName:%s\n",qry.value(2).toString().toUtf8().data());
  1990. AlarmSet CompanyAlarm = AlarmSet(getDeviceIdxByDeviceCode(qry.value(0).toString()),qry.value(4).toString(),
  1991. QString::fromUtf8("%1,%2").arg(qry.value(2).toString()).arg(qry.value(3).toString()),
  1992. 1,qry.value(1).toDateTime().toTime_t(),1);
  1993. if(nrow==0)
  1994. setLastAlarmSet(i,1,CompanyAlarm);
  1995. companyAlarmList.append(CompanyAlarm);
  1996. allAlarmList.append(CompanyAlarm);
  1997. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  1998. ytShm->updatetime[DB_THREAD] = tmp_time;
  1999. nrow++;
  2000. }
  2001. qry.clear();
  2002. nrow = 0;
  2003. qry = mdb.exec(QString("select s.device_code, s.time, s.data1, s.data4, o.owner_name from sp_sj2017 s, sp_owner o where o.owner_code = s.device_code and o.company='%1' and s.time<now() order by s.time desc limit 0, 10").arg(webData->companys[i].CompanyCode));
  2004. while(qry.next()){
  2005. QString dat1 = qry.value(2).toString();
  2006. QString data1 = QString::compare(dat1,"WP1")==0?QString::fromUtf8("低压"):
  2007. (QString::compare(dat1,"WP2")==0?QString::fromUtf8("高压"):
  2008. (QString::compare(dat1,"WP3")==0?QString::fromUtf8("故障"):
  2009. (QString::compare(dat1,"WP4")==0?QString::fromUtf8("离线"):
  2010. (QString::compare(dat1,"WP0")==0?QString::fromUtf8("恢复"):
  2011. (QString::compare(dat1,"LL1")==0?QString::fromUtf8("低液位"):
  2012. (QString::compare(dat1,"LL2")==0?QString::fromUtf8("高液位"):
  2013. (QString::compare(dat1,"LL3")==0?QString::fromUtf8("故障"):
  2014. (QString::compare(dat1,"LL4")==0?QString::fromUtf8("离线"):
  2015. (QString::compare(dat1,"LL0")==0?QString::fromUtf8("恢复"):"")))))))));
  2016. AlarmSet CompanyAlarm = AlarmSet(getDeviceIdxByDeviceCode(qry.value(0).toString()),qry.value(4).toString(),
  2017. data1+QString::fromUtf8(",")+qry.value(3).toString(),
  2018. 2,qry.value(1).toDateTime().toTime_t(),1);
  2019. if(nrow==0)
  2020. setLastAlarmSet(i,2,CompanyAlarm);
  2021. companyAlarmList.append(CompanyAlarm);
  2022. allAlarmList.append(CompanyAlarm);
  2023. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2024. ytShm->updatetime[DB_THREAD] = tmp_time;
  2025. nrow++;
  2026. }
  2027. qry.clear();
  2028. nrow=0;
  2029. qry = mdb.exec(QString("select r.device_code, r.time, r.data2, r.data4, o.owner_name from sp_rtu2017 r, sp_owner o where o.owner_code = r.device_code and o.company='%1' and r.time<now() order by r.time desc limit 0, 10").arg(webData->companys[i].CompanyCode));
  2030. while(qry.next()){
  2031. AlarmSet CompanyAlarm = AlarmSet(getDeviceIdxByDeviceCode(qry.value(0).toString()),qry.value(4).toString(),
  2032. qry.value(2).toString()+QString::fromUtf8(",")+qry.value(3).toString(),
  2033. 6,qry.value(1).toDateTime().toTime_t(),1);
  2034. if(nrow==0)
  2035. setLastAlarmSet(i,6,CompanyAlarm);
  2036. companyAlarmList.append(CompanyAlarm);
  2037. allAlarmList.append(CompanyAlarm);
  2038. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2039. ytShm->updatetime[DB_THREAD] = tmp_time;
  2040. nrow++;
  2041. }
  2042. qry.clear();
  2043. nrow=0;
  2044. qry = mdb.exec(QString("select e.device_code, e.time, e.data1, o.owner_name from sp_ef2017 e, sp_owner o where o.owner_code = e.device_code and o.company='%1' and e.time<now() order by e.time desc limit 0, 10").arg(webData->companys[i].CompanyCode));
  2045. while(qry.next()){
  2046. QString dat1 = qry.value(2).toString();
  2047. AlarmSet CompanyAlarm = AlarmSet(getDeviceIdxByDeviceCode(qry.value(0).toString()),qry.value(3).toString(),
  2048. QString::compare(dat1,"EF1")==0?QString::fromUtf8("欠压报警"):
  2049. (QString::compare(dat1,"EF2")==0?QString::fromUtf8("过压报警"):
  2050. (QString::compare(dat1,"EF3")==0?QString::fromUtf8("过流告警"):
  2051. (QString::compare(dat1,"EF4")==0?QString::fromUtf8("漏电报警"):
  2052. (QString::compare(dat1,"EF5")==0?QString::fromUtf8("#1线缆温度超高报警"):
  2053. (QString::compare(dat1,"EF6")==0?QString::fromUtf8("#2线缆温度超高报警"):
  2054. (QString::compare(dat1,"EF7")==0?QString::fromUtf8("#3线缆温度超高报警"):
  2055. (QString::compare(dat1,"EF8")==0?QString::fromUtf8("#4线缆温度超高报警"):
  2056. (QString::compare(dat1,"EF9")==0?QString::fromUtf8("设备离线"):
  2057. (QString::compare(dat1,"EF0")==0?QString::fromUtf8("报警撤销"):""))))))))),
  2058. 7,qry.value(1).toDateTime().toTime_t(),1);
  2059. if(nrow==0)
  2060. setLastAlarmSet(i,7,CompanyAlarm);
  2061. companyAlarmList.append(CompanyAlarm);
  2062. allAlarmList.append(CompanyAlarm);
  2063. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2064. ytShm->updatetime[DB_THREAD] = tmp_time;
  2065. nrow++;
  2066. }
  2067. qry.clear();
  2068. nrow=0;
  2069. QString sql = QString("select v.device_code, v.time, v.data4, o.owner_name from sp_video2017 v, sp_owner o where o.owner_code = v.device_code and o.company='%1' and v.time<now() order by v.time desc limit 0, 10").arg(webData->companys[i].CompanyCode);
  2070. // system(QString("echo '%1' >> /root/sql.txt").arg(sql).toUtf8().data());
  2071. qry = mdb.exec(sql);
  2072. while(qry.next()){
  2073. AlarmSet CompanyAlarm = AlarmSet(getDeviceIdxByDeviceCode(qry.value(0).toString()),qry.value(3).toString(),
  2074. qry.value(2).toString(),16,qry.value(1).toDateTime().toTime_t(),1);
  2075. if(nrow==0){
  2076. // system(QString("echo '%1 %2 %3' >> /root/data.txt ").arg(webData->companys[i].CompanyCode).arg(qry.value(1).toString()).arg(qry.value(2).toString()).toUtf8().data());
  2077. setLastAlarmSet(i,16,CompanyAlarm);
  2078. }
  2079. companyAlarmList.append(CompanyAlarm);
  2080. allAlarmList.append(CompanyAlarm);
  2081. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2082. ytShm->updatetime[DB_THREAD] = tmp_time;
  2083. nrow++;
  2084. }
  2085. qry.clear();
  2086. qSort(companyAlarmList.begin(),companyAlarmList.end(),compareAlarmSet);
  2087. qSort(allAlarmList.begin(),allAlarmList.end(),compareAlarmSet);
  2088. while(companyAlarmList.length()>10)
  2089. companyAlarmList.removeLast();
  2090. while(allAlarmList.length()>10)
  2091. allAlarmList.removeLast();
  2092. for(int j=0;j<10;j++){
  2093. if(j<companyAlarmList.length()){
  2094. AlarmSet alarm = companyAlarmList.at(j);
  2095. webData->CompanyAlarm[i].alarmRec[j].DeviceIdx=alarm.DeviceIdx;
  2096. sprintf(webData->CompanyAlarm[i].alarmRec[j].DevName,"%s",alarm.DevName.toUtf8().data());
  2097. sprintf(webData->CompanyAlarm[i].alarmRec[j].Data,"%s",alarm.AlarmData.toUtf8().data());
  2098. sprintf(webData->CompanyAlarm[i].alarmRec[j].Time,"%s",QDateTime::fromTime_t(alarm.AlarmTime).toString("yyyy-MM-dd HH:mm:ss").toUtf8().data());
  2099. webData->CompanyAlarm[i].alarmRec[j].dwType = alarm.dwType;
  2100. webData->CompanyAlarm[i].alarmRec[j].Time_T = alarm.AlarmTime;
  2101. webData->CompanyAlarm[i].alarmRec[j].ShowFlag = 0x01;
  2102. printf("companyAlarmList:%s\n",webData->CompanyAlarm[i].alarmRec[j].DevName);
  2103. printf("alarmRec:%s\n",webData->CompanyAlarm[i].alarmRec[j].Data);
  2104. }else
  2105. webData->CompanyAlarm[i].alarmRec[j].ShowFlag = 0x00;
  2106. webData->CompanyAlarm[i].UpdateTime = UpdateTime;
  2107. }
  2108. }
  2109. usleep(5000);
  2110. }
  2111. for(int j=0;j<10;j++){
  2112. if(j<allAlarmList.length()){
  2113. AlarmSet alarm = allAlarmList.at(j);
  2114. webData->CompanyAlarm[10239].alarmRec[j].DeviceIdx = alarm.DeviceIdx;
  2115. sprintf(webData->CompanyAlarm[10239].alarmRec[j].DevName,"%s",alarm.DevName.toUtf8().data());
  2116. sprintf(webData->CompanyAlarm[10239].alarmRec[j].Data,"%s",alarm.AlarmData.toUtf8().data());
  2117. sprintf(webData->CompanyAlarm[10239].alarmRec[j].Time,"%s",QDateTime::fromTime_t(alarm.AlarmTime).toString("yyyy-MM-dd HH:mm:ss").toUtf8().data());
  2118. webData->CompanyAlarm[10239].alarmRec[j].dwType = alarm.dwType;
  2119. webData->CompanyAlarm[10239].alarmRec[j].Time_T = alarm.AlarmTime;
  2120. webData->CompanyAlarm[10239].alarmRec[j].ShowFlag = 0x01;
  2121. }else
  2122. webData->CompanyAlarm[10239].alarmRec[j].ShowFlag = 0x00;
  2123. webData->CompanyAlarm[10239].UpdateTime = UpdateTime;
  2124. }
  2125. }
  2126. void DB_SyncThread::checkAlarmStatus()
  2127. {
  2128. printf("checkAlarmStatus start\n");
  2129. char company_code[50];
  2130. QSqlQuery qry = mdb.exec("select company_code, device_01_count, device_01_out, device_01_out_confirm, device_01_alarm, device_01_alarm_confirm, device_02_count, device_02_out, device_02_out_confirm, device_02_alarm, device_02_alarm_confirm, device_06_count, device_06_out, device_06_out_confirm, device_06_alarm, device_06_alarm_confirm, device_07_count, device_07_out, device_07_out_confirm, device_07_alarm, device_07_alarm_confirm, device_16_count, device_16_out, device_16_out_confirm, device_16_alarm, device_16_alarm_confirm from sp_company_sync");
  2131. while(qry.next()){
  2132. sprintf(company_code,"%s",qry.value(0).toString().toUtf8().data());
  2133. if(strlen(company_code)>0){
  2134. for(unsigned int i=0;i<10240;i++){
  2135. if(i>=webData->CompanysCount)
  2136. break;
  2137. if(strcmp(company_code,webData->companys[i].CompanyCode)==0){
  2138. webData->companys[i].subType[1].DevCount = qry.value(1).toUInt();
  2139. webData->companys[i].subType[1].DevOutLineCount = qry.value(2).toUInt();
  2140. webData->companys[i].subType[1].DevOutConfirmCount = qry.value(3).toUInt();
  2141. webData->companys[i].subType[1].DevAlarmCount = qry.value(4).toUInt();
  2142. webData->companys[i].subType[1].DevAlarmConfirmCount = qry.value(5).toUInt();
  2143. webData->companys[i].subType[2].DevCount = qry.value(6).toUInt();
  2144. webData->companys[i].subType[2].DevOutLineCount = qry.value(7).toUInt();
  2145. webData->companys[i].subType[2].DevOutConfirmCount = qry.value(8).toUInt();
  2146. webData->companys[i].subType[2].DevAlarmCount = qry.value(9).toUInt();
  2147. webData->companys[i].subType[2].DevAlarmConfirmCount = qry.value(10).toUInt();
  2148. webData->companys[i].subType[6].DevCount = qry.value(11).toUInt();
  2149. webData->companys[i].subType[6].DevOutLineCount = qry.value(12).toUInt();
  2150. webData->companys[i].subType[6].DevOutConfirmCount = qry.value(13).toUInt();
  2151. webData->companys[i].subType[6].DevAlarmCount = qry.value(14).toUInt();
  2152. webData->companys[i].subType[6].DevAlarmConfirmCount = qry.value(15).toUInt();
  2153. webData->companys[i].subType[7].DevCount = qry.value(16).toUInt();
  2154. webData->companys[i].subType[7].DevOutLineCount = qry.value(17).toUInt();
  2155. webData->companys[i].subType[7].DevOutConfirmCount = qry.value(18).toUInt();
  2156. webData->companys[i].subType[7].DevAlarmCount = qry.value(19).toUInt();
  2157. webData->companys[i].subType[7].DevAlarmConfirmCount = qry.value(20).toUInt();
  2158. webData->companys[i].subType[16].DevCount = qry.value(21).toUInt();
  2159. webData->companys[i].subType[16].DevOutLineCount = qry.value(22).toUInt();
  2160. webData->companys[i].subType[16].DevOutConfirmCount = qry.value(23).toUInt();
  2161. webData->companys[i].subType[16].DevAlarmCount = qry.value(24).toUInt();
  2162. webData->companys[i].subType[16].DevAlarmConfirmCount = qry.value(25).toUInt();
  2163. emit appendLog(QString("checkAlarmStatus[company_code:%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15,%16,%17,%18,%19,%20,%21,%22,%23,%24,%25,%26]").arg(company_code).arg(webData->companys[i].subType[1].DevCount).arg(webData->companys[i].subType[1].DevOutLineCount).arg(webData->companys[i].subType[1].DevOutConfirmCount).arg(webData->companys[i].subType[1].DevAlarmCount)
  2164. .arg(webData->companys[i].subType[1].DevAlarmConfirmCount).arg(webData->companys[i].subType[2].DevCount).arg(webData->companys[i].subType[2].DevOutLineCount).arg(webData->companys[i].subType[2].DevOutConfirmCount).arg(webData->companys[i].subType[2].DevAlarmCount)
  2165. .arg(webData->companys[i].subType[2].DevAlarmConfirmCount).arg(webData->companys[i].subType[6].DevCount).arg(webData->companys[i].subType[6].DevOutLineCount).arg(webData->companys[i].subType[6].DevOutConfirmCount).arg(webData->companys[i].subType[6].DevAlarmCount)
  2166. .arg(webData->companys[i].subType[6].DevAlarmConfirmCount).arg(webData->companys[i].subType[7].DevCount).arg(webData->companys[i].subType[7].DevOutLineCount).arg(webData->companys[i].subType[7].DevOutConfirmCount).arg(webData->companys[i].subType[7].DevAlarmCount)
  2167. .arg(webData->companys[i].subType[7].DevAlarmConfirmCount).arg(webData->companys[i].subType[16].DevCount).arg(webData->companys[i].subType[16].DevOutLineCount).arg(webData->companys[i].subType[16].DevOutConfirmCount).arg(webData->companys[i].subType[16].DevAlarmCount)
  2168. .arg(webData->companys[i].subType[16].DevAlarmConfirmCount));
  2169. break;
  2170. }
  2171. }
  2172. }
  2173. {
  2174. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2175. ytShm->updatetime[DB_THREAD] = tmp_time;
  2176. }
  2177. usleep(5000);
  2178. }
  2179. qry.clear();
  2180. }
  2181. void DB_SyncThread::checkDevice()
  2182. {
  2183. printf("checkDevice start\n");
  2184. unsigned int count = 0;
  2185. QSqlQuery qry = mdb.exec("SELECT id, owner_code, company, dwtype, owner_name, unitinfo from sp_owner");
  2186. while(qry.next()){
  2187. if((webData->devices[count].dwType!=(qry.value(3).toUInt()&0xff))
  2188. ||(QString::compare(QString::fromUtf8(webData->devices[count].DevCode),qry.value(1).toString())!=0)
  2189. ||(QString::compare(QString::fromUtf8(webData->devices[count].CompanyCode),qry.value(2).toString())!=0)
  2190. ||(QString::compare(QString::fromUtf8(webData->devices[count].DevName),qry.value(4).toString())!=0)
  2191. ||(QString::compare(QString::fromUtf8(webData->devices[count].DevInfo),qry.value(5).toString())!=0)){
  2192. webData->devices[count].DevIdx = count&0xffffffff;
  2193. sprintf(webData->devices[count].DevCode,"%s",qry.value(1).toString().toUtf8().data());
  2194. sprintf(webData->devices[count].CompanyCode,"%s",qry.value(2).toString().toUtf8().data());
  2195. webData->devices[count].dwType = qry.value(3).toUInt()&0xff;
  2196. sprintf(webData->devices[count].DevName,"%s",qry.value(4).toString().toUtf8().data());
  2197. sprintf(webData->devices[count].DevInfo,"%s",qry.value(5).toString().toUtf8().data());
  2198. webData->devices[count].Enabled = 0x01;
  2199. webData->devices[count].UpdateTime = UpdateTime;
  2200. }
  2201. count++;
  2202. if(count>webData->DevicesCount)
  2203. webData->DevicesCount = count;
  2204. if(count>102399)
  2205. break;
  2206. usleep(5000);
  2207. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2208. ytShm->updatetime[DB_THREAD] = tmp_time;
  2209. }
  2210. qry.clear();
  2211. }
  2212. void DB_SyncThread::checkCompany()
  2213. {
  2214. printf("checkCompany start\n");
  2215. unsigned int count = 0;
  2216. QSqlQuery qry = mdb.exec("select c.owner_id, c.owner_name, c.xmlx, p.username, p.phone, c.building_id, b.build_name, ifnull(concat(b.addr1,'.',b.addr2,'.',b.addr3,'.',b.address),''),ifnull(b.posistion,''),b.address from jdxf.sp_owner_company c, jdxf.sp_building b, ytIoT.ytiot_t_company_phone p where c.building_id=b.id and c.owner_id = p.owner_code");
  2217. while(qry.next()){
  2218. float Lng=0.0,Lat=0.0;
  2219. QString position = qry.value(8).toString();
  2220. if(position.length()>0){
  2221. QStringList pos = position.split(",");
  2222. if(pos.length()>1){
  2223. Lng = pos.at(0).toFloat();
  2224. Lat = pos.at(1).toFloat();
  2225. }
  2226. }
  2227. if(
  2228. (webData->buildings[count].Lng!=Lng)
  2229. ||(webData->buildings[count].Lat!=Lat)
  2230. ||
  2231. (QString::compare(QString::fromUtf8(webData->companys[count].CompanyCode),qry.value(0).toString())!=0)
  2232. ||(QString::compare(QString::fromUtf8(webData->companys[count].CompanyName),qry.value(1).toString())!=0)
  2233. ||(QString::compare(QString::fromUtf8(webData->companys[count].ProjectType),qry.value(2).toString())!=0)
  2234. ||(QString::compare(QString::fromUtf8(webData->companys[count].UserName),qry.value(3).toString())!=0)
  2235. ||(QString::compare(QString::fromUtf8(webData->companys[count].Phone),qry.value(4).toString())!=0)
  2236. ||(QString::compare(QString::fromUtf8(webData->buildings[count].CompanyCode),qry.value(0).toString())!=0)
  2237. ||(QString::compare(QString::fromUtf8(webData->buildings[count].BuildingCode),qry.value(5).toString())!=0)
  2238. ||(QString::compare(QString::fromUtf8(webData->buildings[count].BuildingName),qry.value(6).toString())!=0)
  2239. ||(QString::compare(QString::fromUtf8(webData->buildings[count].FullAddress),qry.value(7).toString())!=0)
  2240. ||(QString::compare(QString::fromUtf8(webData->buildings[count].Address),qry.value(9).toString())!=0)){
  2241. sprintf(webData->companys[count].CompanyCode,"%s",qry.value(0).toString().toUtf8().data());
  2242. sprintf(webData->companys[count].CompanyName,"%s",qry.value(1).toString().toUtf8().data());
  2243. sprintf(webData->companys[count].ProjectType,"%s",qry.value(2).toString().toUtf8().data());
  2244. sprintf(webData->companys[count].UserName,"%s",qry.value(3).toString().toUtf8().data());
  2245. sprintf(webData->companys[count].Phone,"%s",qry.value(4).toString().toUtf8().data());
  2246. sprintf(webData->buildings[count].CompanyCode,"%s",qry.value(0).toString().toUtf8().data());
  2247. sprintf(webData->buildings[count].BuildingCode,"%s",qry.value(5).toString().toUtf8().data());
  2248. sprintf(webData->buildings[count].BuildingName,"%s",qry.value(6).toString().toUtf8().data());
  2249. sprintf(webData->buildings[count].FullAddress,"%s",qry.value(7).toString().toUtf8().data());
  2250. sprintf(webData->buildings[count].Address,"%s",qry.value(9).toString().toUtf8().data());
  2251. webData->buildings[count].Lng = Lng;
  2252. webData->buildings[count].Lat = Lat;
  2253. webData->companys[count].UpdateTime = UpdateTime;
  2254. webData->buildings[count].UpdateTime = UpdateTime;
  2255. }
  2256. printf("CompanyCode:%s\n",qry.value(0).toString().toUtf8().data());
  2257. printf("CompanysCount:%d\n",count);
  2258. count++;
  2259. if(count>webData->BuildingsCount)
  2260. webData->BuildingsCount = count;
  2261. if(count>webData->CompanysCount)
  2262. webData->CompanysCount = count;
  2263. if(count>webData->CompanysAlarmCount)
  2264. webData->CompanysAlarmCount = count;
  2265. if(count>10239)
  2266. break;
  2267. usleep(5000);
  2268. {
  2269. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2270. ytShm->updatetime[DB_THREAD] = tmp_time;
  2271. }
  2272. }
  2273. webData->CompanysCount = count;
  2274. webData->BuildingsCount = count;
  2275. webData->CompanysAlarmCount = count;
  2276. qry.clear();
  2277. }
  2278. void DB_SyncThread::checkUsers()
  2279. {
  2280. printf("checkUsers start\n");
  2281. unsigned int count = 0;
  2282. QSqlQuery qry = mdb.exec("select username, password, truename, status from sp_user order by id");
  2283. while(qry.next()){
  2284. printf("LoginName:%s\n",qry.value(0).toString().toUtf8().data());
  2285. if((webData->users[count].Status!=(qry.value(3).toUInt()&0xff))
  2286. ||(QString::compare(QString::fromUtf8(webData->users[count].LoginName),qry.value(0).toString())!=0)
  2287. ||(QString::compare(QString::fromUtf8(webData->users[count].Password),qry.value(1).toString())!=0)
  2288. ||(QString::compare(QString::fromUtf8(webData->users[count].UserName),qry.value(2).toString())!=0)){
  2289. printf("LoginName123456:%s\n",qry.value(0).toString().toUtf8().data());
  2290. sprintf(webData->users[count].LoginName,"%s",qry.value(0).toString().toUtf8().data());
  2291. sprintf(webData->users[count].Password,"%s",qry.value(1).toString().toUtf8().data());
  2292. sprintf(webData->users[count].UserName,"%s",qry.value(2).toString().toUtf8().data());
  2293. webData->users[count].Status = qry.value(3).toUInt()&0xff;
  2294. webData->users[count].UpdateTime = UpdateTime;
  2295. }
  2296. count++;
  2297. if(count>webData->UsersCount)
  2298. webData->UsersCount = count;
  2299. if(count>10239)
  2300. break;
  2301. usleep(5000);
  2302. {
  2303. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2304. ytShm->updatetime[DB_THREAD] = tmp_time;
  2305. }
  2306. }
  2307. qry.clear();
  2308. count = 0;
  2309. qry = mdb.exec("select agentid, owner_code from sp_owner_weibao order by id");
  2310. while(qry.next()){
  2311. if((QString::compare(QString::fromUtf8(webData->userCompanys[count].Loginname),qry.value(0).toString())!=0)
  2312. ||(QString::compare(QString::fromUtf8(webData->userCompanys[count].CompanyCode),qry.value(1).toString())!=0)){
  2313. sprintf(webData->userCompanys[count].Loginname,"%s",qry.value(0).toString().toUtf8().data());
  2314. sprintf(webData->userCompanys[count].CompanyCode,"%s",qry.value(1).toString().toUtf8().data());
  2315. webData->userCompanys[count].UpdateTime = UpdateTime;
  2316. }
  2317. count++;
  2318. if(count>webData->UserCompanyCount)
  2319. webData->UserCompanyCount = count;
  2320. if(count>20479)
  2321. break;
  2322. usleep(5000);
  2323. {
  2324. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2325. ytShm->updatetime[DB_THREAD] = tmp_time;
  2326. }
  2327. }
  2328. qry.clear();
  2329. }
  2330. void DB_SyncThread::run()
  2331. {
  2332. printf("DB_SyncThread start\n");
  2333. webShmInit();
  2334. times = 0;
  2335. while(1)
  2336. {
  2337. time_t tmp_time = time(static_cast<time_t *>(nullptr));
  2338. ytShm->updatetime[DB_THREAD] = tmp_time;
  2339. time_out();
  2340. sleep(5);
  2341. }
  2342. }