123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- #include "databasethread.h"
- #include "ytdhcam.h"
- #define HostName "47.98.201.187"
- #define HostPort 3306
- #define UserName "root"
- #define PassWord "Yt2018IoT"
- #define DatabaseName "jdxf"
- DatabaseThread::DatabaseThread(QObject *parent) :
- QThread(parent)
- {
- hour = 255;
- sqlList.clear();
- alarmRepList.clear();
- db = QSqlDatabase::addDatabase("QMYSQL","video_db");
- db.setHostName(QString(HostName));
- db.setPort(HostPort);
- db.setUserName(QString(UserName));
- db.setPassword(QString(PassWord));
- db.setDatabaseName(QString(DatabaseName));
- db.open();
- check_devicelist();
- }
- void DatabaseThread::appendSql(QString sql)
- {
- sqlList.append(sql);
- }
- void DatabaseThread::appendAlarm(AlarmRep rep)
- {
- alarmRepList.append(rep);
- }
- void DatabaseThread::check_devicelist()
- {
- QSqlQuery qry = db.exec("select owner_code, owner_name, unitinfo, owner_xh, company, push_param1, push_param2, push_param3, push_param4, login_param from sp_owner where dwtype=16");
- int nrow= 0;
- while(qry.next()){
- sysConfShm->deviceInfo[nrow].Enabled=0x01;
- sprintf(sysConfShm->deviceInfo[nrow].Device_Code,"%s",qry.value(0).toString().toUtf8().data());
- sprintf(sysConfShm->deviceInfo[nrow].Device_Name,"%s",qry.value(1).toString().toUtf8().data());
- sprintf(sysConfShm->deviceInfo[nrow].Device_Info,"%s",qry.value(2).toString().toUtf8().data());
- sprintf(sysConfShm->deviceInfo[nrow].Device_Type,"%s",qry.value(3).toString().toUtf8().data());
- sprintf(sysConfShm->deviceInfo[nrow].Company_Code,"%s",qry.value(4).toString().toUtf8().data());
- sysConfShm->deviceInfo[nrow].Push_Param[0]=qry.value(5).toUInt();
- sysConfShm->deviceInfo[nrow].Push_Param[1]=qry.value(6).toUInt();
- sysConfShm->deviceInfo[nrow].Push_Param[2]=qry.value(7).toUInt();
- sysConfShm->deviceInfo[nrow].Push_Param[3]=qry.value(8).toUInt();
- sysConfShm->deviceInfo[nrow].RegistStatus = 0x00;
- sysConfShm->deviceInfo[nrow].LoginStatus = 0x00;
- sysConfShm->deviceInfo[nrow].LoginHandle = 0;
- QJsonParseError err;
- QJsonDocument jDoc = QJsonDocument::fromJson(qry.value(9).toString().toUtf8(),&err);
- if(err.error==QJsonParseError::NoError){
- QJsonObject jRoot = jDoc.object();
- if((!jRoot.value("loginname").isUndefined())&&(!jRoot.value("loginname").isNull())){
- sprintf(sysConfShm->deviceInfo[nrow].LoginName,"%s",jRoot.value("loginname").toString().toUtf8().data());
- }
- if((!jRoot.value("password").isUndefined())&&(!jRoot.value("password").isNull())){
- sprintf(sysConfShm->deviceInfo[nrow].Password,"%s",jRoot.value("password").toString().toUtf8().data());
- }
- }else{
- }
- nrow++;
- }
- for(int i=nrow;i<102400;i++)
- sysConfShm->deviceInfo[i].Enabled=0x00;
- qry.clear();
- nrow = 1;
- qry = db.exec("select id,owner_id from sp_owner_company order by id");
- while(qry.next()){
- if(nrow<10240){
- sysConfShm->companyInfo[nrow].Idx = qry.value(0).toULongLong()&0xffffffff;
- sysConfShm->companyInfo[nrow].ParentId = 0;
- sysConfShm->companyInfo[nrow].Enabled = 0x01;
- sprintf(sysConfShm->companyInfo[nrow].CompanyCode,"%d",qry.value(1).toUInt());
- nrow++;
- }else
- break;
- }
- qry.clear();
- nrow = 1;
- qry = db.exec("select id, owner_code, phone, data2 from sp_owner_phone order by id");
- while(qry.next()){
- if(nrow<102400){
- char *phone = qry.value(2).toString().toUtf8().data();
- unsigned long len = strlen(phone);
- sysConfShm->userInfo[nrow].Idx = qry.value(0).toULongLong()&0xffffffff;
- sysConfShm->userInfo[nrow].Enabled = 0x01;
- sprintf(sysConfShm->userInfo[nrow].CompanyCode,"%d",qry.value(1).toUInt());
- for(unsigned long i=0;i<20;i++){
- sysConfShm->userInfo[nrow].CellPhone[i] = 0x00;
- if(i<len)
- sysConfShm->userInfo[nrow].CellPhone[i] = phone[i];
- }
- QString data2 = qry.value(3).toString();
- if(data2.length()>0){
- QStringList ds = data2.split(",");
- quint64 p = 0x0000000000000000;
- for(int i=0;i<ds.length();i++){
- p |= ((0x0000000000000001)<<(ds.at(i).toUInt()&0x3f));
- }
- sysConfShm->userInfo[nrow].InfoChecked = p;
- }else
- sysConfShm->userInfo[nrow].InfoChecked=0;
- nrow++;
- }else
- break;
- }
- hour=QTime::currentTime().hour();
- }
- void DatabaseThread::run()
- {
- while(1){
- if(!db.isOpen()){
- db.open();
- }else{
- if(QTime::currentTime().hour()!=hour){
- hour=QTime::currentTime().hour();
- check_devicelist();
- }
- if(sqlList.length()>0){
- while(sqlList.length()>0){
- db.exec(sqlList.first());
- sqlList.removeFirst();
- usleep(1000);
- }
- }
- if(alarmRepList.length()>0){
- while(alarmRepList.length()>0){
- AlarmRep rep = alarmRepList.first();
- QSqlQuery qry = db.exec(rep.Sql);
- quint64 lastid = qry.lastInsertId().toULongLong()&0xffffffffffffffff;
- QString companyCode="";
- QString phoneList="";
- for(int i=0;i<102400;i++){
- if(sysConfShm->deviceInfo[i].Enabled==0x01){
- if(QString::compare(rep.DeviceId,QString(sysConfShm->deviceInfo[i].Device_Code))==0){
- companyCode = QString(sysConfShm->deviceInfo[i].Company_Code);
- break;
- }
- }
- }
- if(companyCode.length()>0){
- for(int i=0;i<102400;i++){
- if(sysConfShm->userInfo[i].Enabled==0x01){
- if(QString::compare(companyCode,QString(sysConfShm->userInfo[i].CompanyCode))==0){
- if(phoneList.length()==0)
- phoneList = QString(sysConfShm->userInfo[i].CellPhone);
- else
- phoneList.append(QString(",%1").arg(sysConfShm->userInfo[i].CellPhone));
- }
- }
- }
- }
- if((lastid>0)&&(companyCode.length()>0)){
- emit AlarmReport(rep.DeviceId,lastid,rep.AlarmType,rep.AlarmTime,companyCode,phoneList);
- }
- alarmRepList.removeFirst();
- usleep(1000);
- }
- }
- }
- usleep(50000);
- }
- }
|