feat: Add empty scan data corrupted process.

This commit is contained in:
sunwen
2024-05-29 17:14:09 +08:00
parent 23a747bde4
commit e9396c3054
8 changed files with 35 additions and 7 deletions

View File

@@ -182,6 +182,7 @@ void DeviceManager::initDevice()
reconConnectionTimer->start(CHECK_RECON_CONNECTION_TIME); reconConnectionTimer->start(CHECK_RECON_CONNECTION_TIME);
ReconManager::getInstance()->moveToThread(mReconHttpThread); ReconManager::getInstance()->moveToThread(mReconHttpThread);
connect(ReconManager::getInstance(), &ReconManager::reconStateResponsed, UsctStateManager::getInstance(), &UsctStateManager::updateReconState); connect(ReconManager::getInstance(), &ReconManager::reconStateResponsed, UsctStateManager::getInstance(), &UsctStateManager::updateReconState);
connect(EventCenter::Default(), &EventCenter::LoginSuccess, ReconManager::getInstance(), &ReconManager::checkReconConnection);
connect(this, &DeviceManager::checkReconConnection, ReconManager::getInstance(), &ReconManager::checkReconConnection); connect(this, &DeviceManager::checkReconConnection, ReconManager::getInstance(), &ReconManager::checkReconConnection);
connect(reconConnectionTimer, &QTimer::timeout, this, &DeviceManager::prepareCheckReconConnection); connect(reconConnectionTimer, &QTimer::timeout, this, &DeviceManager::prepareCheckReconConnection);
connect(this, &DeviceManager::createEmptyScanToRecon, ReconManager::getInstance(), &ReconManager::createEmptyScan); connect(this, &DeviceManager::createEmptyScanToRecon, ReconManager::getInstance(), &ReconManager::createEmptyScan);
@@ -196,7 +197,6 @@ void DeviceManager::initDevice()
mTemperatureTimer = startTimer(GET_TEMPERATURE_TIME); mTemperatureTimer = startTimer(GET_TEMPERATURE_TIME);
//init dms status--------------------make a function future //init dms status--------------------make a function future
QMetaObject::invokeMethod(ReconManager::getInstance(), "checkReconConnection", Qt::QueuedConnection);
if(JsonObject::Instance()->isDmsSimulator()) if(JsonObject::Instance()->isDmsSimulator())
{ {
//set simulator //set simulator
@@ -346,7 +346,7 @@ void DeviceManager::processScanProgress(const QString& aProgress)
case 2: case 2:
{ {
ScanProcessSequence::getInstance()->fullScanDataExport(); ScanProcessSequence::getInstance()->fullScanDataExport();
QVariant var( (mIsEmptyScan ? QString("") : tr("Patient can leave.\nprogress:%1%")).arg(msg)); QVariant var( (mIsEmptyScan ? tr("progress:%1%") : tr("Patient can leave.\nprogress:%1%")).arg(msg));
TRIGGER_EVENT(InvokeOperationProgress, nullptr, (QObject *) &var); TRIGGER_EVENT(InvokeOperationProgress, nullptr, (QObject *) &var);
break; break;
} }
@@ -385,7 +385,10 @@ void DeviceManager::prepareFinishScan(bool isNormalFinish, const QString& aReaso
if(!isNormalFinish) if(!isNormalFinish)
{ {
TRIGGER_EVENT(InvokeOperationEnd, nullptr, var); TRIGGER_EVENT(InvokeOperationEnd, nullptr, var);
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr); if(!mIsEmptyScan)
{
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
}
return; return;
} }
@@ -1071,6 +1074,7 @@ void DeviceManager::processReconCreateEmptyScan(bool aResult, const QString& aSc
{ {
if(aResult) if(aResult)
{ {
UsctStateManager::getInstance()->setEmptyScanUpdateFlag(false);
QString sql = QString("UPDATE EScan set State = 300 where ScanID = '%1'").arg(aScanID); QString sql = QString("UPDATE EScan set State = 300 where ScanID = '%1'").arg(aScanID);
if(!SQLHelper::exec(sql)) if(!SQLHelper::exec(sql))
{ {

View File

@@ -86,9 +86,15 @@ void UsctStateManager::updateReconState(bool aIsConnected,int aState)
{ {
case ReconState: setState(ReconState, result); break; case ReconState: setState(ReconState, result); break;
case ReconDBState: setState(ReconDBState, result); break; case ReconDBState: setState(ReconDBState, result); break;
case ReconEmptyScanState: setState(ReconEmptyScanState, result); break;
case ReconPacsState: setState(ReconPacsState, result); break; case ReconPacsState: setState(ReconPacsState, result); break;
case ReconMppsState: setState(ReconMppsState, result); break; case ReconMppsState: setState(ReconMppsState, result); break;
case ReconEmptyScanState: setState(ReconEmptyScanState, result);
if(!mIsEmptyScanUpdateing && !result)
{
mIsEmptyScanUpdateing = true;
EventCenter::Default()->triggerEvent(EmptyScanDataCorrupted, nullptr, nullptr);
}
break;
default: break; default: break;
} }
} }
@@ -99,4 +105,9 @@ bool UsctStateManager::getState(UsctState aStateCode)
return mState[aStateCode]; return mState[aStateCode];
} }
void UsctStateManager::setEmptyScanUpdateFlag(bool aIsUpdating)
{
mIsEmptyScanUpdateing = aIsUpdating;
}

View File

@@ -26,6 +26,7 @@ public:
void setState(int aStateCode, bool aState); void setState(int aStateCode, bool aState);
void updateReconState(bool aIsConnected,int aState); void updateReconState(bool aIsConnected,int aState);
bool getState(UsctState aStateCode); bool getState(UsctState aStateCode);
void setEmptyScanUpdateFlag(bool aIsUpdating);
private: private:
QString getStateErrorMessage(int aStateCode); QString getStateErrorMessage(int aStateCode);
@@ -37,6 +38,7 @@ private:
private: private:
QMap<int, bool> mState; QMap<int, bool> mState;
bool mIsEmptyScanUpdateing = false;
}; };

View File

@@ -44,6 +44,7 @@ ADD_EVENT_VALUE(StartScanProcess)\
ADD_EVENT_VALUE(StopScanProcess)\ ADD_EVENT_VALUE(StopScanProcess)\
ADD_EVENT_VALUE(CurrentUserNameChanged)\ ADD_EVENT_VALUE(CurrentUserNameChanged)\
ADD_EVENT_VALUE(EmptyScanFinished)\ ADD_EVENT_VALUE(EmptyScanFinished)\
ADD_EVENT_VALUE(EmptyScanDataCorrupted)\
ADD_EVENT_VALUE(UserVerificationSuccess)\ ADD_EVENT_VALUE(UserVerificationSuccess)\
ADD_EVENT_VALUE(UsctStateUpdated)\ ADD_EVENT_VALUE(UsctStateUpdated)\
ADD_EVENT_VALUE(SetSelectedPatient)\ ADD_EVENT_VALUE(SetSelectedPatient)\

View File

@@ -179,7 +179,6 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout)
mScanProcessLabel->setText(getAutoLocateMessage()); mScanProcessLabel->setText(getAutoLocateMessage());
}); });
connect(EventCenter::Default(), &EventCenter::RequestFullScanStop, EventCenter::Default(), &EventCenter::StopScanProcess);
connect(EventCenter::Default(), &EventCenter::StopScanProcess, [this]() connect(EventCenter::Default(), &EventCenter::StopScanProcess, [this]()
{ {
mWorklistButton->setEnabled(true); mWorklistButton->setEnabled(true);

View File

@@ -49,7 +49,7 @@ void ReconManager::setReconIpAndPort(const QString& aIp, const QString& aPort)
void ReconManager::createEmptyScan(const QString& aScanID, const QString& aPath) void ReconManager::createEmptyScan(const QString& aScanID, const QString& aPath)
{ {
Scan empty{aScanID.toStdString(), "", "", aPath.toStdString(),0}; Scan empty{aScanID.toStdString(), "", "", "", aPath.toStdString(),0};
auto result = mReconClient->Create(empty); auto result = mReconClient->Create(empty);
if(result.good()) if(result.good())
{ {

View File

@@ -75,6 +75,7 @@ MainWindow::MainWindow(QWidget* aParent)
connect(EventCenter::Default(), &EventCenter::LoginSuccess, this,&MainWindow::checkEmptyScanValidity); connect(EventCenter::Default(), &EventCenter::LoginSuccess, this,&MainWindow::checkEmptyScanValidity);
connect(EventCenter::Default(), &EventCenter::EmptyScanFinished, this,&MainWindow::enableAllTabWidget); connect(EventCenter::Default(), &EventCenter::EmptyScanFinished, this,&MainWindow::enableAllTabWidget);
connect(EventCenter::Default(), &EventCenter::EmptyScanDataCorrupted, this, &MainWindow::handleEmptyScanDataCorrupted);
connect(mTabWidget, &QTabWidget::currentChanged, this, [this](int aIndex) connect(mTabWidget, &QTabWidget::currentChanged, this, [this](int aIndex)
{ {
@@ -372,3 +373,12 @@ void MainWindow::enableAllTabWidget()
} }
} }
void MainWindow::handleEmptyScanDataCorrupted()
{
mTabWidget->setTabEnabled(0, false);
mTabWidget->setTabEnabled(1, false);
mTabWidget->setTabEnabled(2, false);
mTabWidget->setCurrentIndex(3);
DialogManager::Default()->requestAlertMessage(tr("Due to empty scan data corruption on the server, needs to be execute the empty scan. No other operations can be conducted until the scan is complete."), OkOnly, tr("Warning"));
}

View File

@@ -55,6 +55,7 @@ private:
void processShutdownDmsFailed(); void processShutdownDmsFailed();
void checkEmptyScanValidity(); void checkEmptyScanValidity();
void enableAllTabWidget(); void enableAllTabWidget();
void handleEmptyScanDataCorrupted();
private: private:
Ui::MainWindow* mUI; Ui::MainWindow* mUI;