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(this, &DeviceManager::queryScanStatusToRecon, ReconManager::getInstance(), &ReconManager::queryReconStatus);
|
||||
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();
|
||||
QMetaObject::invokeMethod(ReconManager::getInstance(), "checkReconConnection", Qt::QueuedConnection);
|
||||
|
||||
//init dms status--------------------make a function future
|
||||
if(JsonObject::Instance()->isDmsSimulator())
|
||||
@@ -855,7 +858,10 @@ void DeviceManager::processTransferProgress(const QString& aProgress)
|
||||
}
|
||||
emitInfoCallback("Scan data transfer Succeeded!", MessageLevel::Sucess);
|
||||
emit transferStatusUpdated();
|
||||
startCreateReconRecord();
|
||||
if(ReconManager::getInstance()->isConnected())
|
||||
{
|
||||
startCreateReconRecord();
|
||||
}
|
||||
startTransfer();
|
||||
break;
|
||||
}
|
||||
@@ -973,6 +979,11 @@ void DeviceManager::initEmptyScanMeasurementID()
|
||||
|
||||
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";
|
||||
auto result = SQLHelper::queryValues(sql);
|
||||
QStringList scanIDs;
|
||||
@@ -1046,3 +1057,8 @@ void DeviceManager::controlDrainage(const QString& aCode)
|
||||
QString msg = tr("Open pump failed.");
|
||||
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 startPreview();
|
||||
void shutdown();
|
||||
void startCreateReconRecord();
|
||||
|
||||
//-----------------new
|
||||
DeviceStatus getDeviceStatus();
|
||||
@@ -129,6 +128,8 @@ private slots:
|
||||
void processReconCreateEmptyScan(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 startCreateReconRecord();
|
||||
void updateReconConnectionState(bool aIsConnected);
|
||||
//GUI
|
||||
void scanTimeout();
|
||||
|
||||
|
||||
@@ -35,7 +35,8 @@ ADD_EVENT_VALUE(ReloadLanguage)\
|
||||
ADD_EVENT_VALUE(WarnStateFlagChange)\
|
||||
ADD_EVENT_VALUE(GUIErrorRaise)\
|
||||
ADD_EVENT_VALUE(DeviceInfoRaise)\
|
||||
ADD_EVENT_VALUE(RequestScreenSaver)
|
||||
ADD_EVENT_VALUE(RequestScreenSaver)\
|
||||
ADD_EVENT_VALUE(ReconConnectionUpdated)
|
||||
|
||||
enum GUIEvents {
|
||||
#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"));
|
||||
auto linkIcon = new QLabel(this);
|
||||
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);
|
||||
readyIcon->setObjectName("ready");
|
||||
auto lockIcon = new QLabel(this);
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <string>
|
||||
namespace {
|
||||
const char* CREATE_URL = "/Scan/Create/";
|
||||
const char* CHECK_URL = "/v/";
|
||||
const char* QUERY_SCAN_URL = "/Scan/Query/";
|
||||
const char* QUERY_VERSION_URL = "/Version/";
|
||||
const char* QUERY_RECON_URL = "/Task/Query/";
|
||||
@@ -30,7 +31,22 @@ namespace Recon {
|
||||
{
|
||||
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)
|
||||
{
|
||||
cJSON * obj = cJSON_CreateObject();
|
||||
|
||||
@@ -11,6 +11,7 @@ namespace Recon {
|
||||
ReconClient(std::string aCerPath, std::string aKeyPath);
|
||||
~ReconClient();
|
||||
void SetHost(const std::string& aHost);
|
||||
RequestResult CheckActive();
|
||||
RequestResult Create(const Scan& aScan);
|
||||
RequestResult QueryScan(const std::string& aScanID, int& state);
|
||||
RequestResult QueryReconID(const std::string& aScanID, std::string& aReconID);
|
||||
|
||||
@@ -2,12 +2,14 @@
|
||||
#include "ReconClient.h"
|
||||
#include "json/jsonobject.h"
|
||||
|
||||
#include <QTimer>
|
||||
#include "QDebug"
|
||||
|
||||
namespace
|
||||
{
|
||||
const std::string CRT_FILE = "./cfgs/client.crt";
|
||||
const std::string KEY_FILE = "./cfgs/client.key";
|
||||
const int CHECK_RECON_CONNECTION_TIME = 30000;
|
||||
|
||||
std::string toReconServerAddress(const QString& aIp, const QString& aPort)
|
||||
{
|
||||
@@ -24,8 +26,12 @@ ReconManager* ReconManager::getInstance()
|
||||
ReconManager::ReconManager(QObject* aParent)
|
||||
: QObject(aParent)
|
||||
, mReconClient(new Recon::ReconClient(CRT_FILE, KEY_FILE))
|
||||
, mTimer(new QTimer(this))
|
||||
, mIsConnected(false)
|
||||
{
|
||||
init();
|
||||
connect(mTimer, &QTimer::timeout, this, &ReconManager::checkReconConnection);
|
||||
mTimer->start(CHECK_RECON_CONNECTION_TIME);
|
||||
}
|
||||
|
||||
ReconManager::~ReconManager()
|
||||
@@ -95,6 +101,20 @@ void ReconManager::queryReconStatus(const QStringList& aScanIDs)
|
||||
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)
|
||||
{
|
||||
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.")));
|
||||
}
|
||||
|
||||
bool ReconManager::isConnected()
|
||||
{
|
||||
return mIsConnected;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class QTimer;
|
||||
|
||||
namespace Recon
|
||||
{
|
||||
class ReconClient;
|
||||
@@ -18,24 +20,30 @@ public:
|
||||
|
||||
public:
|
||||
void setReconIpAndPort(const QString& aIp, const QString& aPort);
|
||||
bool isConnected();
|
||||
|
||||
public slots:
|
||||
void createEmptyScan(const QString& aScanID, const QString& aPath);
|
||||
void createScan(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID, const QString& aPath);
|
||||
void queryReconStatus(const QStringList& aScanIDs);
|
||||
void setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort);
|
||||
void checkReconConnection();
|
||||
|
||||
private:
|
||||
void init();
|
||||
|
||||
signals:
|
||||
void restartCreatReconRecord();
|
||||
void createEmptyScanResponsed(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 setPacsSettingsResponsed(bool aResult, const QVariant& aMessage);
|
||||
void checkReconConnectionResponsed(bool aResult);
|
||||
|
||||
private:
|
||||
Recon::ReconClient* mReconClient;
|
||||
QTimer* mTimer;
|
||||
bool mIsConnected;
|
||||
};
|
||||
|
||||
#endif // RECONMANAGER_H
|
||||
|
||||
@@ -350,7 +350,6 @@ QLabel#link {
|
||||
max-width: 28px;
|
||||
min-height: 28px;
|
||||
max-height: 28px;
|
||||
qproperty-pixmap:url(":/icons/link_g.png");
|
||||
qproperty-scaledContents:true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user