Pārlūkot izejas kodu

V0.9.2
1、添加了清空页面的报警框
2、修改了数据库相关的参数,将DTID修改为MPID

Apple 3 mēneši atpakaļ
vecāks
revīzija
cda3a19bcd

+ 52 - 1
SwitchOnOff.sql

@@ -48,6 +48,9 @@ SELECT *
 FROM tExecPlanTemplate
 WHERE "TemplateName" = :templateName;
 
+SELECT *
+FROM TMONITORPIN;
+
 
 #插入数据
 INSERT INTO tExecPlanTemplate (TemplateName, ExecDate, ExecTime, DeviceName, ActionName, ActionID)
@@ -64,4 +67,52 @@ WHERE TemplateName = '模版3';
 
 DELETE
 FROM tExecPlanTemplate
-WHERE TemplateName = :templateName;
+WHERE TemplateName = :templateName;
+
+
+#===============================================
+# 发射机计划表格-tExecPlan
+#===============================================
+
+
+SELECT *
+FROM tExecPlan;
+
+#插入一行到发射机计划表格
+INSERT INTO "tExecPlan" ("ExecType", "WeekDay", "Date", "ExecTime", "DID", "MPID", "DeviceName", "PTTypeCode", "ActionID", "ActionName", "ChannelID")
+VALUES (:ExecType, :WeekDay, :Date, :ExecTime, :DID, :MPID, :DeviceName, :PTTypeCode, :ActionID, :ActionName, :ChannelID);
+
+
+#获取设备信息
+SELECT Dev.CHNID, Dev.DID, Dev.DTID, Dev.DNAME, Dev.DClass, Chn.CHNNAME, MP.MADDRESS, MP.MNAME, MP.MType, PT.PTTYPECODE, MP.MPID
+FROM "tDevice" AS Dev
+LEFT JOIN "tDeviceType" AS DT ON "Dev"."DTID" = "DT"."DTID"
+LEFT JOIN "tChannel" AS Chn ON "Dev"."CHNID" = "Chn"."CHNID"
+LEFT JOIN "tMonitorPin" AS MP ON "MP"."MPID" IN (
+    SELECT "MPID"
+    FROM "tDevicePin" AS DevPin
+    WHERE "DevPin"."DID" = "Dev"."DID"
+)
+LEFT JOIN "tPinType" AS PT ON "MP"."MType" = "PT"."PTID";
+
+
+#创建表格
+CREATE TABLE IF NOT EXISTS "EQM_CESHI"."tExecPlan" (
+    "IncKey" INT PRIMARY KEY AUTO_INCREMENT,
+    "ExecType" INT NOT NULL,
+    "WeekDay" INT,
+    "Date" VARCHAR(64),
+    "ExecTime" VARCHAR(64) NOT NULL,
+    "DID" INT,
+    "MPID" INT,
+    "DeviceName" VARCHAR(64),
+    "PTTypeCode" INT,
+    "ActionID" INT,
+    "ActionName" VARCHAR(64),
+    "ChannelID" INT
+)
+
+
+#删除表格
+DROP TABLE IF EXISTS "EQM_CESHI"."tExecPlan";
+

+ 75 - 3
TransmitterSwitch/ItemData/oneitem.cpp

@@ -2,10 +2,12 @@
 #include "ui_oneitem.h"
 
 #include <QFile>
+#include <QCalendarWidget>
 
 #include "LHQLogAPI.h"
 #include "TransmitterSwitchInfo.h"
 #include "customcombobox.h"
+#include "calendardtedit.h"
 
 // #include "lhstylemanager.h"
 
@@ -76,6 +78,15 @@ void OneItem::init()
     ui->dateEdit->setDisplayFormat("yyyy-MM-dd");
     /* 日期栏禁止滚轮滚动 */
     ui->dateEdit->installEventFilter(this);
+    // for(auto& it : ui->dateEdit->children())
+    // {
+    //     if(it->objectName() == "qt_spinbox_lineedit")
+    //     {
+    //         it->installEventFilter(this);
+    //     }
+    // }
+    /* 设置日期栏禁止输入 */
+    ui->dateEdit->setManualDisableEdit(true, true);
 
     /* 设置下拉框背景 */
     ui->comboBox_devName->setViewShadowEffect();
@@ -315,7 +326,7 @@ void OneItem::do_pBtn_close_clicked()
 /* 修改了执行日期 */
 void OneItem::do_dateChanged(const QDate date)
 {
-    LH_WRITE_LOG_DEBUG(QString("日期改变了:%1").arg(date.toString("yyyy-MM-dd")));
+    // LH_WRITE_LOG_DEBUG(QString("日期改变了:%1").arg(date.toString("yyyy-MM-dd")));
     m_date = date;
     emit signal_dateClicked(m_date);
 }
@@ -329,6 +340,7 @@ void OneItem::layoutInit()
     {
         ui->pBtn_execDate->hide();
         ui->pBtn_iconDate->hide();
+        ui->dateEdit->hide();
         /* 序号 */
         ui->label_num->move(18, 0);
         /* 设备名称 */
@@ -343,14 +355,16 @@ void OneItem::layoutInit()
         ui->pBtn_close->move(814, 0);
     }else 
     {
-        ui->pBtn_execDate->show();
-        ui->pBtn_iconDate->show();
+        ui->pBtn_execDate->hide();
+        ui->pBtn_iconDate->hide();
+        ui->dateEdit->show();
         /* 序号 */
         ui->label_num->move(18, 0);
         /* 设备名称 */
         ui->comboBox_devName->move(114, 0);
         /* 执行日期 */
         ui->pBtn_execDate->move(390, 0);
+        ui->dateEdit->move(390, 0);
         /* 执行日期图标 */
         ui->pBtn_iconDate->move(498, 8);
         /* 执行时间 */
@@ -388,6 +402,64 @@ bool OneItem::eventFilter(QObject *watched, QEvent *event)
         {
             return true;
         }
+        /* 鼠标进入 */
+        else if(event->type() == QEvent::Enter)
+        {
+            ui->dateEdit->setProperty("Hover", true);
+            ui->dateEdit->style()->unpolish(ui->dateEdit);
+            ui->dateEdit->style()->polish(ui->dateEdit);
+            return true;
+        }
+        /* 鼠标离开 */
+        else if(event->type() == QEvent::Leave)
+        {
+            ui->dateEdit->setProperty("Hover", false);
+            ui->dateEdit->style()->unpolish(ui->dateEdit);
+            ui->dateEdit->style()->polish(ui->dateEdit);
+            return true;
+        }
+    }
+    /* QDateEdit栏中间选择日期的位置 */
+    // else if(watched->objectName() == "qt_spinbox_lineedit")
+    // {
+    //     if(event->type() == QEvent::MouseButtonPress)
+    //     {
+    //         LH_WRITE_LOG_DEBUG("点击了日期区域");
+            
+    //         return true;
+    //     }
+    // }
+    else if(watched == ui->pBtn_execTime)
+    {
+        if(event->type() == QEvent::Enter)
+        {
+            ui->pBtn_execTime->setProperty("Hover", true);
+            ui->pBtn_execTime->style()->unpolish(ui->pBtn_execTime);
+            ui->pBtn_execTime->style()->polish(ui->pBtn_execTime);
+            return true;
+        }else if(event->type() == QEvent::Leave)
+        {
+            ui->pBtn_execTime->setProperty("Hover", false);
+            ui->pBtn_execTime->style()->unpolish(ui->pBtn_execTime);
+            ui->pBtn_execTime->style()->polish(ui->pBtn_execTime);
+            return true;
+        }
+    }
+    else if(watched == ui->pBtn_execDate)
+    {
+        if(event->type() == QEvent::Enter)
+        {
+            ui->pBtn_execDate->setProperty("Hover", true);
+            ui->pBtn_execDate->style()->unpolish(ui->pBtn_execDate);
+            ui->pBtn_execDate->style()->polish(ui->pBtn_execDate);
+            return true;
+        }else if(event->type() == QEvent::Leave)
+        {
+            ui->pBtn_execDate->setProperty("Hover", false);
+            ui->pBtn_execDate->style()->unpolish(ui->pBtn_execDate);
+            ui->pBtn_execDate->style()->polish(ui->pBtn_execDate);
+            return true;
+        }
     }
     else if(watched == ui->pBtn_close)
     {

+ 27 - 1
TransmitterSwitch/Resource/QSS/black/oneitem.qss

@@ -192,7 +192,8 @@ CalendarDTEdit
 	background-color: #313539;
     border-radius: 4px;
     padding-left:12px;
-    border: 1px solid rgba(255,255,255,0.15);
+    /* border: 1px solid rgba(255,255,255,0.15); */
+    border: 1px solid #313539;
 }
 
 CalendarDTEdit:hover
@@ -203,6 +204,14 @@ CalendarDTEdit:hover
     border: 1px solid #438EFF;
 }
 
+CalendarDTEdit[Hover = true]
+{
+	background-color: #313539;
+    border-radius: 4px;
+    padding-left:12px;
+    border: 1px solid #438EFF;
+}
+
 CalendarDTEdit[Warn=true]
 {
 	background-color: #313539;
@@ -223,3 +232,20 @@ CalendarDTEdit::drop-down
 	width: 16px;
     image: url(:/ICON/ICON/date_light.png);
 }
+
+/* QDateEdit
+{
+    background-color: #313539;
+    border-radius: 4px;
+    padding-left:12px;
+    border: 1px solid rgba(255,255,255,0.15);
+}
+
+QDateEdit:hover
+{
+    background-color: #313539;
+    border-radius: 4px;
+    padding-left:12px;
+    border: 1px solid #438EFF;
+} */
+

+ 3 - 1
TransmitterSwitch/Resource/QSS/black/transmitterswitch.qss

@@ -1,4 +1,6 @@
-
+*{
+    outline: none;
+}
 
 QWidget
 {

+ 8 - 0
TransmitterSwitch/Resource/QSS/white/oneitem.qss

@@ -207,6 +207,14 @@ CalendarDTEdit:hover
     border: 1px solid #4458FE;
 }
 
+CalendarDTEdit[Hover = true]
+{
+	background-color: #FFFFFF;
+    border-radius: 4px;
+    padding-left:12px;
+    border: 1px solid #438EFF;
+}
+
 CalendarDTEdit[Warn=true]
 {
 	background: #FFFFFF;

+ 3 - 0
TransmitterSwitch/Resource/QSS/white/transmitterswitch.qss

@@ -1,4 +1,7 @@
 
+*{
+    outline: none;
+}
 
 QWidget
 {

+ 2 - 0
TransmitterSwitch/TransmitterSwitchInfo.cpp

@@ -114,6 +114,7 @@ DeviceInfo::DeviceInfo(const DeviceInfo& devInfo)
     DevType = devInfo.DevType;
     DTID = devInfo.DTID;
     DID = devInfo.DID;
+    MPID = devInfo.MPID;
     ChannelID = devInfo.ChannelID;
 }
 
@@ -124,6 +125,7 @@ DeviceInfo& DeviceInfo::operator=(const DeviceInfo& devInfo)
     DevType = devInfo.DevType;
     DTID = devInfo.DTID;
     DID = devInfo.DID;
+    MPID = devInfo.MPID;
     ChannelID = devInfo.ChannelID;
     return *this;
 }

+ 1 - 0
TransmitterSwitch/TransmitterSwitchInfo.h

@@ -149,6 +149,7 @@ struct DeviceInfo
     // QPair<enum_DeviceMB, QString> devTypeMB;      /* 该设备是主设备还是备用设备 */
     int DID;                            /* 设备ID */
     int DTID;                           /* 设备类型ID */
+    int MPID;                           /* 监测点ID */
     int PTTypeCode;                     /* 端口类型编码 */
     int ChannelID;                      /* 通道ID */
 };

+ 4 - 2
TransmitterSwitch/WebAPI/FromWebAPI.cpp

@@ -117,6 +117,7 @@ bool FromWebAPI::getDeviceInfo(QMap<QString, DeviceInfo>& mapDevice)
             DevInfo.devName = devName;
             DevInfo.DID = it["did"].is_null() ? -1 : it["did"].get<int>();
             DevInfo.DTID = it["dtid"].is_null() ? -1 : it["dtid"].get<int>();
+            DevInfo.MPID = it["mpid"].is_null() ? -1 : it["mpid"].get<int>();
             DevInfo.PTTypeCode = it["pttypecode"].is_null() ? -1 : it["pttypecode"].get<int>();
             DevInfo.ChannelID = it["chnid"].is_null() ? -1 : it["chnid"].get<int>();
             if(DevInfo.ChannelID <= 0)
@@ -208,7 +209,7 @@ bool FromWebAPI::insertData(QList<ExecPlanItemInfo>& list)
         }
         json2["PTTypeCode"] = devInfo.PTTypeCode;
         json2["DID"] = devInfo.DID;
-        json2["DTID"] = devInfo.DTID;
+        json2["MPID"] = devInfo.MPID;
         json2["ChannelID"] = devInfo.ChannelID;
 
 
@@ -221,7 +222,8 @@ bool FromWebAPI::insertData(QList<ExecPlanItemInfo>& list)
     /* 将json写入本地文件 */
 #ifdef C_DEBUG
     QString fileJson(QString::fromStdString(json0.dump(4)));
-    LH_WRITE_LOG_DEBUG("\n" + fileJson);
+    // LH_WRITE_LOG_DEBUG("\n" + fileJson);
+    
     // QString filePath = QApplication::applicationDirPath() + QString("ExecPlanData.json");
     // SPDLOG_LOGGER_DEBUG(m_logger,"To EQM Json写入文件:{}", filePath.toStdString());
     // QFile file(filePath);

+ 55 - 0
TransmitterSwitch/common/date/calendardtedit.cpp

@@ -3,6 +3,8 @@
 #include <QApplication>
 #include <QDesktopWidget>
 #include <QKeyEvent>
+#include <QEvent>
+
 #include "calendarex.h"
 
 CalendarDTEdit::CalendarDTEdit(QWidget *parent) : QDateTimeEdit(parent)
@@ -19,6 +21,42 @@ void CalendarDTEdit::CloseCalendar()
 
 }
 
+/* 手动触发日期选择弹框 */
+void CalendarDTEdit::triggerCalendarPopup()
+{
+
+}
+
+/**
+ * @brief 设置手动禁止修改日期区域,只能使用弹窗
+ * 
+ * @param value 是否禁止修改日期区域
+ * @param triggerPopup 点击日期区域是否会跳出弹窗
+ */
+void CalendarDTEdit::setManualDisableEdit(bool value, bool triggerPopup)
+{
+    if(value)
+    {
+        setReadOnly(true);
+        for(auto& it : children())
+        {
+            if(it->objectName() == "qt_spinbox_lineedit")
+            {
+                m_pCalendar = it;
+                m_pCalendar->installEventFilter(this);
+            }
+        }
+    }else {
+        setReadOnly(false);
+        if(m_pCalendar != nullptr)
+        {
+            m_pCalendar->removeEventFilter(this);
+            m_pCalendar = nullptr;
+        }
+    }
+    m_isPopup = triggerPopup;
+}
+
 void CalendarDTEdit::mousePressEvent(QMouseEvent *e)
 {
     Q_UNUSED(e);
@@ -32,3 +70,20 @@ void CalendarDTEdit::mousePressEvent(QMouseEvent *e)
     pC->show();
     pC->positionCalendarPopup(this);
 }
+
+
+bool CalendarDTEdit::eventFilter(QObject* watched, QEvent* event)
+{
+    if(watched == m_pCalendar)
+    {
+        if(event->type() == QEvent::MouseButtonPress)
+        {
+            // qDebug() << "点击了日期区域";
+            if(m_isPopup)
+            {
+                mousePressEvent(nullptr);
+            }
+        }
+    }
+    return QDateTimeEdit::eventFilter(watched, event);
+}

+ 9 - 0
TransmitterSwitch/common/date/calendardtedit.h

@@ -12,10 +12,19 @@ public:
     virtual ~CalendarDTEdit();
     void SetCalendarAutoClose(bool value);
     void CloseCalendar();
+    /* 手动触发日期选择弹框 */
+    void triggerCalendarPopup();
+    /* 设置手动禁止修改日期区域,只能使用弹窗,第二个参数设置点击日期是否会出现日期选择弹框 */
+    void setManualDisableEdit(bool value, bool triggerPopup = false);
 signals:
     void sig_SetCurrentPage(int year, int month);
 protected:
     void mousePressEvent(QMouseEvent* e) override;
+    bool eventFilter(QObject* watched, QEvent* event) override;
+
+private:
+    QObject* m_pCalendar = nullptr;
+    bool m_isPopup = false;
 };
 
 #endif // CALENDARDTEDIT_H

+ 15 - 1
TransmitterSwitch/transmitterswitch.cpp

@@ -2,6 +2,7 @@
 #include "importtemplate.h"
 #include "ui_transmitterswitch.h"
 
+
 #include <QFile>
 #include <QList>
 #include <memory>
@@ -22,7 +23,7 @@
 #include "cdate.h"
 #include "savetotemplate.h"
 #include "importtemplate.h"
-// #include "lhstylemanager.h"
+#include "warning.h"
 
 TransmitterSwitch::TransmitterSwitch(QWidget *parent) :
     QWidget(parent),
@@ -501,6 +502,19 @@ void TransmitterSwitch::do_exportData()
 /* 清空当前页计划 */
 void TransmitterSwitch::do_clearCurrentPage()
 {
+    /* 跳出弹窗警告 */
+    Warning w(this);
+    w.setQSS(EPConfig.getQSSPath());
+    w.setText("是否清空当前页计划?");
+    bool flag = false;
+    connect(&w,&Warning::signal_ok,this,[&](){
+        flag = true;
+    });
+    w.exec();
+    if(!flag)
+    {
+        return;
+    }
     int weekDay = ui->stackedWidget_items->currentIndex();
     IData.clearOneDay(weekDay);
     sortLayout(weekDay);