oaminstallparam.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. #include "oaminstallparam.h"
  2. #include "ui_oaminstallparam.h"
  3. #include "includes.h"
  4. #include "maindlg.h"
  5. OamInstallParam::OamInstallParam(QWidget *parent)
  6. : QDialog(parent)
  7. , ui(new Ui::OamInstallParam)
  8. {
  9. ui->setupUi(this);
  10. m_pMainDlg = static_cast<MainDlg*>(parent);//保存上级窗口指针
  11. init();
  12. }
  13. OamInstallParam::~OamInstallParam()
  14. {
  15. delete ui;
  16. }
  17. void OamInstallParam::init(){
  18. m_dwDeviceType = m_pMainDlg->getDeviceType();
  19. initUi();
  20. configSignalSlot();
  21. }
  22. //初始化UI
  23. void OamInstallParam::initUi(){
  24. QString strText = "";
  25. //大楼编号1-100
  26. ui->comboBoxBuildID->addItem("请选择", 0);
  27. for(quint8 i = 1; i < 101; i++){
  28. strText = QString::number(i) + "号楼";
  29. ui->comboBoxBuildID->addItem(strText, i);
  30. }
  31. ui->comboBoxBuildID->setCurrentIndex(0);
  32. //楼层编号-30 - 300
  33. for(qint16 i = -30; i < 301; i++){
  34. if(i < 0){
  35. strText = "负" + QString::number(abs(i)) + "层";
  36. }else if(i == 0){
  37. strText = "请选择";
  38. }else{
  39. strText = QString::number(i) + "层";
  40. }
  41. ui->comboBoxLayerId->addItem(strText, i);
  42. }
  43. ui->comboBoxLayerId->setCurrentIndex(30);
  44. //楼层分区ID
  45. ui->comboBoxLayerBlockId->addItem("请选择", 0);
  46. for(quint8 i = 1; i <101; i++){
  47. strText = QString::number(i) + "号分区";
  48. ui->comboBoxLayerBlockId->addItem(strText, i);
  49. }
  50. ui->comboBoxLayerBlockId->setCurrentIndex(0);
  51. updateUi();
  52. }
  53. //更新UI
  54. void OamInstallParam::updateUi(){
  55. m_dwDeviceType = m_pMainDlg->getDeviceType();
  56. //声波基站
  57. if(m_dwDeviceType == 0){
  58. ui->checkBoxLayerBlockId->setDisabled(false);
  59. ui->checkBoxLayerBlockDesc->setDisabled(false);
  60. ui->checkBoxCoordX->setDisabled(false);
  61. ui->checkBoxCoordY->setDisabled(false);
  62. ui->checkBoxCoordZ->setDisabled(false);
  63. ui->comboBoxLayerBlockId->setDisabled(false);
  64. ui->lineEditLayerBlockDesc->setDisabled(false);
  65. ui->doubleSpinBoxCoordX->setDisabled(false);
  66. ui->doubleSpinBoxCoordY->setDisabled(false);
  67. ui->doubleSpinBoxCoordZ->setDisabled(false);
  68. }else{//同步基站或者同步中继
  69. ui->checkBoxLayerBlockId->setDisabled(true);
  70. ui->checkBoxLayerBlockDesc->setDisabled(true);
  71. ui->checkBoxCoordX->setDisabled(true);
  72. ui->checkBoxCoordY->setDisabled(true);
  73. ui->checkBoxCoordZ->setDisabled(true);
  74. ui->comboBoxLayerBlockId->setDisabled(true);
  75. ui->lineEditLayerBlockDesc->setDisabled(true);
  76. ui->doubleSpinBoxCoordX->setDisabled(true);
  77. ui->doubleSpinBoxCoordY->setDisabled(true);
  78. ui->doubleSpinBoxCoordZ->setDisabled(true);
  79. ui->checkBoxLayerBlockId->setChecked(false);
  80. ui->checkBoxLayerBlockDesc->setChecked(false);
  81. ui->checkBoxCoordX->setChecked(false);
  82. ui->checkBoxCoordY->setChecked(false);
  83. ui->checkBoxCoordZ->setChecked(false);
  84. }
  85. }
  86. //配置界面按钮信号与槽
  87. void OamInstallParam::configSignalSlot(){
  88. connect(ui->pushButtonAllSel, &QPushButton::clicked, this,&this->selectAllItem);//全选
  89. connect(ui->pushButtonAllNoSel, &QPushButton::clicked, this,&this->selectAllNoItem);//全不选
  90. connect(ui->pushButtonClear, &QPushButton::clicked, this,&this->clearAllItem);//清空
  91. connect(ui->pushButtonQuery, &QPushButton::clicked, this,&this->queryParam);//查询参数
  92. connect(ui->pushButtonConfig, &QPushButton::clicked, this,&this->configParam);//设置参数
  93. connect(ui->pushButtonUpload, &QPushButton::clicked, this,&this->uploadParam);//上传参数
  94. //将消息发送到主控模块
  95. connect(this, &this->SignalSendQueryMsg, m_pMainDlg, &m_pMainDlg->slotOamSendQueryMsg);
  96. connect(this, &this->SignalSendConfigMsg, m_pMainDlg, &m_pMainDlg->slotOamSendConfigMsg);
  97. connect(this, &this->SignalUploadBtsBaseParamUpdate, m_pMainDlg, &m_pMainDlg->slotUploadBtsBaseParamUpdate);
  98. }
  99. //全选
  100. void OamInstallParam::selectAllItem(){
  101. ui->checkBoxBuildID->setChecked(true);
  102. ui->checkBoxLayerId->setChecked(true);
  103. if(m_dwDeviceType == 0){
  104. ui->checkBoxLayerBlockId->setChecked(true);
  105. ui->checkBoxLayerBlockDesc->setChecked(true);
  106. ui->checkBoxCoordX->setChecked(true);
  107. ui->checkBoxCoordY->setChecked(true);
  108. ui->checkBoxCoordZ->setChecked(true);
  109. }else{
  110. ui->checkBoxLayerBlockId->setChecked(false);
  111. ui->checkBoxLayerBlockDesc->setChecked(false);
  112. ui->checkBoxCoordX->setChecked(false);
  113. ui->checkBoxCoordY->setChecked(false);
  114. ui->checkBoxCoordZ->setChecked(false);
  115. }
  116. ui->checkBoxPosition->setChecked(true);
  117. }
  118. //全不选
  119. void OamInstallParam::selectAllNoItem(){
  120. ui->checkBoxBuildID->setChecked(false);
  121. ui->checkBoxLayerId->setChecked(false);
  122. ui->checkBoxLayerBlockId->setChecked(false);
  123. ui->checkBoxLayerBlockDesc->setChecked(false);
  124. ui->checkBoxPosition->setChecked(false);
  125. ui->checkBoxCoordX->setChecked(false);
  126. ui->checkBoxCoordY->setChecked(false);
  127. ui->checkBoxCoordZ->setChecked(false);
  128. }
  129. //清空参数
  130. void OamInstallParam::clearAllItem(){
  131. QString strText = "";
  132. ui->comboBoxBuildID->setCurrentIndex(0);
  133. ui->comboBoxLayerId->setCurrentIndex(30);
  134. ui->comboBoxLayerBlockId->setCurrentIndex(0);
  135. ui->lineEditLayerBlockDesc->setText(strText);
  136. ui->lineEditPosition->setText(strText);
  137. ui->doubleSpinBoxCoordX->setValue(0);
  138. ui->doubleSpinBoxCoordY->setValue(0);
  139. ui->doubleSpinBoxCoordZ->setValue(0);
  140. }
  141. //切换按钮状态
  142. //byFlag:开关状态,true:可用,false:不可用
  143. void OamInstallParam::switchBtnFlag(bool byFlag){
  144. ui->pushButtonAllSel->setEnabled(byFlag);
  145. ui->pushButtonAllNoSel->setEnabled(byFlag);
  146. ui->pushButtonClear->setEnabled(byFlag);
  147. ui->pushButtonQuery->setEnabled(byFlag);
  148. ui->pushButtonConfig->setEnabled(byFlag);
  149. ui->pushButtonUpload->setEnabled(byFlag);
  150. }
  151. //查询参数
  152. void OamInstallParam::queryParam(){
  153. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  154. quint8 *pbyHead = abyData;
  155. quint16 wLen = 0;
  156. LTV_T stLtv;
  157. //禁用按钮
  158. switchBtnFlag(false);
  159. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  160. memset((void*)&stLtv, 0, sizeof(LTV_T));
  161. if(ui->checkBoxBuildID->isChecked()){
  162. stLtv.wLen = 5;
  163. stLtv.wTag = ORDER_INSTALL_BUILD_ID;
  164. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  165. wLen = wLen + stLtv.wLen;
  166. pbyHead = pbyHead + stLtv.wLen;
  167. }
  168. if(ui->checkBoxLayerId->isChecked()){
  169. stLtv.wLen = 6;
  170. stLtv.wTag = ORDER_INSTALL_LAYER_ID;
  171. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  172. wLen = wLen + stLtv.wLen;
  173. pbyHead = pbyHead + stLtv.wLen;
  174. }
  175. if(ui->checkBoxLayerBlockId->isChecked()){
  176. stLtv.wLen = 5;
  177. stLtv.wTag = ORDER_INSTALL_LAYER_BLOCK_ID;
  178. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  179. wLen = wLen + stLtv.wLen;
  180. pbyHead = pbyHead + stLtv.wLen;
  181. }
  182. if(ui->checkBoxLayerBlockDesc->isChecked()){
  183. stLtv.wLen = 36;
  184. stLtv.wTag = ORDER_INSTALL_LAYER_BLOCK_DESC;
  185. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  186. wLen = wLen + stLtv.wLen;
  187. pbyHead = pbyHead + stLtv.wLen;
  188. }
  189. if(ui->checkBoxPosition->isChecked()){
  190. stLtv.wLen = 36;
  191. stLtv.wTag = ORDER_INSTALL_LAYER_POSITION;
  192. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  193. wLen = wLen + stLtv.wLen;
  194. pbyHead = pbyHead + stLtv.wLen;
  195. }
  196. if(ui->checkBoxCoordX->isChecked()){
  197. stLtv.wLen = 8;
  198. stLtv.wTag = ORDER_INSTALL_LAYER_COORD_X;
  199. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  200. wLen = wLen + stLtv.wLen;
  201. pbyHead = pbyHead + stLtv.wLen;
  202. }
  203. if(ui->checkBoxCoordY->isChecked()){
  204. stLtv.wLen = 8;
  205. stLtv.wTag = ORDER_INSTALL_LAYER_COORD_Y;
  206. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  207. wLen = wLen + stLtv.wLen;
  208. pbyHead = pbyHead + stLtv.wLen;
  209. }
  210. if(ui->checkBoxCoordZ->isChecked()){
  211. stLtv.wLen = 8;
  212. stLtv.wTag = ORDER_INSTALL_LAYER_COORD_Z;
  213. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  214. wLen = wLen + stLtv.wLen;
  215. pbyHead = pbyHead + stLtv.wLen;
  216. }
  217. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  218. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少查询项");
  219. switchBtnFlag(true);
  220. return;
  221. }
  222. //将参数发送给主控模块
  223. if(wLen > 0){
  224. emit SignalSendQueryMsg(abyData, wLen);
  225. }else{
  226. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  227. }
  228. //启用按钮
  229. switchBtnFlag(true);
  230. return;
  231. }
  232. //显示参数
  233. void OamInstallParam::showParam(LTV_T *pstData){
  234. quint8 byLen = pstData->wLen-4;//载荷长度
  235. QString strText = "";
  236. quint8 byTmp = 0;
  237. qint16 wTmp = 0;
  238. quint32 dwCoord = 0;//坐标
  239. float fTmpCoord = 0.0;
  240. qint16 wIndex = 0;
  241. //将数据显示在界面上
  242. if(pstData->wTag == ORDER_INSTALL_BUILD_ID){
  243. memcpy(&byTmp, pstData->abyData, byLen);
  244. ui->comboBoxBuildID->setCurrentIndex(byTmp);
  245. }else if(pstData->wTag == ORDER_INSTALL_LAYER_ID){
  246. memcpy(&wTmp, pstData->abyData, byLen);
  247. wIndex = ui->comboBoxLayerId->findData(QVariant(wTmp));
  248. ui->comboBoxLayerId->setCurrentIndex(wIndex);
  249. }else if(pstData->wTag == ORDER_INSTALL_LAYER_BLOCK_ID){
  250. memcpy(&byTmp, pstData->abyData, byLen);
  251. ui->comboBoxLayerBlockId->setCurrentIndex(byTmp);
  252. }else if(pstData->wTag == ORDER_INSTALL_LAYER_BLOCK_DESC){
  253. strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
  254. strText = strText.trimmed();//去掉首尾空格
  255. ui->lineEditLayerBlockDesc->setText(strText);
  256. }else if(pstData->wTag == ORDER_INSTALL_LAYER_POSITION){
  257. strText = QString::fromLocal8Bit((char *)pstData->abyData, strlen((char*)pstData->abyData));
  258. strText = strText.trimmed();//去掉首尾空格
  259. ui->lineEditPosition->setText(strText);
  260. }else if(pstData->wTag == ORDER_INSTALL_LAYER_COORD_X){
  261. memcpy(&dwCoord, pstData->abyData, byLen);
  262. fTmpCoord = (float)dwCoord/100;
  263. ui->doubleSpinBoxCoordX->setValue(fTmpCoord);
  264. }else if(pstData->wTag == ORDER_INSTALL_LAYER_COORD_Y){
  265. memcpy(&dwCoord, pstData->abyData, byLen);
  266. fTmpCoord = (float)dwCoord/100;
  267. ui->doubleSpinBoxCoordY->setValue(fTmpCoord);
  268. }else if(pstData->wTag == ORDER_INSTALL_LAYER_COORD_Z){
  269. memcpy(&dwCoord, pstData->abyData, byLen);
  270. fTmpCoord = (float)dwCoord/100;
  271. ui->doubleSpinBoxCoordZ->setValue(fTmpCoord);
  272. }
  273. return;
  274. }
  275. //配置参数
  276. void OamInstallParam::configParam(){
  277. quint8 abyData[PS_FRAME_MCPA_PAYLOAD_LEN];
  278. quint8 *pbyHead = abyData;
  279. quint16 wLen = 0;
  280. LTV_T stLtv;
  281. QVariant varTmp;//下来框中的用户数据
  282. QString strText = "";
  283. QByteArray baData;
  284. quint8 byCharLen = 0;
  285. quint8 byTmp = 0;
  286. qint16 wTmp = 0;
  287. qreal fCoord = 0.00;//浮点数
  288. quint32 dwCoord = 0;
  289. //禁用按钮
  290. switchBtnFlag(false);
  291. memset(abyData, 0, PS_FRAME_MCPA_PAYLOAD_LEN);
  292. memset((void*)&stLtv, 0, sizeof(LTV_T));
  293. if(ui->checkBoxBuildID->isChecked()){
  294. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  295. stLtv.wLen = 5;
  296. stLtv.wTag = ORDER_INSTALL_BUILD_ID;
  297. varTmp = ui->comboBoxBuildID->currentData();
  298. byTmp = (quint8)varTmp.toInt();
  299. if(byTmp <= 0){
  300. QMessageBox::critical(this, "提示", "请选择大楼编号");
  301. switchBtnFlag(true);//启用按钮
  302. return;
  303. }
  304. memcpy((void*)stLtv.abyData, &byTmp, 1);
  305. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  306. wLen = wLen + stLtv.wLen;
  307. pbyHead = pbyHead + stLtv.wLen;
  308. }
  309. if(ui->checkBoxLayerId->isChecked()){
  310. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  311. stLtv.wLen = 6;
  312. stLtv.wTag = ORDER_INSTALL_LAYER_ID;
  313. varTmp = ui->comboBoxLayerId->currentData();
  314. wTmp = (qint16)varTmp.toInt();
  315. if((wTmp < -30) || (wTmp == 0) || (wTmp > 300)){
  316. QMessageBox::critical(this, "提示", "请选择楼层");
  317. switchBtnFlag(true);//启用按钮
  318. return;
  319. }
  320. memcpy((void*)stLtv.abyData, &wTmp, 2);
  321. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  322. wLen = wLen + stLtv.wLen;
  323. pbyHead = pbyHead + stLtv.wLen;
  324. }
  325. if(ui->checkBoxLayerBlockId->isChecked()){
  326. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  327. stLtv.wLen = 5;
  328. stLtv.wTag = ORDER_INSTALL_LAYER_BLOCK_ID;
  329. varTmp = ui->comboBoxLayerBlockId->currentData();
  330. byTmp = (quint8)varTmp.toInt();
  331. if(byTmp <= 0){
  332. QMessageBox::critical(this, "提示", "请选择楼层分区");
  333. switchBtnFlag(true);//启用按钮
  334. return;
  335. }
  336. memcpy((void*)stLtv.abyData, &byTmp, 1);
  337. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  338. wLen = wLen + stLtv.wLen;
  339. pbyHead = pbyHead + stLtv.wLen;
  340. }
  341. if(ui->checkBoxLayerBlockDesc->isChecked()){
  342. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  343. stLtv.wLen = 36;
  344. stLtv.wTag = ORDER_INSTALL_LAYER_BLOCK_DESC;
  345. strText = ui->lineEditLayerBlockDesc->text();
  346. strText = strText.trimmed();
  347. baData = strText.toLocal8Bit();
  348. byCharLen = baData.size();
  349. if(byCharLen > 30){
  350. QMessageBox::information(this, "提示", "‘分区描述’字符长度超过最大值30");
  351. switchBtnFlag(true);//启用按钮
  352. return;
  353. }
  354. memcpy((void*)stLtv.abyData, baData, byCharLen);
  355. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  356. wLen = wLen + stLtv.wLen;
  357. pbyHead = pbyHead + stLtv.wLen;
  358. }
  359. if(ui->checkBoxPosition->isChecked()){
  360. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  361. stLtv.wLen = 36;
  362. stLtv.wTag = ORDER_INSTALL_LAYER_POSITION;
  363. strText = ui->lineEditPosition->text();
  364. strText = strText.trimmed();
  365. baData = strText.toLocal8Bit();
  366. byCharLen = baData.size();
  367. if(byCharLen > 30){
  368. QMessageBox::information(this, "提示", "‘安装位置’字符长度超过最大值30");
  369. switchBtnFlag(true);//启用按钮
  370. return;
  371. }
  372. memcpy((void*)stLtv.abyData, baData, byCharLen);
  373. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  374. wLen = wLen + stLtv.wLen;
  375. pbyHead = pbyHead + stLtv.wLen;
  376. }
  377. if(ui->checkBoxCoordX->isChecked()){
  378. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  379. stLtv.wLen = 8;
  380. stLtv.wTag = ORDER_INSTALL_LAYER_COORD_X;
  381. fCoord = ui->doubleSpinBoxCoordX->value();
  382. dwCoord = (quint32)(fCoord*100);
  383. memcpy((void*)stLtv.abyData, &dwCoord, 4);
  384. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  385. wLen = wLen + stLtv.wLen;
  386. pbyHead = pbyHead + stLtv.wLen;
  387. }
  388. if(ui->checkBoxCoordY->isChecked()){
  389. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  390. stLtv.wLen = 8;
  391. stLtv.wTag = ORDER_INSTALL_LAYER_COORD_Y;
  392. fCoord = ui->doubleSpinBoxCoordY->value();
  393. dwCoord = (quint32)(fCoord*100);
  394. memcpy((void*)stLtv.abyData, &dwCoord, 4);
  395. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  396. wLen = wLen + stLtv.wLen;
  397. pbyHead = pbyHead + stLtv.wLen;
  398. }
  399. if(ui->checkBoxCoordZ->isChecked()){
  400. memset((void*)stLtv.abyData, 0, PS_MCP_A_DATA_LEN);
  401. stLtv.wLen = 8;
  402. stLtv.wTag = ORDER_INSTALL_LAYER_COORD_Z;
  403. fCoord = ui->doubleSpinBoxCoordZ->value();
  404. dwCoord = (quint32)(fCoord*100);
  405. memcpy((void*)stLtv.abyData, &dwCoord, 4);
  406. memcpy(pbyHead, &stLtv, sizeof(quint8)*stLtv.wLen);
  407. wLen = wLen + stLtv.wLen;
  408. pbyHead = pbyHead + stLtv.wLen;
  409. }
  410. if(wLen > PS_FRAME_MCPA_PAYLOAD_LEN){
  411. QMessageBox::information(this,"提示", "数据长度超过报文最大值,请减少配置项");
  412. switchBtnFlag(true);//启用按钮
  413. return;
  414. }
  415. //将参数发送给主控模块
  416. if(wLen > 0){
  417. emit SignalSendConfigMsg(abyData, wLen, 0);
  418. }else{
  419. QMessageBox::information(this,"提示", "请至少选择一项管理项");
  420. }
  421. //启用按钮
  422. switchBtnFlag(true);
  423. return;
  424. }
  425. //将安装参数上传到服务器
  426. void OamInstallParam::uploadParam(){
  427. QJsonObject jsonObject; //定义一个json对象
  428. QVariant varTmp;//下来框中的用户数据
  429. quint8 byTmp = 0;
  430. QString strText = "";
  431. QByteArray baData;
  432. quint8 byCharLen = 0;
  433. qint32 dwCoord = 0;
  434. QString strResp = "";
  435. //禁用按钮
  436. switchBtnFlag(false);
  437. //大楼编号
  438. if(ui->checkBoxBuildID->isChecked()){
  439. varTmp = ui->comboBoxBuildID->currentData();
  440. byTmp = (quint8)varTmp.toInt();
  441. if(byTmp <= 0){
  442. QMessageBox::critical(this, "提示", "请选择大楼编号");
  443. ui->pushButtonUpload->setEnabled(true);//启用按钮
  444. return;
  445. }
  446. jsonObject["build_id"] = byTmp;
  447. }
  448. //楼层编号
  449. if(ui->checkBoxLayerId->isChecked()){
  450. varTmp = ui->comboBoxLayerId->currentData();
  451. byTmp = (quint8)varTmp.toInt();
  452. if(byTmp <= 0){
  453. QMessageBox::critical(this, "提示", "请选择楼层");
  454. ui->pushButtonUpload->setEnabled(true);//启用按钮
  455. return;
  456. }
  457. jsonObject["layer_id"] = byTmp;
  458. }
  459. //分区编号
  460. if(ui->checkBoxLayerBlockId->isChecked()){
  461. varTmp = ui->comboBoxLayerBlockId->currentData();
  462. byTmp = (quint8)varTmp.toInt();
  463. if(byTmp <= 0){
  464. QMessageBox::critical(this, "提示", "请选择楼层分区");
  465. ui->pushButtonUpload->setEnabled(true);//启用按钮
  466. return;
  467. }
  468. jsonObject["block_id"] = byTmp;
  469. }
  470. //分区描述
  471. if(ui->checkBoxLayerBlockDesc->isChecked()){
  472. strText = ui->lineEditLayerBlockDesc->text();
  473. strText = strText.trimmed();
  474. baData = strText.toLocal8Bit();
  475. byCharLen = baData.size();
  476. if(byCharLen > 30){
  477. QMessageBox::information(this, "提示", "‘分区描述’字符长度超过最大值30");
  478. ui->pushButtonUpload->setEnabled(true);//启用按钮
  479. return;
  480. }
  481. jsonObject["block_desc"] = strText;
  482. }
  483. //安装位置
  484. if(ui->checkBoxPosition->isChecked()){
  485. strText = ui->lineEditPosition->text();
  486. strText = strText.trimmed();
  487. baData = strText.toLocal8Bit();
  488. byCharLen = baData.size();
  489. if(byCharLen > 30){
  490. QMessageBox::information(this, "提示", "‘安装位置’字符长度超过最大值30");
  491. ui->pushButtonUpload->setEnabled(true);//启用按钮
  492. return;
  493. }
  494. jsonObject["position"] = strText;
  495. }
  496. //x坐标
  497. if(ui->checkBoxCoordX->isChecked()){
  498. dwCoord = ui->doubleSpinBoxCoordX->value()*100;
  499. jsonObject["coord_x"] = dwCoord;
  500. }
  501. //y坐标
  502. if(ui->checkBoxCoordY->isChecked()){
  503. dwCoord = ui->doubleSpinBoxCoordY->value()*100;
  504. jsonObject["coord_y"] = dwCoord;
  505. }
  506. //z坐标
  507. if(ui->checkBoxCoordZ->isChecked()){
  508. dwCoord = ui->doubleSpinBoxCoordZ->value()*100;
  509. jsonObject["coord_z"] = dwCoord;
  510. }
  511. //启用按钮
  512. switchBtnFlag(true);
  513. //发送post请求
  514. emit SignalUploadBtsBaseParamUpdate("guiUploadBtsBaseParamUpdate", jsonObject);
  515. return;
  516. }