NettyHttpCarDevData.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. /*
  2. * @Description:
  3. * @Version: 1.0
  4. * @Autor: lishengyin
  5. * @Date: 2021-11-08 16:45:31
  6. * @LastEditors: lishengyin
  7. * @LastEditTime: 2021-11-16 14:52:45
  8. */
  9. #pragma once
  10. #include <iostream>
  11. #include <rapidjson/document.h>
  12. #include <rapidjson/rapidjson.h>
  13. #include <rapidjson/stringbuffer.h>
  14. #include <rapidjson/writer.h>
  15. #include <vector>
  16. #include "NettyHttpTrainInfo.h"
  17. using namespace std;
  18. class CarDevData
  19. {
  20. public:
  21. std::string addTime;
  22. std::string updateTime;
  23. int createBy;
  24. int updateBy;
  25. int enableFlag;
  26. std::string attr1;
  27. std::string attr2;
  28. std::string attr3;
  29. int appId;
  30. int dvId;
  31. std::string parentDvId;
  32. std::string linkDvId;
  33. int carId;
  34. int carriageId;
  35. int deviceType;
  36. int deviceSubType;
  37. int deviceControlType;
  38. int deviceSource;
  39. std::string deviceUuid;
  40. std::string deviceNum;
  41. std::string birdDeviceCode;
  42. std::string deviceName;
  43. std::string deviceUserName;
  44. std::string devicePassWord;
  45. std::string localIp;
  46. int port;
  47. std::string deviceMac;
  48. std::string stream;
  49. std::string place;
  50. std::string longitude;
  51. std::string latitude;
  52. std::string coX;
  53. std::string coY;
  54. std::string coZ;
  55. std::string uploadId;
  56. std::string imgUrl;
  57. std::string remark;
  58. std::string orderNo;
  59. public:
  60. CarDevData() {}
  61. ~CarDevData() {}
  62. bool jsonToObject(const rapidjson::Value& object){
  63. const auto end = object.MemberEnd();
  64. if(end == object.FindMember("addTime") || !object["addTime"].IsString()){
  65. return false;
  66. }else{
  67. addTime = object["addTime"].GetString();
  68. }
  69. if(end == object.FindMember("updateTime") || !object["updateTime"].IsString()){
  70. return false;
  71. }else{
  72. updateTime = object["updateTime"].GetString();
  73. }
  74. if(end == object.FindMember("createBy") || !object["createBy"].IsInt()){
  75. return false;
  76. }else{
  77. createBy = object["createBy"].GetInt();
  78. }
  79. if(end == object.FindMember("updateBy") || !object["updateBy"].IsInt()){
  80. return false;
  81. }else{
  82. updateBy = object["updateBy"].GetInt();
  83. }
  84. if(end == object.FindMember("enableFlag") || !object["enableFlag"].IsInt()){
  85. return false;
  86. }else{
  87. enableFlag = object["enableFlag"].GetInt();
  88. }
  89. if(end == object.FindMember("appId") || !object["appId"].IsInt()){
  90. return false;
  91. }else{
  92. appId = object["appId"].GetInt();
  93. }
  94. if(end == object.FindMember("dvId") || !object["dvId"].IsInt()){
  95. return false;
  96. }else{
  97. dvId = object["dvId"].GetInt();
  98. }
  99. if(end == object.FindMember("carId") || !object["carId"].IsInt()){
  100. return false;
  101. }else{
  102. carId = object["carId"].GetInt();
  103. }
  104. if(end == object.FindMember("carriageId") || !object["carriageId"].IsInt()){
  105. return false;
  106. }else{
  107. carriageId = object["carriageId"].GetInt();
  108. }
  109. if(end == object.FindMember("deviceType") || !object["deviceType"].IsInt()){
  110. return false;
  111. }else{
  112. deviceType = object["deviceType"].GetInt();
  113. }
  114. if(end == object.FindMember("deviceSubType") || !object["deviceSubType"].IsInt()){
  115. return false;
  116. }else{
  117. deviceSubType = object["deviceSubType"].GetInt();
  118. }
  119. // --
  120. // if(end == object.FindMember("deviceControlType") || !object["deviceControlType"].IsInt()){
  121. // return false;
  122. // }else{
  123. // deviceControlType = object["deviceControlType"].GetInt();
  124. // }
  125. // if(end == object.FindMember("deviceSource") || !object["deviceSource"].IsInt()){
  126. // return false;
  127. // }else{
  128. // deviceSource = object["deviceSource"].GetInt();
  129. // }
  130. // --
  131. if(end == object.FindMember("deviceUuid")){
  132. return false;
  133. }else{
  134. if(object["deviceUuid"].IsString())
  135. deviceUuid = object["deviceUuid"].GetString();
  136. }
  137. if(end == object.FindMember("deviceNum")){
  138. return false;
  139. }else{
  140. if(object["deviceNum"].IsString())
  141. deviceNum = object["deviceNum"].GetString();
  142. }
  143. if(end == object.FindMember("birdDeviceCode") ){
  144. return false;
  145. }else{
  146. if(object["birdDeviceCode"].IsString())
  147. birdDeviceCode = object["birdDeviceCode"].GetString();
  148. }
  149. if(end == object.FindMember("deviceName")){
  150. return false;
  151. }else{
  152. if(object["deviceName"].IsString())
  153. deviceName = object["deviceName"].GetString();
  154. }
  155. if(end == object.FindMember("deviceUserName")){
  156. return false;
  157. }else{
  158. if(object["deviceUserName"].IsString())
  159. deviceUserName = object["deviceUserName"].GetString();
  160. }
  161. if(end == object.FindMember("devicePassWord")){
  162. return false;
  163. }else{
  164. if(object["devicePassWord"].IsString())
  165. devicePassWord = object["devicePassWord"].GetString();
  166. }
  167. if(end == object.FindMember("localIp")){
  168. return false;
  169. }else{
  170. if(object["localIp"].IsString())
  171. localIp = object["localIp"].GetString();
  172. }
  173. if(end == object.FindMember("port")){
  174. return false;
  175. }else{
  176. if(object["port"].IsInt())
  177. port = object["port"].GetInt();
  178. }
  179. if(end == object.FindMember("stream") || !object["stream"].IsString()){
  180. return false;
  181. }else{
  182. stream = object["stream"].GetString();
  183. }
  184. if(end == object.FindMember("coX") || !object["coX"].IsString()){
  185. return false;
  186. }else{
  187. coX = object["coX"].GetString();
  188. }
  189. if(end == object.FindMember("coY") || !object["coY"].IsString()){
  190. return false;
  191. }else{
  192. coY = object["coY"].GetString();
  193. }
  194. if(end == object.FindMember("coZ") || !object["coZ"].IsString()){
  195. return false;
  196. }else{
  197. coZ = object["coZ"].GetString();
  198. }
  199. return true;
  200. }
  201. };
  202. class CarBasicData
  203. {
  204. public:
  205. std::string id;
  206. std::string pid;
  207. std::string label;
  208. CarDevData attr;
  209. int attr1;
  210. std::string child;
  211. std::string children;
  212. public:
  213. CarBasicData() {}
  214. ~CarBasicData() {}
  215. bool jsonToObject(const rapidjson::Value& object){
  216. const auto end = object.MemberEnd();
  217. if(end == object.FindMember("id") || !object["id"].IsString()){
  218. return false;
  219. }else{
  220. id = object["id"].GetString();
  221. }
  222. if(end == object.FindMember("pid") || !object["pid"].IsString()){
  223. return false;
  224. }else{
  225. pid = object["pid"].GetString();
  226. }
  227. if(end == object.FindMember("label") || !object["label"].IsString()){
  228. return false;
  229. }else{
  230. label = object["label"].GetString();
  231. }
  232. if(end == object.FindMember("attr") || !object["attr"].IsObject()){
  233. return false;
  234. }else{
  235. const rapidjson::Value& obj = object["attr"];
  236. if(!attr.jsonToObject(obj)){
  237. return false;
  238. }
  239. }
  240. if(end == object.FindMember("attr1") || !object["attr1"].IsInt()){
  241. return false;
  242. }else{
  243. attr1 = object["attr1"].GetInt();
  244. }
  245. return true;
  246. }
  247. };
  248. class NettyHttpCarDevData
  249. {
  250. public:
  251. std::string id;
  252. std::string pid;
  253. std::string label;
  254. NettyHttpTrainInfo attr;
  255. std::string attr1;
  256. std::string child;
  257. vector<CarBasicData> children;
  258. public:
  259. NettyHttpCarDevData() {}
  260. ~NettyHttpCarDevData() {}
  261. bool jsonToObject(const rapidjson::Value& object){
  262. const auto end = object.MemberEnd();
  263. if(end == object.FindMember("id") || !object["id"].IsString()){
  264. return false;
  265. }else{
  266. id = object["id"].GetString();
  267. }
  268. if(end == object.FindMember("pid") || !object["pid"].IsString()){
  269. return false;
  270. }else{
  271. pid = object["pid"].GetString();
  272. }
  273. if(end == object.FindMember("label") || !object["label"].IsString()){
  274. return false;
  275. }else{
  276. label = object["label"].GetString();
  277. }
  278. if(end == object.FindMember("attr") || !object["attr"].IsObject()){
  279. return false;
  280. }else{
  281. const rapidjson::Value& obj = object["attr"];
  282. if(!attr.jsonToObject(obj)){
  283. return false;
  284. }
  285. }
  286. if(end == object.FindMember("children")){
  287. return false;
  288. }else if(object["children"].IsArray()){
  289. const rapidjson::Value& objs = object["children"];
  290. for (size_t i = 0; i < objs.Size(); i++) {
  291. const rapidjson::Value& obj = objs[i];
  292. CarBasicData carBasicData;
  293. if(!carBasicData.jsonToObject(obj)){
  294. cout << "CarBasicData解析失败" << endl;
  295. return false;
  296. }
  297. children.push_back(carBasicData);
  298. }
  299. }
  300. return true;
  301. }
  302. };