CompareItemData.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #include "CompareItemData.h"
  2. /* 初始化 */
  3. bool CompareItemDataManager::init()
  4. {
  5. if(m_logger == nullptr)
  6. {
  7. m_logger = spdlog::get("CompareItemData");
  8. if(m_logger == nullptr)
  9. {
  10. fmt::print("CompareItemDataManager: 初始化日志失败");
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. /* 添加一个对比项 */
  17. bool CompareItemDataManager::addCompareItem(const CompareItemInfo_t& item)
  18. {
  19. if(item.nID <= 0)
  20. {
  21. SPDLOG_LOGGER_ERROR(m_logger, "对比项ID {} 无效,无法添加", item.nID);
  22. return false;
  23. }
  24. if(isCompareItemExist(item.nID))
  25. {
  26. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 已经存在,无法添加", item.nID);
  27. return false;
  28. }
  29. m_listCompareItems.append(item);
  30. return true;
  31. }
  32. /* 根据对比项ID删除一个对比项 */
  33. bool CompareItemDataManager::removeCompareItem(int nID)
  34. {
  35. for(auto it = m_listCompareItems.begin(); it != m_listCompareItems.end(); ++it)
  36. {
  37. if(it->nID == nID)
  38. {
  39. m_listCompareItems.erase(it);
  40. return true;
  41. }
  42. }
  43. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法删除", nID);
  44. return false;
  45. }
  46. /* 通过一个ID查找一个对比项 */
  47. CompareItemInfo_t CompareItemDataManager::findCompareItemByID(int nID) const
  48. {
  49. for(const auto& compareItem : m_listCompareItems)
  50. {
  51. if(compareItem.nID == nID)
  52. {
  53. return compareItem;
  54. }
  55. }
  56. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在", nID);
  57. return CompareItemInfo_t(); // 返回一个默认构造的对比项
  58. }
  59. /* 通过一个ID判断该对比项是否存在 */
  60. bool CompareItemDataManager::isCompareItemExist(int nID) const
  61. {
  62. for(const auto& compareItem : m_listCompareItems)
  63. {
  64. if(compareItem.nID == nID)
  65. {
  66. return true;
  67. }
  68. }
  69. return false;
  70. }
  71. /* 修改一个对比项 */
  72. bool CompareItemDataManager::modifyCompareItem(const CompareItemInfo_t& item)
  73. {
  74. for(auto& compareItem : m_listCompareItems)
  75. {
  76. if(compareItem.nID == item.nID)
  77. {
  78. compareItem = item; // 使用赋值运算符更新对比项
  79. return true;
  80. }
  81. }
  82. SPDLOG_LOGGER_WARN(m_logger, "对比项ID {} 不存在,无法修改", item.nID);
  83. return false;
  84. }
  85. /**
  86. * @brief 获取一个未使用的对比项ID,直接从最新的对比项ID继续增加,以前用过的不用了
  87. *
  88. * @return int
  89. */
  90. int CompareItemDataManager::getUnusedCompareItemID() const
  91. {
  92. int nID = -1;
  93. for(const auto& compareItem : m_listCompareItems)
  94. {
  95. if(compareItem.nID > nID)
  96. {
  97. nID = compareItem.nID; // 找到最大的ID
  98. }
  99. }
  100. nID++; // 下一个未使用的ID
  101. if(nID <= 0)
  102. {
  103. nID = 1; // 如果没有对比项,则从1开始
  104. }
  105. return nID;
  106. }
  107. /* 获取表格需要的对比项数据 */
  108. QList<CompareItemTableItem_t> CompareItemDataManager::getCompareItemTableData() const
  109. {
  110. QList<CompareItemTableItem_t> result;
  111. int nSerialNum = 1; // 序号从1开始
  112. for(const auto& compareItem : m_listCompareItems)
  113. {
  114. CompareItemTableItem_t tableItem;
  115. tableItem.nSerialNum = nSerialNum;
  116. tableItem.nID = compareItem.nID;
  117. tableItem.strName = compareItem.strName;
  118. tableItem.isEnable = compareItem.isEnable;
  119. tableItem.nChannelCount = compareItem.mapRoad.size(); // 通道数
  120. // 添加到结果列表
  121. result.append(tableItem);
  122. // 序号自增
  123. nSerialNum++;
  124. }
  125. return result;
  126. }
  127. /* 设置对比项列表 */
  128. void CompareItemDataManager::setCompareItemList(const QList<CompareItemInfo_t>& listItems)
  129. {
  130. m_listCompareItems = listItems;
  131. m_listSrcCompareItems = listItems; // 设置源数据为当前数据
  132. SPDLOG_LOGGER_INFO(m_logger, "对比项列表已设置,当前对比项数量: {}", m_listCompareItems.size());
  133. }