/*
 * ********************************************************************************************************************
 *
 *                      :*$@@%$*:                         ;:                ;;    ;;
 *                    :@@%!  :!@@%:                       %!             ;%%@@%$ =@@@@@@@%;     @%@@@%%%%@@@@@
 *                   :@%;       :$=                       %%$$$%$$         ;$$  ;$@=   !@$
 *                   =@!                                  %!              @ $=;%   !@@@%:      !$$$$$$$$$$$$$$=
 *                   =@*                                  %!              @ $= % %@=   =%@!      %=
 *              *$%%! @@=        ;=$%%%$*:                %!              @ $= % =%%%%%%@$      *%:         =%
 *            %@@!:    !@@@%=$@@@@%!  :*@@$:              %!              @ $= % $*     ;@      @*          :%*
 *          ;@@!          ;!!!;:         ;@%:      =======@%========*     @ $$ % $%*****$@     :@$=*********=@$
 *          $@*   ;@@@%=!:                *@*
 *          =@$    ;;;!=%@@@@=!           =@!
 *           %@$:      =@%: :*@@@*       %@=                    Copyright (c) 2016-2019.  北京上格云技术有限公司
 *            ;%@@$=$@@%*       *@@@$=%@@%;
 *               ::;::             ::;::                                              All rights reserved.
 *
 * ********************************************************************************************************************
 */

package cn.sagacloud.server.algorithm.models.monitor

import cn.sagacloud.server.algorithm.models.entities.Unit
import com.alibaba.fastjson.annotation.JSONField
import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.annotation.JsonProperty
import com.sybotan.service.models.SBaseEntity
import io.swagger.annotations.ApiModel
import io.swagger.annotations.ApiModelProperty
import org.springframework.stereotype.Component
import java.util.*
import javax.persistence.Column
import javax.persistence.Id
import javax.persistence.Table
import kotlin.collections.ArrayList

/**
 *
 *
 * @author jxing
 */
@ApiModel(description = "模型文件监控")
@Table(name = "revit.model_monitor")
@Component
class ModelMonitor : SBaseEntity() {

    /** 表id, uuid */
    @ApiModelProperty(value = "模型id, uuid")
    @Column(name = "model_id")
    @Id
    @JSONField(name = "Id")
    var id: String? = null

    /** 上传状态 */
    @ApiModelProperty(value = "上传状态")
    @Column(name = "upload_state")
    @JSONField(name = "UploadState")
    var uploadState: MntUploadState? = null

    /** 调度器分配相关信息 */
    @ApiModelProperty(value = "调度器分配相关信息")
    @Column(name = "scheduler_check")
    @JSONField(name = "SchedulerCheck")
    var schedulerCheck: MntSchedulerDispatch? = null

    /** 调度器分配相关信息 */
    @ApiModelProperty(value = "调度器分配相关信息")
    @Column(name = "scheduler_export")
    @JSONField(name = "SchedulerExport")
    var schedulerExport: MntSchedulerDispatch? = null

    /** 模型检查 */
    @ApiModelProperty(value = "模型检查")
    @Column(name = "model_check")
    @JSONField(name = "ModelCheck")
    var modelCheck: MntModelCheck? = null

    /** 模型导出 */
    @ApiModelProperty(value = "模型导出")
    @Column(name = "model_export")
    @JSONField(name = "ModelExport")
    var modelExport: MntModelExport? = null

    /** json分析 */
    @ApiModelProperty(value = "json分析")
    @Column(name = "json_analysis")
    @JSONField(name = "JsonAnalysis")
    var jsonAnalysis: MntModelAnalysis? = null

    /** 保存模型数据入库 */
    @ApiModelProperty(value = "保存模型数据入库")
    @Column(name = "save_data")
    @JSONField(name = "SaveData")
    var saveData: MntSaveData? = null

    /** 多楼层模型检查 */
    @ApiModelProperty(value = "多楼层模型检查")
    @Column(name = "multifloor_check")
    @JSONField(name = "MultiFloorCheck")
    var multiFloorCheck: MntMultiFloorCheck? = null

    /** 同步数据到数据中心 */
    @ApiModelProperty(value = "同步数据到数据中心")
    @Column(name = "sync_datacenter")
    @JSONField(name = "SyncDatacenter")
    var syncDatacenter: MntSyncDatacenter? = null

    /** 保存日志信息 */
    @ApiModelProperty(value = "保存日志信息")
    @Column(name = "save_log")
    @JSONField(name = "SaveLog")
    var saveLog: MntSaveLog? = null
}