Prechádzať zdrojové kódy

V1.0
1、修复了很多bug

Apple 1 mesiac pred
rodič
commit
4acfc792c9

+ 1 - 1
CMakeLists.txt

@@ -7,7 +7,7 @@ set(CMAKE_AUTOUIC ON)
 set(CMAKE_AUTOMOC ON)
 set(CMAKE_AUTORCC ON)
 
-set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
 

+ 7 - 0
SwitchOnOff.sql

@@ -113,6 +113,13 @@ CREATE TABLE IF NOT EXISTS "EQM_CESHI"."tExecPlan" (
 )
 
 
+
+#根据PTTypeCode删除发射机计划
+DELETE
+FROM tExecPlan
+WHERE PTTypeCode = :PTTypeCode;
+
+
 #删除表格
 DROP TABLE IF EXISTS "EQM_CESHI"."tExecPlan";
 

+ 1 - 0
TransmitterSwitch/AddItem/addnormalitem.cpp

@@ -197,6 +197,7 @@ void AddNormalItem::do_selectDev()
 void AddNormalItem::do_selectAction()
 {
     m_action = ui->comBox_actionSelect->currentText();
+    m_actionID = ui->comBox_actionSelect->currentData().toInt();
 }
 
 /* 点击了时间选择按钮,打开时间选择器 */

+ 2 - 0
TransmitterSwitch/AddItem/addnormalitem.h

@@ -32,6 +32,7 @@ public:
     QString getDevName() const { return m_devName; }
     /* 获取动作 */
     QString getAction() const { return m_action; }
+    int getActionID() const { return m_actionID; }
     /* 获取时间 */
     QTime getTime() const { return m_time; }
     /* 判断是否添加设备 */
@@ -83,6 +84,7 @@ private:
 
     QString m_devName;                              /* 选择的设备 */
     QString m_action;                               /* 选择的动作 */
+    int m_actionID = 0;                             /* 动作ID */
     QTime m_time;                                   /* 执行的时间 */
 
     TimeWidget* m_timeWidget = nullptr;             /* 时间选择器 */

+ 1 - 0
TransmitterSwitch/AddItem/addspecialitem.cpp

@@ -206,6 +206,7 @@ void AddSpecialItem::do_selectDev()
 void AddSpecialItem::do_selectAction()
 {
     m_action = ui->comBox_actionSelect->currentText();
+    m_actionID = ui->comBox_actionSelect->currentData().toInt();
 }
 
 /* 点击了时间选择按钮,打开时间选择器 */

+ 2 - 0
TransmitterSwitch/AddItem/addspecialitem.h

@@ -39,6 +39,7 @@ public:
     QString getDevName() const { return m_devName; }
     /* 获取动作 */
     QString getAction() const { return m_action; }
+    int getActionID() const { return m_actionID; }
     /* 获取时间 */
     QTime getTime() const { return m_time; }
     /* 获取日期 */
@@ -94,6 +95,7 @@ private:
 
     QString m_devName;                              /* 选择的设备 */
     QString m_action;                               /* 选择的动作 */
+    int m_actionID = 0;                             /* 动作ID */
     QTime m_time;                                   /* 执行的时间 */
     QDate m_date;                                   /* 执行的日期 */
 

+ 7 - 1
TransmitterSwitch/ItemData/oneitem.cpp

@@ -186,7 +186,13 @@ QString OneItem::getActionName()
 /* 获取动作类型 */
 int OneItem::getActionNum()
 {
-    return ui->comboBox_action->currentIndex();
+    return ui->comboBox_action->currentData().toInt();
+}
+
+/* 设置动作ID */
+void OneItem::setActionNum(int num)
+{
+    ui->comboBox_action->setCurrentIndex(ui->comboBox_action->findData(num));
 }
 
 /* 添加设备 */

+ 3 - 1
TransmitterSwitch/ItemData/oneitem.h

@@ -49,8 +49,10 @@ public:
     void addActions();
     /* 获取动作名称 */
     QString getActionName();
-    /* 获取动作类型 */
+    /* 获取动作ID */
     int getActionNum();
+    /* 设置动作ID */
+    void setActionNum(int num);
     /* 添加所有设备 */
     void addDevice();
 

+ 1 - 0
TransmitterSwitch/Resource/QSS/black/SelectTime/timewidget.qss

@@ -13,6 +13,7 @@ QPushButton::hover[selected=true]
 
 QDateTimeEdit
 {
+	padding-left: 0px;
 	border: 0px solid #D8D8D8;
 }
 

+ 10 - 2
TransmitterSwitch/Resource/QSS/black/transmitterswitch.qss

@@ -145,13 +145,21 @@ QWidget#widget_bottom
     border-bottom: 1px solid rgba(255,255,255,0.15);
 }
 
-QPushButton#pBtn_addPlan, QPushButton#pBtn_clearPlan, QPushButton#pBtn_importPlan, QPushButton#pBtn_exportPlan
+QWidget#widget_bottom2
+{
+    border-radius: 0px 0px 0px 0px;
+    border-left: 1px solid rgba(255,255,255,0.15);
+    border-right: 1px solid rgba(255,255,255,0.15);
+    border-bottom: 1px solid rgba(255,255,255,0.15);
+}
+
+QPushButton#pBtn_addPlan, #pBtn_clearPlan, #pBtn_importPlan, #pBtn_exportPlan, #pBtn_savePlan, #pBtn_getPlan
 {
     background: rgba(255,255,255,0.08);
     border-radius: 4px 4px 4px 4px;
 }
 
-QPushButton#pBtn_addPlan:hover, #pBtn_clearPlan:hover, #pBtn_importPlan:hover, #pBtn_exportPlan:hover
+QPushButton#pBtn_addPlan:hover, #pBtn_clearPlan:hover, #pBtn_importPlan:hover, #pBtn_exportPlan:hover, #pBtn_savePlan:hover, #pBtn_getPlan:hover
 {
     background: #1a69b8;
     border-radius: 4px 4px 4px 4px;

+ 1 - 0
TransmitterSwitch/Resource/QSS/white/SelectTime/timewidget.qss

@@ -13,5 +13,6 @@ QPushButton::hover[selected=true]
 
 QDateTimeEdit
 {
+	padding-left: 0px;
 	border: 0px solid #D8D8D8;
 }

+ 10 - 2
TransmitterSwitch/Resource/QSS/white/transmitterswitch.qss

@@ -146,7 +146,15 @@ QWidget#widget_bottom
     border-bottom: 1px solid #DAE0F2;
 }
 
-QPushButton#pBtn_addPlan, QPushButton#pBtn_clearPlan, QPushButton#pBtn_importPlan, QPushButton#pBtn_exportPlan
+QWidget#widget_bottom2
+{
+    border-radius: 0px 0px 0px 0px;
+    border-left: 1px solid rgba(255,255,255,0.15);
+    border-right: 1px solid rgba(255,255,255,0.15);
+    border-bottom: 1px solid rgba(255,255,255,0.15);
+}
+
+QPushButton#pBtn_addPlan, #pBtn_clearPlan, #pBtn_importPlan, #pBtn_exportPlan, #pBtn_savePlan, #pBtn_getPlan
 {
     /* font-weight: 400; */
     font-size: 14px;
@@ -156,7 +164,7 @@ QPushButton#pBtn_addPlan, QPushButton#pBtn_clearPlan, QPushButton#pBtn_importPla
     border: 1px solid #E6E9F4;
 }
 
-QPushButton#pBtn_addPlan:hover, #pBtn_clearPlan:hover, #pBtn_importPlan:hover, #pBtn_exportPlan:hover
+QPushButton#pBtn_addPlan:hover, #pBtn_clearPlan:hover, #pBtn_importPlan:hover, #pBtn_exportPlan:hover, #pBtn_savePlan:hover, #pBtn_getPlan:hover
 {
     /* font-weight: 400; */
     font-size: 14px;

+ 44 - 26
TransmitterSwitch/WebAPI/FromWebAPI.cpp

@@ -49,6 +49,9 @@ bool FromWebAPI::initWebApi(const QString& url, const QString& serverID, const Q
         LH_WRITE_ERROR("Load WebAPI failed");
         return false;
     }
+    LH_WRITE_LOG_DEBUG(QString("URL:%1").arg(url));
+    LH_WRITE_LOG_DEBUG(QString("ServerID:%1").arg(serverID));
+    LH_WRITE_LOG_DEBUG(QString("ServerKey:%1").arg(serverKey));
 
     m_httpApi->DBInit(url.toStdString().c_str());
     
@@ -187,35 +190,50 @@ bool FromWebAPI::insertData(QList<ExecPlanItemInfo>& list)
     QDate zeroDate(1970,1,1);
     /* 写入数据 */
     nJson json0 = nJson::array();
-    for(auto& it : list)
-    {
-        nJson json1;
-        json1["opName"] = "ESM8C_InsertDataToExecPlan";
-        json1["Key"] = QUuid::createUuid().toString().toStdString();
-        nJson json2;
-        json2["ExecType"] = it.ExecType;
-        json2["WeekDay"] = it.WeekDay;
-        json2["Date"] = it.date.toString("yyyy-MM-dd").toStdString();
-        json2["ExecTime"] = it.execTime.toString("hh:mm:ss").toStdString();
-        json2["DeviceName"] = it.devName.toStdString();
-        json2["ActionName"] = it.actionName.toStdString();
-        json2["ActionID"] = static_cast<int>(it.actionID);
-        /* 根据设备名称找到设备信息 */
-        auto devInfo = DeviceContainer.getDevice(it.devName);
-        if(devInfo.PTTypeCode < 0)
+    try{
+        for(auto& it : list)
         {
-            LH_WRITE_ERROR(QString("未找到设备:%1").arg(it.devName));
-            continue;
-        }
-        json2["PTTypeCode"] = devInfo.PTTypeCode;
-        json2["DID"] = devInfo.DID;
-        json2["MPID"] = devInfo.MPID;
-        json2["ChannelID"] = devInfo.ChannelID;
+            nJson json1;
+            json1["opName"] = "ESM8C_InsertDataToExecPlan";
+            json1["Key"] = QUuid::createUuid().toString().toStdString();
+            nJson json2;
+            json2["ExecType"] = it.ExecType;
+            json2["WeekDay"] = it.WeekDay;
+            json2["Date"] = it.date.toString("yyyy-MM-dd").toStdString();
+            json2["ExecTime"] = it.execTime.toString("hh:mm:ss").toStdString();
+            json2["DeviceName"] = it.devName.toStdString();
+            json2["ActionName"] = it.actionName.toStdString();
+            json2["ActionID"] = static_cast<int>(it.actionID);
+            /* 根据设备名称找到设备信息 */
+            auto devInfo = DeviceContainer.getDevice(it.devName);
+            if(devInfo.PTTypeCode < 0)
+            {
+                LH_WRITE_ERROR(QString("未找到设备:%1").arg(it.devName));
+                continue;
+            }
+            json2["PTTypeCode"] = devInfo.PTTypeCode;
+            json2["DID"] = devInfo.DID;
+            json2["MPID"] = devInfo.MPID;
+            json2["ChannelID"] = devInfo.ChannelID;
 
 
-        json1["paramList"] = json2;
+            json1["paramList"] = json2;
 
-        json0.push_back(json1);
+            json0.push_back(json1);
+        }
+    }catch (const nJson::parse_error& e) {
+        SPDLOG_ERROR("生成json数据失败:{}", e.what());
+        return false;
+    }
+    catch (const nJson::exception& e)
+    {
+        SPDLOG_ERROR("生成json数据失败:{}", e.what());
+        return false;
+    }
+    catch (...)
+    {
+        SPDLOG_ERROR("生成json数据失败");
+        return false;
     }
 
 
@@ -437,7 +455,7 @@ bool FromWebAPI::deleteAllTransmitterPlan()
         listPttypeCodeID.append(it.PTTypeCode);
     }
     nJson json0;
-    json0["opName"] = "ESM8C_DeleteTransmitterPlan";
+    json0["opName"] = "ESM8C_DeleteRowBasePTTypeCode";
     for(const auto& it : listPttypeCodeID)
     {
         json0["paramList"].clear();

+ 48 - 10
TransmitterSwitch/transmitterswitch.cpp

@@ -68,6 +68,8 @@ TransmitterSwitch::TransmitterSwitch(QWidget *parent) :
     connect(ui->pBtn_importPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_importData);
     connect(ui->pBtn_exportPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_exportData);
     connect(ui->pBtn_clearPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_clearCurrentPage);
+    connect(ui->pBtn_savePlan, &QPushButton::clicked, this, &TransmitterSwitch::do_pBtn_savePlan);
+    connect(ui->pBtn_getPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_pBtn_getPlan);
 
     /* 设置QSS */
     // LHStyleManager::Instance()->AddWidget(this);
@@ -153,11 +155,11 @@ void TransmitterSwitch::getExecPlanFromEQM()
     {
         if (it.WeekDay < 8 && it.WeekDay >= 1)
         {
-            addNormalOneItem(it.WeekDay - 1, it.devName, it.actionName, it.execTime);
+            addNormalOneItem(it.WeekDay - 1, it.devName, it.actionID, it.execTime);
         }
         else if(it.WeekDay == 8)
         {
-            addSpecialOneItem(it.WeekDay - 1, it.devName, it.actionName, it.date, it.execTime);
+            addSpecialOneItem(it.WeekDay - 1, it.devName, it.actionID, it.date, it.execTime);
         
         }
     }
@@ -189,7 +191,7 @@ void TransmitterSwitch::saveExecPlanToEQM()
             info.ExecType = execType;
             info.devName = it1->getDevName();
             info.actionID = it1->getActionNum();
-            info.actionName = it1->getActionNum();
+            info.actionName = it1->getActionName();
             info.execTime = it1->getExecTime();
             info.date = it1->getDate();
             info.WeekDay = it1->getWeekDay() + 1;
@@ -263,7 +265,7 @@ void TransmitterSwitch::do_pBtnAddExecPlan()
         if(atf->isAddDev())
         {
             /* 添加计划 */
-            addNormalOneItem(weekDay, atf->getDevName(), atf->getAction(), atf->getTime());
+            addNormalOneItem(weekDay, atf->getDevName(), atf->getActionID(), atf->getTime());
         }
     }
     else
@@ -282,7 +284,7 @@ void TransmitterSwitch::do_pBtnAddExecPlan()
         if(atf->isAddDev())
         {
             /* 添加计划 */
-            addSpecialOneItem(weekDay, atf->getDevName(), atf->getAction(), atf->getDate(), atf->getTime());
+            addSpecialOneItem(weekDay, atf->getDevName(), atf->getActionID(), atf->getDate(), atf->getTime());
         }
     }
     /* 排序 */
@@ -454,13 +456,13 @@ void TransmitterSwitch::do_importData()
             for(const auto& it : list)
             {
                 // LH_WRITE_LOG_DEBUG(QString("DevName:%1, ExecTime:%2").arg(it.devName).arg(it.execTime.toString("hh:mm:ss")));
-                addNormalOneItem(weekDay, it.devName, it.actionName, it.execTime);
+                addNormalOneItem(weekDay, it.devName, it.actionID, it.execTime);
             }
         }else if (weekDay == 7)
         {
             for(const auto& it : list)
             {
-                addSpecialOneItem(weekDay, it.devName, it.actionName, it.date, it.execTime);
+                addSpecialOneItem(weekDay, it.devName, it.actionID, it.date, it.execTime);
             }
         }
         /* 排序 */
@@ -471,6 +473,10 @@ void TransmitterSwitch::do_importData()
 /* 导出数据 */
 void TransmitterSwitch::do_exportData()
 {
+    /* 先获取所有的模板名称 */
+    QStringList tabList;
+    m_fromWebAPI->getTemplateList(tabList);
+    /* 弹出导出页面 */
     std::shared_ptr<SaveToTemplate> stt = std::make_shared<SaveToTemplate>(this);
     stt->setQSS(EPConfig.getQSSPath());
     /* 注册事件过滤器 */
@@ -487,7 +493,7 @@ void TransmitterSwitch::do_exportData()
         stt->setItemEmpty(false);
     }
     /* 获取所有的模板名称,并设置 */
-    // stt->setTemplateName();
+    stt->setTemplateName(tabList);
 
     stt->exec();
     if(stt->isOk())
@@ -526,6 +532,36 @@ void TransmitterSwitch::do_deleteTemplate(QString name)
     m_fromWebAPI->deleteTemplate(name);
 }
 
+/* 保存计划到EQM数据库 */
+void TransmitterSwitch::do_pBtn_savePlan()
+{
+    /* 跳出弹窗提示 */
+    Warning w(this);
+    w.setQSS(EPConfig.getQSSPath());
+    w.setText("将计划保存到数据库?");
+    w.exec();
+    if(!w.isOk())
+    {
+        return;
+    }
+    saveExecPlanToEQM();
+}
+
+/* 从EQM数据库获取计划 */
+void TransmitterSwitch::do_pBtn_getPlan()
+{
+    /* 跳出弹窗提示 */
+    Warning w(this);
+    w.setQSS(EPConfig.getQSSPath());
+    w.setText("从数据库获取计划,将清空当前所有的计划,请注意保存当前计划!");
+    w.exec();
+    if(!w.isOk())
+    {
+        return;
+    }
+    getExecPlanFromEQM();
+}
+
 /* 切换亮色/暗色外观 */
 void TransmitterSwitch::do_setUIStyle()
 {
@@ -606,7 +642,7 @@ void TransmitterSwitch::createWeekWidget()
 
 
 /* 添加一个正常日的计划 */
-void TransmitterSwitch::addNormalOneItem(int week, QString devName, QString action, QTime execTime)
+void TransmitterSwitch::addNormalOneItem(int week, QString devName, int actionID, QTime execTime)
 {
     OneItem* one = new OneItem(false);
     /* 添加可选的设备 */
@@ -616,6 +652,7 @@ void TransmitterSwitch::addNormalOneItem(int week, QString devName, QString acti
     one->setDevName(devName);
     one->setExecTime(execTime);
     one->setWeekDay(week);
+    one->setActionNum(actionID);
 
     /* 连接删除项信号,执行时间改变信号 */
     connect(one, &OneItem::signal_OneItemDelete, this, &TransmitterSwitch::do_deleteOneItem);
@@ -627,7 +664,7 @@ void TransmitterSwitch::addNormalOneItem(int week, QString devName, QString acti
 }
 
 /* 添加一项特殊日计划 */
-void TransmitterSwitch::addSpecialOneItem(int week, QString devName, QString action, QDate date, QTime execTime)
+void TransmitterSwitch::addSpecialOneItem(int week, QString devName, int actionID, QDate date, QTime execTime)
 {
     OneItem* one = new OneItem(true);
     /* 添加可选的设备 */
@@ -638,6 +675,7 @@ void TransmitterSwitch::addSpecialOneItem(int week, QString devName, QString act
     one->setDate(date);
     one->setExecTime(execTime);
     one->setWeekDay(week);
+    one->setActionNum(actionID);
 
     /* 连接删除项信号,执行时间改变信号 */
     connect(one, &OneItem::signal_OneItemDelete, this, &TransmitterSwitch::do_deleteOneItem);

+ 7 - 2
TransmitterSwitch/transmitterswitch.h

@@ -58,6 +58,11 @@ private slots:
     /* 删除一个模板 */
     void do_deleteTemplate(QString name);
 
+    /* 保存计划到EQM数据库 */
+    void do_pBtn_savePlan();
+    /* 从EQM数据库获取计划 */
+    void do_pBtn_getPlan();
+
     /* 切换亮色/暗色外观 */
     void do_setUIStyle();
 
@@ -65,9 +70,9 @@ private:
     /* 创建一周8天的item页面 */
     void createWeekWidget();
     /* 添加一个正常日的计划 */
-    void addNormalOneItem(int week, QString devName, QString action, QTime execTime);
+    void addNormalOneItem(int week, QString devName, int actionID, QTime execTime);
     /* 添加一项特殊日计划 */
-    void addSpecialOneItem(int week, QString devName, QString action, QDate date, QTime execTime);
+    void addSpecialOneItem(int week, QString devName, int actionID, QDate date, QTime execTime);
 
     /* 重新排序布局 */
     void sortLayout(int weekDay);

+ 37 - 1
TransmitterSwitch/transmitterswitch.ui

@@ -374,12 +374,48 @@
           <rect>
            <x>353</x>
            <y>16</y>
+           <width>110</width>
+           <height>36</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>保存为模版</string>
+         </property>
+        </widget>
+       </widget>
+      </item>
+      <item>
+       <widget class="QWidget" name="widget_bottom2" native="true">
+        <property name="minimumSize">
+         <size>
+          <width>0</width>
+          <height>70</height>
+         </size>
+        </property>
+        <widget class="QPushButton" name="pBtn_savePlan">
+         <property name="geometry">
+          <rect>
+           <x>16</x>
+           <y>16</y>
+           <width>96</width>
+           <height>36</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>保存计划</string>
+         </property>
+        </widget>
+        <widget class="QPushButton" name="pBtn_getPlan">
+         <property name="geometry">
+          <rect>
+           <x>128</x>
+           <y>16</y>
            <width>96</width>
            <height>36</height>
           </rect>
          </property>
          <property name="text">
-          <string>导出模板</string>
+          <string>获取计划</string>
          </property>
         </widget>
        </widget>

+ 1 - 0
show1/widget.cpp

@@ -38,6 +38,7 @@ Widget::Widget(QWidget *parent) :
 
     m_tSwitch->DoInit(&initData);
     m_tSwitch->DoCreateWindow(1, ui->widget_content);
+    // m_tSwitch->DoGetExecPlanFromEQM();
 
     m_style = 1;
     // m_tSwitch->setWebAPIInfo("http://192.1.3.133:31000/v6/", "2e36b53ccd2a433b9a803b98d683ed91", "TMS");