package com.persagy.proxy.object.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.persagy.proxy.adm.annotations.CascadeColumn;
import com.persagy.proxy.adm.model.AdmBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * ADM 楼层 实体
 * @author lvxy
 * @date 2021/8/16
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AdmFloor extends AdmBaseEntity<AdmFloor> {
    public static final String OBJ_TYPE = "floor";
    /** 名称 */
    private String name;
    /** 本地编码 */
    private String localId;
    /** 本地名称 */
    private String localName;
    /** 平台默认二维码 */
    private String defaultQRCode;
    /** 项目ID */
    private String projectId;
    /** 建筑ID */
    private String buildingId;
    /** 坐标 */
    private String bimLocation;
    /** BIM模型中编码 */
    private String bimId;
    /** BIMID前缀 */
    private String bimIdPre;
    /** 楼层顺序号 */
    private Integer floorSequenceID;
    /** 楼层常驻人数 */
    private Double permanentPeopleNum;
    /** 楼层编码 */
    private String floorIdentity;

    /** 级联-建筑 */
    @CascadeColumn(graphCode = "ArchSubset", relCode = "Bd2Fl", selectToObj = false)
    private AdmBuilding building;
    /** 级联-项目 */
    @CascadeColumn() // TODO 没有这个关系
    private AdmProject project;
    /** 级联-贯通关系 */
    @CascadeColumn(graphCode = "ThroughRelationship", relCode = "Fl2Fl")
    private List<AdmFloor> floorThroughList;

    /** 模型文件id */
    private String modelId;

    /** 楼层选定区域轮廓线 */
    //private List<ObjectNode> outline;
    private List<ObjectNode> outline;

    /** 数量 */
    private Integer count;

    /** 自定义信息点 */
    private ObjectNode properties;
    /**
     * 中台存储自定义信息点 properties的string形式
     */
    private String propertiesInfo;

    /** 二维码图片 */
    private ArrayNode qrcodePic;


    /** 对象类型 */
    private String objectType = OBJ_TYPE;
    /** 楼层类型code */
    private String classCode = OBJ_TYPE;


    /** 空间列表 非中台信息*/
    @CascadeColumn(graphCode = "ArchSubset", relCode = "Fl2Sp")
    @JsonProperty("zoneSpaceList")
    private List<AdmSpace> spaceList;

    /** 楼层平面图地址 */
    //private String floorMap;

    /** 信息点 */
    //private Map<String, Object> infos;

}
