完善当日测量数据显示图
authorxue <2144439972@qq.com>
Thu, 10 Jul 2025 08:20:18 +0000 (16:20 +0800)
committerxue <2144439972@qq.com>
Thu, 10 Jul 2025 08:20:18 +0000 (16:20 +0800)
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/detection/BPDetectFirstView.cpp

index 0656e70..e065e03 100644 (file)
@@ -119,42 +119,45 @@ namespace OHOS
         SBPText->SetText(std::to_string(BPModel::GetInstance()->GetLastData().last_check_sbp_value).c_str());
     }
 
-    void BPDetectFirstView::WriteMapToPointArrays(const std::map<int, std::pair<int, int>> &bpMap)
+    void BPDetectFirstView::WriteMapToPointArrays()
     {
+        const auto &bpDeque = BPModel::GetInstance()->GetlastCheckData();
+
+        // 重置数据
         for (int i = 0; i < 24; ++i)
         {
             sbpData[i].x = i;
             sbpData[i].y = 120;
 
             dbpData[i].x = i;
-            dbpData[i].y = 80; 
+            dbpData[i].y = 80;
         }
 
-        int dataCount = std::min(static_cast<int>(bpMap.size()), 24);
+        int dataCount = std::min(static_cast<int>(bpDeque.size()), 24);
 
         if (dataCount == 0)
         {
             return;
         }
-        auto it = bpMap.end();
-        std::advance(it, -dataCount);
+        // 从deque末尾开始取最近的dataCount条数据
+        auto startIt = bpDeque.end() - dataCount;
 
         // 填充数组
-        for (int i = 0; i < dataCount; ++i, ++it)
+        for (int i = 0; i < dataCount; ++i, ++startIt)
         {
-            // x坐标使用数组索引,y坐标使用map中的值
+            // x坐标使用数组索引,y坐标使用deque中的值
             sbpData[i].x = i;
-            sbpData[i].y = it->second.first; // SBP值
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sbpData[%d].y:%d", i, it->second.first);
+            sbpData[i].y = startIt->last_check_sbp_value; // SBP值
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sbpData[%d].y:%d", i, startIt->last_check_sbp_value);
 
             dbpData[i].x = i;
-            dbpData[i].y = it->second.second; // DBP值
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dbpDat[%d].y:%d", i, it->second.second);
+            dbpData[i].y = startIt->last_check_dbp_value; // DBP值
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dbpDat[%d].y:%d", i, startIt->last_check_dbp_value);
         }
     }
     void BPDetectFirstView::InitChartView()
     {
-        // WriteMapToPointArrays(BPModel::GetInstance()->GetBPValueMap());
+        WriteMapToPointArrays();
         // 初始化图表控件
         if (bpchart == nullptr)
         {