style(watch): 睡眠接口午睡(短睡)兼容问题处理

This commit is contained in:
2026-07-01 10:42:14 +08:00
parent 9713b242e8
commit 29c2be8856
2 changed files with 13 additions and 6 deletions
@@ -2,6 +2,7 @@ package com.renkang.watch;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.renkang.watch.vo.WatchH5IndexItemVo; import com.renkang.watch.vo.WatchH5IndexItemVo;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -48,6 +49,9 @@ public class WatchH5IndexItemNewVo {
@Schema(title = "最高阈值") @Schema(title = "最高阈值")
private String warnMax; private String warnMax;
@JsonIgnore
private String shortDurationTotal;//睡眠数据乱七八糟的,先加个字段处理app首页数据问题
public String getDataAvg() { public String getDataAvg() {
if(StrUtil.isNotEmpty(dataAvg)){ if(StrUtil.isNotEmpty(dataAvg)){
try { try {
@@ -899,7 +899,7 @@ public class WatchDataApiServiceImpl implements WatchDataApiService {
// 构建「数据类型 → 异步查询 Future」映射,消除 switch-case 冗余 // 构建「数据类型 → 异步查询 Future」映射,消除 switch-case 冗余
Map<String, CompletableFuture<WatchH5IndexItemNewVo>> futureMap = new HashMap<>(); Map<String, CompletableFuture<WatchH5IndexItemNewVo>> 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("heart_rate", CompletableFuture.supplyAsync(() -> latestHeartRateData(userId), getAsyncTaskExecutor()));
futureMap.put("spo2", CompletableFuture.supplyAsync(() -> latestSpo2Data(userId), getAsyncTaskExecutor())); futureMap.put("spo2", CompletableFuture.supplyAsync(() -> latestSpo2Data(userId), getAsyncTaskExecutor()));
futureMap.put("stress", CompletableFuture.supplyAsync(() -> latestStressData(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<WatchStatUserInfoDaySleep> wrapper = new MPJLambdaWrapper<>(); MPJLambdaWrapper<WatchStatUserInfoDaySleep> wrapper = new MPJLambdaWrapper<>();
//因为睡眠详情页取的是长睡时长作为当天的睡眠时间 , 所以这里保持一致并没有取当天的睡眠总时长 //因为睡眠详情页取的是长睡时长作为当天的睡眠时间 , 所以这里保持一致并没有取当天的睡眠总时长
wrapper.selectAs(WatchStatUserInfoDaySleep::getLongDurationTotal,WatchH5IndexItemNewVo::getDataValue); wrapper.selectAs(WatchStatUserInfoDaySleep::getLongDurationTotal,WatchH5IndexItemNewVo::getDataValue);
@@ -971,14 +971,17 @@ public class WatchDataApiServiceImpl implements WatchDataApiService {
wrapper.selectAs(WatchStatUserInfoDaySleep::getLightSleepTimes,WatchH5IndexItemNewVo::getDataMin); wrapper.selectAs(WatchStatUserInfoDaySleep::getLightSleepTimes,WatchH5IndexItemNewVo::getDataMin);
wrapper.selectAs(WatchStatUserInfoDaySleep::getSleepAvg,WatchH5IndexItemNewVo::getDataAvg); wrapper.selectAs(WatchStatUserInfoDaySleep::getSleepAvg,WatchH5IndexItemNewVo::getDataAvg);
wrapper.selectAs(WatchStatUserInfoDaySleep::getLastUploadTime,WatchH5IndexItemNewVo::getDataDateNew); wrapper.selectAs(WatchStatUserInfoDaySleep::getLastUploadTime,WatchH5IndexItemNewVo::getDataDateNew);
wrapper.selectAs(WatchStatUserInfoDaySleep::getShortDurationTotal,WatchH5IndexItemNewVo::getShortDurationTotal);
wrapper.eq(WatchStatUserInfoDaySleep::getUserId, userId); wrapper.eq(WatchStatUserInfoDaySleep::getUserId, userId);
wrapper.orderByDesc(WatchStatUserInfoDaySleep::getDataDate); wrapper.orderByDesc(WatchStatUserInfoDaySleep::getDataDate);
wrapper.last("FETCH FIRST 1 ROWS ONLY"); wrapper.last("FETCH FIRST 1 ROWS ONLY");
WatchH5IndexItemNewVo vo = watchStatUserInfoDaySleepMapper.selectJoinOne(WatchH5IndexItemNewVo.class, wrapper); WatchH5IndexItemNewVo vo = watchStatUserInfoDaySleepMapper.selectJoinOne(WatchH5IndexItemNewVo.class, wrapper);
// 浅睡有值但深睡为空 → 当天仅有浅睡数据,用浅睡补齐 dataValue/dataMax // 长睡(dataValue)为空或0 → 当天可能仅有午睡(短睡),用短睡总时长补齐 dataValue
if (vo != null && StrUtil.isNotEmpty(vo.getDataMin()) && StrUtil.isEmpty(vo.getDataMax())) { if (vo != null
vo.setDataValue(vo.getDataMin()); && (StrUtil.isEmpty(vo.getDataValue()) || "0".equals(vo.getDataValue()))
vo.setDataMax(vo.getDataMin()); && StrUtil.isNotEmpty(vo.getShortDurationTotal())
&& !"0".equals(vo.getShortDurationTotal())) {
vo.setDataValue(vo.getShortDurationTotal());
} }
return vo; return vo;
} }