diff --git a/health-watch/health-watch-api/src/main/java/com/renkang/watch/WatchH5IndexItemNewVo.java b/health-watch/health-watch-api/src/main/java/com/renkang/watch/WatchH5IndexItemNewVo.java index da37a7c..3b6b7f0 100644 --- a/health-watch/health-watch-api/src/main/java/com/renkang/watch/WatchH5IndexItemNewVo.java +++ b/health-watch/health-watch-api/src/main/java/com/renkang/watch/WatchH5IndexItemNewVo.java @@ -2,6 +2,7 @@ package com.renkang.watch; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.renkang.watch.vo.WatchH5IndexItemVo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -48,6 +49,9 @@ public class WatchH5IndexItemNewVo { @Schema(title = "最高阈值") private String warnMax; + @JsonIgnore + private String shortDurationTotal;//睡眠数据乱七八糟的,先加个字段处理app首页数据问题 + public String getDataAvg() { if(StrUtil.isNotEmpty(dataAvg)){ try { diff --git a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/api/service/impl/WatchDataApiServiceImpl.java b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/api/service/impl/WatchDataApiServiceImpl.java index 52c7d07..da50241 100644 --- a/health-watch/health-watch-biz/src/main/java/com/renkang/watch/api/service/impl/WatchDataApiServiceImpl.java +++ b/health-watch/health-watch-biz/src/main/java/com/renkang/watch/api/service/impl/WatchDataApiServiceImpl.java @@ -899,7 +899,7 @@ public class WatchDataApiServiceImpl implements WatchDataApiService { // 构建「数据类型 → 异步查询 Future」映射,消除 switch-case 冗余 Map> futureMap = new HashMap<>(); - futureMap.put("sleep", CompletableFuture.supplyAsync(() -> latestSleepData(userId), getAsyncTaskExecutor())); + futureMap.put("sleep", CompletableFuture.supplyAsync(() -> latestIndexSleepData(userId), getAsyncTaskExecutor())); futureMap.put("heart_rate", CompletableFuture.supplyAsync(() -> latestHeartRateData(userId), getAsyncTaskExecutor())); futureMap.put("spo2", CompletableFuture.supplyAsync(() -> latestSpo2Data(userId), getAsyncTaskExecutor())); futureMap.put("stress", CompletableFuture.supplyAsync(() -> latestStressData(userId), getAsyncTaskExecutor())); @@ -963,7 +963,7 @@ public class WatchDataApiServiceImpl implements WatchDataApiService { }); } - private WatchH5IndexItemNewVo latestSleepData(String userId) { + private WatchH5IndexItemNewVo latestIndexSleepData(String userId) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); //因为睡眠详情页取的是长睡时长作为当天的睡眠时间 , 所以这里保持一致并没有取当天的睡眠总时长 wrapper.selectAs(WatchStatUserInfoDaySleep::getLongDurationTotal,WatchH5IndexItemNewVo::getDataValue); @@ -971,14 +971,17 @@ public class WatchDataApiServiceImpl implements WatchDataApiService { wrapper.selectAs(WatchStatUserInfoDaySleep::getLightSleepTimes,WatchH5IndexItemNewVo::getDataMin); wrapper.selectAs(WatchStatUserInfoDaySleep::getSleepAvg,WatchH5IndexItemNewVo::getDataAvg); wrapper.selectAs(WatchStatUserInfoDaySleep::getLastUploadTime,WatchH5IndexItemNewVo::getDataDateNew); + wrapper.selectAs(WatchStatUserInfoDaySleep::getShortDurationTotal,WatchH5IndexItemNewVo::getShortDurationTotal); wrapper.eq(WatchStatUserInfoDaySleep::getUserId, userId); wrapper.orderByDesc(WatchStatUserInfoDaySleep::getDataDate); wrapper.last("FETCH FIRST 1 ROWS ONLY"); WatchH5IndexItemNewVo vo = watchStatUserInfoDaySleepMapper.selectJoinOne(WatchH5IndexItemNewVo.class, wrapper); - // 浅睡有值但深睡为空 → 当天仅有浅睡数据,用浅睡补齐 dataValue/dataMax - if (vo != null && StrUtil.isNotEmpty(vo.getDataMin()) && StrUtil.isEmpty(vo.getDataMax())) { - vo.setDataValue(vo.getDataMin()); - vo.setDataMax(vo.getDataMin()); + // 长睡(dataValue)为空或0 → 当天可能仅有午睡(短睡),用短睡总时长补齐 dataValue + if (vo != null + && (StrUtil.isEmpty(vo.getDataValue()) || "0".equals(vo.getDataValue())) + && StrUtil.isNotEmpty(vo.getShortDurationTotal()) + && !"0".equals(vo.getShortDurationTotal())) { + vo.setDataValue(vo.getShortDurationTotal()); } return vo; }