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.time.LocalDateTime;
import java.util.List;

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

    @ApiModelProperty(value = "规则编码", name = "ruleCode")
    private String ruleCode;

    @ApiModelProperty(value = "规则名称", name = "ruleName")
    private String ruleName;

    @ApiModelProperty(value = "告警属性 COMPANY_AREA公司区域告警 FENCE电子围栏告警", name = "alarmAttr")
    private String alarmAttr;

    @ApiModelProperty(value = "FindS告警类型编码 CROSS_IN/CROSS_OUT/RETENTION/STAY等", name = "alarmCode")
    private String alarmCode;

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

    @ApiModelProperty(value = "是否启用", name = "enable")
    private Integer enable;

    @ApiModelProperty(value = "状态 ENABLED启用 DISABLED停用", name = "ruleStatus")
    private String ruleStatus;

    @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 = "围栏生效策略 WHOLE全部 SPECIFIED指定 NULL无", name = "fenceEffectStrategy")
    private String fenceEffectStrategy;

    @ApiModelProperty(value = "应用对象类型 多个逗号分隔", name = "trackTypes")
    private String trackTypes;

    @ApiModelProperty(value = "碰撞对象类型", name = "crashType")
    private String crashType;

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

    @ApiModelProperty(value = "同步状态 SUCCESS/FAIL/WAIT", name = "syncStatus")
    private String syncStatus;

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

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

    @ApiModelProperty(value = "关联围栏名称，多个逗号分隔", name = "fenceNames")
    private String fenceNames;

    @ApiModelProperty(value = "关联围栏列表", name = "fenceRelList")
    private List<AlarmRuleFenceRelCO> fenceRelList;

    @ApiModelProperty(value = "规则项列表", name = "ruleItemList")
    private List<AlarmRuleItemCO> ruleItemList;

    @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;
}
