package com.persagy.proxy.object.model;

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

import java.util.List;
import java.util.Set;

/**
 * ADM 空间 实体
 * @author lvxy
 * @date 2021/8/17
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AdmSpace extends AdmBaseEntity<AdmSpace> {

    public static final String OBJ_TYPE = "space";
    /** 名称 */
    private String name;
    /** 本地编码 */
    private String localId;
    /** 本地名称 */
    private String localName;

    /** 项目ID */
    private String projectId;
    /** 建筑ID */
    private String buildingId;
    /** 楼层ID */
    private String floorId;
    /** 平台二维码 */
    private String defaultQRCode;
    /** BIM模型中编码 */
    private String bimId;

    /** 楼层选定区域轮廓线 */
    private ArrayNode outline;
    /** 轮廓线2 未使用*/
    private ArrayNode outline2;
    /** 图片 - 信息点里已存在的信息点不应在实体中重复定义为其他格式 */
    private ArrayNode pic;
    /** 空间是否受影响 */
    private Integer state;
    /** 空间常驻人数 */
    private Double permanentPeopleNum;
    /** 设计图纸中编码 */
    @JsonProperty("cADID")
    private String cADID;
    /** RFID标识 */
    @JsonProperty("rFID")
    private String rFID;

    /** 井深 */
    private Double depth;
    /** 面宽 */
    private Double width;
    /** 建筑面积 */
    private Double buildArea;
    /** 使用面积 */
    private Double netArea;
    /** 高 */
    private Double height;
    /** 备注文字 */
    private String intro;
    /** 设计供冷功率 */
    private Double ratedCoolingp;
    /** 设计供热功率 */
    private Double ratedHeatingp;
    /** 空调形式 */
    private String acType;
    /** 空间朝向 */
    private String zoneOrientation;
    /** 空间功能区类型 */
    private String roomFuncType;

    /** 空间序号 */
    private String roomSerial;
    /** 项目空间功能区类型 */
    private String projRoomFuncType;
    /** 设计照明功率 */
    private Double ratedLightp;
    /** 内外区分类 */
    private String zoneType;
    /** 租赁业态类型 */
    private String tenantType;
    /** 所属租户 */
    private String tenant;
    /** 配电容量 */
    private Double elecCap;
    /** 污染等级 */
    private String pollutionDegree;

    /** 对象类型code */
    private String classCode;

    /** 类型名称 */
    private String codeName;

    /** 二维码图片 */
    private ArrayNode qrcodePic;
    /** BIM模型中坐标 */
    private String bimLocation;
    /** 二维码图片 */
    @JsonProperty("ai")
    private Boolean isAi = false;
    /** 垂直交通关系空间id */
    private Set<String> spaceIdList;
    /** 更新的时候使用此字段保存楼层和建筑id */
    private String flowBuild;

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

    /** 级联-设备 */
    @CascadeColumn(graphCode = "MechInArch", relCode = "Eq2Sp", selectToObj = false)
    private List<AdmEquipment> equipment;
    /** 级联-元空间 使用中台的信息点，查询需要单独处理*/
    @CascadeColumn(graphCode = "MechInArch", relCode = "Sp2Si")
    private List<AdmISpace> zoneIspace;
    /** 级联-系统 */
    @CascadeColumn(graphCode = "MechInArch", relCode = "Sy2Sp", selectToObj = false)
    private List<AdmSystem> generalSystem;
    /** 级联-服务于空间的设备 */
    @CascadeColumn(graphCode = "MechForArch", relCode = "Eq2Sp", selectToObj = false)
    private List<AdmEquipment> equipmentFor;
    /** 建筑信息实体类 */
    @CascadeColumn(graphCode = "ArchSubset", relCode = "Bd2Sp", selectToObj = false)
    private AdmBuilding building;
    /** 楼层信息实体类 */
    @CascadeColumn(graphCode = "ArchSubset", relCode = "Fl2Sp", selectToObj = false)
    private AdmFloor floor;
    /** 级联-建筑 */
    @CascadeColumn(graphCode = "ArchSubset", relCode = "Bd2Sp", selectToObj = false)
    private List<AdmBuilding> buildingList;
    /** 级联-楼层 */
    @CascadeColumn(graphCode = "ArchSubset", relCode = "Fl2Sp", selectToObj = false)
    private List<AdmFloor> floorList;
    /** 资产列表 */
    @CascadeColumn
    private List<AdmProperty> propertyList;

    /** 空间轮廓线 未使用 */
    //private T spaceOutline;
    /** 对象类型 */
    private String objectType = OBJ_TYPE;

}
