| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684 |
- #include "formshkjreserve.h"
- #include "ui_formshkjreserve.h"
- #include "sncdatabase.h"
- #include "respgetmyhmyyinfo.h"
- #include "respuserserviceverify.h"
- #include "respdljsjcresultfile.h"
- #include "respdelhmyy.h"
- FormShkjReserve::FormShkjReserve(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::FormShkjReserve)
- {
- ui->setupUi(this);
- initVariables();
- initUI();
- setTableWidgetNoData(ui->tableWidget);
- }
- FormShkjReserve::~FormShkjReserve()
- {
- m_movieBig->stop();
- delete m_movieBig;
- m_cubews->abort();
- delete m_cubews;
- delete ui;
- qDebug()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"FormRiddle.FormShkjReserve Destroyed.";
- }
- bool FormShkjReserve::eventFilter(QObject *object, QEvent *event)
- {
- if( event->type() == QEvent::KeyPress)
- {
- // if yes, we need to cast the event into a QMouseEvent type
- QKeyEvent * pKeyEvent = static_cast<QKeyEvent *>(event);
- // check whether it's mid button pressed
- if (pKeyEvent->key() == Qt::Key_Control||pKeyEvent->key() == Qt::Key_Shift)
- {
- //do the processing and return true
- //textBrowserErrorInfo->setText(tr("clicked"));
- ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
- return true; //一定要返回true,如果你不想别的object也能接收到这个event
- }
- }
- else if( event->type() == QEvent::KeyRelease)
- {
- QKeyEvent * pKeyEvent = static_cast<QKeyEvent *>(event);
- // check whether it's mid button pressed
- if (pKeyEvent->key() == Qt::Key_Control||pKeyEvent->key() == Qt::Key_Shift)
- {
- //do the processing and return true
- //textBrowserErrorInfo->setText(tr("clicked"));
- ui->tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);
- return true; //一定要返回true,如果你不想别的object也能接收到这个event
- }
- }
- return QWidget::eventFilter(object, event);
- }/**/
- void FormShkjReserve::initVariables()
- {
- m_movieBig = new QMovie(":/fetchfromserver.gif");
- m_movieBig->start();
- m_movieSmall = new QMovie(":/working.gif");
- m_movieSmall->start();
- m_keys<<"serialnum"<<"ordid"<<"province"<<"city"\
- <<"attennum"<<"label1"<<"ordtime"<<"state"<<"updatetime"<<"updatenum"<<"label2"<<"op";
- m_state = NotLogin;
- m_headers<<""<<""<<"省份"<<"地区"<<"关注人数"<<"关注人数"\
- <<"预约时间"<<"预约状态"<<"更新时间"<<"更新数量"<<"更新实号数量"<<"操作";
- m_curLtfid = "";
- m_curQryid = "";
- m_lastLtfid = "";
- m_cubews = new WSCube2();
- ui->tableWidget->installEventFilter(this);
- }
- void FormShkjReserve::setAccountInfo(QMap<QString, QString> info)
- {
- m_account = info;
- QString ssoHash = info.value("ssohash");
- if(!ssoHash.isEmpty())
- {
- m_state = LoginOk;
- setTableWidgetSyncData(ui->tableWidget);
- query();
- }
- else
- {
- m_state = NotLogin;
- }
- if(m_state!=LoginOk)
- {
- setTableWidgetNoData(ui->tableWidget);
- setDetailNoData();
- }
- }
- void FormShkjReserve::initUI()
- {
- ui->labelMovie->setMovie(m_movieSmall);
- ui->labelMovie->setVisible(false);
- ui->label->setStyleSheet("color:red");
- ui->tableWidget->setColumnCount(m_headers.size());
- ui->tableWidget->setHorizontalHeaderLabels(m_headers);
- ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
- ui->tableWidget->setShowGrid(false);
- ui->tableWidget->setAlternatingRowColors(true);
- ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
- ui->tableWidget->setSelectionMode(QAbstractItemView::MultiSelection);
- ui->tableWidget->verticalHeader()->setVisible(false);
- ui->tableWidget->horizontalHeader()->setStyleSheet("font:12px");
- ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
- ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Fixed);
- ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
- ui->tableWidget->verticalHeader()->setFixedWidth(30);
- ui->tableWidget->setSortingEnabled(false);
- int col = 0;
- ui->tableWidget->setColumnWidth(col++,20);
- ui->tableWidget->setColumnWidth(col++,0);
- ui->tableWidget->setColumnWidth(col++,0);
- ui->tableWidget->setColumnWidth(col++,100);
- ui->tableWidget->setColumnWidth(col++,0);//
- ui->tableWidget->setColumnWidth(col++,120);
- ui->tableWidget->setColumnWidth(col++,180);
- ui->tableWidget->setColumnWidth(col++,140);//
- ui->tableWidget->setColumnWidth(col++,0);//8 80
- ui->tableWidget->setColumnWidth(col++,0);//
- ui->tableWidget->setColumnWidth(col++,0);//10 80
- ui->tableWidget->setColumnWidth(col++,110);//
- }
- void FormShkjReserve::setTableWidgetNoData(QTableWidget *tableWidget)
- {
- prepareTableWidgetCells(tableWidget,8);
- tableWidget->setEnabled(false);
- QTableWidgetItem *item = new QTableWidgetItem();
- item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
- item->setText("暂无信息");
- tableWidget->setItem(4,6,item);
- }
- void FormShkjReserve::setTableWidgetSyncData(QTableWidget *tableWidget)
- {
- prepareTableWidgetCells(tableWidget,10);
- tableWidget->setEnabled(false);
- QLabel *lbl = new QLabel();
- QTableWidgetItem *item = new QTableWidgetItem("正在读取...");
- lbl->setMovie(m_movieBig);
- lbl->setAlignment(Qt::AlignCenter|Qt::AlignVCenter);
- item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
- tableWidget->setItem(4,6,item);
- tableWidget->setCellWidget(4,5,lbl);
- }
- void FormShkjReserve::setDetailNoData()
- {
- }
- void FormShkjReserve::prepareTableWidgetCells(QTableWidget *tableWidget, int rows)
- {
- tableWidget->setRowCount(0);
- tableWidget->setRowCount(rows);
- }
- void FormShkjReserve::fillDataList(QTableWidget *tableWidget,QStringList keys,
- QMultiMap<QString, QString> list, int rowCount)
- {
- setTableWidgetNoData(tableWidget);
- if(rowCount==0)
- {
- return ;
- }
- prepareTableWidgetCells(tableWidget,rowCount);
- tableWidget->setEnabled(true);
- for(int row = 0;row < rowCount;row++)
- {
- QMap<QString,QString> map;
- for(int col=0;col<keys.size();col++)
- {
- QString key = keys.at(col);
- QString value ;
- if(list.values(key).count()>row)
- value = list.values(key).at(row);
- map.insert(key,value);
- }
- for(int col=0;col<keys.size();col++)
- {
- QString key = keys.at(col);
- QString value ;
- if(list.values(key).count()>row)
- value = list.values(key).at(row);
- setCellElement(tableWidget,row,col,key,value,map);
- }
- }
- tableWidget->sortByColumn(0);
- tableWidget->sortByColumn(0);
- }
- void FormShkjReserve::setCellElement(QTableWidget *tableWidget, int row, int col,
- QString key,QString value,QMap<QString,QString> data)
- {
- QTableWidgetItem* item = new QTableWidgetItem();
- QVariant display = value;
- QVariant tooltip = value;
- item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
- //进行数据翻译
- if(key=="serialnum")
- {
- tooltip = "";
- display = "";
- item->setCheckState(Qt::Unchecked);
- }
- else if(key=="isp")
- {
- if(value=="0")
- display = "全部";
- else if(value=="1")
- display = "移动";
- else if(value=="2")
- display = "联通";
- else if(value=="3")
- display = "电信";
- else
- display = "未知";
- tooltip = display;
- }
- else if(key=="state")
- {
- if(value=="1")
- display = "预约中";
- else if(value=="2")
- display = "已完成";
- else
- display = "未知";
- tooltip = display;
- }
- else if(key=="updatetime")
- {
- int days = value.toInt();
- if(days<30)
- display = QString("%1天内").arg(days);
- else if(days==30)
- display = QString("1月内");
- else if(days==90)
- display = QString("3月内");
- else if(days==180)
- display = QString("半年内");
- else
- display = QString::number(days);
- // QDateTime dt;
- // dt= QDateTime::currentDateTime();
- // dt = dt.addDays(0-days);
- // display = dt.toString("yyyy-MM-dd");
- tooltip = display;
- }
- else if(key=="city")
- {
- QString province = data.value("province");
- if(province!=value)
- display = province+value;
- tooltip = display;
- //item->setTextColor(Qt::red);
- }
- else if(key=="attennum")
- {
- item->setTextColor(Qt::green);
- }
- else if(key=="updatenum")
- {
- item->setTextColor(Qt::red);
- }
- if(key == "op")
- {
- delete item;
- QPushButton *button = new QPushButton(this);
- button->setProperty("class","txt-green");
- button->setCursor(Qt::PointingHandCursor);
- button->setText("选择实号");
- tableWidget->setCellWidget(row,col,button);
- connect(button,SIGNAL(clicked()),this,SLOT(onButtonClicked()));
- }
- else if(key == "label1")
- {
- delete item;
- QLabel *label = new QLabel(this);
- label->setText(QString("<font color=red>%1</font>人").arg(data.value("attennum")));
- label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
- tableWidget->setCellWidget(row,col,label);
- }
- else if(key == "label2")
- {
- delete item;
- QLabel *label = new QLabel(this);
- label->setText(QString("共<font color=red>%1</font>条").arg(data.value("updatenum")));
- label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
- tableWidget->setCellWidget(row,col,label);
- }
- else
- {
- item->setData(Qt::DisplayRole,display);
- item->setData(Qt::UserRole,value);
- item->setData(Qt::ToolTipRole,tooltip);
- tableWidget->setItem(row,col,item);
- }
- }
- void FormShkjReserve::query()
- {
- ui->labelMovie->setVisible(true);
- QString userhash= m_account.value("ssohash");
- QString json = m_cubews->getMyHmyyInfo(userhash);
- ui->labelMovie->setVisible(false);
- QMultiMap<QString,QString> list;
- RespGetMyHmyyInfo resp(json);
- if(resp.getRtnCode()==1)
- {
- list = resp.getRs();
- }
- else
- {
- qDebug()<<"RespGetMyHmyyInfo"<<resp.getRtnMemo();
- }
- int cols = list.uniqueKeys().size();
- int rows = 0;
- if(cols!=0)
- rows = list.size()/cols;
- if(list.size()==0)
- {
- setTableWidgetNoData(ui->tableWidget);
- setDetailNoData();
- return ;
- }
- // QStringList ids;
- // QString curId;
- // for(int i=0;i<ui->tableWidget->rowCount();i++)
- // {
- // QTableWidgetItem *item = ui->tableWidget->item(i,0);
- // if(item)
- // {
- // if(item->checkState()==Qt::Checked)
- // {
- // ids<<item->data(Qt::UserRole).toString();
- // }
- // if(item->isSelected())
- // {
- // curId = item->data(Qt::UserRole).toString();
- // }
- // }
- // }
- fillDataList(ui->tableWidget,m_keys,list,rows);
- // for(int i=0;i<ui->tableWidget->rowCount();i++)
- // {
- // if(curId.isEmpty())
- // {
- // ui->tableWidget->selectRow(i);
- // //on_tableWidget_cellClicked(i,0);
- // break;
- // }
- // QTableWidgetItem *item = ui->tableWidget->item(i,0);
- // if(item)
- // {
- // QString id = item->data(Qt::UserRole).toString();
- // if(curId==id)
- // {
- // ui->tableWidget->selectRow(i);
- // //on_tableWidget_cellClicked(i,0);
- // }
- // for(int i=0;i<ids.size();i++)
- // {
- // if(id==ids.at(i))
- // {
- // item->setCheckState(Qt::Checked);
- // break;
- // }
- // }
- // }
- // }
- }
- void FormShkjReserve::showRtnMessage(int row)
- {
- }
- void FormShkjReserve::onDataUpdated()
- {
- query();
- }
- void FormShkjReserve::onButtonClicked()
- {
- QPushButton *btn = qobject_cast<QPushButton*>(sender());
- for(int i=0;i<ui->tableWidget->rowCount();i++)
- {
- QWidget *widget = ui->tableWidget->cellWidget(i,11);
- if(widget)
- {
- if(btn==qobject_cast<QPushButton*>(widget))
- {
- QTableWidgetItem *item1 = ui->tableWidget->item(i,2);
- QTableWidgetItem *item2 = ui->tableWidget->item(i,3);
- emit rowButtonClicked("HOTAREA",item1->data(Qt::UserRole).toString()+"-"+item2->data(Qt::UserRole).toString());
- break;
- }
- }
- }
- }
- void FormShkjReserve::displayDetail(QString hmzs, QStringList infos, QStringList nums,QString dealstatus)
- {
- }
- void FormShkjReserve::download(QString srvID, QString qryID)
- {
- QString ssoHash = m_account.value("ssohash");
- if(ssoHash.isEmpty())
- {
- QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok);
- return;
- }
- if(srvID.isEmpty())
- {
- QMessageBox::critical(this,"提示","请先选择要下载的任务单!",QMessageBox::Ok);
- return ;
- }
- QString total;
- QString dealstatus;
- for(int i=0;i<ui->tableWidget->rowCount();i++)
- {
- QTableWidgetItem *item = ui->tableWidget->item(i,0);
- if(item)
- {
- if(srvID == item->data(Qt::UserRole).toString())
- {
- total = ui->tableWidget->item(i,4)->data(Qt::UserRole).toString();
- QLabel *lbl = qobject_cast<QLabel*>(ui->tableWidget->cellWidget(i,1));
- dealstatus = lbl->property("value").toString();
- break;
- }
- }
- }
- if(dealstatus.isEmpty()||total.isEmpty())
- {
- QMessageBox::critical(this,"提示","无法获取下载文件必要的信息!",QMessageBox::Ok);
- return ;
- }
- if(dealstatus=="2")
- {
- if(QMessageBox::Yes!=QMessageBox::question(NULL,
- "确认",
- QString("您需要消耗%1条下载量,是否继续?").arg(total)
- ,QMessageBox::Yes,QMessageBox::No))
- {
- return ;
- }
- }
- QString saveZipFileName = getSaveZipFileName(qryID);
- if(saveZipFileName.isEmpty())
- return ;
- QString cachePath = SNCDataBase::getShkjCachePath(srvID);
- bool iscached = false;
- if(!cachePath.isEmpty())
- {
- if(QFile::exists(cachePath))
- {
- iscached = true;
- }
- }
- this->setCursor(Qt::WaitCursor);
- if(iscached)
- {
- downloadFromLocal(saveZipFileName,cachePath);
- }
- else
- {
- downloadFromRemote(saveZipFileName,srvID,dealstatus,total);
- }
- this->setCursor(Qt::ArrowCursor);
- }
- void FormShkjReserve::downloadFromLocal(QString saveFileName,QString cacheFile)
- {
- QFile::copy(cacheFile,saveFileName);
- QMessageBox::information(this,"提示","下载成功!",QMessageBox::Ok);
- }
- void FormShkjReserve::downloadFromRemote(QString saveFileName,QString srvID,QString dealstatus,QString total)
- {
- QString ssoHash = m_account.value("ssohash");
- QString json = m_cubews->userServiceVerify("DlJSJCresultFile",QString("%1,%2").arg(dealstatus).arg(total),ssoHash);
- RespUserServiceVerify response1(json);
- if(response1.getRtnCode()<=0)
- {
- QMessageBox::critical(this,"提示",response1.getRtnMemo(),QMessageBox::Ok);
- return ;
- }
- // json = m_cubews->dlJSJCresultFile(srvID,ssoHash);
- // RespDlJSJCresultFile response(json);
- // if(response.getRtnCode()==1)
- // {
- // QString fileContent = response.getFileContent();
- // QByteArray array = QByteArray::fromBase64(fileContent.toAscii());
- // QFile file(saveFileName);
- // file.open(QIODevice::WriteOnly);
- // file.write(array);
- // file.close();
- // QString cachPath = cacheDownloadFile(saveFileName);
- // SNCDataBase::updateShkjCachePath(srvID,cachPath);
- // emit dataDownload();
- // QMessageBox::information(this,"提示","下载成功!",QMessageBox::Ok);
- // }
- // else
- // {
- // QMessageBox::critical(this,"提示",response.getRtnMemo(),QMessageBox::Ok);
- // }
- }
- QString FormShkjReserve::getSaveZipFileName(QString qryID)
- {
- QFileDialog::Options options;
- QString selectedFilter;
- QString exportDir = SNCDataBase::getExportDir();
- QString defaultZipFileName = QString("实号快检_%1.zip").arg(qryID);
- QString saveZipFileName = QFileDialog::getSaveFileName(this,"另存为",exportDir + "\\" + defaultZipFileName,
- tr("ZIP Files (*.zip)"),
- &selectedFilter,
- options);
- if(!saveZipFileName.isEmpty())
- {
- QFileInfo fileInfo(saveZipFileName);
- exportDir = fileInfo.absolutePath();
- SNCDataBase::updateExportDir(exportDir);
- }
- return saveZipFileName;
- }
- QString FormShkjReserve::cacheDownloadFile(QString fileName)
- {
- QString userCode = m_account.value("usercode");
- QString date = QDate::currentDate().toString("yyyyMM");
- QString cachePath = QCoreApplication::applicationDirPath()+\
- QString("/../data/%1/cache/shkj/download/%2/").arg(userCode).arg(date);
- QDir dir;
- dir.mkpath(cachePath);
- QFileInfo fileinfo(fileName);
- QFile::copy(fileName,cachePath + fileinfo.fileName());
- return cachePath + fileinfo.fileName();
- }
- bool FormShkjReserve::chkAccountState(AccountLoginState state)
- {
- bool ret = false;
- switch(state)
- {
- case NotLogin:
- QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok);
- break;
- case NotBind:
- QMessageBox::critical(this,"提示","此项服务尚未开通,请开通后再操作!",QMessageBox::Ok);
- break;
- case LoginError:
- QMessageBox::critical(this,"提示","此项服务暂时无法连接,请稍候重试!",QMessageBox::Ok);
- break;
- default:
- ret = true;
- }
- return ret;
- }
- void FormShkjReserve::on_pushButton_clicked()
- {
- if(!chkAccountState(m_state))
- return ;
- query();
- }
- void FormShkjReserve::on_pushButtonDel_clicked()
- {
- if(!chkAccountState(m_state))
- return ;
- if(QMessageBox::Yes!=QMessageBox::question(NULL,
- "确认",
- QString("您确定要删除吗?")
- ,QMessageBox::Yes,QMessageBox::No))
- {
- return ;
- }
- QString ssohash = m_account.value("ssohash");
- for(int i=0;i<ui->tableWidget->rowCount();i++)
- {
- QTableWidgetItem *item = ui->tableWidget->item(i,0);
- if(item)
- {
- if(item->checkState()==Qt::Checked)
- {
- QTableWidgetItem *item1 = ui->tableWidget->item(i,1);
- QString ordid = item1->data(Qt::UserRole).toString();
- QString json = m_cubews->delHmyy(ordid,ssohash);
- RespDelHmyy resp(json);
- }
- }
- }
- query();
- }
- void FormShkjReserve::on_checkBox_clicked()
- {
- for(int i=0;i<ui->tableWidget->rowCount();i++)
- {
- QTableWidgetItem *item = ui->tableWidget->item(i,0);
- if(item)
- {
- if(ui->checkBox->isChecked())
- {
- item->setCheckState(Qt::Checked);
- }
- else
- {
- item->setCheckState(Qt::Unchecked);
- }
- }
- }
- }
- void FormShkjReserve::on_tableWidget_clicked(const QModelIndex &index)
- {
- if(index.column()==0)
- {
- QTableWidgetItem *item = ui->tableWidget->item(index.row(),index.column());
- if(item)
- {
- if(item->checkState()==Qt::Checked)
- {
- ui->tableWidget->selectRow(index.row());
- }
- else
- {
- ui->tableWidget->selectRow(index.row());
- }
- }
- }
- }
- void FormShkjReserve::on_tableWidget_itemSelectionChanged()
- {
- for(int i=0;i<ui->tableWidget->rowCount();i++)
- {
- QTableWidgetItem *item = ui->tableWidget->item(i,0);
- if(item->isSelected())
- {
- item->setCheckState(Qt::Checked);
- }
- else
- {
- item->setCheckState(Qt::Unchecked);
- }
- }
- }
|