解释结论道的操作,保存slf文件。

This commit is contained in:
DESKTOP-450PEFP\mainc 2026-03-16 09:02:16 +08:00
parent cd829e4692
commit 7e5f4874da
4 changed files with 296 additions and 2 deletions

View File

@ -87,6 +87,7 @@ QString TransparentGroupResult::getIconName(const QMap<QString, QString>& zoneOr
} }
} }
if (iconshotname != "") { if (iconshotname != "") {
result = ::GetOilSymbolDir() + iconshotname + ".svg"; result = ::GetOilSymbolDir() + iconshotname + ".svg";
QDir fexit; QDir fexit;
@ -101,6 +102,7 @@ void TransparentGroupResult::addAllResultToPlot(LAYER_DATA* pResult)
QMap<QString, QString> zoneOrder = GetZoneOrder();//初始化ZoneOrder 层序号根据层位名来配置文件在conf\\RESULT.txt QMap<QString, QString> zoneOrder = GetZoneOrder();//初始化ZoneOrder 层序号根据层位名来配置文件在conf\\RESULT.txt
m_Remark = GBKToUTF8(pResult->Description10); m_Remark = GBKToUTF8(pResult->Description10);
m_nResult = pResult->Result;
// //
QDir fexit; QDir fexit;
QString result_str = QString::number(pResult->Result); QString result_str = QString::number(pResult->Result);
@ -183,6 +185,11 @@ QString TransparentGroupResult::getRemark()
return m_Remark; return m_Remark;
} }
int TransparentGroupResult::getNResult()
{
return m_nResult;
}
//设置解释结论 //设置解释结论
void TransparentGroupResult::setResult(QString filePath) void TransparentGroupResult::setResult(QString filePath)
{ {
@ -922,6 +929,7 @@ void TransparentGroupResult::onMouseRelease(QMouseEvent *event)
} }
} }
mPlot->replot(); mPlot->replot();
mPlot->SaveToSLF_Result();
} }
onMouseRelease_in(event); onMouseRelease_in(event);

View File

@ -38,6 +38,7 @@ public:
void setRemark(QString remark); void setRemark(QString remark);
QString getRemark(); QString getRemark();
int getNResult();
//设置解释结论 //设置解释结论
void setResult(QString filePath); void setResult(QString filePath);
@ -129,7 +130,7 @@ private:
QString m_Result; QString m_Result;
QString m_Remark=""; QString m_Remark="";
int m_nResult;
bool m_bSelect = false; bool m_bSelect = false;
DragMode mDragMode = DragNone; DragMode mDragMode = DragNone;

View File

@ -6901,6 +6901,7 @@ void QMyCustomPlot::DeleteItemGroup()
continue; continue;
pGroup->removeAllResult(); pGroup->removeAllResult();
} }
SaveToSLF_Result();
} }
} }
@ -6928,6 +6929,284 @@ void QMyCustomPlot::updateGroupZone()
nZid++; nZid++;
} }
this->replot(); this->replot();
SaveToSLF_Result();
}
bool QMyCustomPlot::SaveToSLF_Result()
{
static int isrun = false;
if (isrun) return false;
QString ss = m_strSlfName;
if (ss == "") return false;
isrun = true;
CMemRdWt *logio = new CMemRdWt();
if (ss == "" || !logio->Open(ss.toStdString().c_str(), CSlfIO::modeReadWrite))
{
delete logio;
QMessageBox::information(NULL, "提示", "SLF文件打开失败请检查", QMessageBox::Yes);
isrun = false;
return false;
}
int resultGroupSize = m_mapDragGroup.size();
bool isfirst = false;
int iIndex = logio->OpenTable(m_strLineName.toStdString().c_str());
if (iIndex < 0)
{
if (!resultGroupSize) {
delete logio;
isrun = false;
return false;
}
iIndex = logio->Open_Set_Table(m_strLineName.toStdString().c_str(), 0, 35,
"NO,SDEP,EDEP,ZONE,RESULTNO,THICK,TT,MDEPTH1,MDEPTH2,MDEPTH3,MDEPTH4,MDEPTH5,MDEPTH6,MDEPTH7,MDEPTH8,MDEPTH9,MDEPTH10,OIL,POOROIL,OILWATER,WATEROIL,GAS,POORGAS,GASWATER,WATERGAS,DEST1,DEST2,DEST3,DEST4,DEST5,DEST6,DEST7,DEST8,DEST9,DEST10,SDEP1,EDEP1,SDEP2,EDEP2,SDEP3,EDEP3,SDEP4,EDEP4,SDEP5,EDEP5,SDEP6,EDEP6,SDEP7,EDEP7,SDEP8,EDEP8,SDEP9,EDEP9,SDEP10,EDEP10",
"4,4,4,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,48,48,48,48,48,48,48,48,48,48,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",//字段长度
"1,4,4,6,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4",//字段类型
"0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0");//字段备注
isfirst = true;
}
logio->SetTableRecordCount(iIndex, resultGroupSize);//-nn);
if (!resultGroupSize) {
delete logio;
//if (isfirst)AddTableToWellRound();
isrun = false;
return false;
}
QMap<QString, QString> zoneOrder = GetZoneOrder();
LAYER_DATA m_Result;
QMap<double, TransparentGroupResult*> mapSortGroup;
QMap<QString, QObject*>::iterator it = m_mapDragGroup.begin();
for (; it != m_mapDragGroup.end(); ++it)
{
TransparentGroupResult *pGroup = qobject_cast<TransparentGroupResult *>(it.value());
if (pGroup == nullptr)
continue;
mapSortGroup.insert(pGroup->getRange().upper, pGroup);
}
QList<TransparentGroupResult*> listGroup = mapSortGroup.values();
for (int i = 0; i < listGroup.size(); i++)
{
TransparentGroupResult* pGroup = listGroup.at(i);
if (pGroup == NULL)
continue;
memset(&m_Result, 0, sizeof(LAYER_DATA));
m_Result.StartDepth = -pGroup->getRange().upper;
m_Result.EndDepth = -pGroup->getRange().lower;
m_Result.Result = pGroup->getNResult();
const QVector<QString>& vec = pGroup->getVecResult();
const QMap<QString, QObject*>& mapResult = pGroup->getMapDraggable_Result();
QVector<double> vecDepth;
QVector<int> vecResult;
//vecDepth << 0.0;
//vecResult << 0;
//QString strRet = "";
for (int k = 0; k < vec.size(); k++)
{
TransparentDraggableResult* pret = qobject_cast<TransparentDraggableResult*>(mapResult.value(vec.at(k)));
if (pret == NULL)
continue;
QCPRange rg = pret->getRange();
vecDepth << -rg.upper;
QFileInfo finfo(pret->getResult());
QString s = zoneOrder.value(finfo.baseName());
//QString str = QString("%1").arg(s.toInt(), 2, 10, QChar('0'));
//strRet += str;
vecResult << s.toInt();
}
QByteArray btzone = UTF8ToGBK(pGroup->getTitle());
strcpy(m_Result.Zone, btzone.data());
QByteArray btrmk = UTF8ToGBK(pGroup->getRemark());
strcpy(m_Result.Description10, btrmk.data());
//strcpy(m_Result.szResult, strRet.toStdString().c_str());
m_Result.Result = 0;
int n = vecDepth.size();
if (n > 0)
{
m_Result.Result = 10 * m_Result.Result + vecResult.at(0);
}
if (n > 1)
{
m_Result.MDepth1 = vecDepth.at(1);
m_Result.Result = 10 * m_Result.Result + vecResult.at(1);
}
if (n > 2)
{
m_Result.MDepth2 = vecDepth.at(2);
m_Result.Result = 10 * m_Result.Result + vecResult.at(2);
}
if (n > 3)
{
m_Result.MDepth3 = vecDepth.at(3);
m_Result.Result = 10 * m_Result.Result + vecResult.at(3);
}
if (n > 4)
{
m_Result.MDepth4 = vecDepth.at(4);
m_Result.Result = 10 * m_Result.Result + vecResult.at(4);
}
if (n > 5)
{
m_Result.MDepth5 = vecDepth.at(5);
m_Result.Result = 10 * m_Result.Result + vecResult.at(5);
}
if (n > 6)
{
m_Result.MDepth6 = vecDepth.at(6);
m_Result.Result = 10 * m_Result.Result + vecResult.at(6);
}
if (n > 7)
{
m_Result.MDepth7 = vecDepth.at(7);
m_Result.Result = 10 * m_Result.Result + vecResult.at(7);
}
if (n > 8)
{
m_Result.MDepth8 = vecDepth.at(8);
m_Result.Result = 10 * m_Result.Result + vecResult.at(8);
}
if (n > 9)
{
m_Result.MDepth9 = vecDepth.at(9);
m_Result.Result = 10 * m_Result.Result + vecResult.at(9);
}
if (n > 10)
{
m_Result.MDepth10 = vecDepth.at(10);
m_Result.Result = 10 * m_Result.Result + vecResult.at(10);
}
logio->WriteTable(iIndex, i + 1, &m_Result);
}
/*
foreach(WelllogItem*iter, items)
{
if (!iter) continue;
memset(&m_Result, 0, sizeof(LAYER_DATA));
m_Result.StartDepth = iter->GetTopDepth();
m_Result.EndDepth = iter->GetBottomDepth();
if (m_Result.EndDepth - m_Result.StartDepth <= 0) {
continue;
}
OGResultItem* pResult = dynamic_cast<OGResultItem*>(iter);
m_Result.Order = j;
m_Result.Result = 0;
m_Result.MDepth1 = pResult->m_MDepth1;
m_Result.MDepth2 = pResult->m_MDepth2;
m_Result.MDepth3 = pResult->m_MDepth3;
m_Result.MDepth4 = pResult->m_MDepth4;
m_Result.MDepth5 = pResult->m_MDepth5;
m_Result.MDepth6 = pResult->m_MDepth6;
m_Result.MDepth7 = pResult->m_MDepth7;
m_Result.MDepth8 = pResult->m_MDepth8;
m_Result.MDepth9 = pResult->m_MDepth9;
m_Result.MDepth10 = pResult->m_MDepth10;
QString innerresult = pResult->GetIntResult();
if (innerresult != "") m_Result.Result = innerresult.toInt();
if (m_Result.Result < 0) m_Result.Result = 0;
innerresult = pResult->GetIntResult1();
if (innerresult != ""&&m_Result.MDepth1)
{
m_Result.Result = 10 * m_Result.Result + innerresult.toInt();
}
innerresult = pResult->GetIntResult2();
if (innerresult != ""&&m_Result.MDepth2)
{
m_Result.Result = 10 * m_Result.Result + innerresult.toInt();
}
innerresult = pResult->GetIntResult3();
if (innerresult != ""&&m_Result.MDepth3) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
innerresult = pResult->GetIntResult4();
if (innerresult != ""&&m_Result.MDepth4) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
innerresult = pResult->GetIntResult5();
if (innerresult != ""&&m_Result.MDepth5) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
innerresult = pResult->GetIntResult6();
if (innerresult != ""&&m_Result.MDepth6) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
innerresult = pResult->GetIntResult7();
if (innerresult != ""&&m_Result.MDepth7) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
innerresult = pResult->GetIntResult8();
if (innerresult != ""&&m_Result.MDepth8) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
innerresult = pResult->GetIntResult9();
if (innerresult != ""&&m_Result.MDepth9) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
innerresult = pResult->GetIntResult10();
if (innerresult != ""&&m_Result.MDepth10) {
m_Result.Result = m_Result.Result * 10 + innerresult.toInt();
}
strcpy(m_Result.Zone, pResult->Zone.toStdString().c_str());
ComputeTT(m_Result,
pResult->result,
pResult->result1,
pResult->result2,
pResult->result3,
pResult->result4,
pResult->result5,
pResult->result6,
pResult->result7,
pResult->result8,
pResult->result9,
pResult->result10
);
strcpy(m_Result.Description1, pResult->Description1.toStdString().c_str());
strcpy(m_Result.Description2, pResult->Description2.toStdString().c_str());
strcpy(m_Result.Description3, pResult->Description3.toStdString().c_str());
strcpy(m_Result.Description4, pResult->Description4.toStdString().c_str());
strcpy(m_Result.Description5, pResult->Description5.toStdString().c_str());
strcpy(m_Result.Description6, pResult->Description6.toStdString().c_str());
strcpy(m_Result.Description7, pResult->Description7.toStdString().c_str());
strcpy(m_Result.Description8, pResult->Description8.toStdString().c_str());
strcpy(m_Result.Description9, pResult->Description9.toStdString().c_str());
strcpy(m_Result.Description10, pResult->Description10.toStdString().c_str());
m_Result.Sdep1 = pResult->m_SDEP1;
m_Result.Edep1 = pResult->m_EDEP1;
m_Result.Sdep2 = pResult->m_SDEP2;
m_Result.Edep2 = pResult->m_EDEP2;
m_Result.Sdep3 = pResult->m_SDEP3;
m_Result.Edep3 = pResult->m_EDEP3;
m_Result.Sdep4 = pResult->m_SDEP4;
m_Result.Edep4 = pResult->m_EDEP4;
m_Result.Sdep5 = pResult->m_SDEP5;
m_Result.Edep5 = pResult->m_EDEP5;
m_Result.Sdep6 = pResult->m_SDEP6;
m_Result.Edep6 = pResult->m_EDEP6;
m_Result.Sdep7 = pResult->m_SDEP7;
m_Result.Edep7 = pResult->m_EDEP7;
m_Result.Sdep8 = pResult->m_SDEP8;
m_Result.Edep8 = pResult->m_EDEP8;
m_Result.Sdep9 = pResult->m_SDEP9;
m_Result.Edep9 = pResult->m_EDEP9;
m_Result.Sdep10 = pResult->m_SDEP10;
m_Result.Edep10 = pResult->m_EDEP10;
logio->WriteTable(iIndex, j + 1, &m_Result);
j++;
}
*/
logio->CloseTable(iIndex);
delete logio;
isrun = false;
return true;
} }
TransparentGroupResult* QMyCustomPlot::getCurGroupResult(double x_val) TransparentGroupResult* QMyCustomPlot::getCurGroupResult(double x_val)
@ -6976,6 +7255,8 @@ void QMyCustomPlot::segmentationInnerLayer()
return; return;
pClickGroup->segmentationInnerLayer(x_val); pClickGroup->segmentationInnerLayer(x_val);
SaveToSLF_Result();
} }
void QMyCustomPlot::segmentationIndependentLayer() void QMyCustomPlot::segmentationIndependentLayer()
@ -7067,7 +7348,7 @@ void QMyCustomPlot::segmentationIndependentLayer()
} }
pClickGroup->removeAllResult(); pClickGroup->removeAllResult();
this->replot(); this->replot();
SaveToSLF_Result();
} }
void QMyCustomPlot::splitIndependentLayer() void QMyCustomPlot::splitIndependentLayer()
@ -7086,6 +7367,7 @@ void QMyCustomPlot::splitIndependentLayer()
// 删除原来的复合层 // 删除原来的复合层
pClickGroup->removeAllResult(); pClickGroup->removeAllResult();
this->replot(); this->replot();
SaveToSLF_Result();
} }
void QMyCustomPlot::megResultLayer() void QMyCustomPlot::megResultLayer()
@ -7146,6 +7428,7 @@ void QMyCustomPlot::megResultLayer()
pNewG->addResultToPlot(r.first.lower, r.first.upper, r.second, strUuid); pNewG->addResultToPlot(r.first.lower, r.first.upper, r.second, strUuid);
} }
this->replot(); this->replot();
SaveToSLF_Result();
} }
bool QMyCustomPlot::getIsEditor() bool QMyCustomPlot::getIsEditor()

View File

@ -406,6 +406,8 @@ public slots:
void DeleteItemGroup(); void DeleteItemGroup();
void updateGroupZone(); //更新层号 void updateGroupZone(); //更新层号
bool SaveToSLF_Result();
TransparentGroupResult* getCurGroupResult(double x_val); TransparentGroupResult* getCurGroupResult(double x_val);
// 筛选出选中的Group 并且排序 // 筛选出选中的Group 并且排序
QMap<double, TransparentGroupResult*> getSelectGroupResult(); QMap<double, TransparentGroupResult*> getSelectGroupResult();