package com.zcloud.personnel.positioning.dto.clientobject;

import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * web-client
 *
 * @Author fangjiakai
 * @Date 2026-07-07
 */
@Data
public class AlarmRecordCO extends ClientObject {
    @ApiModelProperty(value = "主键", name = "id")
    private Long id;

    @ApiModelProperty(value = "告警编号", name = "alarmNo")
    private String alarmNo;

    @ApiModelProperty(value = "FindS告警id", name = "findsAlarmId")
    private Long findsAlarmId;

    @ApiModelProperty(value = "告警类型编码", name = "alarmCode")
    private String alarmCode;

    @ApiModelProperty(value = "告警名称", name = "alarmName")
    private String alarmName;

    @ApiModelProperty(value = "告警等级", name = "level")
    private Integer level;

    @ApiModelProperty(value = "告警说明", name = "description")
    private String description;

    @ApiModelProperty(value = "处置状态 INIT未处置 CLOSE已处置", name = "disposeStatus")
    private String disposeStatus;

    @ApiModelProperty(value = "处理结果说明", name = "disposeDescription")
    private String disposeDescription;

    @ApiModelProperty(value = "持续时长 秒", name = "duration")
    private Long duration;

    @ApiModelProperty(value = "告警开始时间", name = "startTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime startTime;

    @ApiModelProperty(value = "告警结束时间", name = "endTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime endTime;

    @ApiModelProperty(value = "报警开始所在围栏", name = "startFencesJson")
    private String startFencesJson;

    @ApiModelProperty(value = "报警结束所在围栏", name = "endFencesJson")
    private String endFencesJson;

    @ApiModelProperty(value = "经度", name = "lon")
    private BigDecimal lon;

    @ApiModelProperty(value = "纬度", name = "lat")
    private BigDecimal lat;

    @ApiModelProperty(value = "高度", name = "alt")
    private BigDecimal alt;

    @ApiModelProperty(value = "速度", name = "speed")
    private BigDecimal speed;

    @ApiModelProperty(value = "方向", name = "direction")
    private BigDecimal direction;

    @ApiModelProperty(value = "历元时间", name = "gt")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gt;

    @ApiModelProperty(value = "企业id/公司id（公司及子公司数据隔离）", name = "corpinfoId")
    private String corpinfoId;

    @ApiModelProperty(value = "企业名称/公司名称", name = "corpinfoName")
    private String corpinfoName;

    @ApiModelProperty(value = "所属组织编码", name = "orgCode")
    private String orgCode;

    @ApiModelProperty(value = "所属组织名称", name = "orgName")
    private String orgName;

    @ApiModelProperty(value = "首个告警人员身份证号，关联资质库人员视图", name = "firstIdCardNo")
    private String firstIdCardNo;

    @ApiModelProperty(value = "首个告警人员工号快照", name = "firstStaffNoSnapshot")
    private String firstStaffNoSnapshot;

    @ApiModelProperty(value = "首个告警人员姓名快照", name = "firstStaffNameSnapshot")
    private String firstStaffNameSnapshot;

    @ApiModelProperty(value = "人员姓名", name = "personnelName")
    private String personnelName;

    @ApiModelProperty(value = "公司名称", name = "companyName")
    private String companyName;

    @ApiModelProperty(value = "告警类型名称", name = "alarmTypeName")
    private String alarmTypeName;

    @ApiModelProperty(value = "告警关联终端号列表", name = "terminalNoListJson")
    private String terminalNoListJson;

    @ApiModelProperty(value = "同步时间", name = "syncTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime syncTime;

    @ApiModelProperty(value = "第三方原始数据", name = "rawJson")
    private String rawJson;

    @ApiModelProperty(value = "删除标识 TRUE/FALSE", name = "deleteEnum")
    private String deleteEnum;

    @ApiModelProperty(value = "备注", name = "remarks")
    private String remarks;

    @ApiModelProperty(value = "创建人姓名", name = "createName")
    private String createName;

    @ApiModelProperty(value = "更新人姓名", name = "updateName")
    private String updateName;

    @ApiModelProperty(value = "租户id", name = "tenantId")
    private Long tenantId;

    @ApiModelProperty(value = "单位id", name = "orgId")
    private Long orgId;

    @ApiModelProperty(value = "环境", name = "env")
    private String env;

    @ApiModelProperty(value = "版本", name = "version")
    private Integer version;

    @ApiModelProperty(value = "创建时间", name = "createTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "修改时间", name = "updateTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    @ApiModelProperty(value = "创建人id", name = "createId")
    private Long createId;

    @ApiModelProperty(value = "更新人id", name = "updateId")
    private Long updateId;

    @ApiModelProperty(value = "告警主体列表", name = "targetList")
    private List<AlarmRecordTargetCO> targetList;
}
