package com.persagy.adm.server.algorithm.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.persagy.dmp.common.model.entity.AuditableEntity;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import org.json.JSONObject;

/**
 * 模型文件
 * @author : lijie
 * Update By 2022/1/12 16:24
 */
@TableName(value ="adm_model_file",autoResultMap = true)
@Data
public class AdmModelFile extends AuditableEntity<AdmModelFile> {

    /**
     * 模型文件的上传原始名
     */
    private String originalName;

    /**
     * 楼层模型的版本号
     */
    private Integer version;

    /**
     * 上传模型文件的用户id
     */
    private String userId;

    /**
     * 上传模型文件的用户名
     */
    private String userName;

    /**
     * 模型文件的当前处理状态:1=上传完毕, 2=模型初步检查完成, 3=同步数据完成, 4=模型正常结束
     */
    private Integer status;

    /**
     * 备注
     */
    @TableField(value = "note",typeHandler = JacksonTypeHandler.class)
    private JSONObject note;

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

    /**
     * 模型解析后生成的数据文件id
     */
    private String dataFileId;

    /**
     * 模型解析后生成的小数据文件id,对应楼层的floorMap
     */
    private String minDataFileId;

    /**
     * 模型文件所属楼层id
     */
    private String floorId;

    /**
     * 建筑id
     */
    private String buildingId;

    /**
     * 项目id
     */
    private String projectId;

    /**
     * 集团编码
     */
    private String groupCode;

    /**
     * 模型文件是否已被删除
     */
    private Boolean removed;

    /**
     * 跟数据中心同步数据失败时的重试次数
     */
    private Integer syncRetryTimes;

    /**
     * 上次重试日期
     */
    private Date syncRetryDate;

    /**
     * 上次同步到数据中心时的错误消息
     */
    private String syncErrorMsg;

    /**
     * 模型的标高
     */
    private Double level;

    /**
     * 存储模型状态信息
     */
    @TableField(value = "status_info",typeHandler = JacksonTypeHandler.class)
    private JSONObject statusInfo;

    /**
     * 模型文件版本
     */
    private String revitVersion;
}