subreportthread.cpp 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "subreportthread.h"
  2. SubReportThread::SubReportThread(qintptr socketDescriptor, QObject *parent)
  3. : QThread(parent)
  4. {
  5. this->SocketDescriptor = socketDescriptor;
  6. }
  7. void SubReportThread::run()
  8. {
  9. QTcpSocket *so = new QTcpSocket;
  10. if(!so->setSocketDescriptor(this->SocketDescriptor))
  11. {
  12. so->abort();
  13. return;
  14. }
  15. if(so->waitForReadyRead()){
  16. QByteArray Cmd = so->readAll();
  17. QStringList Dat = QString(Cmd).split("\r\n");
  18. QByteArray cmd;
  19. bool found = false;
  20. for(int i=0;i<Dat.length();i++){
  21. if(Dat.at(i).indexOf("{")>=0)
  22. found = true;
  23. if(found)
  24. cmd.append(Dat.at(i).trimmed().toUtf8());
  25. }
  26. QJsonParseError json_error;
  27. QJsonDocument jsonDoc(QJsonDocument::fromJson(cmd,&json_error));
  28. if(json_error.error==QJsonParseError::NoError){
  29. QJsonObject root = jsonDoc.object();
  30. quint16 type = 0;
  31. QString deviceId = "", companyCode="", evt_name="", evt="",alarm_time="";
  32. quint64 insertId = 0;
  33. int flag = -1;
  34. bool ret = false;
  35. if((!root.value("SubType").isUndefined())&&(!root.value("SubType").isNull())){
  36. if(root.value("SubType").isString())
  37. type = root.value("SubType").toString().toInt()&0xffff;
  38. else
  39. type = root.value("SubType").toInt()&0xffff;
  40. }
  41. if((!root.value("DeviceId").isUndefined())&&(!root.value("DeviceId").isNull())){
  42. if(root.value("DeviceId").isString())
  43. deviceId = root.value("DeviceId").toString();
  44. else
  45. deviceId = QString("%1").arg(root.value("DeviceId").toInt());
  46. }
  47. if((!root.value("InsertId").isUndefined())&&(!root.value("InsertId").isNull())){
  48. if(root.value("InsertId").isString())
  49. insertId = root.value("InsertId").toString().toULongLong()&0xffffffffffffffff;
  50. else
  51. insertId = root.value("InsertId").toVariant().toULongLong()&0xffffffffffffffff;
  52. }
  53. if((!root.value("Confirmed").isUndefined())&&(!root.value("Confirm").isNull())){
  54. if(root.value("Confirmed").isString())
  55. flag = root.value("Confirmed").toString().toInt();
  56. else
  57. flag = root.value("Confirmed").toInt();
  58. }
  59. if((!root.value("CompanyCode").isUndefined())&&(!root.value("CompanyCode").isNull())){
  60. if(root.value("DeviceId").isString())
  61. companyCode = root.value("CompanyCode").toString();
  62. else
  63. companyCode = QString("%1").arg(root.value("CompanyCode").toInt());
  64. }
  65. if((!root.value("evt_name").isUndefined())&&(!root.value("etv_name").isNull())){
  66. if(root.value("evt_name").isString())
  67. evt_name = root.value("evt_name").toString();
  68. }
  69. if((!root.value("evt").isUndefined())&&(!root.value("evt").isNull())){
  70. if(root.value("evt").isString())
  71. evt = root.value("evt").toString();
  72. }
  73. if((!root.value("alarm_time").isUndefined())&&(!root.value("alarm_time").isNull())){
  74. if(root.value("alarm_time").isString())
  75. alarm_time = root.value("alarm_time").toString();
  76. }
  77. if(flag==0)
  78. flag = 2;
  79. if((type>0)&&(insertId>0)&&(flag>0)&&(flag<4)){
  80. ret = true;
  81. emit getSubReport(type,deviceId,insertId,flag,companyCode,evt_name,evt,alarm_time);
  82. }
  83. QString Ret = QString("HTTP/1.1 200 OK\r\nAccess-Control-Allow-Origin: *\r\nContent-type: text/plain\r\n\r\n{\"query\":{\"SubType\":%1,\"DeviceId\":\"%2\",\"InsertId\":%3,\"Confirmed\":%4,\"CompanyCode\":\"%5\",\"evt_name\":\"%6\",\"evt\":\"%7\",\"alarm_time\":\"%8\"},\"result\":%9}")
  84. .arg(type).arg(deviceId).arg(insertId).arg(flag).arg(companyCode).arg(evt_name).arg(evt).arg(alarm_time).arg(ret?1:0);
  85. so->write(Ret.toUtf8().data());
  86. so->waitForBytesWritten();
  87. so->close();
  88. }
  89. }
  90. so->close();
  91. }