Add check recon connection and restart create recon record.
This commit is contained in:
@@ -147,7 +147,10 @@ void DeviceManager::initDevice()
|
|||||||
connect(ReconManager::getInstance(), &ReconManager::createEmptyScanResponsed, this, &DeviceManager::processReconCreateEmptyScan);
|
connect(ReconManager::getInstance(), &ReconManager::createEmptyScanResponsed, this, &DeviceManager::processReconCreateEmptyScan);
|
||||||
connect(this, &DeviceManager::queryScanStatusToRecon, ReconManager::getInstance(), &ReconManager::queryReconStatus);
|
connect(this, &DeviceManager::queryScanStatusToRecon, ReconManager::getInstance(), &ReconManager::queryReconStatus);
|
||||||
connect(ReconManager::getInstance(), &ReconManager::queryReconStateResponsed, this, &DeviceManager::processReconQueryScanState);
|
connect(ReconManager::getInstance(), &ReconManager::queryReconStateResponsed, this, &DeviceManager::processReconQueryScanState);
|
||||||
|
connect(ReconManager::getInstance(), &ReconManager::restartCreatReconRecord, this, &DeviceManager::startCreateReconRecord);
|
||||||
|
connect(ReconManager::getInstance(), &ReconManager::checkReconConnectionResponsed, this, &DeviceManager::updateReconConnectionState);
|
||||||
mReconHttpThread->start();
|
mReconHttpThread->start();
|
||||||
|
QMetaObject::invokeMethod(ReconManager::getInstance(), "checkReconConnection", Qt::QueuedConnection);
|
||||||
|
|
||||||
//init dms status--------------------make a function future
|
//init dms status--------------------make a function future
|
||||||
if(JsonObject::Instance()->isDmsSimulator())
|
if(JsonObject::Instance()->isDmsSimulator())
|
||||||
@@ -855,7 +858,10 @@ void DeviceManager::processTransferProgress(const QString& aProgress)
|
|||||||
}
|
}
|
||||||
emitInfoCallback("Scan data transfer Succeeded!", MessageLevel::Sucess);
|
emitInfoCallback("Scan data transfer Succeeded!", MessageLevel::Sucess);
|
||||||
emit transferStatusUpdated();
|
emit transferStatusUpdated();
|
||||||
startCreateReconRecord();
|
if(ReconManager::getInstance()->isConnected())
|
||||||
|
{
|
||||||
|
startCreateReconRecord();
|
||||||
|
}
|
||||||
startTransfer();
|
startTransfer();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -973,6 +979,11 @@ void DeviceManager::initEmptyScanMeasurementID()
|
|||||||
|
|
||||||
void DeviceManager::updateReconState()
|
void DeviceManager::updateReconState()
|
||||||
{
|
{
|
||||||
|
if(!ReconManager::getInstance()->isConnected())
|
||||||
|
{
|
||||||
|
emitInfoCallback(tr("Recon disconnected."), MessageLevel::Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
QString sql = "SELECT ScanID FROM Scan WHERE State < 999 And State >= 300";
|
QString sql = "SELECT ScanID FROM Scan WHERE State < 999 And State >= 300";
|
||||||
auto result = SQLHelper::queryValues(sql);
|
auto result = SQLHelper::queryValues(sql);
|
||||||
QStringList scanIDs;
|
QStringList scanIDs;
|
||||||
@@ -1046,3 +1057,8 @@ void DeviceManager::controlDrainage(const QString& aCode)
|
|||||||
QString msg = tr("Open pump failed.");
|
QString msg = tr("Open pump failed.");
|
||||||
THROW_ERROR(msg);
|
THROW_ERROR(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeviceManager::updateReconConnectionState(bool aIsConnected)
|
||||||
|
{
|
||||||
|
EventCenter::Default()->triggerEvent(ReconConnectionUpdated, nullptr, (QObject*)&aIsConnected);
|
||||||
|
}
|
||||||
|
|||||||
@@ -92,7 +92,6 @@ private:
|
|||||||
void startScan(const QString& json, bool empty = false);
|
void startScan(const QString& json, bool empty = false);
|
||||||
void startPreview();
|
void startPreview();
|
||||||
void shutdown();
|
void shutdown();
|
||||||
void startCreateReconRecord();
|
|
||||||
|
|
||||||
//-----------------new
|
//-----------------new
|
||||||
DeviceStatus getDeviceStatus();
|
DeviceStatus getDeviceStatus();
|
||||||
@@ -129,6 +128,8 @@ private slots:
|
|||||||
void processReconCreateEmptyScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
void processReconCreateEmptyScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
||||||
void processReconCreateScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
void processReconCreateScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
||||||
void processReconQueryScanState(bool aResult, const QVariant& aState);
|
void processReconQueryScanState(bool aResult, const QVariant& aState);
|
||||||
|
void startCreateReconRecord();
|
||||||
|
void updateReconConnectionState(bool aIsConnected);
|
||||||
//GUI
|
//GUI
|
||||||
void scanTimeout();
|
void scanTimeout();
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,8 @@ ADD_EVENT_VALUE(ReloadLanguage)\
|
|||||||
ADD_EVENT_VALUE(WarnStateFlagChange)\
|
ADD_EVENT_VALUE(WarnStateFlagChange)\
|
||||||
ADD_EVENT_VALUE(GUIErrorRaise)\
|
ADD_EVENT_VALUE(GUIErrorRaise)\
|
||||||
ADD_EVENT_VALUE(DeviceInfoRaise)\
|
ADD_EVENT_VALUE(DeviceInfoRaise)\
|
||||||
ADD_EVENT_VALUE(RequestScreenSaver)
|
ADD_EVENT_VALUE(RequestScreenSaver)\
|
||||||
|
ADD_EVENT_VALUE(ReconConnectionUpdated)
|
||||||
|
|
||||||
enum GUIEvents {
|
enum GUIEvents {
|
||||||
#define ADD_EVENT_VALUE(val) val,
|
#define ADD_EVENT_VALUE(val) val,
|
||||||
|
|||||||
@@ -43,6 +43,14 @@ TopBarWidget::TopBarWidget(QWidget *parent, Qt::WindowFlags f) : QWidget(parent,
|
|||||||
nowDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
nowDate->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
|
||||||
auto linkIcon = new QLabel(this);
|
auto linkIcon = new QLabel(this);
|
||||||
linkIcon->setObjectName("link");
|
linkIcon->setObjectName("link");
|
||||||
|
QPixmap pixmap(":/icons/link_r.png");
|
||||||
|
linkIcon->setPixmap(pixmap);
|
||||||
|
connect(EventCenter::Default(), &EventCenter::ReconConnectionUpdated,[linkIcon](QObject*, QObject* msg)
|
||||||
|
{
|
||||||
|
bool* isConnected = (bool*)msg;
|
||||||
|
QPixmap pixmap(*isConnected ? ":/icons/link_g.png" : ":/icons/link_r.png");
|
||||||
|
linkIcon->setPixmap(QPixmap(pixmap));
|
||||||
|
});
|
||||||
auto readyIcon = new QLabel(this);
|
auto readyIcon = new QLabel(this);
|
||||||
readyIcon->setObjectName("ready");
|
readyIcon->setObjectName("ready");
|
||||||
auto lockIcon = new QLabel(this);
|
auto lockIcon = new QLabel(this);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
namespace {
|
namespace {
|
||||||
const char* CREATE_URL = "/Scan/Create/";
|
const char* CREATE_URL = "/Scan/Create/";
|
||||||
|
const char* CHECK_URL = "/v/";
|
||||||
const char* QUERY_SCAN_URL = "/Scan/Query/";
|
const char* QUERY_SCAN_URL = "/Scan/Query/";
|
||||||
const char* QUERY_VERSION_URL = "/Version/";
|
const char* QUERY_VERSION_URL = "/Version/";
|
||||||
const char* QUERY_RECON_URL = "/Task/Query/";
|
const char* QUERY_RECON_URL = "/Task/Query/";
|
||||||
@@ -30,7 +31,22 @@ namespace Recon {
|
|||||||
{
|
{
|
||||||
mHost = aHost;
|
mHost = aHost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RequestResult ReconClient::CheckActive(){
|
||||||
|
std::string content;
|
||||||
|
content.append("1");
|
||||||
|
auto resp = mRequest.post(mHost+CHECK_URL,content,mHeaders);
|
||||||
|
if (resp->httpCode() == 200){
|
||||||
|
delete resp;
|
||||||
|
return RequestResult::Success();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
mErrorMessage = resp->getContent();
|
||||||
|
delete resp;
|
||||||
|
return RequestResult::Fail(mErrorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RequestResult ReconClient::Create( const Scan& aScan)
|
RequestResult ReconClient::Create( const Scan& aScan)
|
||||||
{
|
{
|
||||||
cJSON * obj = cJSON_CreateObject();
|
cJSON * obj = cJSON_CreateObject();
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ namespace Recon {
|
|||||||
ReconClient(std::string aCerPath, std::string aKeyPath);
|
ReconClient(std::string aCerPath, std::string aKeyPath);
|
||||||
~ReconClient();
|
~ReconClient();
|
||||||
void SetHost(const std::string& aHost);
|
void SetHost(const std::string& aHost);
|
||||||
|
RequestResult CheckActive();
|
||||||
RequestResult Create(const Scan& aScan);
|
RequestResult Create(const Scan& aScan);
|
||||||
RequestResult QueryScan(const std::string& aScanID, int& state);
|
RequestResult QueryScan(const std::string& aScanID, int& state);
|
||||||
RequestResult QueryReconID(const std::string& aScanID, std::string& aReconID);
|
RequestResult QueryReconID(const std::string& aScanID, std::string& aReconID);
|
||||||
|
|||||||
@@ -2,12 +2,14 @@
|
|||||||
#include "ReconClient.h"
|
#include "ReconClient.h"
|
||||||
#include "json/jsonobject.h"
|
#include "json/jsonobject.h"
|
||||||
|
|
||||||
|
#include <QTimer>
|
||||||
#include "QDebug"
|
#include "QDebug"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
const std::string CRT_FILE = "./cfgs/client.crt";
|
const std::string CRT_FILE = "./cfgs/client.crt";
|
||||||
const std::string KEY_FILE = "./cfgs/client.key";
|
const std::string KEY_FILE = "./cfgs/client.key";
|
||||||
|
const int CHECK_RECON_CONNECTION_TIME = 30000;
|
||||||
|
|
||||||
std::string toReconServerAddress(const QString& aIp, const QString& aPort)
|
std::string toReconServerAddress(const QString& aIp, const QString& aPort)
|
||||||
{
|
{
|
||||||
@@ -24,8 +26,12 @@ ReconManager* ReconManager::getInstance()
|
|||||||
ReconManager::ReconManager(QObject* aParent)
|
ReconManager::ReconManager(QObject* aParent)
|
||||||
: QObject(aParent)
|
: QObject(aParent)
|
||||||
, mReconClient(new Recon::ReconClient(CRT_FILE, KEY_FILE))
|
, mReconClient(new Recon::ReconClient(CRT_FILE, KEY_FILE))
|
||||||
|
, mTimer(new QTimer(this))
|
||||||
|
, mIsConnected(false)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
|
connect(mTimer, &QTimer::timeout, this, &ReconManager::checkReconConnection);
|
||||||
|
mTimer->start(CHECK_RECON_CONNECTION_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReconManager::~ReconManager()
|
ReconManager::~ReconManager()
|
||||||
@@ -95,6 +101,20 @@ void ReconManager::queryReconStatus(const QStringList& aScanIDs)
|
|||||||
emit queryReconStateResponsed(true, QVariant::fromValue(result));
|
emit queryReconStateResponsed(true, QVariant::fromValue(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ReconManager::checkReconConnection()
|
||||||
|
{
|
||||||
|
auto response = mReconClient->CheckActive();
|
||||||
|
if(mIsConnected != response.good())
|
||||||
|
{
|
||||||
|
emit checkReconConnectionResponsed(response.good());
|
||||||
|
}
|
||||||
|
if(mIsConnected == false && response.good())
|
||||||
|
{
|
||||||
|
emit restartCreatReconRecord();
|
||||||
|
}
|
||||||
|
mIsConnected = response.good();
|
||||||
|
}
|
||||||
|
|
||||||
void ReconManager::setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort)
|
void ReconManager::setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort)
|
||||||
{
|
{
|
||||||
PACSSetting settings = {aClientAETitle.toStdString(), aServerAETitle.toStdString(), aServerIP.toStdString(), aServerPort};
|
PACSSetting settings = {aClientAETitle.toStdString(), aServerAETitle.toStdString(), aServerIP.toStdString(), aServerPort};
|
||||||
@@ -109,3 +129,8 @@ void ReconManager::setPacsSettings(const QString& aClientAETitle, const QString&
|
|||||||
|
|
||||||
emit setPacsSettingsResponsed(true, QVariant::fromValue(QString("Set PACS settings succeed.")));
|
emit setPacsSettingsResponsed(true, QVariant::fromValue(QString("Set PACS settings succeed.")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ReconManager::isConnected()
|
||||||
|
{
|
||||||
|
return mIsConnected;
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
|
class QTimer;
|
||||||
|
|
||||||
namespace Recon
|
namespace Recon
|
||||||
{
|
{
|
||||||
class ReconClient;
|
class ReconClient;
|
||||||
@@ -18,24 +20,30 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
void setReconIpAndPort(const QString& aIp, const QString& aPort);
|
void setReconIpAndPort(const QString& aIp, const QString& aPort);
|
||||||
|
bool isConnected();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void createEmptyScan(const QString& aScanID, const QString& aPath);
|
void createEmptyScan(const QString& aScanID, const QString& aPath);
|
||||||
void createScan(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath);
|
void createScan(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath);
|
||||||
void queryReconStatus(const QStringList& aScanIDs);
|
void queryReconStatus(const QStringList& aScanIDs);
|
||||||
void setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort);
|
void setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort);
|
||||||
|
void checkReconConnection();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
void restartCreatReconRecord();
|
||||||
void createEmptyScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
void createEmptyScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
||||||
void createScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
void createScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
||||||
void queryReconStateResponsed(bool aResult, const QVariant& aData);
|
void queryReconStateResponsed(bool aResult, const QVariant& aData);
|
||||||
void setPacsSettingsResponsed(bool aResult, const QVariant& aMessage);
|
void setPacsSettingsResponsed(bool aResult, const QVariant& aMessage);
|
||||||
|
void checkReconConnectionResponsed(bool aResult);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Recon::ReconClient* mReconClient;
|
Recon::ReconClient* mReconClient;
|
||||||
|
QTimer* mTimer;
|
||||||
|
bool mIsConnected;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RECONMANAGER_H
|
#endif // RECONMANAGER_H
|
||||||
|
|||||||
@@ -350,7 +350,6 @@ QLabel#link {
|
|||||||
max-width: 28px;
|
max-width: 28px;
|
||||||
min-height: 28px;
|
min-height: 28px;
|
||||||
max-height: 28px;
|
max-height: 28px;
|
||||||
qproperty-pixmap:url(":/icons/link_g.png");
|
|
||||||
qproperty-scaledContents:true;
|
qproperty-scaledContents:true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user