123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #include "CompareItemData.h"
- /* 初始化 */
- bool CompareItemDataManager::init()
- {
- if(m_logger == nullptr)
- {
- m_logger = spdlog::get("CompareItemData");
- if(m_logger == nullptr)
- {
- fmt::print("CompareItemDataManager: 初始化日志失败");
- return false;
- }
- }
- return true;
- }
- /* 添加一个对比项 */
- bool CompareItemDataManager::addCompareItem(const CompareItemInfo_t& item)
- {
- if(item.nID <= 0)
- {
- SPDLOG_LOGGER_ERROR(m_logger, "对比项ID {} 无效,无法添加", item.nID);
- return false;
- }
- if(isCompareItemExist(item.nID))
- {
- SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 已经存在,无法添加", item.nID);
- return false;
- }
- m_listCompareItems.append(item);
- return true;
- }
- /* 根据对比项ID删除一个对比项 */
- bool CompareItemDataManager::removeCompareItem(int nID)
- {
- for(auto it = m_listCompareItems.begin(); it != m_listCompareItems.end(); ++it)
- {
- if(it->nID == nID)
- {
- m_listCompareItems.erase(it);
- return true;
- }
- }
- SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法删除", nID);
- return false;
- }
- /* 通过一个ID查找一个对比项 */
- CompareItemInfo_t CompareItemDataManager::findCompareItemByID(int nID) const
- {
- for(const auto& compareItem : m_listCompareItems)
- {
- if(compareItem.nID == nID)
- {
- return compareItem;
- }
- }
- SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在", nID);
- return CompareItemInfo_t(); // 返回一个默认构造的对比项
- }
- /* 通过一个ID判断该对比项是否存在 */
- bool CompareItemDataManager::isCompareItemExist(int nID) const
- {
- for(const auto& compareItem : m_listCompareItems)
- {
- if(compareItem.nID == nID)
- {
- return true;
- }
- }
- return false;
- }
- /* 修改一个对比项 */
- bool CompareItemDataManager::modifyCompareItem(const CompareItemInfo_t& item)
- {
- for(auto& compareItem : m_listCompareItems)
- {
- if(compareItem.nID == item.nID)
- {
- compareItem = item; // 使用赋值运算符更新对比项
- return true;
- }
- }
- SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法修改", item.nID);
- return false;
- }
- /**
- * @brief 获取一个未使用的对比项ID,直接从最新的对比项ID继续增加,以前用过的不用了
- *
- * @return int
- */
- int CompareItemDataManager::getUnusedCompareItemID() const
- {
- int nID = -1;
- for(const auto& compareItem : m_listCompareItems)
- {
- if(compareItem.nID > nID)
- {
- nID = compareItem.nID; // 找到最大的ID
- }
- }
- nID++; // 下一个未使用的ID
- if(nID <= 0)
- {
- nID = 1; // 如果没有对比项,则从1开始
- }
- return nID;
- }
- /* 获取表格需要的对比项数据 */
- QList<CompareItemTableItem_t> CompareItemDataManager::getCompareItemTableData() const
- {
- QList<CompareItemTableItem_t> result;
- int nSerialNum = 1; // 序号从1开始
- for(const auto& compareItem : m_listCompareItems)
- {
- CompareItemTableItem_t tableItem;
- tableItem.nSerialNum = nSerialNum;
- tableItem.nID = compareItem.nID;
- tableItem.strName = compareItem.strName;
- tableItem.isEnable = compareItem.isEnable;
- tableItem.nChannelCount = compareItem.mapRoad.size(); // 通道数
- // 添加到结果列表
- result.append(tableItem);
- // 序号自增
- nSerialNum++;
- }
- return result;
- }
- /* 设置对比项列表 */
- void CompareItemDataManager::setCompareItemList(const QList<CompareItemInfo_t>& listItems)
- {
- m_listCompareItems = listItems;
- m_listSrcCompareItems = listItems; // 设置源数据为当前数据
- SPDLOG_LOGGER_INFO(m_logger, "对比项列表已设置,当前对比项数量: {}", m_listCompareItems.size());
- }
|