#include "formupload.h" #include "ui_formupload.h" #include "sncdatabase.h" #include "dialogsubmitresponsedetail.h" FormUpload::FormUpload(QWidget *parent) : QWidget(parent), ui(new Ui::FormUpload) { ui->setupUi(this); initVariables(); resetUI(); } void FormUpload::initVariables() { } FormUpload::~FormUpload() { delete ui; qDebug()<lineEditFilePath->setText(""); ui->lineEditMemo->setText(""); ui->lineEditFilePath->setReadOnly(true); } void FormUpload::setUserCode(QString userCode) { m_userCode = userCode; } //void FormUpload::setClientID(QString clientID) //{ // m_clientID = clientID; //} void FormUpload::on_pushButtonOpen_clicked() { QString selectedFilter; QFileDialog::Options options; QString suffix = "Text Files;Zip File (*.txt;*.zip;*.7z;*.rar)"; QString importDir = SNCDataBase::getImportDir(); if(importDir.isEmpty()) { importDir = QDesktopServices::storageLocation(QDesktopServices::DesktopLocation); } QString fileName = QFileDialog::getOpenFileName(this,"打开文件",importDir,suffix,&selectedFilter,options); QFileInfo fileInfo(fileName); if(!fileInfo.absolutePath().isEmpty()) SNCDataBase::updateImportDir(fileInfo.absolutePath()); if(fileName.isEmpty()) return ; resetUI(); ui->lineEditFilePath->setText(fileName); } void FormUpload::on_pushButtonSubmit_clicked() { QString filePath = ui->lineEditFilePath->text(); if(!QFile::exists(filePath)) { QMessageBox::critical(this,"提示","文件不存在!",QMessageBox::Ok); return ; } QString memo = ui->lineEditMemo->text(); QString fileType ; QString taskType ; if(ui->radioButtonNum->isChecked()) fileType = "1"; if(ui->radioButtonSeg->isChecked()) fileType = "2"; // if(this->ui->checkBoxMultiTask->isChecked()) // taskType = "2"; // else taskType = "1"; if(!prepareAddFile(filePath,fileType,taskType,memo)) return ; emit dataUpdated(); emit buttonCloseClicked(); } bool FormUpload::prepareAddFile(QString filePath,QString fileType,QString taskType,QString memo) { QFileInfo fileInfo(filePath); QString suffix = fileInfo.suffix(); int size = fileInfo.size()/1024/1024; QStringList cacheFiles; if(taskType == "1")//如果是单任务 { cacheFiles << filePath; } else//如果是多任务 { if(fileType=="2")//当文件类型为号段文件时,文件必须是文本格式,且到不能大于1M { if(suffix.toLower()!="txt" || size > 1) { QMessageBox::critical(this,"提示","号段文件必须文本格式,且文件大小不能大于1M",QMessageBox::Ok); return false; } cacheFiles = createCacheFilesBySegment(filePath); } else//当文件类型为号码文件时 { if(suffix.toLower()=="txt") { cacheFiles << filePath; } else { cacheFiles = createCacheFilesByUnzip(filePath); } } if(cacheFiles.size()==0) { QMessageBox::critical(this,"提示","您选择多任务模式,但无法对文件进行拆分,请检查文件格式是否有效",QMessageBox::Ok); return false; } } addUploadFile(cacheFiles,memo,fileType); return true; } QString FormUpload::prepareTempDir() { QString userCode = m_userCode; QString timeStamp = QDateTime::currentDateTime().toString("yyyyMMddhhmmss"); QString cachePath = QCoreApplication::applicationDirPath()+\ QString("/../data/%1/cache/wool/upload/%2/").arg(userCode).arg(timeStamp); QDir dir; dir.mkpath(cachePath); return cachePath; } QStringList FormUpload::createCacheFilesBySegment(QString filePath) { //读取文件内容并按照行分拆成单个文件 QFile fileRead(filePath); QString cachePath = prepareTempDir(); QStringList cacheFiles; bool succeed = true; if(cachePath.isEmpty()) { QMessageBox::critical(this,"提示","创建缓存目录失败",QMessageBox::Ok); succeed = false; } if(!fileRead.open(QIODevice::ReadOnly)) { QMessageBox::critical(this,"提示","文件读取失败",QMessageBox::Ok); fileRead.close(); succeed = false; } if(!succeed) { cacheFiles.clear(); return cacheFiles; } QTextStream in(&fileRead); while(!in.atEnd()) { QString line = in.readLine().trimmed(); if(!line.isEmpty()) { QString cacheFile = cachePath + line + ".txt"; QFile fileWrite(cacheFile); if(!fileWrite.open(QIODevice::WriteOnly)) { QMessageBox::critical(this,"提示","创建缓存文件失败",QMessageBox::Ok); fileWrite.close(); succeed = false; break; } QTextStream out(&fileWrite); out<