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

import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 来自FindS的BI区域及围栏数据。
 *
 * @Author fangjiakai
 * @Date 2026-07-07
 */
@Data
public class BiAreaFenceCO extends ClientObject {
    @ApiModelProperty(value = "FindS围栏ID", name = "id")
    private Long id;

    @ApiModelProperty(value = "本地围栏ID", name = "localFenceId")
    private Long localFenceId;

    @ApiModelProperty(value = "FindS围栏ID", name = "findsFenceId")
    private Long findsFenceId;

    @ApiModelProperty(value = "围栏名称", name = "name")
    private String name;

    @ApiModelProperty(value = "围栏编码", name = "code")
    private String code;

    @ApiModelProperty(value = "围栏范围", name = "fenceScope")
    private String fenceScope;

    @ApiModelProperty(value = "围栏状态", name = "status")
    private String status;

    @ApiModelProperty(value = "公司ID", name = "corpinfoId")
    private String corpinfoId;

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

    @ApiModelProperty(value = "关联区域ID", name = "areaId")
    private Long areaId;

    @ApiModelProperty(value = "关联区域名称", name = "areaName")
    private String areaName;

    @ApiModelProperty(value = "港区区域ID", name = "portId")
    private Long portId;

    @ApiModelProperty(value = "港区编码", name = "portCode")
    private String portCode;

    @ApiModelProperty(value = "港区名称", name = "portName")
    private String portName;

    @ApiModelProperty(value = "围栏业务类型ID", name = "bizId")
    private Long bizId;

    @ApiModelProperty(value = "围栏业务类型", name = "fenceBiz")
    private FenceBiz fenceBiz;

    @ApiModelProperty(value = "是否静默区域", name = "silence")
    private Boolean silence;

    @ApiModelProperty(value = "空间类型", name = "spaceType")
    private String spaceType;

    @ApiModelProperty(value = "生效周期配置", name = "effectPeriod")
    private Object effectPeriod;

    @ApiModelProperty(value = "生效周期配置JSON", name = "effectPeriodJson")
    private String effectPeriodJson;

    @ApiModelProperty(value = "围栏边界坐标", name = "polygon")
    private Object polygon;

    @ApiModelProperty(value = "围栏边界坐标JSON", name = "polygonJson")
    private String polygonJson;

    @ApiModelProperty(value = "中心点经度", name = "centerLon")
    private BigDecimal centerLon;

    @ApiModelProperty(value = "中心点纬度", name = "centerLat")
    private BigDecimal centerLat;

    @ApiModelProperty(value = "建筑ID", name = "buildingId")
    private Long buildingId;

    @ApiModelProperty(value = "楼层", name = "floor")
    private Integer floor;

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

    @ApiModelProperty(value = "组织编码/三方企业编码", name = "orgCode")
    private String orgCode;

    @ApiModelProperty(value = "三方返回的统一社会信用代码", name = "creditCode")
    private String creditCode;

    @ApiModelProperty(value = "修改人", name = "modifier")
    private String modifier;

    @ApiModelProperty(value = "修改时间", name = "modifierTime")
    private String modifierTime;

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

    @Data
    public static class FenceBiz {
        @ApiModelProperty(value = "业务类型ID", name = "id")
        private Long id;

        @ApiModelProperty(value = "业务类型名称", name = "name")
        private String name;

        @ApiModelProperty(value = "归属类型 SYSTEM/USER", name = "belongType")
        private String belongType;

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