Commit 0f0a77ee by 汪志阳

fix:bug修复

parent 1f3154f5
ALTER TABLE `plat_device_other` ALTER TABLE `plat_device_other`
...@@ -115,4 +115,10 @@ CREATE TABLE `plat_elder_breathe_heart_rate_record` ( ...@@ -115,4 +115,10 @@ CREATE TABLE `plat_elder_breathe_heart_rate_record` (
ALTER TABLE `plat_alarm_record` ALTER TABLE `plat_alarm_record`
ADD COLUMN `device_time` varchar(64) COMMENT '当前上报时间' AFTER `wechat_read_flag`; ADD COLUMN `device_time` varchar(64) COMMENT '当前上报时间' AFTER `wechat_read_flag`;
\ No newline at end of file
alter table plat_elder_sleep_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
alter table plat_elder_breathe_analysis add column `ori_device_id` varchar(64) default NULL COMMENT 'iot设备id';
\ No newline at end of file
...@@ -42,7 +42,7 @@ public class PlatElderBreatheAnalysis extends BaseBusEntity { ...@@ -42,7 +42,7 @@ public class PlatElderBreatheAnalysis extends BaseBusEntity {
@ApiModelProperty(value = "当前日期 yyyy-mm-dd") @ApiModelProperty(value = "当前日期 yyyy-mm-dd")
private String happenDate; private String happenDate;
// @TableField(exist = false) @ApiModelProperty(value = "原始设备ID")
// private String remake; private String oriDeviceId;
} }
...@@ -47,5 +47,8 @@ public class PlatElderSleepAnalysis extends BaseBusEntity { ...@@ -47,5 +47,8 @@ public class PlatElderSleepAnalysis extends BaseBusEntity {
@ApiModelProperty(value = "翻身次数") @ApiModelProperty(value = "翻身次数")
private Integer turnedCount; private Integer turnedCount;
@ApiModelProperty(value = "原始设备ID")
private String oriDeviceId;
} }
...@@ -19,5 +19,15 @@ public enum SleepTypeEnum { ...@@ -19,5 +19,15 @@ public enum SleepTypeEnum {
private String value; private String value;
public static SleepTypeEnum getSleepType(String code) {
for (SleepTypeEnum typeEnum : SleepTypeEnum.values()) {
if (typeEnum.getCode().equals(code)) {
return typeEnum;
}
}
return null;
}
} }
...@@ -454,6 +454,7 @@ public class PlatElderBreatheAnalysisServiceImpl extends ServiceImpl<PlatElderBr ...@@ -454,6 +454,7 @@ public class PlatElderBreatheAnalysisServiceImpl extends ServiceImpl<PlatElderBr
platElderBreatheAnalysis.setHappenDate(String.valueOf(yesDate)); platElderBreatheAnalysis.setHappenDate(String.valueOf(yesDate));
platElderBreatheAnalysis.setTenantId(platElder.getTenantId()); platElderBreatheAnalysis.setTenantId(platElder.getTenantId());
platElderBreatheAnalysis.setBreatheEvaluate(diseaseReport == null ? "" : diseaseReport.getEvaluate()); platElderBreatheAnalysis.setBreatheEvaluate(diseaseReport == null ? "" : diseaseReport.getEvaluate());
platElderBreatheAnalysis.setOriDeviceId(platDevice.getOriDeviceId());
// 修复数据 // 修复数据
PlatElderBreatheAnalysis breatheAnalysis = analysisMap.get(platElder.getId()); PlatElderBreatheAnalysis breatheAnalysis = analysisMap.get(platElder.getId());
......
package com.makeit.service.platform.elder.impl; package com.makeit.service.platform.elder.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.makeit.common.entity.BaseEntity; import com.makeit.common.entity.BaseEntity;
import com.makeit.dto.platform.elder.PlatElderReportDTO; import com.makeit.dto.platform.elder.PlatElderReportDTO;
...@@ -13,6 +15,7 @@ import com.makeit.entity.platform.elder.*; ...@@ -13,6 +15,7 @@ import com.makeit.entity.platform.elder.*;
import com.makeit.entity.saas.analysis.SaasSleepEvaluateStandardReport; import com.makeit.entity.saas.analysis.SaasSleepEvaluateStandardReport;
import com.makeit.enums.CommonEnum; import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum; import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.enums.report.SleepTypeEnum;
import com.makeit.module.iot.service.IotProductDeviceService; import com.makeit.module.iot.service.IotProductDeviceService;
import com.makeit.module.iot.vo.analysis.EvaluateReportVO; import com.makeit.module.iot.vo.analysis.EvaluateReportVO;
import com.makeit.module.iot.vo.fall.DeviceInfoContentFall; import com.makeit.module.iot.vo.fall.DeviceInfoContentFall;
...@@ -36,11 +39,13 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -36,11 +39,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.Duration;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service @Service
...@@ -97,9 +102,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -97,9 +102,6 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
public PlatElderSleepEvaluationVO sleepEvaluation(PlatElderReportDTO platElderIdDTO) { public PlatElderSleepEvaluationVO sleepEvaluation(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now()); LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
PlatElderSleepEvaluationVO platElderSleepEvaluationVO = new PlatElderSleepEvaluationVO(); PlatElderSleepEvaluationVO platElderSleepEvaluationVO = new PlatElderSleepEvaluationVO();
String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now); String nowString = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(now);
...@@ -122,14 +124,12 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -122,14 +124,12 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
if (platElderSleepAnalysis == null) { if (platElderSleepAnalysis == null) {
return platElderSleepEvaluationVO; return platElderSleepEvaluationVO;
} }
SaasSleepEvaluateStandardReport evaluateStandardReport = saasSleepEvaluateStandardReportService.getOne(
new QueryWrapper<SaasSleepEvaluateStandardReport>().lambda().orderByDesc(BaseEntity::getCreateDate)
.last("limit 1"));
// String sleepScore = platElderSleepAnalysis.getSleepScore(); // String sleepScore = platElderSleepAnalysis.getSleepScore();
String sleepScore = platElderSleepService.calculateScores(Long.parseLong(platElderSleepAnalysis.getSleepTime()),
Long.parseLong(platElderSleepAnalysis.getRestTime()), 0, 0, 0, evaluateStandardReport);
EvaluateReportVO evaluateReport = sleepEvaluateReportService.getByScore(Long.parseLong(sleepScore)); Long sleepScore = getSleepScore(platElderSleepAnalysis);
EvaluateReportVO evaluateReport = sleepEvaluateReportService.getByScore(sleepScore);
platElderSleepEvaluationVO.setScore(Integer.valueOf(sleepScore + "")); platElderSleepEvaluationVO.setScore(Integer.valueOf(sleepScore + ""));
platElderSleepEvaluationVO.setResult(platElderSleepAnalysis.getSleepResult()); platElderSleepEvaluationVO.setResult(platElderSleepAnalysis.getSleepResult());
...@@ -144,6 +144,52 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -144,6 +144,52 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
} }
private Long getSleepScore (PlatElderSleepAnalysis platElderSleepAnalysis) {
SaasSleepEvaluateStandardReport evaluateStandardReport = saasSleepEvaluateStandardReportService.getOne(
new QueryWrapper<SaasSleepEvaluateStandardReport>().lambda().orderByDesc(BaseEntity::getCreateDate)
.last("limit 1"));
List<PlatElderSleep> sleepList = platElderSleepService.list(Wrappers.<PlatElderSleep>lambdaQuery()
.eq(PlatElderSleep::getHappenDate, platElderSleepAnalysis.getHappenDate())
.eq(PlatElderSleep::getElderId, platElderSleepAnalysis.getElderId()));
String baseScore = platElderSleepService.calculateScores(Long.parseLong(platElderSleepAnalysis.getSleepTime()),
Long.parseLong(platElderSleepAnalysis.getRestTime()), 0, 0, 0, evaluateStandardReport);
if(CollUtil.isEmpty(sleepList)){
return Long.parseLong(baseScore);
}
AtomicReference<Long> score = new AtomicReference<>(0L);
sleepList.forEach(s-> {
List<PlatSleepRangeVO> sleepRecord = s.getSleepRecord();
sleepRecord.forEach(l -> {
LocalDateTime start = LocalDateTime.parse(l.getStartTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
LocalDateTime end = LocalDateTime.parse(l.getEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
long minutes = Duration.between(start, end).toMinutes();
SleepTypeEnum sleepType = SleepTypeEnum.getSleepType(l.getSleepType());
if (sleepType == null) {
return;
}
String sleepScore = "0";
switch (sleepType) {
case SLEEP_LIGHTNESS:
sleepScore = platElderSleepService.calculateScores(0, 0, 0, 0, minutes, evaluateStandardReport);
break;
case SLEEP_DEEP:
sleepScore = platElderSleepService.calculateScores(0, 0, minutes, 0, 0, evaluateStandardReport);
break;
default:
}
String finalSleepScore = sleepScore;
score.updateAndGet(v -> v + Long.parseLong(finalSleepScore));
});
});
return Long.parseLong(baseScore) + score.get();
}
@Override @Override
public List<PlatElderSleepDiagramVO> sleepDiagram(PlatElderReportDTO platElderIdDTO) { public List<PlatElderSleepDiagramVO> sleepDiagram(PlatElderReportDTO platElderIdDTO) {
LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now()); LocalDate now = Optional.ofNullable(platElderIdDTO.getNow()).orElse(LocalDate.now());
......
...@@ -705,7 +705,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -705,7 +705,7 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
dayRestTime += elderSleep.getInterval(); dayRestTime += elderSleep.getInterval();
} }
} }
platElderSleepService.saveBatch(elderSleepList); // platElderSleepService.saveBatch(elderSleepList);
String score = calculateScores(daySleepTime, dayRestTime, deepTime, soberTime, lightTime, evaluateStandardReport); String score = calculateScores(daySleepTime, dayRestTime, deepTime, soberTime, lightTime, evaluateStandardReport);
EvaluateReportVO sleepReport = saasSleepEvaluateReportService.getByScore(Long.parseLong(score)); EvaluateReportVO sleepReport = saasSleepEvaluateReportService.getByScore(Long.parseLong(score));
...@@ -721,8 +721,9 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -721,8 +721,9 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
elderSleepAnalysis.setSleepResult(sleepReport.getResult()); elderSleepAnalysis.setSleepResult(sleepReport.getResult());
elderSleepAnalysis.setTenantId(tenantId); elderSleepAnalysis.setTenantId(tenantId);
elderSleepAnalysis.setSleepEvaluate(sleepReport.getEvaluate()); elderSleepAnalysis.setSleepEvaluate(sleepReport.getEvaluate());
elderSleepAnalysis.setOriDeviceId(platDevice.getOriDeviceId());
result.add(elderSleepAnalysis); result.add(elderSleepAnalysis);
platElderSleepAnalysisService.save(elderSleepAnalysis); // platElderSleepAnalysisService.save(elderSleepAnalysis);
} }
return result; return result;
} }
...@@ -761,7 +762,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper, ...@@ -761,7 +762,8 @@ public class PlatElderSleepServiceImpl extends ServiceImpl<PlatElderSleepMapper,
} }
}); });
if (Integer.parseInt(lightnessConfig.getHour()) <= lightHour) { if (Integer.parseInt(lightnessConfig.getHour()) <= lightHour) {
lightScore = Integer.parseInt(lightnessConfig.getScore()); int multiplier = (int) lightHour / Integer.parseInt(lightnessConfig.getHour());
lightScore = Integer.parseInt(lightnessConfig.getScore()) * multiplier;
} }
Integer totalScore = sleepScore.get() + deepScore.get() + lightScore - soberScore.get(); Integer totalScore = sleepScore.get() + deepScore.get() + lightScore - soberScore.get();
return String.valueOf(totalScore); return String.valueOf(totalScore);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment