package com.usky.cdi.service.vo.info;

import com.usky.cdi.service.vo.base.BaseEnvMonitorPushVO;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 人员统计情况推送VO（兼容2021版）
 * 用途：每半小时上报最新人员统计状态，设防时段超过掩蔽人数需同步作为告警事件上传
 * MQTT Topic：iotInfo/personPresence
 * @author fyc
 * @email yuchuan.fu@chinausky.com
 * @date 2025/11/20
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class HeadcountVO extends BaseEnvMonitorPushVO {

    private static final long serialVersionUID = 1L;

    // ====================== 专属字段（父类已包含公共字段）======================
    /**
     * 当前掩蔽人员数量（必填）
     * 类型：Int，长度1（取值参考 SensorValueEnum）
     */
    private Integer sensorValue;

    /**
     * 当前单元名称（必填）
     * 类型：String，长度1-30
     */
    private String unitName;

    /**
     * 当前楼层名称（必填）
     * 类型：String，长度1-10
     */
    private String floor;

    // ====================== 实现父类抽象方法 ======================
    @Override
    public Number getSensorValue() {
        return sensorValue;
    }

    @Override
    protected void validateSensorValue() {
        // 1. 非空校验
        if (sensorValue == null) {
            throw new IllegalArgumentException("当前单元掩蔽人数（sensorValue）为必填项");
        }

    }
}