style(watch): 睡眠接口午睡(短睡)兼容问题处理
This commit is contained in:
+9
-6
@@ -899,7 +899,7 @@ public class WatchDataApiServiceImpl implements WatchDataApiService {
|
||||
|
||||
// 构建「数据类型 → 异步查询 Future」映射,消除 switch-case 冗余
|
||||
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("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<WatchStatUserInfoDaySleep> 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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user