| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- #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()<<QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")\
- <<"FormWool.FormUpload Destroyed.";
- }
- void FormUpload::resetUI()
- {
- ui->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<<line;
- fileWrite.close();
- cacheFiles<<cacheFile;
- }
- }
- if(!succeed)
- {
- cacheFiles.clear();
- }
- return cacheFiles;
- }
- QStringList FormUpload::createCacheFilesByUnzip(QString filePath)
- {
- QString cachePath = prepareTempDir();
- QStringList cacheFiles;
- bool succeed = true;
- if(cachePath.isEmpty())
- {
- QMessageBox::critical(this,"提示","创建缓存目录失败",QMessageBox::Ok);
- succeed = false;
- }
- if(!succeed)
- {
- cacheFiles.clear();
- return cacheFiles;
- }
- //调用7z进行解压缩
- QProcess process;
- process.setWorkingDirectory(QCoreApplication::applicationDirPath());
- process.start("\"" + QCoreApplication::applicationDirPath() + "/7ze.exe\" e \"" + filePath\
- + "\" -o\"" + cachePath +"\" -y");
- process.waitForFinished();
- QDir dir(cachePath);
- QFileInfoList list = dir.entryInfoList();
- for(int i=0;i<list.size();i++)
- {
- if(list.at(i).isFile())
- {
- if(list.at(i).suffix().toLower()=="txt")
- cacheFiles<<list.at(i).absoluteFilePath();
- }
- }
- if(cacheFiles.size()==0)
- {
- QMessageBox::critical(this,"提示","压缩包无法解压或者没有包含有效的TXT文件",QMessageBox::Ok);
- }
- return cacheFiles;
- }
- void FormUpload::addUploadFile(QStringList filePaths, QString memo, QString fileType)
- {
- for(int i=0;i<filePaths.size();i++)
- {
- QString filePath = filePaths.at(i);
- QFileInfo fileInfo(filePath);
- QString fileName = fileInfo.fileName();
- SNCDataBase::addFileUpload("wool","",m_userCode,fileName,filePath,fileType,"1",memo);
- }
- }
- void FormUpload::on_pushButtonClose_clicked()
- {
- emit buttonCloseClicked();
- }
|