package com.persagy.proxy.object.model;

import com.persagy.proxy.adm.annotations.CascadeColumn;
import com.persagy.proxy.adm.model.AdmPoint;
import com.persagy.proxy.adm.model.AdmBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;
import java.util.Map;

/**
 * ADM 组件 实体 ==> Equipment
 * @author lvxy
 * @date 2021/8/17
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class AdmComponent extends AdmBaseEntity<AdmComponent> {

        public static final String OBJ_TYPE = "component";
        /** 部件名称 */
        private String name;
        /** 本地编码 */
        private String localId;
        /** 本地名称 */
        private String localName;
        /** 二维码内容 */
        private String defaultQRCode;
        /** 设计图纸中编码 */
        private String cadId;
        /** RFID标识 */
        private String rfId;


        /** BIM模型中编码 */
        private String bimId;
        /** BIM构建编码 */
        private String bimTypeId;
        /** BIM模型中坐标 */
        private String bimLocation;
        /** 现场发现人员 */
        private String findPeople;

        /** 项目ID */
        private String projectId;
        /** 部件类型code */
        private String classCode;
        /** 部件所在建筑ID */
        private String buildingId;
        /** 部件所在楼层id */
        private String floorId;
        /** 部件关联的资产id */
        private String propertyId;

        /** Revit族 */
        private String bimFamilyName;
        /** Revit族类型 */
        private String bimFamilySymbol;
        /** 部件序号 */
        private String equipSerial;

        /** 部件关联部件的id */
        private String parentId;
        /** 系统id集合 */
        private List<String> systemList;
        /** 项目自定义类型 */
        private String customCategory;
        /** 任务状态 */
        private String taskState;
        /** 模型id */
        private String modelId;
        /** 贴码状态 */
        private String codeType;
        /** 备注 */
        private String note;

        /** 客户端id */
        private String appId;
        /** 方案id */
        private String schemeId;

        /** 系统编码 */
        private String systemCode;
        /** 系统名称 */
        private String systemName;
        /** 二维码图片 */
        private String qrcodePic;
        /** 对象类型 */
        private String objectType = OBJ_TYPE;

        /** 部件分类 */
        private Map<String, String> equipCategory;

        /** 资产信息实体类   资产对应部件设施关系 资产→部件设施*/
        @CascadeColumn(graphCode = "Property2Mech", relCode = "Pe2Eq", selectToObj = false)
        private AdmProperty property;
        /** 建筑信息实体类 */
        @CascadeColumn(graphCode = "MechForArch", relCode = "Eq2Bd")
        private AdmBuilding building;
        /** 楼层信息实体类 */
        @CascadeColumn(graphCode = "MechForArch", relCode = "Eq2Fl")
        private AdmFloor floor;
        /** 项目信息实体类 */
        @CascadeColumn(graphCode = "MechSubset", relCode = "Pj2Eq", selectToObj = false)
        private AdmProject project;
        /**BIM模型中坐标json，坐标x,y,z */
        private AdmPoint locationJson;
        /** 级联-部件服务所在的空 */
        @CascadeColumn(graphCode = "MechForArch", relCode = "Eq2Sp")
        private List<AdmSpace> zoneSpaceForBase;
        /** 级联-部件服务所在的空 */
        @CascadeColumn(graphCode = "MechInArch", relCode = "Eq2Sp")
        private List<AdmSpace> zoneSpaceInBase;
        /** 级联-部件所在的竖井 */
        @CascadeColumn(graphCode = "MechInArch", relCode = "Eq2Sh")
        private List<AdmShaft> shaftList;
        /** 资产列表 */
        @CascadeColumn(graphCode = "Property2Mech", relCode = "Pe2Eq", selectToObj = false)
        private List<AdmProperty> propertyList;
        
}
