fix: Fix drainage do not dislpay complete dialog.

This commit is contained in:
sunwen
2025-07-09 15:52:58 +08:00
parent 9979b7941c
commit 7540a78d76
4 changed files with 28 additions and 19 deletions

View File

@@ -147,6 +147,7 @@ void DeviceManager::initDevice()
{ {
this->processDrainageResult("{\"code\":-1,\"info\":\"454\"}"); this->processDrainageResult("{\"code\":-1,\"info\":\"454\"}");
}); });
connect(EventCenter::Default(), &EventCenter::RequestAutoDrainage, this, &DeviceManager::startAutoDrainage);
mWaterfloodAction = new DmsAsyncAction(USRV_CONTROL, ACT_CTL_WINJECT, this, "responseWaterflood(const QString&)", this); mWaterfloodAction = new DmsAsyncAction(USRV_CONTROL, ACT_CTL_WINJECT, this, "responseWaterflood(const QString&)", this);
mWaterfloodAction->setTimeoutInterval(WATERPROCESS_TIMEOUT); mWaterfloodAction->setTimeoutInterval(WATERPROCESS_TIMEOUT);
connect(mWaterfloodAction, &DmsAsyncAction::timeout, [this]() connect(mWaterfloodAction, &DmsAsyncAction::timeout, [this]()
@@ -443,6 +444,11 @@ void DeviceManager::prepareFinishScan(bool isNormalFinish, const QString& aReaso
if(!mIsEmptyScan) if(!mIsEmptyScan)
{ {
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr); TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
if(mIsAutoDrainage)
{
mIsAutoDrainage = false;
exitWaterProcess();
}
} }
TRIGGER_EVENT(InvokeOperationEnd, nullptr, var); TRIGGER_EVENT(InvokeOperationEnd, nullptr, var);
return; return;
@@ -1183,24 +1189,33 @@ bool DeviceManager::getCEStatus()
void DeviceManager::startDrainage() void DeviceManager::startDrainage()
{ {
mIsAutoDrainage = false;
if(!mDrainageControlAction->execute()) if(!mDrainageControlAction->execute())
{ {
QString msg = tr("Open drain vavle failed."); QString msg = tr("Open drain vavle failed.");
emit startDrainageControlResult(false, msg); emit startDrainageControlResult(false);
THROW_ERROR(msg);
} }
} }
void DeviceManager::startAutoDrainage()
{
mIsAutoDrainage = true;
mDrainageControlAction->execute();
}
void DeviceManager::processDrainageResult(const QString& aResponse) void DeviceManager::processDrainageResult(const QString& aResponse)
{ {
QJsonObject jsonObj = toJsonObject(aResponse); QJsonObject jsonObj = toJsonObject(aResponse);
if(jsonObj["code"].toInt() == 0 ) if(jsonObj["code"].toInt() == 0 )
{ {
emit startDrainageControlResult(true); emit startDrainageControlResult(true, mIsAutoDrainage);
return; return;
} }
QString msg = tr("Open drain vavle failed.") + tr("\nError: ") + jsonObj["info"].toString(); QString msg = tr("Open drain vavle failed.") + tr("\nError: ") + jsonObj["info"].toString();
emit startDrainageControlResult(false, msg); emit startDrainageControlResult(false, mIsAutoDrainage);
THROW_ERROR(msg);
} }
void DeviceManager::startWaterflood() void DeviceManager::startWaterflood()
@@ -1273,6 +1288,7 @@ void DeviceManager::processWaterProcessExitResult(const QString &aResponse)
void DeviceManager::processWaterProcessFinishedResult(const QString &aResponse) void DeviceManager::processWaterProcessFinishedResult(const QString &aResponse)
{ {
mIsAutoDrainage = false;
QJsonObject jsonObj = toJsonObject(aResponse); QJsonObject jsonObj = toJsonObject(aResponse);
if(jsonObj["code"].toInt() == 0 ) if(jsonObj["code"].toInt() == 0 )
{ {

View File

@@ -105,6 +105,7 @@ private:
bool startCEScan(); bool startCEScan();
void initEmptyScanMeasurementID(); void initEmptyScanMeasurementID();
void startDrainage(); void startDrainage();
void startAutoDrainage();
void startWaterflood(); void startWaterflood();
void startWaterClean(); void startWaterClean();
void exitWaterProcess(); void exitWaterProcess();
@@ -184,7 +185,7 @@ signals:
void initializeFinished(); void initializeFinished();
void initializeProgress(const QString& aProgress); void initializeProgress(const QString& aProgress);
void startPreviewScanResult(bool aIsSucessful); void startPreviewScanResult(bool aIsSucessful);
void startDrainageControlResult(bool aIsSucessful, const QString& aMessage = ""); void startDrainageControlResult(bool aIsSucessful, bool aIsAutoDrainage = false);
void startWaterfloodResult(bool aIsSucessful); void startWaterfloodResult(bool aIsSucessful);
void startWaterCleanResult(bool aIsSucessful); void startWaterCleanResult(bool aIsSucessful);
void exitWaterProcessResult(bool aIsSucessful); void exitWaterProcessResult(bool aIsSucessful);
@@ -210,6 +211,7 @@ private:
bool mIsInitializing = false; bool mIsInitializing = false;
bool mIsAutoLocating = false; bool mIsAutoLocating = false;
bool mIsFirstInTransferPorgress = false; bool mIsFirstInTransferPorgress = false;
bool mIsAutoDrainage = false;
QString mCurrentScanMeasurementID = ""; QString mCurrentScanMeasurementID = "";
QString mCurrentEmptyMeasurementID = ""; QString mCurrentEmptyMeasurementID = "";

View File

@@ -149,10 +149,9 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout)
} }
}); });
connect(EventCenter::Default(), &EventCenter::RequestAutoDrainage, mDrainageButton, &QToolButton::click);
connect(mDrainageButton, &QToolButton::clicked, [=](bool aStatus) connect(mDrainageButton, &QToolButton::clicked, [=](bool aStatus)
{ {
if(!mIsAutoDrainage &&aStatus && DialogManager::Default()->requestAlertMessage(tr("Please confirm if drainage is required ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected) if(aStatus && DialogManager::Default()->requestAlertMessage(tr("Please confirm if drainage is required ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected)
{ {
mDrainageButton->setChecked(!aStatus); mDrainageButton->setChecked(!aStatus);
return; return;
@@ -195,17 +194,17 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout)
} }
}); });
connect(DeviceManager::Default(), &DeviceManager::startDrainageControlResult, [this](bool aIsSucessful, const QString& aMessage) connect(DeviceManager::Default(), &DeviceManager::startDrainageControlResult, [this](bool aIsSucessful, bool aIsAutoDrainage)
{ {
if(aIsAutoDrainage)
{
return;
}
if(!aIsSucessful) if(!aIsSucessful)
{ {
setWaterProcessModeEnable(true); setWaterProcessModeEnable(true);
mDrainageButton->setChecked(false); mDrainageButton->setChecked(false);
mDrainageButton->setText(tr("Drain")); mDrainageButton->setText(tr("Drain"));
if(!mIsAutoDrainage)
{
EventCenter::Default()->triggerEvent(GUIEvents::GUIErrorRaise, nullptr, (QObject*)&aMessage);
}
} }
else else
{ {
@@ -284,11 +283,6 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout)
} }
finishWaterPorcess(mWaterProcessMode); finishWaterPorcess(mWaterProcessMode);
if(mIsAutoDrainage)
{
return;
}
QString message; QString message;
if(aIsSucessful) if(aIsSucessful)
{ {
@@ -390,10 +384,8 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout)
connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::fullScanDataExport, [this]() connect(ScanProcessSequence::getInstance(), &ScanProcessSequence::fullScanDataExport, [this]()
{ {
mScanProcessLabel->setText(tr("Data exporting, patient can leave the holder")); mScanProcessLabel->setText(tr("Data exporting, patient can leave the holder"));
mIsAutoDrainage = false;
if(ScanProcessSequence::getInstance()->getScanPositionSize() == 1 && JsonObject::Instance()->getAutoDrainage() == true) if(ScanProcessSequence::getInstance()->getScanPositionSize() == 1 && JsonObject::Instance()->getAutoDrainage() == true)
{ {
mIsAutoDrainage = true;
mScanProcessLabel->setText(tr("Data exporting, patient can leave the holder, drainage in progress.")); mScanProcessLabel->setText(tr("Data exporting, patient can leave the holder, drainage in progress."));
EventCenter::Default()->triggerEvent(GUIEvents::RequestAutoDrainage, nullptr, nullptr); EventCenter::Default()->triggerEvent(GUIEvents::RequestAutoDrainage, nullptr, nullptr);
} }

View File

@@ -53,7 +53,6 @@ private:
WaterProcessMode mWaterProcessMode; WaterProcessMode mWaterProcessMode;
WaterCleanStep mWaterCleanStep; WaterCleanStep mWaterCleanStep;
bool mIsWaterProcessing; bool mIsWaterProcessing;
bool mIsAutoDrainage;
void initCommandWidget(QHBoxLayout *layout); void initCommandWidget(QHBoxLayout *layout);
void initScanContent(); void initScanContent();