#include "ItemData/ItemData.h" #include "LHQLogAPI.h" ItemData::ItemData() { /* 创建8个List */ for(int i = 0; i < 8; ++i) { QList* list = new QList; m_mapItem.insert(i, list); } } ItemData::~ItemData() { // for(auto it = m_mapItem.begin(); it != m_mapItem.end(); ++it) // { // for(auto it1 = it.value()->begin(); it1 != it.value()->end(); ++it1) // { // delete *it1; // } // it.value()->clear(); // delete it.value(); // } // m_mapItem.clear(); } /* 添加一项计划 */ void ItemData::addOneItem(int week, OneItem* item) { if(m_mapItem.find(week) == m_mapItem.end()) { return; } m_mapItem[week]->append(item); m_isUpdate = true; } /* 删除一项计划 */ void ItemData::deleteOneItem(int week, int num) { if(m_mapItem.find(week) == m_mapItem.end()) { return; } auto list = m_mapItem[week]; for(auto& it : *list) { if(it->getNum() == num) { auto tmpPtr = it; list->removeOne(it); delete tmpPtr; break; } } m_isUpdate = true; } /* 清空一天的计划 */ void ItemData::clearOneDay(int week) { if(m_mapItem.find(week) == m_mapItem.end()) { return; } auto list = m_mapItem[week]; for(auto it = list->begin(); it != list->end(); ++it) { delete *it; } list->clear(); m_isUpdate = true; } /* 清空所有的计划数据 */ void ItemData::clearAllItem() { for(auto it = m_mapItem.begin(); it != m_mapItem.end(); ++it) { for(auto it1 = it.value()->begin(); it1 != it.value()->end(); ++it1) { delete *it1; } it.value()->clear(); } m_isUpdate = true; } /* 查找有没有这个项 */ bool ItemData::findItem(OneItem* item) { for(auto it = m_mapItem.begin(); it != m_mapItem.end(); ++it) { QList* list = it.value(); for(const auto& item1 : *list) { if(item1 == item) { return true; } } } return false; } /* 查找有没有这个项 */ bool ItemData::findItem(int week, OneItem* item) { if(m_mapItem.find(week) == m_mapItem.end()) { return false; } QList* list = m_mapItem[week]; for(const auto& it : *list) { if(it == item) { return true; } } return false; } /* 获取一天的容器 */ QList* ItemData::getOneDay(int week) { if(m_mapItem.find(week) == m_mapItem.end()) { return nullptr; } return m_mapItem[week]; } /* 获取一天的计划 */ QList ItemData::getOneDayExecPlan(int week) { if(m_mapItem.find(week) == m_mapItem.end()) { QList list; list.clear(); return list; } auto list = m_mapItem[week]; QList list1; for(const auto& it : *list) { ExecPlanItemInfo info; info.devName = it->getDevName(); info.actionID = it->getActionNum(); info.actionName = it->getActionName(); info.execTime = it->getExecTime(); info.date = it->getDate(); info.WeekDay = it->getWeekDay(); list1.append(info); } return list1; } /* 新增判断是否有重复 */ bool ItemData::judgeTimeRepetitionWithAdd(int weekDay, const QString& devName, const QTime& time) { /* 先查找周几对应的列表 */ if(m_mapItem.find(weekDay) == m_mapItem.end()) { return false; } auto list = m_mapItem[weekDay]; for(const auto& it : *list) { if(it->getDevName() == devName) { if(it->getExecTime() == time) { return true; } } } /* 所有设备都判断完了,没有相同的 */ return false; } bool ItemData::judgeDateTimeRepetitionWithAdd(int weekDay, const QString& devName, const QDate& date, const QTime& time) { /* 先查找周几对应的列表 */ if(m_mapItem.find(weekDay) == m_mapItem.end()) { return false; } auto list = m_mapItem[weekDay]; for(const auto& it : *list) { if(it->getDevName() == devName) { if(it->getDate() == date) { if(it->getExecTime() == time) { return true; } } } } /* 所有设备都判断完了,没有相同的 */ return false; } /* 判断已有的项修改时间后和其他项是否重复 */ bool ItemData::judgeTimeRepetitionWithEdit(int weekDay, OneItem* item, const QTime& newTime) { if(m_mapItem.find(weekDay) == m_mapItem.end()) { return false; } auto list = m_mapItem[weekDay]; for(const auto& it : *list) { /* 先判断名称是否相等 */ if(it->getDevName() == item->getDevName()) { /* 判断是否是同一个项 */ if(it->getUUID() == item->getUUID()) { continue; } /* 判断时间是否相同 */ if(it->getExecTime() == newTime) { return true; } } } /* 所有设备都判断完了 */ return false; } /* 判断特殊日的已有项修改时间后和其他项是否重复 */ bool ItemData::judgeDateTimeRepetitionWithEdit(int weekDay, OneItem* item, const QDate& newDate, const QTime& newTime) { if(m_mapItem.find(weekDay) == m_mapItem.end()) { return false; } auto list = m_mapItem[weekDay]; for(const auto& it : *list) { /* 先判断名称是否相等 */ if(it->getDevName() == item->getDevName()) { /* 判断是否是同一个项 */ if(it->getUUID() == item->getUUID()) { continue; } /* 判断日期是否相等 */ if(it->getDate() == newDate) { /* 判断时间是否相同 */ if(it->getExecTime() == newTime) { return true; } } } } /* 所有设备都判断完了 */ return false; }