formshkjdealing.cpp 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. #include "formshkjdealing.h"
  2. #include "ui_formshkjdealing.h"
  3. #include "xprogressbar.h"
  4. #include "sncdatabase.h"
  5. #include "dialogsubmitresponsedetail.h"
  6. #include "dialogsubmit.h"
  7. FormShkjDealing::FormShkjDealing(QWidget *parent) :
  8. QWidget(parent),
  9. ui(new Ui::FormShkjDealing)
  10. {
  11. ui->setupUi(this);
  12. initVariables();
  13. initUI();
  14. setTableWidgetNoData(ui->tableWidget);
  15. }
  16. FormShkjDealing::~FormShkjDealing()
  17. {
  18. m_movieBig->stop();
  19. delete m_movieBig;
  20. m_movie->stop();
  21. delete m_movie;
  22. delete ui;
  23. qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
  24. <<"FormRiddle.FormShkjDealing Destroyed.";
  25. }
  26. void FormShkjDealing::initVariables()
  27. {
  28. m_movie = new QMovie(":/working.gif");
  29. m_movie->start();
  30. m_movieBig = new QMovie(":/fetchfromserver.gif");
  31. m_movieBig->start();
  32. m_keys<<"dealstatus"<<"uqrycode"<<"inserttime"<<"hmzs"<<"finishtime"<<"detail";
  33. m_state = NotLogin;
  34. m_headers<<"状态"<<"查询码"<<"提交时间"<<"号码总数"<<"累计耗时(秒)"<<"原始文件";
  35. }
  36. void FormShkjDealing::setAccountInfo(QMap<QString, QString> info)
  37. {
  38. m_account = info;
  39. QString ssoHash = info.value("ssohash");
  40. if(!ssoHash.isEmpty())
  41. {
  42. m_state = LoginOk;
  43. setTableWidgetSyncData(ui->tableWidget);
  44. }
  45. else
  46. {
  47. m_state = NotLogin;
  48. }
  49. if(m_state!=LoginOk)
  50. {
  51. setTableWidgetNoData(ui->tableWidget);
  52. }
  53. }
  54. void FormShkjDealing::initUI()
  55. {
  56. ui->tableWidget->setColumnCount(m_headers.size());
  57. ui->tableWidget->setHorizontalHeaderLabels(m_headers);
  58. ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
  59. ui->tableWidget->setShowGrid(false);
  60. ui->tableWidget->setAlternatingRowColors(true);
  61. ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  62. ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  63. ui->tableWidget->verticalHeader()->setVisible(false);
  64. ui->tableWidget->horizontalHeader()->setStyleSheet("font:12px");
  65. ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
  66. ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Fixed);
  67. ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  68. ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
  69. ui->tableWidget->verticalHeader()->setFixedWidth(30);
  70. ui->tableWidget->setSortingEnabled(true);
  71. ui->tableWidget->setColumnWidth(0,30);
  72. ui->tableWidget->setColumnWidth(1,135);
  73. ui->tableWidget->setColumnWidth(2,130);//
  74. ui->tableWidget->setColumnWidth(3,110);
  75. ui->tableWidget->setColumnWidth(4,100);
  76. ui->tableWidget->setColumnWidth(5,169);//
  77. }
  78. void FormShkjDealing::setTableWidgetNoData(QTableWidget *tableWidget)
  79. {
  80. prepareTableWidgetCells(tableWidget,4);
  81. tableWidget->setEnabled(false);
  82. QTableWidgetItem *item = new QTableWidgetItem();
  83. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  84. item->setText(" 暂无信息");
  85. tableWidget->setItem(1,3,item);
  86. }
  87. void FormShkjDealing::setTableWidgetSyncData(QTableWidget *tableWidget)
  88. {
  89. prepareTableWidgetCells(tableWidget,4);
  90. tableWidget->setEnabled(false);
  91. QLabel *lbl = new QLabel();
  92. QTableWidgetItem *item = new QTableWidgetItem(" 正在读取...");
  93. lbl->setMovie(m_movieBig);
  94. item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
  95. tableWidget->setItem(1,3,item);
  96. tableWidget->setCellWidget(1,3,lbl);
  97. }
  98. void FormShkjDealing::prepareTableWidgetCells(QTableWidget *tableWidget, int rows)
  99. {
  100. tableWidget->setRowCount(0);
  101. tableWidget->setRowCount(rows);
  102. }
  103. void FormShkjDealing::fillDataList(QTableWidget *tableWidget,QStringList keys,
  104. QMultiMap<QString, QString> list, int rowCount)
  105. {
  106. setTableWidgetNoData(tableWidget);
  107. if(rowCount==0)
  108. {
  109. return ;
  110. }
  111. prepareTableWidgetCells(tableWidget,rowCount);
  112. tableWidget->setEnabled(true);
  113. for(int row = 0;row < rowCount;row++)
  114. {
  115. QMap<QString,QString> map;
  116. for(int col=0;col<keys.size();col++)
  117. {
  118. QString key = keys.at(col);
  119. QString value = list.values(key).at(row);
  120. map.insert(key,value);
  121. }
  122. for(int col=0;col<keys.size();col++)
  123. {
  124. QString key = keys.at(col);
  125. QString value = list.values(key).at(row);
  126. setCellElement(tableWidget,row,col,key,value,map);
  127. }
  128. }
  129. tableWidget->sortByColumn(0);
  130. tableWidget->sortByColumn(0);
  131. }
  132. void FormShkjDealing::setCellElement(QTableWidget *tableWidget, int row, int col,
  133. QString key,QString value,QMap<QString,QString> data)
  134. {
  135. QTableWidgetItem* item = new QTableWidgetItem();
  136. QVariant display = value;
  137. QVariant tooltip = value;
  138. item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
  139. //进行数据翻译
  140. if(key=="detail")
  141. {
  142. QStringList info = display.toString().split("\r\n");
  143. QString filename;
  144. if(info.size()>0)
  145. {
  146. if(info.at(0).split(":").size()>1)
  147. {
  148. filename = info.at(0).split(":").at(1);
  149. }
  150. display = filename;
  151. }
  152. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  153. }
  154. else if(key=="hmzs")
  155. {
  156. display = value.toInt();
  157. tooltip = display;
  158. }
  159. else if(key=="finishtime")
  160. {
  161. QDateTime inserttime = QDateTime::fromString(data.value("inserttime"),"yyyy-MM-dd hh:mm:ss");
  162. QDateTime finishtime = QDateTime::fromString(data.value("finishtime"),"yyyy-MM-dd hh:mm:ss");
  163. int seconds = inserttime.msecsTo(finishtime)/1000 ;
  164. display = seconds;
  165. tooltip = display;
  166. }
  167. if(key == "dealstatus")
  168. {
  169. delete item;
  170. QLabel *lbl = new QLabel(this);
  171. lbl->setAlignment(Qt::AlignCenter|Qt::AlignHCenter);
  172. lbl->setProperty("value",value);
  173. lbl->setPixmap(QPixmap(":/task_play.png"));
  174. lbl->setToolTip(tooltip.toString());
  175. tableWidget->setCellWidget(row,col,lbl);
  176. }
  177. else
  178. {
  179. item->setData(Qt::DisplayRole,display);
  180. item->setData(Qt::UserRole,value);
  181. item->setData(Qt::ToolTipRole,tooltip);
  182. tableWidget->setItem(row,col,item);
  183. }
  184. }
  185. void FormShkjDealing::query()
  186. {
  187. QString userCode = m_account.value("usercode");
  188. QMultiMap<QString,QString> list = SNCDataBase::getShkjCheckInfos(userCode,"0");
  189. int cols = list.uniqueKeys().size();
  190. int rows = 0;
  191. if(cols!=0)
  192. rows = list.size()/cols;
  193. if(list.size()==0)
  194. {
  195. setTableWidgetNoData(ui->tableWidget);
  196. return ;
  197. }
  198. QStringList ids;
  199. QString curId;
  200. for(int i=0;i<ui->tableWidget->rowCount();i++)
  201. {
  202. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  203. if(item)
  204. {
  205. if(item->checkState()==Qt::Checked)
  206. {
  207. ids<<item->data(Qt::UserRole).toString();
  208. }
  209. if(item->isSelected())
  210. {
  211. curId = item->data(Qt::UserRole).toString();
  212. }
  213. }
  214. }
  215. fillDataList(ui->tableWidget,m_keys,list,rows);
  216. for(int i=0;i<ui->tableWidget->rowCount();i++)
  217. {
  218. if(curId.isEmpty())
  219. {
  220. ui->tableWidget->selectRow(i);
  221. break;
  222. }
  223. QTableWidgetItem *item = ui->tableWidget->item(i,0);
  224. if(item)
  225. {
  226. QString id = item->data(Qt::UserRole).toString();
  227. if(curId==id)
  228. {
  229. ui->tableWidget->selectRow(i);
  230. }
  231. for(int i=0;i<ids.size();i++)
  232. {
  233. if(id==ids.at(i))
  234. {
  235. item->setCheckState(Qt::Checked);
  236. break;
  237. }
  238. }
  239. }
  240. }
  241. }
  242. void FormShkjDealing::showRtnMessage(int row)
  243. {
  244. QTableWidgetItem *itemMsg = ui->tableWidget->item(row,8);
  245. QTableWidgetItem *itemDetail = ui->tableWidget->item(row,9);
  246. QString errMsg = "";
  247. QString errDetail = "";
  248. if(itemMsg)
  249. {
  250. errMsg = itemMsg->data(Qt::UserRole).toString();
  251. }
  252. if(itemDetail)
  253. {
  254. errDetail = itemDetail->data(Qt::UserRole).toString();
  255. }
  256. if(errDetail.isEmpty())
  257. {
  258. if(!errMsg.isEmpty())
  259. {
  260. QMessageBox::critical(this,"提示",errMsg,QMessageBox::Ok);
  261. }
  262. }
  263. else
  264. {
  265. DialogSubmitResponseDetail dialog;
  266. dialog.setDetailText(errDetail);
  267. dialog.exec();
  268. }
  269. }
  270. bool FormShkjDealing::chkAccountState(AccountLoginState state)
  271. {
  272. bool ret = false;
  273. switch(state)
  274. {
  275. case NotLogin:
  276. QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok);
  277. break;
  278. case NotBind:
  279. QMessageBox::critical(this,"提示","此项服务尚未开通,请开通后再操作!",QMessageBox::Ok);
  280. break;
  281. case LoginError:
  282. QMessageBox::critical(this,"提示","此项服务暂时无法连接,请稍候重试!",QMessageBox::Ok);
  283. break;
  284. default:
  285. ret = true;
  286. }
  287. return ret;
  288. }
  289. void FormShkjDealing::onDataUpdated()
  290. {
  291. query();
  292. }