package com.bohuikeji.frame.module.admin.entity.sys;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.bohuikeji.frame.module.admin.base.EntityBase;
import com.bohuikeji.frame.module.admin.utils.StringUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 系统图表类
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class SysChart extends EntityBase<SysChart> implements Serializable {

    /**
     * 自增ID
     */
    @TableId(value = "chart_id", type = IdType.AUTO)
    Integer chartId;
    /**
     * 图表名称
     */
    @TableField("chart_name")
    String chartName;
    /**
     * 图表所属模块
     */
    @TableField("chart_model")
    String chartModel;
    /**
     * 图表所属项目
     */
    @TableField("chart_project")
    String chartProject;
    /**
     * 图表组
     */
    @TableField("chart_group")
    String chartGroup;
    /**
     * 图表类型
     */
    @TableField("chart_type")
    String chartType;
    /**
     * 图表数据周期
     * 例如：7
     * 解释：近7天数据统计
     */
    @TableField("chart_days")
    Integer chartDays;
    /**
     * 图表显示块大小
     * 可选：2、3、4、6、12
     */
    @TableField("chart_size")
    Integer chartSize;
    /**
     * 图表查询数据执行sql
     */
    @TableField("chart_sql")
    String chartSql;
    /**
     * 图表配置json
     */
    @TableField("chart_json")
    String chartJson;
    /**
     * 是否显示
     */
    @TableField("chart_show")
    Boolean charShow;
    /**
     * 图表排序
     */
    @TableField("chart_sort")
    Float chartSort;
    /**
     * 图表创建时间
     */
    @TableField("create_time")
    LocalDateTime createTime=LocalDateTime.now();
    /**
     * 图表创建用户
     */
    @TableField("create_user")
    Integer createUser;
    /**
     * 【非数据库字段】
     *  保存sql执行结果
     */
    @TableField(exist = false)
    String value;

    public SysChart full(Object ... params){
        return this.setValue(this.sql().selectObj(StringUtils.formatStr(this.getChartSql(),params)).toString());
    }
}
