From 91f0fdd86c3eba4f949489328d2db954de5c0fd3 Mon Sep 17 00:00:00 2001 From: lvjunjie Date: Mon, 1 Jun 2026 09:44:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=BD=93=E5=89=8D=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E7=BB=93=E6=9E=9C=E7=9A=84=E4=BA=95=E4=B8=8B=E6=AC=A1?= =?UTF-8?q?=E6=89=93=E5=BC=80=E6=97=B6=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/nmNum/nmData/nmDataAnalyzeManager.cpp | 20 +++++++++++++++++++- Src/nmNum/nmSubWnd/nmSubWndMain.cpp | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp index 809e7dc..1fc172a 100644 --- a/Src/nmNum/nmData/nmDataAnalyzeManager.cpp +++ b/Src/nmNum/nmData/nmDataAnalyzeManager.cpp @@ -2885,6 +2885,12 @@ bool nmDataAnalyzeManager::ReadProjectData(const QString & filePath) return false; } + // 读取已保存的成果井名称,待井数据加载完成后恢复。 + QString sSavedCurWellName; + if(doc.HasMember("CurrentResultWellName") && doc["CurrentResultWellName"].IsString()) { + sSavedCurWellName = QString::fromUtf8(doc["CurrentResultWellName"].GetString()); + } + // 清空现有数据,确保从头加载新数据 foreach(nmDataFracture* pFractureData, m_vFractureData) { delete pFractureData; // 释放堆上分配的 nmDataFracture 对象 @@ -3138,7 +3144,11 @@ bool nmDataAnalyzeManager::ReadProjectData(const QString & filePath) ZxDataWell* pWellData = zxCurWell; // 查找是否有当前井的数据 nmDataWellBase* pCurWell = nullptr; - if(pWellData != nullptr) { + if(!sSavedCurWellName.isEmpty()) { + pCurWell = this->findWellByName(sSavedCurWellName); + } + + if(pCurWell == nullptr && pWellData != nullptr) { pCurWell = this->findWellByName(pWellData->getName()); } if (pCurWell != nullptr) @@ -3318,6 +3328,14 @@ bool nmDataAnalyzeManager::WriteProjectData(const QString & filePath) doc.AddMember("Wells", wellsJsonArray, allocator); + // 保存当前成果井名称,供下次加载成果时恢复。 + if(m_pCurDataWell != nullptr) { + QString sCurrentResultWellName = m_pCurDataWell->getWellName(); + doc.AddMember("CurrentResultWellName", + rapidjson::Value(sCurrentResultWellName.toStdString().c_str(), allocator).Move(), + allocator); + } + // 序列化 时间步数据 if(m_pTimeStep) { rapidjson::Value timeStepJson(rapidjson::kObjectType); diff --git a/Src/nmNum/nmSubWnd/nmSubWndMain.cpp b/Src/nmNum/nmSubWnd/nmSubWndMain.cpp index d749608..2c4a2dc 100644 --- a/Src/nmNum/nmSubWnd/nmSubWndMain.cpp +++ b/Src/nmNum/nmSubWnd/nmSubWndMain.cpp @@ -1620,6 +1620,8 @@ void nmSubWndMain::mergeAnaResultToFitting() if(pWellData == NULL) { return; } + // 同步当前查看井,保证保存成果时记录的是当前显示的结果井。 + pInstance->setCurWellData(pWellData); // 获取该井下存储的三条数据 vvecHistoryData = pWellData->getResultPressure(); vvecLogPreData = pWellData->getResultLogLog();