|
@@ -15,6 +15,8 @@
|
|
|
#include "oneitem.h"
|
|
|
#include "ItemData.h"
|
|
|
#include "timewidget.h"
|
|
|
+#include "cdate.h"
|
|
|
+
|
|
|
|
|
|
TransmitterSwitch::TransmitterSwitch(QWidget *parent) :
|
|
|
QWidget(parent),
|
|
@@ -51,6 +53,8 @@ TransmitterSwitch::TransmitterSwitch(QWidget *parent) :
|
|
|
/* 连接信号和槽 */
|
|
|
connect(ui->pBtn_addPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_pBtnAddExecPlan);
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
TransmitterSwitch::~TransmitterSwitch()
|
|
@@ -100,11 +104,76 @@ void TransmitterSwitch::setWebAPIInfo(const QString &url, const QString &serverI
|
|
|
LH_WRITE_ERROR("WebAPI info is empty");
|
|
|
return;
|
|
|
}
|
|
|
- m_fromWebAPI->initWebApi(url,serverID,serverKey);
|
|
|
+ m_fromWebAPI->initWebApi(url, serverID, serverKey);
|
|
|
/* 获取支持的设备 */
|
|
|
m_fromWebAPI->getDeviceInfo(DeviceContainer.getMapDevice());
|
|
|
}
|
|
|
|
|
|
+/* 获取EQM数据库计划 */
|
|
|
+void TransmitterSwitch::getExecPlanFromEQM()
|
|
|
+{
|
|
|
+ /* 清空本地的计划数据 */
|
|
|
+ IData.clearAllItem();
|
|
|
+
|
|
|
+ QList<ExecPlanItemInfo> list;
|
|
|
+ m_fromWebAPI->getExecPlanData(list);
|
|
|
+
|
|
|
+ /* 添加计划项 */
|
|
|
+ for(const auto& it : list)
|
|
|
+ {
|
|
|
+ if (it.WeekDay < 8 || it.WeekDay < 1)
|
|
|
+ {
|
|
|
+ addNormalOneItem(it.WeekDay - 1, it.devName, it.actionName, it.execTime);
|
|
|
+ }
|
|
|
+ else if(it.WeekDay == 8)
|
|
|
+ {
|
|
|
+ addSpecialOneItem(it.WeekDay - 1, it.devName, it.actionName, it.date, it.execTime);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /* 排序 */
|
|
|
+ for(int i = 0; i < 8; ++i)
|
|
|
+ {
|
|
|
+ sortLayout(i);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/* 将计划保存到EQM数据库 */
|
|
|
+void TransmitterSwitch::saveExecPlanToEQM()
|
|
|
+{
|
|
|
+ QList<ExecPlanItemInfo> list;
|
|
|
+ /* 获取当前计划的执行模式 */
|
|
|
+ int execType = 0;
|
|
|
+ if(ui->rBtn_moment->isChecked())
|
|
|
+ {
|
|
|
+ execType = 0;
|
|
|
+ } else
|
|
|
+ {
|
|
|
+ execType = 1;
|
|
|
+ }
|
|
|
+ for(const auto& it : IData.getMapItem())
|
|
|
+ {
|
|
|
+ for(const auto& it1 : *it)
|
|
|
+ {
|
|
|
+ ExecPlanItemInfo info;
|
|
|
+ info.ExecType = execType;
|
|
|
+ info.devName = it1->getDevName();
|
|
|
+ info.actionID = it1->getActionNum();
|
|
|
+ info.actionName = it1->getActionNum();
|
|
|
+ info.execTime = it1->getExecTime();
|
|
|
+ info.date = it1->getDate();
|
|
|
+ info.WeekDay = it1->getWeekDay() + 1;
|
|
|
+ list.push_back(info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /* 判断计划条数,如果为0就阻止 */
|
|
|
+ if(list.size() == 0)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ m_fromWebAPI->insertData(list);
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/* 每周几的按钮点击了,设置stackedWidegt页面 */
|
|
|
void TransmitterSwitch::do_weekpBtn_clicked()
|
|
@@ -169,6 +238,8 @@ void TransmitterSwitch::do_pBtnAddExecPlan()
|
|
|
addSpecialOneItem(weekDay, atf->getDevName(), atf->getAction(), atf->getDate(), atf->getTime());
|
|
|
}
|
|
|
}
|
|
|
+ /* 排序 */
|
|
|
+ sortLayout(ui->stackedWidget_items->currentIndex());
|
|
|
}
|
|
|
|
|
|
|
|
@@ -255,11 +326,66 @@ void TransmitterSwitch::do_editExecTime(QTime t)
|
|
|
sortLayout(one->getWeekDay());
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/* 点击修改日期 */
|
|
|
+void TransmitterSwitch::do_editExecDate(QDate d)
|
|
|
+{
|
|
|
+ /* 获取信号发送者 */
|
|
|
+ auto one = qobject_cast<OneItem*>(sender());
|
|
|
+ /* 创建时间选择控件 */
|
|
|
+ std::shared_ptr<CDate> cd = std::make_shared<CDate>(this);
|
|
|
+
|
|
|
+ /* 移动位置,日历弹窗没有编辑栏,只有选择日历的时间,日历弹窗自带16px的阴影 */
|
|
|
+ auto pos = one->mapTo(this, one->getExecDatePos());
|
|
|
+ pos.setY(pos.y() + 32); /* 去掉时间显示栏的高度 */
|
|
|
+ pos.setX(pos.x() - 16); /* 去掉阴影的宽度 */
|
|
|
+
|
|
|
+ cd->move(pos);
|
|
|
+ /* 设置默认的日期 */
|
|
|
+ cd->setDate(d);
|
|
|
+
|
|
|
+ cd->execShow();
|
|
|
+ /* 获取日期 */
|
|
|
+ auto date = cd->getDate();
|
|
|
+ LH_WRITE_LOG_DEBUG(QString("选择日期:%1").arg(date.toString("yyyy-MM-dd")));
|
|
|
+ /* 判断日期有没有修改 */
|
|
|
+ if(date == d)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ one->setDate(date);
|
|
|
+ /* 判断日期时间是否重复 */
|
|
|
+ if(IData.judgeDateTimeRepetitionWithEdit(one->getWeekDay(), one, date, one->getExecTime()))
|
|
|
+ {
|
|
|
+ /* 设置时间报警 */
|
|
|
+ one->setWarningText("设备执行日期时间冲突", -1);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ /* 取消报警 */
|
|
|
+ one->hideWarn();
|
|
|
+ /* 重新排序 */
|
|
|
+ sortLayout(one->getWeekDay());
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
/* 导入数据 */
|
|
|
void TransmitterSwitch::do_importData()
|
|
|
{
|
|
|
- QList<ExecPlanItemInfo> list;
|
|
|
- m_fromWebAPI->getExecPlanData(list);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/* 导出数据 */
|
|
|
+void TransmitterSwitch::do_exportData()
|
|
|
+{
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/* 清空当前页计划 */
|
|
|
+void TransmitterSwitch::do_clearCurrentPage()
|
|
|
+{
|
|
|
+ int weekDay = ui->stackedWidget_items->currentIndex();
|
|
|
+ IData.clearOneDay(weekDay);
|
|
|
+ sortLayout(weekDay);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -330,7 +456,7 @@ void TransmitterSwitch::createWeekWidget()
|
|
|
/* 添加一个正常日的计划 */
|
|
|
void TransmitterSwitch::addNormalOneItem(int week, QString devName, QString action, QTime execTime)
|
|
|
{
|
|
|
- OneItem* one = new OneItem();
|
|
|
+ OneItem* one = new OneItem(false);
|
|
|
/* 添加可选的设备 */
|
|
|
one->addDevice();
|
|
|
/* 设置最小高度 */
|
|
@@ -346,32 +472,44 @@ void TransmitterSwitch::addNormalOneItem(int week, QString devName, QString acti
|
|
|
|
|
|
/* 添加到容器中 */
|
|
|
IData.addOneItem(week, one);
|
|
|
- /* 重新排序 */
|
|
|
- sortLayout(week);
|
|
|
}
|
|
|
|
|
|
/* 添加一项特殊日计划 */
|
|
|
void TransmitterSwitch::addSpecialOneItem(int week, QString devName, QString action, QDate date, QTime execTime)
|
|
|
{
|
|
|
+ OneItem* one = new OneItem(true);
|
|
|
+ /* 添加可选的设备 */
|
|
|
+ one->addDevice();
|
|
|
+ /* 设置最小高度 */
|
|
|
+ // one->setMinimumHeight(48);
|
|
|
+ one->setDevName(devName);
|
|
|
+ one->setDate(date);
|
|
|
+ one->setExecTime(execTime);
|
|
|
+ one->setWeekDay(week);
|
|
|
|
|
|
+ /* 连接删除项信号,执行时间改变信号 */
|
|
|
+ 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_dateClicked, this, &TransmitterSwitch::do_editExecDate);
|
|
|
+
|
|
|
+ /* 添加到容器中 */
|
|
|
+ IData.addOneItem(week, one);
|
|
|
}
|
|
|
|
|
|
/* 重新排序布局 */
|
|
|
void TransmitterSwitch::sortLayout(int weekDay)
|
|
|
{
|
|
|
- if(weekDay < 7 && weekDay >= 0)
|
|
|
+ if(weekDay < 8 && weekDay >= 0)
|
|
|
{
|
|
|
- sortNormalDayData(weekDay);
|
|
|
- }else if(weekDay == 7)
|
|
|
- {
|
|
|
- sortSpecialDayData();
|
|
|
+ sortItemData(weekDay);
|
|
|
}
|
|
|
/* 重新布局 */
|
|
|
sortLayoutUI(weekDay);
|
|
|
}
|
|
|
|
|
|
/* 排序正常日 */
|
|
|
-void TransmitterSwitch::sortNormalDayData(int weekDay)
|
|
|
+void TransmitterSwitch::sortItemData(int weekDay)
|
|
|
{
|
|
|
/* 获取当前页容器 */
|
|
|
auto list = IData.getOneDay(weekDay);
|
|
@@ -416,11 +554,6 @@ void TransmitterSwitch::sortNormalDayData(int weekDay)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/* 排序特殊日 */
|
|
|
-void TransmitterSwitch::sortSpecialDayData()
|
|
|
-{
|
|
|
-
|
|
|
-}
|
|
|
|
|
|
/* 重新布局项 */
|
|
|
void TransmitterSwitch::sortLayoutUI(int weekDay)
|