package cn.iocoder.yudao.module.system.dal.dataobject.biz;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

/**
 * @Author: jinyd
 * @CreateTime: 2024/10/22  15:03
 * @Description:
 * @Version: 4.0
 */

@TableName("sleep_report")
@KeySequence("sleep_report_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SleepReportDO extends BaseDO {

    /**
     * 编号
     */
    @TableId
    private Long id;
    /**
     * 设备唯一识别ID
     */
    private String devId;
    /**
     * 设备型号
     */
    private String devType;
    /**
     * 日期
     */
    private String day;
    /**
     * 算法版本
     */
    private String algorithmVersion;
    /**
     * 评分使用模型类型，0: 八大项模型 1: 五大项模型
     */
    private Integer scoringType;
    /**
     * 睡眠质量总分，0~100分
     */
    private Integer everFellAsleep;
    /**
     * 睡眠评级，A/B/C/D/E五个等级
     */
    private String sleepLevel;
    /**
     * 睡眠得分分配，各项总分；scoringType=0，依次对应：睡眠时长、入睡时刻、入睡时长、深度睡眠、梦境时长、觉醒时长、躁动不安、睡眠中断八项的总分；scoringType=1，依次对应：睡眠时长、弃用项、入睡时长、深睡时长、弃用项、睡眠效率、弃用项、睡眠事件五项的总分）
     */
    private String arrayScoreAssigned;
    /**
     * 睡眠单项得分。scoringType=0，依次对应：睡眠时长、入睡时刻、入睡时长、深度睡眠、梦境时长、觉醒时长、躁动不安、睡眠中断八项的得分情况；scoringType=1，依次对应：睡眠时长、弃用项、入睡时长、深睡时长、弃用项、睡眠效率、弃用项、睡眠事件五项的得分
     */
    private String arrayScore;
    /**
     * 上床时刻
     */
    private Long inbedTime;
    /**
     * 入睡时刻
     */
    private Long asleepTime;
    /**
     * 醒来时刻
     */
    private Long awakeTime;
    /**
     * 起床时刻
     */
    private Long outbedTime;
    /**
     * 入睡时长，单位s
     */
    private Integer sleepOnsetLatency;
    /**
     * 睡眠时长，单位s
     */
    private Integer sleepDuration;
    /**
     * 在床时长，单位s
     */
    private Integer inbedDuration;
    /**
     * 觉醒时长，单位s
     */
    private Integer soberDuration;
    /**
     * 做梦时长，单位s
     */
    private Integer dreamDuration;
    /**
     * 浅睡时长，单位s
     */
    private Integer lightSleepDuration;
    /**
     * 中睡时长，单位s
     */
    private Integer moderateSleepDuration;
    /**
     * 深睡时长，单位s
     */
    private Integer deepSleepDuration;
    /**
     * 离床时长，单位s
     */
    private Integer outbedDuration;
    /**
     * 觉醒占比，百分数
     */
    private Integer soberPercent;
    /**
     * 梦境占比，百分数
     */
    private Integer dreamPercent;
    /**
     * 浅睡占比，百分数
     */
    private Integer lightSleepPercent;
    /**
     * 中睡占比，百分数
     */
    private Integer oderateSleepPercent;
    /**
     * 深睡占比，百分数
     */
    private Integer deepSleepPercent;
    /**
     * 离床占比，百分数，单位为%
     */
    private Integer outbedPercent;
    /**
     * 梦境潜伏期，单位s
     */
    private Integer dreamLatency;
    /**
     * 睡中觉醒次数
     */
    private Integer awakeInSleepCounts;
    /**
     * 睡中觉醒时长，单位s
     */
    private Integer awakeInSleepDuration;
    /**
     * 睡眠分期: 当评分为8大项时（scoringType=0）时, 1深睡 2中睡 3浅睡 4做梦 5清醒 0离床; 当评分为5大项时（scoringType=1）时, 1深睡 3浅睡 4做梦 5清醒 0离床 6微醒
     */
    private String sleepStage;
    /**
     * 睡眠时间轴
     */
    private String sleepTimeAxis;
    /**
     * 离床次数
     */
    private Integer outbedCounts;
    /**
     * 离床事件
     */
    private String outbedEvents;
    /**
     * 在床心率曲线，分辨率1min
     */
    private String arrayHr;
    /**
     * 基准心率
     */
    private String standardHr;
    /**
     * 平均心率
     */
    private Integer avgHr;
    /**
     * 最快心率
     */
    private Integer maxHr;
    /**
     * 最慢心率
     */
    private Integer minHr;
    /**
     * 心率变异性的一个指标，单位ms
     */
    private Integer sdnn;
    /**
     * 心率变异性的一个指标，单位%
     */
    private Integer pnn50;
    /**
     * 压力指数，单位%
     */
    private Integer fatigue;
    /**
     * 在床呼吸率曲线，分辨率1min
     */
    private String arrayBr;
    /**
     * 基准呼吸率
     */
    private String standardBr;
    /**
     * 平均呼吸率
     */
    private Integer avgBr;
    /**
     * 最快呼吸率
     */
    private Integer maxBr;
    /**
     * 最慢呼吸率
     */
    private Integer minBr;
    /**
     * 在床体动幅度曲线，分辨率1min
     */
    private String arrayMov;
    /**
     * 体动次数
     */
    private Integer movCounts;
    /**
     * 体动频率，单位为次/小时
     */
    private Integer movFrequency;
    /**
     * 身体状态图谱，分辨率1min。对应关系：0：离床,1：安静,-1：监测中,-2：碰到床,-3：体动,-4：打鼾
     */
    private String arrayBodyState;
    /**
     * 生命体征时间轴
     */
    private String vitalSignTimeAxis;
    /**
     * 是否有效 true：是-false：
     */
    private Boolean isEffective;
    /**
     * 睡眠周期
     */
    private Integer sleepCycle;
    /**
     * 静息心率
     */
    private Integer restingHr;
    /**
     * 压力指数
     */
    private Integer stressIndex;
    /**
     * 抗压能力
     */
    private Integer stressResistance;
    /**
     * 自主神经活性
     */
    private Integer autonomicNeuralActivity;
    /**
     * 自主神经平衡指数
     */
    private Double ansBalanceIndex;
    /**
     * 心脏总能量
     */
    private Double totalHeartEnergy;
    /**
     * 心律失常风险指数
     */
    private Integer arrhythmiaRiskIndex;
    /**
     * 心率减速力
     */
    private Double hrDecelerationCapacity;
    /**
     * REM期心率
     */
    private Integer remHr;
    /**
     * 非REM期心率
     */
    private Integer nremHr;
    /**
     * REM期呼吸率
     */
    private Integer remBr;
    /**
     * 非REM期呼吸率
     */
    private Integer nremBr;
    /**
     * 呼吸暂停分布图谱，分辨率1min
     */
    private String arrayApnoeasNum;
    /**
     * 呼吸暂停指数
     */
    private Double ahi;
    /**
     * 呼吸暂停次数
     */
    private Integer apnoeasNum;
    /**
     * 最长呼吸暂停时长
     */
    private Integer maxDurationOfApnoea;
    /**
     * 压力分布图谱，分辨率1min
     */
    private String arrayStress;
    /**
     * 压力平均值
     */
    private Integer aveStress;
    /**
     * 压力最大值
     */
    private Integer maxStress;
    /**
     * 压力最小值
     */
    private Integer minStress;
    /**
     * 击败同龄人占比
     */
    private Double defeatPeerPercent;
    /**
     * 微醒占比，百分数
     */
    private Integer microAwakeningPercent;
    /**
     * 睡眠事件
     */
    private Integer sleepEvents;
    /**
     * 前90分钟睡眠
     */
    private String firstNinetySleepDto;
    /**
     * 睡眠目标时长
     */
    private Integer sleepTargetDuration;
    /**
     * 期望起床时间
     */
    private String wakeupTime;
    /**
     * 期望上床时间
     */
    private String bedTime;
    /**
     * 睡眠负债，单位：s（秒）
     */
    private Integer sleepDebt;
    /**
     * 睡眠负债较昨日情况，0：持平，1：下降，2：上升
     */
    private Integer sleepDebtComparison;
    /**
     * 熬夜时长，单位：s（秒）
     */
    private Integer stayUplateDuration;
    /**
     * 失眠时长，单位：s（秒
     */
    private Integer insomniaDuration;
    /**
     * 睡眠目标是否达成
     */
    private Boolean isSleepGoalAchieved;
    /**
     * 报告类型: 0睡眠主报告，1零星小睡报告，-1, 无睡眠，默认0
     */
    private Integer reportType;
    /**
     * 体动次数分布图谱，分辨率1min
     */
    private String arrayMovCounts;
    /**
     * 长者id
     */
    private Long elderlyId;

    private String elderlyName;

}
