fix(nmNum): 收紧成果压力 Gauge 选择校验

- 非空压力 Gauge Code 必须唯一命中可参与历史计算的记录
- 拒绝仅包含一个压力点的选中压力记录
- 保持流量记录按井角色校验的现有规则
feature/nmNum-multi-gauge-record
lh 1 day ago
parent 011976390e
commit add2ec7b5f

@ -968,21 +968,21 @@ bool addUniquePayloadPath(
return true;
}
bool hasUniqueUsablePressureRecord(
bool hasUniqueSelectablePressureRecord(
const QVector<nmPressureGaugeRecord>& vecRecords,
const QString& sGaugeCode)
{
int nMatchCount = 0;
bool bUsable = false;
bool bSelectable = false;
for(int nIndex = 0; nIndex < vecRecords.size(); ++nIndex)
{
if(vecRecords[nIndex].sGaugeCode == sGaugeCode)
{
++nMatchCount;
bUsable = vecRecords[nIndex].eStatus == NM_GaugeRecord_Usable;
bSelectable = nmIsSelectablePressureRecord(vecRecords[nIndex]);
}
}
return nMatchCount == 1 && bUsable;
return nMatchCount == 1 && bSelectable;
}
const nmFlowGaugeRecord* findUniqueUsableFlowRecord(
@ -1015,7 +1015,7 @@ bool isWellGaugeSelectionValid(
const QVector<nmPressureGaugeRecord> vecPressureRecords =
pWell->getPressureRecords();
if(!sPressureCode.isEmpty() &&
!hasUniqueUsablePressureRecord(vecPressureRecords, sPressureCode))
!hasUniqueSelectablePressureRecord(vecPressureRecords, sPressureCode))
{
return false;
}
@ -6759,9 +6759,9 @@ bool nmDataAnalyzeManager::loadNmResultV3InPlace(
const QString sPressureCode =
pWell->getSelectedPressureGaugeCode();
if(!sPressureCode.isEmpty() &&
!hasUniqueUsablePressureRecord(
!hasUniqueSelectablePressureRecord(
oGaugeData.m_vecPressureRecords, sPressureCode)) {
qWarning() << "Loaded selected pressure Gauge Code is dangling:"
qWarning() << "Loaded selected pressure Gauge Code is invalid:"
<< sPressureCode;
return false;
}

Loading…
Cancel
Save