소스 검색

V1.2.1
1、修复了点击修改设备、动作和时间不会将标志位置为true的问题

Apple 3 달 전
부모
커밋
3b84b9695e

+ 9 - 1
SwitchOnOff.sql

@@ -137,7 +137,6 @@ DROP TABLE IF EXISTS "EQM_CESHI"."tExecPlan";
 SELECT *
 FROM tExecPlanConfig;
 
-
 #清空表格
 DELETE
 FROM tExecPlanConfig;
@@ -167,3 +166,12 @@ WHERE "KeyWord" = :keyWord;
 DELETE
 FROM tExecPlanConfig
 WHERE KeyWord = :keyWord;
+
+
+#================================================================
+# 执行计划页面全局配置表格-tExecPlanConfig,单独获取某个关键字的数据
+#================================================================
+
+SELECT *
+FROM tExecPlanConfig
+WHERE KeyWord = :keyWord;

+ 1 - 1
TransmitterSwitch/ItemData/oneitem.cpp

@@ -308,7 +308,7 @@ void OneItem::do_devChanged(QString devName)
 /* 动作改变了 */
 void OneItem::do_actionChanged(QString action)
 {
-
+    emit signal_actionChanged();
 }
 
 /* 执行时间被点击了 */

+ 2 - 0
TransmitterSwitch/ItemData/oneitem.h

@@ -80,6 +80,8 @@ signals:
     void signal_execTimeClicked(QTime time);
     /* 设备改变了 */
     void signal_devChanged();
+    /* 动作修改了 */
+    void signal_actionChanged();
 
 public slots:
     /* 设置样式表,打开的样式表 */

+ 1 - 1
TransmitterSwitch/TransmitterSwitchInfo.h

@@ -131,7 +131,7 @@ public:
     const QMap<int, QString> KeyNotes = {
         {static_cast<int>(enum_ExecPlanConfig::DefaultPlan), "默认执行计划开关,0关,1开"},
         {static_cast<int>(enum_ExecPlanConfig::ExecMode), "执行模式,0按时刻,1按天"},
-        {static_cast<int>(enum_ExecPlanConfig::IsChanged), "是否修改,0未修改,1修改"}
+        {static_cast<int>(enum_ExecPlanConfig::IsChanged), "是否更新,0未修改,1修改"}
     };
 
 public:

+ 74 - 4
TransmitterSwitch/WebAPI/FromWebAPI.cpp

@@ -469,7 +469,7 @@ bool FromWebAPI::getConfigData(QMap<int, ConfigData>& list)
         return false;
     }
     nJson json0;
-    json0["opName"] = "ESMC_GetExecPlanConfig";
+    json0["opName"] = "ESM8C_GetExecPlanConfig";
     QString strCmd = QString::fromStdString(json0.dump());
     QString strRet;
     auto ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd, strRet, true);
@@ -500,17 +500,17 @@ bool FromWebAPI::getConfigData(QMap<int, ConfigData>& list)
         }
 
     } catch (const nJson::parse_error& e) {
-        LH_WRITE_ERROR(QString("解析模版编号失败:%1").arg(e.what()));
+        LH_WRITE_ERROR(QString("解析tExecPlanConfig数据失败:%1").arg(e.what()));
         return false;
     }
     catch (const nJson::exception& e)
     {
-        LH_WRITE_ERROR(QString("解析模版编号失败:%1").arg(e.what()));
+        LH_WRITE_ERROR(QString("解析tExecPlanConfig数据失败:%1").arg(e.what()));
         return false;
     }
     catch(...)
     {
-        LH_WRITE_ERROR("解析模版编号失败");
+        LH_WRITE_ERROR("解析tExecPlanConfig数据失败");
         return false;
     }
 
@@ -519,6 +519,76 @@ bool FromWebAPI::getConfigData(QMap<int, ConfigData>& list)
     return true;
 }
 
+/* 单独获取某个关键字的数据 */
+bool FromWebAPI::getConfigData(int key, ConfigData& data)
+{
+    if(m_httpApi == nullptr)
+    {
+        LH_WRITE_ERROR("WebAPI is nullptr");
+        return false;
+    }
+    nJson json0;
+    json0["opName"] = "ESM8C_GetExecPlanConfigOfKeyWord";
+    nJson json1;
+    json1["keyWord"] = key;
+    json0["paramList"] = json1;
+
+    QString strCmd = QString::fromStdString(json0.dump());
+    QString strRet;
+    auto ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_Select, strCmd, strRet, true);
+    if(ret < 0)
+    {
+        LH_WRITE_ERROR(QString("获取tExecPlanConfig表格数据失败:%1, 错误信息:%2").arg(ret).arg(m_httpApi->DoGetLastError(&ret)));
+        return false;
+    }
+    /* 解析获取到的JSON数据 */
+    LH_WRITE_LOG_DEBUG(strRet);
+    try{
+        nJson json1 = nJson::parse(strRet.toStdString());
+        int retCode = json1["code"].get<int>();
+        if(retCode != 0)
+        {
+            LH_WRITE_ERROR("获取tExecPlanConfig失败");
+            return false;
+        }
+        nJson result = json1["result"];
+        for(auto& it : result)
+        {
+            data.key = it["keyWord"].get<int>();
+            if(data.key != key)
+            {
+                LH_WRITE_ERROR("获取到的数据和传入的关键字不匹配");
+                continue;
+            }
+            data.value = it["value1"].get<int>();
+            data.updateTime = QDateTime::fromString(QString::fromStdString(it["updateTime"].get<std::string>()),"yyyy-MM-dd hh:mm:ss");
+            data.notes = QString::fromStdString(it["notes"].get<std::string>());
+            break;
+        }
+
+    } catch (const nJson::parse_error& e) {
+        LH_WRITE_ERROR(QString("解析tExecPlanConfig数据失败:%1").arg(e.what()));
+        return false;
+    }
+    catch (const nJson::exception& e)
+    {
+        LH_WRITE_ERROR(QString("解析tExecPlanConfig数据失败:%1").arg(e.what()));
+        return false;
+    }
+    catch(...)
+    {
+        LH_WRITE_ERROR("解析tExecPlanConfig数据失败");
+        return false;
+    }
+    if(data.key != key)
+    {
+        LH_WRITE_ERROR("获取到的数据和传入的关键字不匹配");
+        return false;
+    }
+
+    return true;
+}
+
 
 /* 获取EQM数据库中的模版编号 */
 bool FromWebAPI::getEQMTemplateID(QList<int>& listId)

+ 2 - 0
TransmitterSwitch/WebAPI/FromWebAPI.h

@@ -29,6 +29,8 @@ public:
     bool deleteConfigData(QMap<int, ConfigData>& list);
     /* 获取配置数据 */
     bool getConfigData(QMap<int, ConfigData>& list);
+    /* 单独获取某个关键字的数据 */
+    bool getConfigData(int key, ConfigData& data);
 
     /* 获取EQM数据库中的模版编号 */
     bool getEQMTemplateID(QList<int>& listId);

+ 26 - 9
TransmitterSwitch/transmitterswitch.cpp

@@ -255,20 +255,22 @@ void TransmitterSwitch::saveExecPlanToEQM()
     config2.updateTime = QDateTime::currentDateTime();
     CfgData.updateConfigData(config2);
 
-    /* 更新“计划是否更新”标志位 */
+    /* 更新“计划是否更新”标志位,在更新前需要先获取数据库的标志位,如果依旧为1,那么本地是否更改都设置为1 */
     ConfigData config3;
-    config3.key = static_cast<int>(enum_ExecPlanConfig::IsChanged);
-    config3.value = IData.isUpdate() ? 1 : 0;
+    if(!m_fromWebAPI->getConfigData(static_cast<int>(enum_ExecPlanConfig::IsChanged), config3))
+    {
+        config3.key = static_cast<int>(enum_ExecPlanConfig::IsChanged);
+    }
+    /* 只要数据库和本地更新标志位有一个为true,说明还未被读走,则设置标志位为true */
+    if((config3.value == 1) || IData.isUpdate())
+    {
+        config3.value = 1;
+    }
     config3.updateTime = QDateTime::currentDateTime();
     CfgData.updateConfigData(config3);
 
     /* 将配置写入数据库 */
-    if(m_fromWebAPI->insertConfigData(mapConfig))
-    {
-        TipWidget::display(TipWidget::OPERATOR_OK, "保存配置成功", this);
-    }else {
-        TipWidget::display(TipWidget::OPERATOR_FAIL, "保存配置失败", this);
-    }
+    m_fromWebAPI->insertConfigData(CfgData.getMapConfigData());
 
 }
 
@@ -396,6 +398,8 @@ void TransmitterSwitch::do_changeDev()
     }
     /* 取消报警 */
     one->hideWarn();
+    /* 设置更新标志位 */
+    IData.setUpdate(true);
 }
 
 /* 点击修改执行时间 */
@@ -441,6 +445,8 @@ void TransmitterSwitch::do_editExecTime(QTime t)
     one->hideWarn();
     /* 重新排序 */
     sortLayout(one->getWeekDay());
+    /* 设置更新标志位 */
+    IData.setUpdate(true);
 }
 
 
@@ -484,6 +490,15 @@ void TransmitterSwitch::do_editExecDate(QDate d)
     /* 重新排序 */
     sortLayout(one->getWeekDay());
 
+    /* 设置更新标志位 */
+    IData.setUpdate(true);
+}
+
+/* 修改了一个动作 */
+void TransmitterSwitch::do_editAction()
+{
+    /* 设置更新标志位 */
+    IData.isUpdate();
 }
 
 /* 导入数据 */
@@ -746,6 +761,7 @@ void TransmitterSwitch::addNormalOneItem(int week, QString devName, int actionID
     connect(one, &OneItem::signal_OneItemDelete, this, &TransmitterSwitch::do_deleteOneItem);
     connect(one, &OneItem::signal_devChanged, this, &TransmitterSwitch::do_changeDev);
     connect(one, &OneItem::signal_execTimeClicked, this, &TransmitterSwitch::do_editExecTime);
+    connect(one, &OneItem::signal_actionChanged, this, &TransmitterSwitch::do_editAction);
 
     /* 添加到容器中 */
     IData.addOneItem(week, one);
@@ -770,6 +786,7 @@ void TransmitterSwitch::addSpecialOneItem(int week, QString devName, int actionI
     connect(one, &OneItem::signal_devChanged, this, &TransmitterSwitch::do_changeDev);
     connect(one, &OneItem::signal_execTimeClicked, this, &TransmitterSwitch::do_editExecTime);
     connect(one, &OneItem::signal_dateClicked, this, &TransmitterSwitch::do_editExecDate);
+    connect(one, &OneItem::signal_actionChanged, this, &TransmitterSwitch::do_editAction);
 
     /* 添加到容器中 */
     IData.addOneItem(week, one);

+ 2 - 0
TransmitterSwitch/transmitterswitch.h

@@ -48,6 +48,8 @@ private slots:
     void do_editExecTime(QTime t);
     /* 点击修改日期 */
     void do_editExecDate(QDate d);
+    /* 修改了一个动作 */
+    void do_editAction();
 
     /* 导入模板 */
     void do_importData();