Commit 22aef231 by huangjy

fix:长者实时定位V1

parent 82b40f9f
......@@ -106,7 +106,7 @@ public class CodeGenerator {
// 使用重点 下列字段填写表名 运行方法
// strategy.setInclude("edu_teacher","..."); // 多表-逆向工程
strategy.setInclude("plat_elder_breathe_day_stat");
strategy.setInclude("plat_region_setting_fix","plat_elder_coordinate_record");
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体属性时去掉表"_"前缀并且第一个字母大写 如:gmt_create -> gmtCreate
......
package com.makeit.entity.platform.elder;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 长者坐标记录
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PlatElderCoordinateRecord对象", description="长者坐标记录")
public class PlatElderCoordinateRecord extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "设备Id")
private String deviceId;
@ApiModelProperty(value = "设备Id")
private String iotDeviceId;
@ApiModelProperty(value = "设备Id")
private String elderId;
@ApiModelProperty(value = "人体目标距离雷达位置")
private Integer distance;
@ApiModelProperty(value = "空间人感:0表示无人,1表示活动, 2表示微动 ,3表示静止 ,跌倒设备:0无人,1跌倒")
private Integer personState;
@ApiModelProperty(value = "1 表示空间, 2 表示跌倒")
private Integer type;
@ApiModelProperty(value = "人体目标偏离雷达法线角度范围:±60,单位°")
private Integer angle;
@ApiModelProperty(value = "安装方式")
private Integer mount;
@ApiModelProperty(value = "跌倒设备轨迹")
private String track;
@ApiModelProperty(value = "跌倒设备轨迹")
private Integer reportTime;
}
package com.makeit.entity.platform.space;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 区域设置固化
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="PlatRegionSettingFix对象", description="区域设置固化")
public class PlatRegionSettingFix extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "安装方式 1-顶装 0-侧装")
private String installType;
@ApiModelProperty(value = "设备朝向 0-上 1-下 2-左 3-右")
private String toward;
@ApiModelProperty(value = "区域名称")
private String regionName;
@ApiModelProperty(value = "区域定位")
private String regionRange;
@ApiModelProperty(value = "房间门定位")
private String roomRange;
@ApiModelProperty(value = "设备定位")
private String equipmentRange;
@ApiModelProperty(value = "设备Id")
private String deviceId;
@ApiModelProperty(value = "长者id")
private String elderId;
@ApiModelProperty(value = "当前日期 yyyy-mm-dd")
private String happenDate;
@ApiModelProperty(value = "房间id")
private String roomId;
@ApiModelProperty(value = "背景色")
private String background;
}
package com.makeit.mapper.platform.elder;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.elder.PlatElderCoordinateRecord;
/**
* <p>
* 长者坐标记录 Mapper 接口
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
public interface PlatElderCoordinateRecordMapper extends BaseMapper<PlatElderCoordinateRecord> {
}
package com.makeit.mapper.platform.space;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.space.PlatRegionSettingFix;
/**
* <p>
* 区域设置固化 Mapper 接口
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
public interface PlatRegionSettingFixMapper extends BaseMapper<PlatRegionSettingFix> {
}
......@@ -95,6 +95,7 @@ public class BreathAlarm implements IAlarm {
int hasPerson = (int) properties.get("person");
if (0 == hasPerson) {
log.info("当前上报数据无人,不需要告警");
RedisUtil.delete(RedisConst.ALARM_DEVICE_BR_ID + deviceId);
return;
}
......@@ -125,7 +126,7 @@ public class BreathAlarm implements IAlarm {
}
Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong;
if (count/1000 >= duration) {
if (duration + 5 >= count/1000 && count/1000 >= duration) {
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
log.error("呼吸已告警,设备plat_id:" + platDevice.getId());
return;
......
......@@ -99,6 +99,7 @@ public class HeartAlarm implements IAlarm {
int hasPerson = (int) properties.get("person");
if (0 == hasPerson) {
log.info("当前上报数据无人,不需要告警");
RedisUtil.delete(RedisConst.ALARM_DEVICE_HR_ID + deviceId);
return;
}
......@@ -114,7 +115,7 @@ public class HeartAlarm implements IAlarm {
}
Long startLong = alarmRedisDTO.getStartLong();
long count = endLong - startLong;
if (count/1000 >= duration) {
if (duration + 5 >= count/1000 && count/1000 >= duration) {
//todo 如果每台服务器都能收到上报消息 加redis锁
//RLock lock = RedisLockUtil.lock(RedisConst.LOCK_ALARM + deviceId);
if (StringUtils.equals(alarmRedisDTO.getAlarm(), CommonEnum.YES.getValue())) {
......
package com.makeit.service.platform.elder;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.elder.PlatElderCoordinateRecord;
/**
* <p>
* 长者坐标记录 服务类
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
public interface PlatElderCoordinateRecordService extends IService<PlatElderCoordinateRecord> {
void coordinateRecordTask();
}
package com.makeit.service.platform.elder.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.entity.BaseEntity;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderCoordinateRecord;
import com.makeit.mapper.platform.elder.PlatElderCoordinateRecordMapper;
import com.makeit.service.platform.elder.PlatElderCoordinateRecordService;
import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatRegionSettingFixService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 长者坐标记录 服务实现类
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
@Service
public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderCoordinateRecordMapper, PlatElderCoordinateRecord> implements PlatElderCoordinateRecordService {
@Autowired
private PlatElderService platElderService;
@Autowired
private PlatElderDayReportDayService platElderDayReportDayService;
@Autowired
private PlatRegionSettingFixService platRegionSettingFixService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService;
@Override
public void coordinateRecordTask() {
LocalDate nowDate = LocalDate.now();
LocalDate yesDate = nowDate.minusDays(1);
LocalDateTime datStart = LocalDateTimeUtils.getDayStart(yesDate);
LocalDateTime dayEnd = LocalDateTimeUtils.getDayEnd(yesDate);
List<PlatElder> elderList = platElderService.list(new QueryWrapper<PlatElder>().lambda()
.isNotNull(PlatElder::getRoomId));
if (CollectionUtils.isEmpty(elderList)) {
return;
}
List<String> elderIdList = StreamUtil.map(elderList, BaseEntity::getId);
for (PlatElder platElder : elderList) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(platElder.getId(), null);
List<PlatElderCoordinateVO> elderCoordinateVOList = platElderDayReportDayService.coordinateList(platElder.getId(), null, datStart, dayEnd);
}
}
}
package com.makeit.service.platform.space;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.space.PlatRegionSettingFix;
/**
* <p>
* 区域设置固化 服务类
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
public interface PlatRegionSettingFixService extends IService<PlatRegionSettingFix> {
}
package com.makeit.service.platform.space.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.space.PlatRegionSettingFix;
import com.makeit.mapper.platform.space.PlatRegionSettingFixMapper;
import com.makeit.service.platform.space.PlatRegionSettingFixService;
import org.springframework.stereotype.Service;
/**
* <p>
* 区域设置固化 服务实现类
* </p>
*
* @author eugene young
* @since 2023-11-15
*/
@Service
public class PlatRegionSettingFixServiceImpl extends ServiceImpl<PlatRegionSettingFixMapper, PlatRegionSettingFix> implements PlatRegionSettingFixService {
}
......@@ -3,6 +3,7 @@ package com.makeit.task;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.elder.PlatElderBreatheAnalysisService;
import com.makeit.service.platform.elder.PlatElderBreatheDayStatService;
import com.makeit.service.platform.elder.PlatElderCoordinateRecordService;
import com.makeit.service.platform.elder.PlatElderSleepService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -19,6 +20,8 @@ public class PlatElderReportTask {
private PlatElderBreatheDayStatService platElderBreatheDayStatService;
@Autowired
private PlatElderBreatheAnalysisService platElderBreatheAnalysisService;
@Autowired
private PlatElderCoordinateRecordService platElderCoordinateRecordService;
......@@ -30,6 +33,14 @@ public class PlatElderReportTask {
log.info("生成长者每日呼吸,异常情况结束");
}
// @Scheduled(cron = "0 0 1 * * ?")
@TenantIdIgnore
public void coordinateRecordTask() {
log.info("开始生成长者每日呼吸,异常情况");
platElderCoordinateRecordService.coordinateRecordTask();
log.info("生成长者每日呼吸,异常情况结束");
}
/**
* 长者呼吸心率分析
......
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