|
@@ -19,41 +19,10 @@ SPAServer::SPAServer()
|
|
}
|
|
}
|
|
|
|
|
|
m_threadRunning = true;
|
|
m_threadRunning = true;
|
|
|
|
+ /* 初始化WebAPI */
|
|
|
|
+ m_toEQMDataBase.initWebApi("http://192.1.3.133:31000/v6/", "", "4c2f9fc91c22dd98331e47af2e2964f4");
|
|
|
|
|
|
|
|
|
|
- // m_fromSuperBrain.getToken();
|
|
|
|
- // m_fromSuperBrain.getTaskTypeList(m_vecAlgorithmInfo);
|
|
|
|
- // m_fromSuperBrain.getDeviceList(m_vecDeviceInfo);
|
|
|
|
-
|
|
|
|
- // for(const auto& it : m_vecAlgorithmInfo)
|
|
|
|
- // {
|
|
|
|
- // SPDLOG_LOGGER_INFO(m_logger, "ActionID:{} ActionName:{} ActionTaskID:{}", it.ActionID, it.ActionName, it.ActionTaskID);
|
|
|
|
- // }
|
|
|
|
- // for(const auto& it : m_vecDeviceInfo)
|
|
|
|
- // {
|
|
|
|
- // SPDLOG_LOGGER_INFO(m_logger, "DeviceID:{} DeviceName:{} DeviceType:{}", it.DeviceID, it.DeviceName, it.DeviceType);
|
|
|
|
- // SPDLOG_LOGGER_INFO(m_logger, "Port:{} UserAccount:{} PWD:{}", it.DevicePort, it.UserAccount, it.UserPassword);
|
|
|
|
- // SPDLOG_LOGGER_INFO(m_logger, "ActionID:{} ActionName:{} ActionTaskID:{}", it.vecAlgorithmInfo[0].ActionID, it.vecAlgorithmInfo[0].ActionName, it.vecAlgorithmInfo[0].ActionTaskID);
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // m_fromRedis.setRedisIPAndPort("172.16.36.80", 32222);
|
|
|
|
- // m_fromRedis.setRedisPassword("Ff1z@TOFr^iwd%Ra");
|
|
|
|
- // m_fromRedis.connectRedis();
|
|
|
|
- // std::string value;
|
|
|
|
- // m_fromRedis.getRedisString("113:P100104000", value);
|
|
|
|
- // SPDLOG_LOGGER_INFO(m_logger, "{}", value);
|
|
|
|
- // m_fromRedis.disConnectRedis();
|
|
|
|
-
|
|
|
|
- //|FTP|192.1.2.178:32021|lh|DWw7V9u0|
|
|
|
|
-
|
|
|
|
- m_toEQMDataBase.initWebApi("http://192.1.3.133:31000/v6/", "", "4c2f9fc91c22dd98331e47af2e2964f4");
|
|
|
|
- AlgorithmInfo info;
|
|
|
|
- info.ActionID = "123";
|
|
|
|
- info.ActionName = "test";
|
|
|
|
- info.ActionTaskID = 456;
|
|
|
|
- QVector<AlgorithmInfo> vecInfo;
|
|
|
|
- vecInfo.push_back(info);
|
|
|
|
- m_toEQMDataBase.writeAlgorithmInfo(vecInfo);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -76,44 +45,83 @@ void SPAServer::startServer()
|
|
*/
|
|
*/
|
|
void SPAServer::fromSuperBrainThread()
|
|
void SPAServer::fromSuperBrainThread()
|
|
{
|
|
{
|
|
- SPDLOG_LOGGER_DEBUG(m_logger, "开启 fromSuperBrainThread 线程");
|
|
|
|
|
|
+ SPDLOG_LOGGER_INFO(m_logger, "开启 fromSuperBrainThread 线程");
|
|
|
|
+ /* 创建变量 */
|
|
|
|
+ std::vector<AlgorithmInfo> vecAlgInfo;
|
|
|
|
+ std::vector<DeviceInfo> vecDevInfo;
|
|
|
|
+ std::vector<AlgorithmInfo> vecAlgUpdate;
|
|
|
|
+ std::vector<AlgorithmInfo> vecAlgDelete;
|
|
|
|
+ /* 从EQM数据库中读取到数据信息到内存中,后续对比需要 */
|
|
|
|
+ m_toEQMDataBase.getAlgorithmInfo(m_vecEqmAlgInfo);
|
|
/* 获取一次token,后续失效了再获取 */
|
|
/* 获取一次token,后续失效了再获取 */
|
|
m_fromSuperBrain.getToken();
|
|
m_fromSuperBrain.getToken();
|
|
while (m_threadRunning)
|
|
while (m_threadRunning)
|
|
{
|
|
{
|
|
- SPDLOG_LOGGER_DEBUG(m_logger, "获取基础信息");
|
|
|
|
- std::vector<AlgorithmInfo> vecAlgInfo;
|
|
|
|
- std::vector<DeviceInfo> vecDevInfo;
|
|
|
|
|
|
+ SPDLOG_LOGGER_INFO(m_logger, "刷新算法和设备信息");
|
|
m_fromSuperBrain.getTaskTypeList(vecAlgInfo);
|
|
m_fromSuperBrain.getTaskTypeList(vecAlgInfo);
|
|
m_fromSuperBrain.getDeviceList(vecDevInfo);
|
|
m_fromSuperBrain.getDeviceList(vecDevInfo);
|
|
|
|
|
|
- /* 对比数据库表格信息 */
|
|
|
|
- std::vector<AlgorithmInfo> vecAlgUpdate;
|
|
|
|
- std::vector<AlgorithmInfo> vecAlgDelete;
|
|
|
|
- /* 取出要添加的 */
|
|
|
|
- for(const auto& it : vecAlgInfo)
|
|
|
|
|
|
+ /* 对比数据库表格信息,这里只有插入和删除,没有更新 */
|
|
|
|
+ compareAlgorithmInfo(vecAlgInfo, vecAlgUpdate, vecAlgDelete);
|
|
|
|
+ /* 更新数据库,先删除,再写入刷新 */
|
|
|
|
+ if(vecAlgDelete.size() > 0)
|
|
|
|
+ {
|
|
|
|
+ SPDLOG_LOGGER_DEBUG(m_logger, "删除算法信息");
|
|
|
|
+ m_toEQMDataBase.deleteAlgorithmInfo(vecAlgDelete);
|
|
|
|
+ }
|
|
|
|
+ if(vecAlgUpdate.size() > 0)
|
|
|
|
+ {
|
|
|
|
+ SPDLOG_LOGGER_DEBUG(m_logger, "写入算法信息");
|
|
|
|
+ m_toEQMDataBase.writeAlgorithmInfo(vecAlgUpdate);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ vecAlgInfo.clear();
|
|
|
|
+ vecDevInfo.clear();
|
|
|
|
+ vecAlgUpdate.clear();
|
|
|
|
+ vecAlgDelete.clear();
|
|
|
|
+ /* 再读取数据库,刷新本地存储 */
|
|
|
|
+ m_toEQMDataBase.getAlgorithmInfo(m_vecEqmAlgInfo);
|
|
|
|
+
|
|
|
|
+ std::this_thread::sleep_for(std::chrono::seconds(5));
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 对比现有的数据和新获取到的数据,取出要删除和添加的数据 */
|
|
|
|
+void SPAServer::compareAlgorithmInfo(const std::vector<AlgorithmInfo>& vecNewInfo, std::vector<AlgorithmInfo>& vecAlgUpdate, std::vector<AlgorithmInfo>& vecAlgDelete)
|
|
|
|
+{
|
|
|
|
+ /* 取出要添加的,如果本地缓存是0,那么全部都要添加 */
|
|
|
|
+ if(m_vecEqmAlgInfo.size() > 0)
|
|
|
|
+ {
|
|
|
|
+ for(const auto& it : vecNewInfo)
|
|
{
|
|
{
|
|
for(const auto& it0 : m_vecEqmAlgInfo)
|
|
for(const auto& it0 : m_vecEqmAlgInfo)
|
|
{
|
|
{
|
|
if(it.ActionID != it0.ActionID)
|
|
if(it.ActionID != it0.ActionID)
|
|
{
|
|
{
|
|
vecAlgUpdate.push_back(it);
|
|
vecAlgUpdate.push_back(it);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- /* 取出要删除的 */
|
|
|
|
|
|
+ }else {
|
|
|
|
+ vecAlgUpdate = vecNewInfo;
|
|
|
|
+ }
|
|
|
|
+ /* 取出要删除的,如果新的数据是0,那么全部都要删除 */
|
|
|
|
+ if(vecNewInfo.size() > 0)
|
|
|
|
+ {
|
|
for(const auto& it : m_vecEqmAlgInfo)
|
|
for(const auto& it : m_vecEqmAlgInfo)
|
|
{
|
|
{
|
|
- for(const auto& it0 : vecAlgInfo)
|
|
|
|
|
|
+ for(const auto& it0 : vecNewInfo)
|
|
{
|
|
{
|
|
if(it.ActionID != it0.ActionID)
|
|
if(it.ActionID != it0.ActionID)
|
|
{
|
|
{
|
|
vecAlgDelete.push_back(it);
|
|
vecAlgDelete.push_back(it);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
- std::this_thread::sleep_for(std::chrono::seconds(10));
|
|
|
|
|
|
+ }else {
|
|
|
|
+ vecAlgDelete = m_vecEqmAlgInfo;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|