#include "wsclient.h" #include "ytservicecore.h" #include WSClient::WSClient(QWebSocket *so, QObject *parent) : QObject(parent) { CompanyCodeList.clear(); CompanyIdxList.clear(); m_client = so; connect(m_client, &QWebSocket::textMessageReceived, this, &WSClient::processTextMessage); connect(m_client, &QWebSocket::disconnected, this, &WSClient::socketDisconnected); } WSClient::~WSClient() { CompanyCodeList.clear(); CompanyIdxList.clear(); m_client->abort(); m_client->deleteLater(); emit closed(); } void WSClient::socketDisconnected() { CompanyCodeList.clear(); CompanyIdxList.clear(); m_client->abort(); m_client->deleteLater(); emit closed(); } void WSClient::chkLastNote(QString company_code) { for(int i=0;iCompanysCount){ for(quint8 dwIdx=1;dwIdx<6;dwIdx++){ QJsonObject alarm; if(webData->LastAlarmRec[idx][0].alarmRec[dwIdx].ShowFlag==0x01){ alarm.insert("company_code",QJsonValue(webData->companys[idx].CompanyCode)); alarm.insert("company_name",QJsonValue(webData->companys[idx].CompanyName)); alarm.insert("dwtype",QJsonValue(QString("%1").arg(webData->LastAlarmRec[idx][0].alarmRec[dwIdx].dwType))); alarm.insert("data",QJsonValue(webData->LastAlarmRec[idx][0].alarmRec[dwIdx].Data)); alarm.insert("name",QJsonValue(webData->LastAlarmRec[idx][0].alarmRec[dwIdx].DevName)); alarm.insert("time",QJsonValue(webData->LastAlarmRec[idx][0].alarmRec[dwIdx].Time)); }else{ alarm.insert("company_name",QJsonValue("")); alarm.insert("dwtype",QJsonValue(QString("%1").arg(dwIdx==1?1:(dwIdx==2?2:(dwIdx==3?6:(dwIdx==4?7:16)))))); alarm.insert("data",QJsonValue("")); alarm.insert("name",QJsonValue("")); alarm.insert("time",QJsonValue("")); } list.append(alarm); } } return list; } void WSClient::chkCompanyAlarmList(QString loginname, QString company_code) { QJsonDocument jdoc; QJsonObject root; root.insert("action",QJsonValue("getAlarmList")); root.insert("check",QJsonValue("true")); root.insert("update",QJsonValue(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); QJsonArray alarmList; if(QString::compare(loginname,QString("admin"))==0){ for(unsigned int i=0;iCompanysCount;i++){ if(QString::compare(company_code,QString(webData->companys[i].CompanyCode))==0){ alarmList = getAlarmListByCompanyIdx(i); break; } } }else{ for(unsigned int i=0;iUserCompanyCount;i++){ if((QString::compare(loginname,QString(webData->userCompanys[i].Loginname))==0) &&(QString::compare(company_code,QString(webData->userCompanys[i].CompanyCode))==0)){ for(unsigned int j=0;jCompanysCount;j++){ if(QString::compare(company_code,QString(webData->companys[j].CompanyCode))==0){ alarmList = getAlarmListByCompanyIdx(j); break; } } break; } } } root.insert("ALARM",alarmList); jdoc.setObject(root); m_client->sendTextMessage(QString(jdoc.toJson())); } void WSClient::sendLastStatus() { QJsonDocument jdoc; QJsonObject root; QJsonArray alarmList,companyList; QString alarmCompanyName, alarmData, alarmDwtype, alarmTime, alarmName, alarmCompanyCode; uint time_T; root.insert("action",QJsonValue("getFrontpageQuery")); root.insert("check",QJsonValue("true")); root.insert("ServerName",QJsonValue("www.jd-ioe.com/UskyIoT")); root.insert("update",QJsonValue(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))); if((CompanyCodeList.length()>0)&&(CompanyIdxList.length()==CompanyCodeList.length())){ for(quint8 dwIdx=1;dwIdx<6;dwIdx++){ if(webData->LastAlarmRec[CompanyIdxList.at(0)][0].alarmRec[dwIdx].ShowFlag==0x01){ alarmCompanyCode = CompanyCodeList.at(0); alarmName = QString::fromUtf8(webData->LastAlarmRec[CompanyIdxList.at(0)][0].alarmRec[dwIdx].DevName); alarmCompanyName = QString::fromUtf8(webData->companys[CompanyIdxList.at(0)].CompanyName); alarmData = QString::fromUtf8(webData->LastAlarmRec[CompanyIdxList.at(0)][0].alarmRec[dwIdx].Data); alarmDwtype = QString("%1").arg(webData->LastAlarmRec[CompanyIdxList.at(0)][0].alarmRec[dwIdx].dwType); alarmTime = QString::fromUtf8(webData->LastAlarmRec[CompanyIdxList.at(0)][0].alarmRec[dwIdx].Time); time_T = webData->LastAlarmRec[CompanyIdxList.at(0)][0].alarmRec[dwIdx].Time_T; }else{ alarmData=""; time_T = 0; } for(int i=1;iLastAlarmRec[CompanyIdxList.at(i)][0].alarmRec[dwIdx].ShowFlag==0x01) &&(webData->LastAlarmRec[CompanyIdxList.at(i)][0].alarmRec[dwIdx].Time_T>time_T)){ alarmCompanyCode = CompanyCodeList.at(i); alarmCompanyName = QString::fromUtf8(webData->companys[CompanyIdxList.at(i)].CompanyName); alarmName = QString::fromUtf8(webData->LastAlarmRec[CompanyIdxList.at(i)][0].alarmRec[dwIdx].DevName); alarmData = QString::fromUtf8(webData->LastAlarmRec[CompanyIdxList.at(i)][0].alarmRec[dwIdx].Data); alarmDwtype = QString("%1").arg(webData->LastAlarmRec[CompanyIdxList.at(i)][0].alarmRec[dwIdx].dwType); alarmTime = QString::fromUtf8(webData->LastAlarmRec[CompanyIdxList.at(i)][0].alarmRec[dwIdx].Time); time_T = webData->LastAlarmRec[CompanyIdxList.at(i)][0].alarmRec[dwIdx].Time_T; } } if(alarmData.length()>0){ QJsonObject alarm; alarm.insert("company_code",QJsonValue(alarmCompanyCode)); alarm.insert("company_name",QJsonValue(alarmCompanyName)); alarm.insert("dwtype",QJsonValue(alarmDwtype)); alarm.insert("data",QJsonValue(alarmData)); alarm.insert("name",QJsonValue(alarmName)); alarm.insert("time",QJsonValue(alarmTime)); alarmList.append(alarm); } } for(int i=0;iBuildingsCount;j++){ if(QString::compare(CompanyCodeList.at(i),QString(webData->buildings[j].CompanyCode))==0){ company.insert("address",QJsonValue(QString::fromUtf8(webData->buildings[j].Address))); company.insert("building_name",QJsonValue(QString::fromUtf8(webData->buildings[j].BuildingName))); company.insert("fulladdress",QJsonValue(QString::fromUtf8(webData->buildings[j].FullAddress))); company.insert("lat",QJsonValue(static_cast(webData->buildings[j].Lat))); company.insert("lng",QJsonValue(static_cast(webData->buildings[j].Lng))); break; } } company.insert("company_code",QJsonValue(CompanyCodeList.at(i))); company.insert("company_name",QJsonValue(QString::fromUtf8(webData->companys[CompanyIdxList.at(i)].CompanyName))); company.insert("username",QJsonValue(QString::fromUtf8(webData->companys[CompanyIdxList.at(i)].UserName))); company.insert("phone",QJsonValue(QString::fromUtf8(webData->companys[CompanyIdxList.at(i)].Phone))); company.insert("d0",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[0].DevCount))); company.insert("d0a",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[0].DevAlarmCount))); company.insert("d0ac",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[0].DevAlarmConfirmCount))); company.insert("d0o",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[0].DevOutLineCount))); company.insert("d0oc",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[0].DevOutConfirmCount))); company.insert("d1",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[1].DevCount))); company.insert("d1a",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[1].DevAlarmCount))); company.insert("d1ac",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[1].DevAlarmConfirmCount))); company.insert("d1o",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[1].DevOutLineCount))); company.insert("d1oc",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[1].DevOutConfirmCount))); company.insert("d2",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[2].DevCount))); company.insert("d2a",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[2].DevAlarmCount))); company.insert("d2ac",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[2].DevAlarmConfirmCount))); company.insert("d2o",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[2].DevOutLineCount))); company.insert("d2oc",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[2].DevOutConfirmCount))); company.insert("d6",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[6].DevCount))); company.insert("d6a",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[6].DevAlarmCount))); company.insert("d6ac",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[6].DevAlarmConfirmCount))); company.insert("d6o",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[6].DevOutLineCount))); company.insert("d6oc",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[6].DevOutConfirmCount))); company.insert("d7",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[7].DevCount))); company.insert("d7a",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[7].DevAlarmCount))); company.insert("d7ac",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[7].DevAlarmConfirmCount))); company.insert("d7o",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[7].DevOutLineCount))); company.insert("d7oc",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[7].DevOutConfirmCount))); company.insert("d16",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[16].DevCount))); company.insert("d16a",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[16].DevAlarmCount))); company.insert("d16ac",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[16].DevAlarmConfirmCount))); company.insert("d16o",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[16].DevOutLineCount))); company.insert("d16oc",QJsonValue(static_cast(webData->companys[CompanyIdxList.at(i)].subType[16].DevOutConfirmCount))); companyList.append(company); } } root.insert("ALARM",alarmList); root.insert("LIST",companyList); root.insert("company_count",QJsonValue(CompanyIdxList.length())); jdoc.setObject(root); m_client->sendTextMessage(QString(jdoc.toJson())); } void WSClient::processTextMessage(QString message) { QJsonParseError json_error; QJsonDocument jsonDoc(QJsonDocument::fromJson(message.toUtf8(),&json_error)); if(json_error.error==QJsonParseError::NoError){ QJsonObject jquery = jsonDoc.object(); QString V_LOGINNAME = jquery.value("V_LOGINNAME").isString()?jquery.value("V_LOGINNAME").toString():""; QString V_PASSWORD = jquery.value("V_PASSWORD").isString()?jquery.value("V_PASSWORD").toString():""; QString V_COMMAND = jquery.value("V_COMMAND").isString()?jquery.value("V_COMMAND").toString():""; QString V_COMPANYID = jquery.value("V_COMPANYID").isString()?jquery.value("V_COMPANYID").toString():""; if((V_LOGINNAME.length()>0)&&(V_PASSWORD.length()>0)){ QString pass_md5 = QString(QCryptographicHash::hash(QCryptographicHash::hash(V_PASSWORD.toUtf8(),QCryptographicHash::Md5).toHex(),QCryptographicHash::Md5).toHex()); for(unsigned int i=0;iUsersCount;i++){ if((QString::compare(V_LOGINNAME,QString(webData->users[i].LoginName))==0) &&(QString::compare(pass_md5,QString(webData->users[i].Password))==0)){ if(webData->users[i].Status==0x01){ if(QString::compare(V_COMMAND,QString("FRONTPAGE"))==0){ chkCompanyCodeList(V_LOGINNAME); if((CompanyCodeList.length()>0)&&(CompanyIdxList.length()==CompanyCodeList.length())){ sendLastStatus(); } }else if((QString::compare(V_COMMAND,QString("getAlarmList"))==0) &&(V_COMPANYID.length()>0)){ chkCompanyAlarmList(V_LOGINNAME, V_COMPANYID); } } } } } } } void WSClient::chkCompanyCodeList(QString loginname) { if(QString::compare(loginname,QString("admin"))==0){ for(unsigned int i=0;iCompanysCount;i++){ CompanyCodeList.append(QString(webData->companys[i].CompanyCode)); CompanyIdxList.append(i); } }else{ for(unsigned int i=0;iUserCompanyCount;i++){ if(QString::compare(loginname,QString(webData->userCompanys[i].Loginname))==0){ QString cCode = QString(webData->userCompanys[i].CompanyCode); CompanyCodeList.append(cCode); for(unsigned int j=0;jCompanysCount;j++){ if(QString::compare(cCode,QString(webData->companys[j].CompanyCode))==0){ CompanyIdxList.append(j); break; } } } } } }