formshkjfinished.cpp 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439
  1. #include "formshkjfinished.h"
  2. #include "ui_formshkjfinished.h"
  3. #include "shkjdb.h"
  4. #include "sncdatabase.h"
  5. #include "respdlshkjresultfile.h"
  6. #include "respuserserviceverify.h"
  7. #include "dialogsubmitresponsedetail.h"
  8. #include "xprogressbar.h"
  9. #include "dialogsubmit.h"
  10. FormShkjFinished::FormShkjFinished(QWidget *parent) :
  11. QWidget(parent),
  12. ui(new Ui::FormShkjFinished)
  13. {
  14. ui->setupUi(this);
  15. initVariables();
  16. initUI();
  17. setTableWidgetNoData(ui->tableWidget);
  18. }
  19. FormShkjFinished::~FormShkjFinished()
  20. {
  21. m_movieBig->stop();
  22. delete m_movieBig;
  23. m_movie->stop();
  24. delete m_movie;
  25. m_cubews->abort();
  26. delete m_cubews;
  27. delete ui;
  28. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  29. <<"FormRiddle.FormShkjFinished Destroyed.";
  30. }
  31. void FormShkjFinished::initVariables()
  32. {
  33. m_movie = new QMovie(":/working.gif");
  34. m_movie->start();
  35. m_movieBig = new QMovie(":/fetchfromserver.gif");
  36. m_movieBig->start();
  37. m_keys<<"ltfid"<<"dealstatus"<<"detail"<<"uqrycode"<<"hmzs"\
  38. <<"ltf_tj"<<"ltf_list"<<"forecast_tj"<<"forecast_list"\
  39. <<"inserttime"<<"finishtime";
  40. m_keysUpload<<"fileid"<<"uploadstate"<<"filename"<<"memo"<<"hmzs"<<"shzs"<<"srvrtime"<<"percent"<<"opt"\
  41. <<"filepath"<<"rtnmsg"<<"rtndetail"<<"optstatus";
  42. m_keysDealing<<"dealstatus"<<"uqrycode"<<"hmzs"<<"inserttime"<<"finishtime"<<"detail";
  43. m_keysFinished<<"ltfid"<<"dealstatus"<<"detail"<<"memo"<<"hmzs"<<"shzs"<<"inserttime"<<"finishtime"<<"opt"\
  44. <<"ltf_tj"<<"ltf_list"<<"forecast_tj"<<"forecast_list"<<"uqrycode";
  45. m_state = NotLogin;
  46. m_headers<<""<<"状态"<<"原始文件"<<"备注信息"<<"号码总数"<<"实号总数"<<"提交时间"<<"耗时(秒)"<<"操作"<<"实时快检统计"\
  47. <<"实时快检列表"<<"预检统计"<<"预检列表"<<"uqrycode";
  48. m_curLtfid = "";
  49. m_curQryid = "";
  50. m_lastLtfid = "";
  51. m_cubews = new WSCube2();
  52. }
  53. void FormShkjFinished::setAccountInfo(QMap<QString, QString> info)
  54. {
  55. m_account = info;
  56. QString ssoHash = info.value("ssohash");
  57. if(!ssoHash.isEmpty())
  58. {
  59. m_state = LoginOk;
  60. setTableWidgetSyncData(ui->tableWidget);
  61. }
  62. else
  63. {
  64. m_state = NotLogin;
  65. }
  66. if(m_state!=LoginOk)
  67. {
  68. setTableWidgetNoData(ui->tableWidget);
  69. setDetailNoData();
  70. }
  71. }
  72. void FormShkjFinished::initUI()
  73. {
  74. ui->tableWidget->setColumnCount(m_headers.size());
  75. ui->tableWidget->setHorizontalHeaderLabels(m_headers);
  76. ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  77. ui->tableWidget->setShowGrid(false);
  78. ui->tableWidget->setAlternatingRowColors(true);
  79. ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  80. ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  81. ui->tableWidget->verticalHeader()->setVisible(false);
  82. ui->tableWidget->horizontalHeader()->setStyleSheet("font:12px");
  83. ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
  84. ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Fixed);
  85. ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  86. ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
  87. ui->tableWidget->verticalHeader()->setFixedWidth(30);
  88. ui->tableWidget->setSortingEnabled(true);
  89. int col = 0;
  90. ui->tableWidget->setColumnWidth(col++,20);
  91. ui->tableWidget->setColumnWidth(col++,30);
  92. ui->tableWidget->setColumnWidth(col++,160);
  93. ui->tableWidget->setColumnWidth(col++,95);//
  94. ui->tableWidget->setColumnWidth(col++,65);
  95. ui->tableWidget->setColumnWidth(col++,65);
  96. ui->tableWidget->setColumnWidth(col++,125);
  97. ui->tableWidget->setColumnWidth(col++,60);
  98. ui->tableWidget->setColumnWidth(col++,54);
  99. ui->tableWidget->setColumnWidth(col++,0);
  100. ui->tableWidget->setColumnWidth(col++,0);//
  101. ui->tableWidget->setColumnWidth(col++,0);
  102. ui->tableWidget->setColumnWidth(col++,0);
  103. ui->tableWidget->setColumnWidth(col++,0);
  104. //初始化实号快检结果框背景显示图片quick_default_bg.jpg,通过qss文件里进行设置
  105. ui->widgetQuicikCheck->setProperty("class","highframe");
  106. ui->widgetExactCheck->setProperty("class","lowframe");
  107. //初始化快速检测 实号和未知状态的对应的显示图片quick_result_bg.jpg
  108. QPixmap quick_result_bg(":/quick_result_bg.jpg");
  109. int nHeight = quick_result_bg.height()/2;
  110. int nWidth = quick_result_bg.width();
  111. ui->labelBarShiHao->setPixmap(quick_result_bg.copy(QRect(0 , 1 * nHeight, nWidth, nHeight)));
  112. ui->labelBarWeizhi->setPixmap(quick_result_bg.copy(QRect(0 , 0 * nHeight, nWidth, nHeight)));
  113. //初始化预检测 实号、空、停、关机对应的显示图片forcast_result_bg.jpg
  114. QPixmap forcast_result_bg(":/forcast_result_bg.jpg");
  115. nHeight = forcast_result_bg.height()/4;
  116. nWidth = forcast_result_bg.width();
  117. ui->labelBarShiHao2->setPixmap(forcast_result_bg.copy(QRect(0 , 0 * nHeight, nWidth, nHeight)));
  118. ui->labelBarKong->setPixmap(forcast_result_bg.copy(QRect(0 , 1 * nHeight, nWidth, nHeight)));
  119. ui->labelBarTing->setPixmap(forcast_result_bg.copy(QRect(0 , 2 * nHeight, nWidth, nHeight)));
  120. ui->labelBarGuan->setPixmap(forcast_result_bg.copy(QRect(0 , 3 * nHeight, nWidth, nHeight)));
  121. //初始化图例图标实号、空、停、关机对应的显示图片sample_small.jpg
  122. QPixmap sample_small(":/sample_small.jpg");
  123. nHeight = sample_small.height();
  124. nWidth = sample_small.width()/10;
  125. ui->labelSampleShiHao->setPixmap(sample_small.copy(QRect(0 * nWidth , 0 , nWidth, nHeight)));
  126. ui->labelSampleWeizhi->setPixmap(sample_small.copy(QRect(1 * nWidth , 0 , nWidth, nHeight)));
  127. ui->labelSampleShiHao2->setPixmap(sample_small.copy(QRect(2 * nWidth , 0 , nWidth, nHeight)));
  128. ui->labelSampleKong->setPixmap(sample_small.copy(QRect(3 * nWidth , 0 , nWidth, nHeight)));
  129. ui->labelSampleTing->setPixmap(sample_small.copy(QRect(4 * nWidth , 0 , nWidth, nHeight)));
  130. ui->labelSampleGuan->setPixmap(sample_small.copy(QRect(5 * nWidth , 0 , nWidth, nHeight)));
  131. //初始化分割线
  132. ui->labelSplitLine->setStyleSheet("background:#dadedf");
  133. ui->labelSplitLine->setFixedHeight(1);
  134. //设置上述状态比例的默认宽度为0
  135. ui->labelBarShiHao->setFixedWidth(0);
  136. ui->labelBarWeizhi->setFixedWidth(0);
  137. ui->labelBarShiHao2->setFixedWidth(0);
  138. ui->labelBarKong->setFixedWidth(0);
  139. ui->labelBarTing->setFixedWidth(0);
  140. ui->labelBarGuan->setFixedWidth(0);
  141. }
  142. void FormShkjFinished::setTableWidgetNoData(QTableWidget *tableWidget)
  143. {
  144. prepareTableWidgetCells(tableWidget,10);
  145. tableWidget->setEnabled(false);
  146. QTableWidgetItem *item = new QTableWidgetItem();
  147. item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
  148. item->setText("暂无信息");
  149. tableWidget->setItem(5,4,item);
  150. }
  151. void FormShkjFinished::setTableWidgetSyncData(QTableWidget *tableWidget)
  152. {
  153. prepareTableWidgetCells(tableWidget,10);
  154. tableWidget->setEnabled(false);
  155. QLabel *lbl = new QLabel();
  156. QTableWidgetItem *item = new QTableWidgetItem("正在读取...");
  157. lbl->setMovie(m_movieBig);
  158. lbl->setAlignment(Qt::AlignCenter|Qt::AlignVCenter);
  159. item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
  160. tableWidget->setItem(5,4,item);
  161. tableWidget->setCellWidget(5,3,lbl);
  162. }
  163. void FormShkjFinished::setDetailNoData()
  164. {
  165. ui->labelShiHao->setText("实号");
  166. ui->labelKong->setText("空号");
  167. ui->labelTing->setText("停机");
  168. ui->labelGuan->setText("关机");
  169. ui->labelValidNum->setText("实号");
  170. ui->labelInvalidNum->setText("未知");
  171. //设置上述状态比例的默认宽度为0
  172. ui->labelBarShiHao->setFixedWidth(0);
  173. ui->labelBarWeizhi->setFixedWidth(0);
  174. ui->labelBarShiHao2->setFixedWidth(0);
  175. ui->labelBarKong->setFixedWidth(0);
  176. ui->labelBarTing->setFixedWidth(0);
  177. ui->labelBarGuan->setFixedWidth(0);
  178. ui->pushButtonDownload->setEnabled(false);
  179. }
  180. void FormShkjFinished::prepareTableWidgetCells(QTableWidget *tableWidget, int rows)
  181. {
  182. tableWidget->setRowCount(0);
  183. tableWidget->setRowCount(rows);
  184. }
  185. void FormShkjFinished::fillDataList(QTableWidget *tableWidget,QStringList keys,
  186. QMultiMap<QString, QString> list, int rowCount)
  187. {
  188. setTableWidgetNoData(tableWidget);
  189. if(rowCount==0)
  190. {
  191. return ;
  192. }
  193. prepareTableWidgetCells(tableWidget,rowCount);
  194. tableWidget->setEnabled(true);
  195. for(int row = 0;row < rowCount;row++)
  196. {
  197. QMap<QString,QString> map;
  198. for(int col=0;col<keys.size();col++)
  199. {
  200. QString key = keys.at(col);
  201. QString value = list.values(key).at(row);
  202. map.insert(key,value);
  203. }
  204. for(int col=0;col<keys.size();col++)
  205. {
  206. QString key = keys.at(col);
  207. QString value = list.values(key).at(row);
  208. setCellElement(tableWidget,row,col,key,value,map);
  209. }
  210. }
  211. tableWidget->sortByColumn(0);
  212. tableWidget->sortByColumn(0);
  213. }
  214. void FormShkjFinished::fillDataListUpload(QTableWidget *tableWidget, QStringList keys, QMultiMap<QString, QString> list, int rowCount)
  215. {
  216. if(rowCount==0)
  217. {
  218. return ;
  219. }
  220. int startrow = ui->tableWidget->rowCount();
  221. appendRow(tableWidget,rowCount);
  222. tableWidget->setEnabled(true);
  223. for(int row = 0;row < rowCount;row++)
  224. {
  225. QMap<QString,QString> map;
  226. for(int col=0;col<keys.size();col++)
  227. {
  228. QString key = keys.at(col);
  229. QString value ;
  230. if(list.values(key).count()>row)
  231. value = list.values(key).at(row);
  232. map.insert(key,value);
  233. }
  234. for(int col=0;col<keys.size();col++)
  235. {
  236. QString key = keys.at(col);
  237. QString value ;
  238. if(list.values(key).count()>row)
  239. value = list.values(key).at(row);
  240. setCellElementUpload(tableWidget,startrow+row,col,key,value,map);
  241. }
  242. }
  243. //添加按钮
  244. for(int row = 0;row < rowCount;row++)
  245. {
  246. QPushButton *button = new QPushButton();
  247. button->setText("查看");
  248. button->setProperty("class","txt-green");
  249. button->setCursor(Qt::PointingHandCursor);
  250. connect(button,SIGNAL(clicked()),this,SLOT(onPushButtonViewsUploadClicked()));
  251. QTableWidgetItem *item = tableWidget->item(row+startrow,9);
  252. if(item)
  253. {
  254. if(item->data(Qt::UserRole).toString().isEmpty())
  255. {
  256. button->setEnabled(false);
  257. }
  258. }
  259. ui->tableWidget->setCellWidget(row+startrow,8,button);
  260. }
  261. // tableWidget->sortByColumn(0);
  262. // tableWidget->sortByColumn(0);
  263. }
  264. void FormShkjFinished::fillDataListDealing(QTableWidget *tableWidget, QStringList keys, QMultiMap<QString, QString> list, int rowCount)
  265. {
  266. if(rowCount==0)
  267. {
  268. return ;
  269. }
  270. int startrow = tableWidget->rowCount();
  271. appendRow(tableWidget,rowCount);
  272. tableWidget->setEnabled(true);
  273. for(int row = 0;row < rowCount;row++)
  274. {
  275. QMap<QString,QString> map;
  276. for(int col=0;col<keys.size();col++)
  277. {
  278. QString key = keys.at(col);
  279. QString value ;
  280. if(list.values(key).count()>row)
  281. value = list.values(key).at(row);
  282. map.insert(key,value);
  283. }
  284. for(int col=0;col<keys.size();col++)
  285. {
  286. QString key = keys.at(col);
  287. QString value ;
  288. if(list.values(key).count()>row)
  289. value = list.values(key).at(row);
  290. setCellElementDealing(tableWidget,row+startrow,col,key,value,map);
  291. }
  292. }
  293. tableWidget->sortByColumn(0);
  294. tableWidget->sortByColumn(0);
  295. }
  296. void FormShkjFinished::fillDataListFinished(QTableWidget *tableWidget, QStringList keys, QMultiMap<QString, QString> list, int rowCount)
  297. {
  298. int startrow = tableWidget->rowCount();
  299. appendRow(tableWidget,rowCount);
  300. tableWidget->setEnabled(true);
  301. for(int row = 0;row < rowCount;row++)
  302. {
  303. QMap<QString,QString> map;
  304. for(int col=0;col<keys.size();col++)
  305. {
  306. QString key = keys.at(col);
  307. QString value ;
  308. if(list.values(key).count()>row)
  309. value = list.values(key).at(row);
  310. map.insert(key,value);
  311. }
  312. for(int col=0;col<keys.size();col++)
  313. {
  314. QString key = keys.at(col);
  315. QString value ;
  316. if(list.values(key).count()>row)
  317. value = list.values(key).at(row);
  318. setCellElementFinished(tableWidget,row+startrow,col,key,value,map);
  319. }
  320. }
  321. //添加按钮
  322. for(int row = 0;row < rowCount;row++)
  323. {
  324. QPushButton *button = new QPushButton();
  325. button->setText("查看");
  326. button->setProperty("class","txt-green");
  327. button->setCursor(Qt::PointingHandCursor);
  328. connect(button,SIGNAL(clicked()),this,SLOT(onPushButtonViewsFinishedClicked()));
  329. QTableWidgetItem *item = tableWidget->item(row+startrow,9);
  330. if(item)
  331. {
  332. if(item->data(Qt::UserRole).toString().isEmpty())
  333. {
  334. button->setEnabled(false);
  335. }
  336. }
  337. ui->tableWidget->setCellWidget(row+startrow,8,button);
  338. }
  339. tableWidget->setEnabled(true);
  340. on_tableWidget_cellClicked(startrow, 2);
  341. ui->tableWidget->selectRow(startrow);
  342. ui->tableWidget->item(startrow,0)->setCheckState(Qt::Checked);
  343. // tableWidget->sortByColumn(0);
  344. // tableWidget->sortByColumn(0);
  345. }
  346. void FormShkjFinished::setCellElement(QTableWidget *tableWidget, int row, int col,
  347. QString key,QString value,QMap<QString,QString> data)
  348. {
  349. QTableWidgetItem* item = new QTableWidgetItem();
  350. QVariant display = value;
  351. QVariant tooltip = value;
  352. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  353. //进行数据翻译
  354. if(key=="uqrycode")
  355. {
  356. tooltip = display;
  357. }
  358. else if(key=="ltfid")
  359. {
  360. tooltip = "";
  361. display = "";
  362. item->setCheckState(Qt::Unchecked);
  363. }
  364. else if(key=="dealstatus")
  365. {
  366. if(value=="2")
  367. {
  368. tooltip = "未下载";
  369. }
  370. else if(value=="3")
  371. {
  372. tooltip = "已下载";
  373. }
  374. }
  375. else if(key=="detail")
  376. {
  377. QStringList info = display.toString().split("\r\n");
  378. QString filename;
  379. if(info.size()>0)
  380. {
  381. if(info.at(0).split(":").size()>1)
  382. {
  383. filename = info.at(0).split(":").at(1);
  384. }
  385. display = filename;
  386. }
  387. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  388. }
  389. else if(key=="ltfid")
  390. {
  391. display = "";
  392. tooltip = "";
  393. item->setCheckState(Qt::Unchecked);
  394. }
  395. else if(key=="hmzs")
  396. {
  397. display = value.toInt();
  398. QString ltfid = data.value("ltfid");
  399. QString fileName = QCoreApplication::applicationDirPath()+\
  400. QString("/../data/%1/cache/shkj/upload/%2.rtn").arg(m_account.value("usercode")).arg(ltfid);
  401. if(QFile::exists(fileName))
  402. item->setIcon(QIcon(":/yellow-information.png"));
  403. else
  404. item->setIcon(QIcon(":/blank.png"));
  405. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  406. tooltip = "点击查看详情";
  407. }
  408. else if(key=="finishtime")
  409. {
  410. QDateTime inserttime = QDateTime::fromString(data.value("inserttime"),"yyyy-MM-dd hh:mm:ss");
  411. QDateTime finishtime = QDateTime::fromString(data.value("finishtime"),"yyyy-MM-dd hh:mm:ss");
  412. int seconds = inserttime.msecsTo(finishtime)/1000 ;
  413. display = seconds;
  414. tooltip = display;
  415. }
  416. if(key == "dealstatus")
  417. {
  418. delete item;
  419. QLabel *lbl = new QLabel(this);
  420. lbl->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);
  421. lbl->setProperty("value",value);
  422. if(value=="2")
  423. {
  424. lbl->setPixmap(QPixmap(":/todown.png"));
  425. lbl->setToolTip(tooltip.toString());
  426. }
  427. else if(value=="3")
  428. {
  429. lbl->setPixmap(QPixmap(":/task_ok.png"));
  430. lbl->setToolTip(tooltip.toString());
  431. }
  432. tableWidget->setCellWidget(row,col,lbl);
  433. }
  434. else
  435. {
  436. item->setData(Qt::DisplayRole,display);
  437. item->setData(Qt::UserRole,value);
  438. item->setData(Qt::ToolTipRole,tooltip);
  439. tableWidget->setItem(row,col,item);
  440. }
  441. }
  442. void FormShkjFinished::setCellElementUpload(QTableWidget *tableWidget, int row, int col, QString key, QString value, QMap<QString, QString> data)
  443. {
  444. QTableWidgetItem* item = new QTableWidgetItem();
  445. QVariant display = value;
  446. QVariant tooltip = value;
  447. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  448. //进行数据翻译
  449. if(key=="filetype")
  450. {
  451. if(value=="1")
  452. display = "号码文件";
  453. else if(value=="2")
  454. display = "号段文件";
  455. else
  456. display = "未知";
  457. tooltip = display;
  458. }
  459. else if(key=="fileid")
  460. {
  461. display = "";
  462. tooltip = "";
  463. item->setCheckState(Qt::Unchecked);
  464. }
  465. else if(key=="filename")
  466. {
  467. QString filePath = data.value("filepath");
  468. QString fileMemo = data.value("memo");
  469. tooltip = QString("文件:%1\r\n备注:%2").arg(filePath).arg(fileMemo);
  470. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  471. }
  472. //设置单元格显示形式,是用item填充还是widget填充
  473. if(key=="uploadstate")
  474. {
  475. delete item;
  476. int uploadstate = value.toInt();
  477. QLabel *lbl = new QLabel();
  478. lbl->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);
  479. lbl->setProperty("value",uploadstate);
  480. if(uploadstate < 0 )//上传失败,发生了错误
  481. {
  482. lbl->setPixmap(QPixmap(":/task_error.png"));
  483. lbl->setToolTip("上传失败,详细原因请点击查看按钮");
  484. }
  485. else if(uploadstate>=0 && uploadstate<3)//等待上传或上传中
  486. {
  487. lbl->setToolTip("正在上传,请稍候");
  488. lbl->setMovie(m_movie);
  489. }
  490. else if(uploadstate>3)//未知状态
  491. {
  492. lbl->setText("未知");
  493. }
  494. else //(uploadstate == 3)
  495. {
  496. lbl->setPixmap(QPixmap(":/task_ok.png"));
  497. lbl->setToolTip("上传成功");
  498. }
  499. tableWidget->setCellWidget(row,col,lbl);
  500. }
  501. else if(key=="percent")
  502. {
  503. delete item;
  504. int uploadstate = data.value("uploadstate").toInt();
  505. double percent = value.toDouble();
  506. QLabel *lbl = new QLabel();
  507. lbl->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  508. XProgressBar *progress = 0;
  509. if(uploadstate<0)
  510. {
  511. lbl->setText("<font color=red>上传失败</>");
  512. }
  513. else if(uploadstate>=0 && uploadstate<3)//等待上传或上传中
  514. {
  515. delete lbl;
  516. lbl = 0;
  517. progress = new XProgressBar();
  518. }
  519. else
  520. {
  521. lbl->setText("上传成功");
  522. }
  523. if(lbl)
  524. {
  525. tableWidget->setCellWidget(row,col,lbl);
  526. }
  527. else
  528. {
  529. progress->setProgress(uploadstate,percent);
  530. tableWidget->setCellWidget(row,col,progress);
  531. }
  532. }
  533. else
  534. {
  535. item->setData(Qt::DisplayRole,display);
  536. item->setData(Qt::UserRole,value);
  537. item->setData(Qt::ToolTipRole,tooltip);
  538. tableWidget->setItem(row,col,item);
  539. }
  540. }
  541. void FormShkjFinished::setCellElementDealing(QTableWidget *tableWidget, int row, int col, QString key, QString value, QMap<QString, QString> data)
  542. {
  543. QTableWidgetItem* item = new QTableWidgetItem();
  544. QVariant display = value;
  545. QVariant tooltip = value;
  546. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  547. //进行数据翻译
  548. if(key=="detail")
  549. {
  550. QStringList info = display.toString().split("\r\n");
  551. QString filename;
  552. if(info.size()>0)
  553. {
  554. if(info.at(0).split(":").size()>1)
  555. {
  556. filename = info.at(0).split(":").at(1);
  557. }
  558. display = filename;
  559. }
  560. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  561. }
  562. else if(key=="hmzs")
  563. {
  564. display = value.toInt();
  565. tooltip = display;
  566. }
  567. else if(key=="finishtime")
  568. {
  569. QDateTime inserttime = QDateTime::fromString(data.value("inserttime"),"yyyy-MM-dd hh:mm:ss");
  570. QDateTime finishtime = QDateTime::fromString(data.value("finishtime"),"yyyy-MM-dd hh:mm:ss");
  571. int seconds = inserttime.msecsTo(finishtime)/1000 ;
  572. display = seconds;
  573. tooltip = display;
  574. }
  575. if(key == "dealstatus")
  576. {
  577. delete item;
  578. QLabel *lbl = new QLabel(this);
  579. lbl->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);
  580. lbl->setProperty("value",value);
  581. lbl->setPixmap(QPixmap(":/task_play.png"));
  582. lbl->setToolTip(tooltip.toString());
  583. tableWidget->setCellWidget(row,col,lbl);
  584. }
  585. else
  586. {
  587. item->setData(Qt::DisplayRole,display);
  588. item->setData(Qt::UserRole,value);
  589. item->setData(Qt::ToolTipRole,tooltip);
  590. tableWidget->setItem(row,col,item);
  591. }
  592. }
  593. void FormShkjFinished::setCellElementFinished(QTableWidget *tableWidget, int row, int col, QString key, QString value, QMap<QString, QString> data)
  594. {
  595. QTableWidgetItem* item = new QTableWidgetItem();
  596. QVariant display = value;
  597. QVariant tooltip = value;
  598. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  599. //进行数据翻译
  600. if(key=="uqrycode")
  601. {
  602. tooltip = display;
  603. }
  604. else if(key=="ltfid")
  605. {
  606. tooltip = "";
  607. display = "";
  608. item->setCheckState(Qt::Unchecked);
  609. }
  610. else if(key=="dealstatus")
  611. {
  612. if(value=="2")
  613. {
  614. tooltip = "未下载";
  615. }
  616. else if(value=="3")
  617. {
  618. tooltip = "已下载";
  619. }
  620. }
  621. else if(key=="detail")
  622. {
  623. QStringList info = display.toString().split("\r\n");
  624. QString filename;
  625. if(info.size()>0)
  626. {
  627. if(info.at(0).split(":").size()>1)
  628. {
  629. filename = info.at(0).split(":").at(1);
  630. }
  631. display = filename;
  632. }
  633. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  634. }
  635. else if(key=="ltfid")
  636. {
  637. display = "";
  638. tooltip = "";
  639. item->setCheckState(Qt::Unchecked);
  640. }
  641. else if(key=="hmzs")
  642. {
  643. display = value.toInt();
  644. QString ltfid = data.value("ltfid");
  645. QString fileName = QCoreApplication::applicationDirPath()+\
  646. QString("/../data/%1/cache/shkj/upload/%2.rtn").arg(m_account.value("usercode")).arg(ltfid);
  647. // if(QFile::exists(fileName))
  648. // item->setIcon(QIcon(":/yellow-information.png"));
  649. // else
  650. // item->setIcon(QIcon(":/blank.png"));
  651. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  652. tooltip = "点击查看详情";
  653. }
  654. else if(key=="shzs")
  655. {
  656. QString ltf_list = data.value("ltf_list");
  657. int rpnum;
  658. QStringList list = ltf_list.split(",");
  659. rpnum = 0;
  660. if(list.size()>2)
  661. {
  662. rpnum = list.at(2).toInt();
  663. }
  664. display = rpnum;
  665. tooltip = display;
  666. value = QString::number(rpnum);
  667. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  668. }
  669. else if(key=="finishtime")
  670. {
  671. QDateTime inserttime = QDateTime::fromString(data.value("inserttime"),"yyyy-MM-dd hh:mm:ss");
  672. QDateTime finishtime = QDateTime::fromString(data.value("finishtime"),"yyyy-MM-dd hh:mm:ss");
  673. int seconds = inserttime.msecsTo(finishtime)/1000 ;
  674. display = seconds;
  675. tooltip = display;
  676. }
  677. if(key == "dealstatus")
  678. {
  679. delete item;
  680. QLabel *lbl = new QLabel(this);
  681. lbl->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);
  682. lbl->setProperty("value",value);
  683. if(value=="2")
  684. {
  685. lbl->setPixmap(QPixmap(":/todown.png"));
  686. lbl->setToolTip(tooltip.toString());
  687. }
  688. else if(value=="3")
  689. {
  690. lbl->setPixmap(QPixmap(":/task_ok.png"));
  691. lbl->setToolTip(tooltip.toString());
  692. }
  693. tableWidget->setCellWidget(row,col,lbl);
  694. }
  695. else
  696. {
  697. item->setData(Qt::DisplayRole,display);
  698. item->setData(Qt::UserRole,value);
  699. item->setData(Qt::ToolTipRole,tooltip);
  700. tableWidget->setItem(row,col,item);
  701. }
  702. }
  703. void FormShkjFinished::query(QString dealstatus)
  704. {
  705. QString userCode= m_account.value("usercode");
  706. QMultiMap<QString,QString> listUpload = SNCDataBase::getAllUpload("shkj","",userCode);
  707. QMultiMap<QString,QString> listFinished = ShkjDB::getShkjCheckInfos(userCode,dealstatus);
  708. int colsUpload,colsDealing,colsFinished;
  709. int rowsUpload,rowsDealing,rowsFinished;
  710. colsUpload = listUpload.uniqueKeys().size();
  711. if(colsUpload!=0)
  712. rowsUpload = listUpload.size()/colsUpload;
  713. colsFinished = listFinished.uniqueKeys().size();
  714. if(colsFinished!=0)
  715. rowsFinished = listFinished.size()/colsFinished;
  716. if(listUpload.size()==0&&listFinished.size()==0)
  717. {
  718. setTableWidgetNoData(ui->tableWidget);
  719. setDetailNoData();
  720. return ;
  721. }
  722. ui->tableWidget->setRowCount(0);
  723. if(dealstatus=="0" || dealstatus=="")
  724. {
  725. if(listUpload.size()!=0)
  726. {
  727. fillDataListUpload(ui->tableWidget,m_keysUpload,listUpload,rowsUpload);
  728. }
  729. }
  730. if(listFinished.size()!=0)
  731. {
  732. fillDataListFinished(ui->tableWidget,m_keysFinished,listFinished,rowsFinished);
  733. }
  734. else
  735. {
  736. setDetailNoData();
  737. }
  738. ui->checkBox->setChecked(false);
  739. }
  740. //void FormShkjFinished::query(QString dealstatus)
  741. //{
  742. // QString userCode= m_account.value("usercode");
  743. // QMultiMap<QString,QString> list = SNCDataBase::getShkjCheckInfos(userCode,dealstatus);
  744. // int cols = list.uniqueKeys().size();
  745. // int rows = 0;
  746. // if(cols!=0)
  747. // rows = list.size()/cols;
  748. // if(list.size()==0)
  749. // {
  750. // setTableWidgetNoData(ui->tableWidget);
  751. // setDetailNoData();
  752. // return ;
  753. // }
  754. // QStringList ids;
  755. // QString curId;
  756. // for(int i=0;i<ui->tableWidget->rowCount();i++)
  757. // {
  758. // QTableWidgetItem *item = ui->tableWidget->item(i,0);
  759. // if(item)
  760. // {
  761. // if(item->checkState()==Qt::Checked)
  762. // {
  763. // ids<<item->data(Qt::UserRole).toString();
  764. // }
  765. // if(item->isSelected())
  766. // {
  767. // curId = item->data(Qt::UserRole).toString();
  768. // }
  769. // }
  770. // }
  771. // fillDataList(ui->tableWidget,m_keys,list,rows);
  772. // for(int i=0;i<ui->tableWidget->rowCount();i++)
  773. // {
  774. // if(curId.isEmpty())
  775. // {
  776. // ui->tableWidget->selectRow(i);
  777. // on_tableWidget_cellClicked(i,0);
  778. // break;
  779. // }
  780. // QTableWidgetItem *item = ui->tableWidget->item(i,0);
  781. // if(item)
  782. // {
  783. // QString id = item->data(Qt::UserRole).toString();
  784. // if(curId==id)
  785. // {
  786. // ui->tableWidget->selectRow(i);
  787. // on_tableWidget_cellClicked(i,0);
  788. // }
  789. // for(int i=0;i<ids.size();i++)
  790. // {
  791. // if(id==ids.at(i))
  792. // {
  793. // item->setCheckState(Qt::Checked);
  794. // break;
  795. // }
  796. // }
  797. // }
  798. // }
  799. //}
  800. void FormShkjFinished::showRtnMessage(int row)
  801. {
  802. QTableWidgetItem *itemMsg = ui->tableWidget->item(row,10);
  803. QTableWidgetItem *itemDetail = ui->tableWidget->item(row,11);
  804. QString errMsg = "";
  805. QString errDetail = "";
  806. if(itemMsg)
  807. {
  808. errMsg = itemMsg->data(Qt::UserRole).toString();
  809. }
  810. if(itemDetail)
  811. {
  812. errDetail = itemDetail->data(Qt::UserRole).toString();
  813. }
  814. if(errDetail.isEmpty())
  815. {
  816. if(!errMsg.isEmpty())
  817. {
  818. QMessageBox::critical(this,"提示",errMsg,QMessageBox::Ok);
  819. }
  820. }
  821. else
  822. {
  823. DialogSubmitResponseDetail dialog;
  824. dialog.setDetailText(errDetail);
  825. dialog.exec();
  826. }
  827. }
  828. void FormShkjFinished::onDataUpdated()
  829. {
  830. if(ui->radioButtonAll->isChecked())
  831. {
  832. query("");
  833. }
  834. else if(ui->radioButtonUndownoad->isChecked())
  835. {
  836. query("2");
  837. }
  838. else if(ui->radioButtonDownload->isChecked())
  839. {
  840. query("3");
  841. }
  842. else if(ui->radioButtonDownload->isChecked())
  843. {
  844. query("0");
  845. }
  846. }
  847. void FormShkjFinished::onPushButtonViewsUploadClicked()
  848. {
  849. QPushButton *btn = qobject_cast<QPushButton*>(sender());
  850. for(int i=0;i<ui->tableWidget->rowCount();i++)
  851. {
  852. QWidget *widget = ui->tableWidget->cellWidget(i,8);
  853. if(widget)
  854. {
  855. if(btn==qobject_cast<QPushButton*>(widget))
  856. {
  857. showRtnMessage(i);
  858. break;
  859. }
  860. }
  861. }
  862. }
  863. void FormShkjFinished::onPushButtonViewsFinishedClicked()
  864. {
  865. QPushButton *btn = qobject_cast<QPushButton*>(sender());
  866. for(int i=0;i<ui->tableWidget->rowCount();i++)
  867. {
  868. QWidget *widget = ui->tableWidget->cellWidget(i,8);
  869. if(widget)
  870. {
  871. if(btn==qobject_cast<QPushButton*>(widget))
  872. {
  873. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  874. if(item)
  875. {
  876. m_curLtfid = item->data(Qt::UserRole).toString();
  877. showDetailDialog(m_curLtfid);
  878. }
  879. break;
  880. }
  881. }
  882. }
  883. }
  884. void FormShkjFinished::displayDetail(QString hmzs, QStringList infos, QStringList nums,QString dealstatus)
  885. {
  886. double r11 = 0;//快速检测实号数
  887. double r31 = 0;//精准检测空号数
  888. double r32 = 0;//精准检测停机数
  889. double r33 = 0;//精准检测关机数
  890. double r34 = 0;//精准检测实号数
  891. int sum = hmzs.toInt();
  892. int barLength = 500;
  893. setDetailNoData();
  894. if(infos.size()==2&&nums.size()==2)
  895. {
  896. int i=0;
  897. int j=0;
  898. QStringList list = infos.at(i++).split("|");
  899. QStringList list2 = nums.at(j++).split(",");
  900. if(list.size()==3 && list2.size()==3)
  901. {
  902. r11= list2.at(2).toDouble();
  903. QString rate = QString::number(100*(sum-r11)/sum,'f',2);
  904. ui->labelValidNum->setText(list.at(2));
  905. ui->labelInvalidNum->setText(QString("未知:%1(%2%)").arg(sum-r11).arg(rate));
  906. }
  907. list = infos.at(i++).split("|");
  908. list2 = nums.at(j++).split(",");
  909. if(list.size()==5 && list2.size()==4)
  910. {
  911. r31= list2.at(0).toDouble();//kong
  912. r32= list2.at(1).toDouble();//ting
  913. r33= list2.at(2).toDouble();//guan
  914. r34 = list2.at(3).toDouble();//shihao
  915. ui->labelKong->setText(list.at(0));
  916. ui->labelTing->setText(list.at(1));
  917. ui->labelGuan->setText(list.at(2));
  918. ui->labelShiHao->setText(list.at(3));
  919. ui->labelTip->setText("");
  920. }
  921. else
  922. {
  923. ui->labelTip->setText("<font color=red>数量不足,无法预测。</font");
  924. }
  925. }
  926. if(sum>0)
  927. {
  928. ui->labelBarShiHao->setFixedWidth(barLength*r11/sum);
  929. ui->labelBarWeizhi->setFixedWidth(barLength*(1-r11/sum));
  930. ui->labelBarShiHao2->setFixedWidth(barLength*r34/sum);
  931. ui->labelBarKong->setFixedWidth(barLength*r31/sum);
  932. ui->labelBarTing->setFixedWidth(barLength*r32/sum);
  933. ui->labelBarGuan->setFixedWidth(barLength*r33/sum);
  934. }
  935. else
  936. {
  937. ui->labelTip->setText("");
  938. }
  939. bool isok = (dealstatus=="2") || (dealstatus == "3");
  940. ui->pushButtonDownload->setEnabled(isok);
  941. }
  942. void FormShkjFinished::on_tableWidget_cellClicked(int row, int column)
  943. {
  944. QStringList infos,nums;
  945. if(row>=0&&column>=0)
  946. {
  947. m_curLtfid = ui->tableWidget->item(row,0)->data(Qt::UserRole).toString();
  948. if(ui->tableWidget->item(row,13))
  949. m_curQryid = ui->tableWidget->item(row,13)->data(Qt::UserRole).toString();
  950. m_lastLtfid = m_curLtfid;
  951. QList<int> indexs;
  952. indexs<<9<<11;
  953. for(int i=0;i<indexs.size();i++)
  954. {
  955. QString str = ui->tableWidget->item(row,indexs.at(i))->data(Qt::DisplayRole).toString();
  956. str.replace(" ","");
  957. infos<<str;
  958. str = ui->tableWidget->item(row,indexs.at(i)+1)->data(Qt::DisplayRole).toString();
  959. str.replace(" ","");
  960. nums<<str;
  961. }
  962. QString dealstatus = "2";
  963. displayDetail(ui->tableWidget->item(row,4)->data(Qt::DisplayRole).toString(),infos,nums,dealstatus);
  964. }
  965. }
  966. void FormShkjFinished::on_radioButtonAll_clicked()
  967. {
  968. if(!chkAccountState(m_state))
  969. return ;
  970. if(ui->radioButtonAll->isChecked())
  971. {
  972. query("");
  973. }
  974. else if(ui->radioButtonUndownoad->isChecked())
  975. {
  976. query("2");
  977. }
  978. else if(ui->radioButtonDownload->isChecked())
  979. {
  980. query("3");
  981. }
  982. else if(ui->radioButtonOther->isChecked())
  983. {
  984. query("0");
  985. }
  986. }
  987. void FormShkjFinished::on_radioButtonUndownoad_clicked()
  988. {
  989. if(!chkAccountState(m_state))
  990. return ;
  991. on_radioButtonAll_clicked();
  992. }
  993. void FormShkjFinished::on_radioButtonDownload_clicked()
  994. {
  995. if(!chkAccountState(m_state))
  996. return ;
  997. on_radioButtonAll_clicked();
  998. }
  999. void FormShkjFinished::download(QString srvID, QString qryID)
  1000. {
  1001. QString ssoHash = m_account.value("ssohash");
  1002. if(ssoHash.isEmpty())
  1003. {
  1004. QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok);
  1005. return;
  1006. }
  1007. if(srvID.isEmpty())
  1008. {
  1009. QMessageBox::critical(this,"提示","请先选择要下载的任务单!",QMessageBox::Ok);
  1010. return ;
  1011. }
  1012. QString total;
  1013. QString dealstatus;
  1014. for(int i=0;i<ui->tableWidget->rowCount();i++)
  1015. {
  1016. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  1017. if(item)
  1018. {
  1019. if(srvID == item->data(Qt::UserRole).toString())
  1020. {
  1021. total = ui->tableWidget->item(i,5)->data(Qt::UserRole).toString();
  1022. QLabel *lbl = qobject_cast<QLabel*>(ui->tableWidget->cellWidget(i,1));
  1023. dealstatus = lbl->property("value").toString();
  1024. break;
  1025. }
  1026. }
  1027. }
  1028. if(dealstatus.isEmpty()||total.isEmpty())
  1029. {
  1030. QMessageBox::critical(this,"提示","无法获取下载文件必要的信息!",QMessageBox::Ok);
  1031. return ;
  1032. }
  1033. if(dealstatus=="2")
  1034. {
  1035. if(QMessageBox::Yes!=QMessageBox::question(NULL,
  1036. "确认",
  1037. QString("您确定要下载吗?")
  1038. ,QMessageBox::Yes,QMessageBox::No))
  1039. {
  1040. return ;
  1041. }
  1042. }
  1043. QString saveZipFileName = getSaveZipFileName(qryID);
  1044. if(saveZipFileName.isEmpty())
  1045. return ;
  1046. QString cachePath = ShkjDB::getShkjCachePath(srvID);
  1047. bool iscached = false;
  1048. if(!cachePath.isEmpty())
  1049. {
  1050. if(QFile::exists(cachePath))
  1051. {
  1052. iscached = true;
  1053. }
  1054. }
  1055. this->setCursor(Qt::WaitCursor);
  1056. if(iscached)
  1057. {
  1058. downloadFromLocal(saveZipFileName,cachePath);
  1059. }
  1060. else
  1061. {
  1062. downloadFromRemote(saveZipFileName,srvID,dealstatus,total);
  1063. }
  1064. this->setCursor(Qt::ArrowCursor);
  1065. }
  1066. void FormShkjFinished::downloadFromLocal(QString saveFileName,QString cacheFile)
  1067. {
  1068. QFile::copy(cacheFile,saveFileName);
  1069. QMessageBox::information(this,"提示","下载成功!",QMessageBox::Ok);
  1070. }
  1071. void FormShkjFinished::downloadFromRemote(QString saveFileName,QString srvID,QString dealstatus,QString total)
  1072. {
  1073. QString ssoHash = m_account.value("ssohash");
  1074. QString json = m_cubews->userServiceVerify("DlShkjResultFile",QString("%1,%2").arg(dealstatus).arg(total),ssoHash);
  1075. RespUserServiceVerify response1(json);
  1076. if(response1.getRtnCode()<=0)
  1077. {
  1078. QMessageBox::critical(this,"提示",response1.getRtnMemo(),QMessageBox::Ok);
  1079. return ;
  1080. }
  1081. json = m_cubews->dlShkjResultFile(srvID,ssoHash);
  1082. RespDlShkjResultFile response(json);
  1083. if(response.getRtnCode()==1)
  1084. {
  1085. QString fileContent = response.getFileContent();
  1086. QByteArray array = QByteArray::fromBase64(fileContent.toAscii());
  1087. QFile file(saveFileName);
  1088. file.open(QIODevice::WriteOnly);
  1089. file.write(array);
  1090. file.close();
  1091. QString cachPath = cacheDownloadFile(saveFileName);
  1092. ShkjDB::updateShkjCachePath(srvID,cachPath);
  1093. emit dataDownload();
  1094. QMessageBox::information(this,"提示","下载成功!",QMessageBox::Ok);
  1095. }
  1096. else
  1097. {
  1098. QMessageBox::critical(this,"提示",response.getRtnMemo(),QMessageBox::Ok);
  1099. }
  1100. }
  1101. QString FormShkjFinished::getSaveZipFileName(QString qryID)
  1102. {
  1103. QFileDialog::Options options;
  1104. QString selectedFilter;
  1105. QString exportDir = SNCDataBase::getExportDir();
  1106. if(exportDir.isEmpty())
  1107. {
  1108. QString path = QProcessEnvironment::systemEnvironment().value("HOMEDRIVE")+\
  1109. QProcessEnvironment::systemEnvironment().value("HOMEPATH")+"\\DESKTOP";
  1110. exportDir = path;
  1111. }
  1112. QString defaultZipFileName = QString("实号快检_%1.zip").arg(qryID);
  1113. QString saveZipFileName = QFileDialog::getSaveFileName(this,"另存为",exportDir + "\\" + defaultZipFileName,
  1114. tr("ZIP Files (*.zip)"),
  1115. &selectedFilter,
  1116. options);
  1117. if(!saveZipFileName.isEmpty())
  1118. {
  1119. QFileInfo fileInfo(saveZipFileName);
  1120. exportDir = fileInfo.absolutePath();
  1121. SNCDataBase::updateExportDir(exportDir);
  1122. }
  1123. return saveZipFileName;
  1124. }
  1125. QString FormShkjFinished::cacheDownloadFile(QString fileName)
  1126. {
  1127. QString userCode = m_account.value("usercode");
  1128. QString date = QDate::currentDate().toString("yyyyMM");
  1129. QString cachePath = QCoreApplication::applicationDirPath()+\
  1130. QString("/../data/%1/cache/shkj/download/%2/").arg(userCode).arg(date);
  1131. QDir dir;
  1132. dir.mkpath(cachePath);
  1133. QFileInfo fileinfo(fileName);
  1134. QFile::copy(fileName,cachePath + fileinfo.fileName());
  1135. return cachePath + fileinfo.fileName();
  1136. }
  1137. bool FormShkjFinished::chkAccountState(AccountLoginState state)
  1138. {
  1139. bool ret = false;
  1140. switch(state)
  1141. {
  1142. case NotLogin:
  1143. QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok);
  1144. break;
  1145. case NotBind:
  1146. QMessageBox::critical(this,"提示","此项服务尚未开通,请开通后再操作!",QMessageBox::Ok);
  1147. break;
  1148. case LoginError:
  1149. QMessageBox::critical(this,"提示","此项服务暂时无法连接,请稍候重试!",QMessageBox::Ok);
  1150. break;
  1151. default:
  1152. ret = true;
  1153. }
  1154. return ret;
  1155. }
  1156. void FormShkjFinished::showDetailDialog(QString ltfid)
  1157. {
  1158. setCursor(Qt::WaitCursor);
  1159. QString fileName = QCoreApplication::applicationDirPath()+\
  1160. QString("/../data/%1/cache/shkj/upload/%2.rtn").arg(m_account.value("usercode")).arg(ltfid);
  1161. QFile file(fileName);
  1162. file.open(QIODevice::ReadOnly);
  1163. QTextStream in(&file);
  1164. QString content = in.readAll();
  1165. file.close();
  1166. if(content.isEmpty())
  1167. {
  1168. QMessageBox::information(this,"提示","号码已经全部接收!",QMessageBox::Ok);
  1169. }
  1170. else
  1171. {
  1172. DialogSubmitResponseDetail dialog;
  1173. dialog.setDetailText(content);
  1174. dialog.exec();
  1175. }
  1176. setCursor(Qt::ArrowCursor);
  1177. }
  1178. void FormShkjFinished::appendRow(QTableWidget *tableWidget, int row)
  1179. {
  1180. if(tableWidget->rowCount()==0)
  1181. {
  1182. tableWidget->setRowCount(row);
  1183. }
  1184. else
  1185. {
  1186. for(int i=0;i<row;i++)
  1187. {
  1188. tableWidget->insertRow(ui->tableWidget->rowCount());
  1189. }
  1190. }
  1191. }
  1192. void FormShkjFinished::on_pushButtonDownload_clicked()
  1193. {
  1194. if(!chkAccountState(m_state))
  1195. return ;
  1196. download(m_curLtfid,m_curQryid);
  1197. }
  1198. void FormShkjFinished::on_tableWidget_cellDoubleClicked(int row, int column)
  1199. {
  1200. if(!chkAccountState(m_state))
  1201. return ;
  1202. download(m_curLtfid,m_curQryid);
  1203. }
  1204. void FormShkjFinished::on_pushButtonDel_clicked()
  1205. {
  1206. if(!chkAccountState(m_state))
  1207. return ;
  1208. bool nodata = true;
  1209. for(int i=0;i<ui->tableWidget->rowCount();i++)
  1210. {
  1211. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  1212. if(item)
  1213. {
  1214. if(item->checkState()==Qt::Checked)
  1215. {
  1216. nodata = false;
  1217. }
  1218. }
  1219. }
  1220. if(nodata)
  1221. {
  1222. QMessageBox::critical(this,"提示","请选择要删除的单子",QMessageBox::Ok);
  1223. return ;
  1224. }
  1225. if(QMessageBox::Yes!=QMessageBox::question(NULL,
  1226. "确认",
  1227. QString("您确定要删除吗?")
  1228. ,QMessageBox::Yes,QMessageBox::No))
  1229. {
  1230. return ;
  1231. }
  1232. for(int i=0;i<ui->tableWidget->rowCount();i++)
  1233. {
  1234. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  1235. QTableWidgetItem *item2 = ui->tableWidget->item(i,5);
  1236. if(item)
  1237. {
  1238. if(item->checkState()==Qt::Checked)
  1239. {
  1240. QString id = item->data(Qt::UserRole).toString();
  1241. if(!item2->data(Qt::UserRole).toString().isEmpty())
  1242. {
  1243. ShkjDB::delShkjByID(id);
  1244. }
  1245. else
  1246. {
  1247. SNCDataBase::deleteFileByFileID(id.toInt());
  1248. }
  1249. }
  1250. }
  1251. }
  1252. ui->checkBox->setChecked(false);
  1253. on_radioButtonAll_clicked();
  1254. }
  1255. void FormShkjFinished::on_checkBox_clicked()
  1256. {
  1257. Qt::CheckState state;
  1258. state = ui->checkBox->checkState();
  1259. for(int i=0;i<ui->tableWidget->rowCount();i++)
  1260. {
  1261. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  1262. if(item)
  1263. {
  1264. item->setCheckState(state);
  1265. }
  1266. }
  1267. }
  1268. void FormShkjFinished::on_radioButtonOther_clicked()
  1269. {
  1270. if(!chkAccountState(m_state))
  1271. return ;
  1272. on_radioButtonAll_clicked();
  1273. }
  1274. void FormShkjFinished::on_tableWidget_clicked(const QModelIndex &index)
  1275. {
  1276. // if(index.column()==0)
  1277. // {
  1278. // QTableWidgetItem *item = ui->tableWidget->item(index.row(),index.column());
  1279. // if(item)
  1280. // {
  1281. // if(item->checkState()==Qt::Checked)
  1282. // {
  1283. // ui->tableWidget->selectRow(index.row());
  1284. // item->setCheckState(Qt::Checked);
  1285. // }
  1286. // else
  1287. // {
  1288. // ui->tableWidget->selectRow(index.row());
  1289. // item->setCheckState(Qt::Checked);
  1290. // }
  1291. // }
  1292. // }
  1293. // else
  1294. // {
  1295. // ui->tableWidget->selectRow(index.row());
  1296. // }
  1297. ui->tableWidget->selectRow(index.row());
  1298. QTableWidgetItem *item = ui->tableWidget->item(index.row(),0);
  1299. item->setCheckState(Qt::Checked);
  1300. for(int i=0;i<ui->tableWidget->rowCount();i++)
  1301. {
  1302. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  1303. if(i==index.row())
  1304. {
  1305. item->setCheckState(Qt::Checked);
  1306. }
  1307. else
  1308. {
  1309. item->setCheckState(Qt::Unchecked);
  1310. }
  1311. }
  1312. ui->checkBox->setChecked(false);
  1313. }
  1314. void FormShkjFinished::on_tableWidget_itemSelectionChanged()
  1315. {
  1316. // for(int i=0;i<ui->tableWidget->rowCount();i++)
  1317. // {
  1318. // QTableWidgetItem *item = ui->tableWidget->item(i,0);
  1319. // if(item->isSelected())
  1320. // {
  1321. // item->setCheckState(Qt::Checked);
  1322. // }
  1323. // else
  1324. // {
  1325. // item->setCheckState(Qt::Unchecked);
  1326. // }
  1327. // }
  1328. }
  1329. void FormShkjFinished::on_pushButtonUpload_clicked()
  1330. {
  1331. if(!chkAccountState(m_state))
  1332. return;
  1333. DialogSubmit dialog(this);
  1334. dialog.setAccountInfo(m_account);
  1335. int rtCode = dialog.exec();
  1336. if(rtCode == QDialog::Accepted)
  1337. {
  1338. onDataUpdated();
  1339. }
  1340. }