#include "autouploadfile.h" #include "sncdatabase.h" #include "wswool.h" #include "respsubmitfhymfile.h" #include "resppackmerge.h" #include "respuserserviceverify.h" #include "resppacktran.h" #include "fileprepare.h" #include "filesplitter.h" AutoUploadFile::AutoUploadFile() { m_stop = false; m_skip = false; m_moduleID = "wool"; m_wool = new WSWool(); } AutoUploadFile::~AutoUploadFile() { m_wool->abort(); delete m_wool; qDebug()<abort(); } void AutoUploadFile::setSkip(bool skip) { m_skip = skip; } void AutoUploadFile::setClientID(QString clientID) { m_clientID = clientID; } void AutoUploadFile::setHost(QString host, QString port) { m_host = host; m_port = port; // m_wool->setHost(m_host,m_port); } void AutoUploadFile::setAccountInfo(QMap accountInfo) { m_account = accountInfo; } void AutoUploadFile::run() { if(m_skip) return; m_stop = false; QString userCode = m_account.value("usercode"); QString userHash = m_account.value("ssohash"); if(userHash.isEmpty() || userCode.isEmpty()) return ; QMultiMap list = SNCDataBase::getAllUpload(m_moduleID,"",userCode); int cols = list.uniqueKeys().size(); int rows = 0; if(cols!=0) rows = list.size()/cols; for(int i=0;im_moduleID,this->m_clientID); if(!filePrepare.prepare()) { m_errCode = -1; m_errMsg = filePrepare.getRtnMsg(); return -1; } if(m_stop) { return 0; } QString userHash = m_account.value("ssohash"); QString funcName = "SubmitfhymFile"; QString json = m_wool->UserServiceVerify(funcName, QString("%1").arg(filePrepare.getCount()), userHash); RespUserServiceVerify response(json); if(response.getRtnCode()<=0) { m_errMsg = response.getRtnMemo(); m_errCode = -4; if(response.getRtnCode()==RTNCODE_NETWORK_ABORT) { return 0; } else if(response.getRtnCode()==RTNCODE_NETWORK_NOTAVAILABLE) { m_errCode = -2; return -1; } } FileSplitter splitter(filePrepare.getLastUploadFileName(),QString::number(fileid)); QStringList list = splitter.getSplitResult(); bool allupload = true; QString packName; for(int i=0;iPackTran(packName, userHash); RespPackTran response(json); if(response.getRtnCode()==1) { QFile::remove(packName); } else { m_errMsg = response.getRtnMemo(); m_errCode = -4; if(response.getRtnCode()==RTNCODE_NETWORK_ABORT) { return 0; } else if(response.getRtnCode()==RTNCODE_NETWORK_NOTAVAILABLE) { m_errCode = -2; return -1; } allupload = false; break; } SNCDataBase::updateFileUploadPercent(fileid,(i+1)*100.0/list.size()); emit uploadProgressUpdated(); } if(allupload) { splitter.cleanup(); QString json = m_wool->PackMerge(packName, userHash); RespPackMerge response(json); if(response.getRtnCode()==1) { json = m_wool->SubmitfhymFile(filePrepare.getLastUploadFileName(), response.getFileHash(), fileType, memo, userHash); RespSubmitFhymFile response(json); if(response.getRtnCode()==2) { m_errCode = 1; m_errMsg = "上传成功,号码全部接收。"; m_errDetail = response.getRtnMemo(); SNCDataBase::updateFileUploadSrvInfo(fileid,response.getTaskID(),response.getSubmitTime()); } else if(response.getRtnCode()==1) { m_errCode = 1; m_errMsg = "上传成功,文件中含有部分非法数据。"; m_errDetail = response.getRtnMemo(); SNCDataBase::updateFileUploadSrvInfo(fileid,response.getTaskID(),response.getSubmitTime()); } else { m_errMsg = response.getRtnMemo(); m_errCode = -4; if(response.getRtnCode()==RTNCODE_NETWORK_ABORT) { return 0; } else if(response.getRtnCode()==RTNCODE_NETWORK_NOTAVAILABLE) { m_errCode = -2; return -1; } } } else { m_errMsg = response.getRtnMemo(); m_errCode = -4; if(response.getRtnCode()==RTNCODE_NETWORK_ABORT) { return 0; } else if(response.getRtnCode()==RTNCODE_NETWORK_NOTAVAILABLE) { m_errCode = -2; return -1; } } } if(m_errCode<0) return -1; else return 1; }