|
|
|
|
@ -3376,7 +3376,7 @@ bool nmDataAnalyzeManager::WriteProjectData(const QString & filePath)
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool nmDataAnalyzeManager::saveNmResult(QString sRstCode, iSubWndFitting* pSubWndF)
|
|
|
|
|
bool nmDataAnalyzeManager::saveNmResult(QString sRstCode, iSubWndFitting* pSubWndF, bool bClearRoot)
|
|
|
|
|
{
|
|
|
|
|
Q_ASSERT(nullptr != pSubWndF);
|
|
|
|
|
// 通过窗口层上下文获取保存目录
|
|
|
|
|
@ -3387,11 +3387,13 @@ bool nmDataAnalyzeManager::saveNmResult(QString sRstCode, iSubWndFitting* pSubWn
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// sDir为当前成果窗口目录
|
|
|
|
|
// 保存前先清空成果ID目录下的旧内容,避免旧RstWnd目录或残留文件继续被加载
|
|
|
|
|
QString sResultRootPath = QFileInfo(sDir).dir().absolutePath();
|
|
|
|
|
if(!clearDirectoryContents(sResultRootPath)) {
|
|
|
|
|
return false;
|
|
|
|
|
// bClearRoot为true时清空整个成果目录,清理已删除窗口的残留数据。
|
|
|
|
|
// 仅在遍历保存的第一个窗口传入true,后续窗口传false避免误删其他窗口数据。
|
|
|
|
|
if(bClearRoot) {
|
|
|
|
|
QString sResultRootPath = QFileInfo(sDir).dir().absolutePath();
|
|
|
|
|
if(!clearDirectoryContents(sResultRootPath)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QString sResultPath = sDir + "/Results";
|
|
|
|
|
@ -3403,7 +3405,7 @@ bool nmDataAnalyzeManager::saveNmResult(QString sRstCode, iSubWndFitting* pSubWn
|
|
|
|
|
QString sWellHistoryDataPath = sDir + "/WellHistory";
|
|
|
|
|
this->ensureDirectoryExists(sWellHistoryDataPath);
|
|
|
|
|
|
|
|
|
|
QVector<nmDataWellBase*> vecAllWells = nmDataAnalyzeManager::getCurrentInstance()->getWellDataList(); // 获取所有井
|
|
|
|
|
QVector<nmDataWellBase*> vecAllWells = this->getWellDataList(); // 获取所有井
|
|
|
|
|
|
|
|
|
|
// 遍历所有井,保存历史数据
|
|
|
|
|
for(int wellIdx = 0; wellIdx < vecAllWells.size(); ++wellIdx) {
|
|
|
|
|
@ -3452,7 +3454,7 @@ bool nmDataAnalyzeManager::saveNmResult(QString sRstCode, iSubWndFitting* pSubWn
|
|
|
|
|
// 保存参与计算井的结果数据
|
|
|
|
|
QString sWellRstDataPath = sDir + "/WellRst";
|
|
|
|
|
this->ensureDirectoryExists(sWellRstDataPath);
|
|
|
|
|
QVector<QPair<NM_WELL_MODEL, QString>> vecWells = nmDataAnalyzeManager::getCurrentInstance()->getCalculationWells();
|
|
|
|
|
QVector<QPair<NM_WELL_MODEL, QString>> vecWells = this->getCalculationWells();
|
|
|
|
|
|
|
|
|
|
// 遍历每口井,保存里面计算出来的数据
|
|
|
|
|
for(int wellIdx = 0; wellIdx < vecWells.size(); ++wellIdx) {
|
|
|
|
|
@ -3464,7 +3466,7 @@ bool nmDataAnalyzeManager::saveNmResult(QString sRstCode, iSubWndFitting* pSubWn
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
nmDataWellBase* pWellData = nmDataAnalyzeManager::getCurrentInstance()->findWellByName(wellName);
|
|
|
|
|
nmDataWellBase* pWellData = this->findWellByName(wellName);
|
|
|
|
|
|
|
|
|
|
if(pWellData) {
|
|
|
|
|
this->saveWellCalRstData(sWellRstDataPath, pWellData);
|
|
|
|
|
|