package com.ruoyi.interfaces.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 模型信息对象 md_model_info
 *
 * @author ruoyi
 * @date 2025-07-15
 */
public class MdModelInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 模型标识
     */
    @ApiModelProperty("模型标识")
    private String mdid;

    /**
     * 模型名称
     */
    @ApiModelProperty("模型名称")
    @Excel(name = "模型名称")
    private String name;

    /**
     * 模型英文名称
     */
    @ApiModelProperty("模型英文名称")
    @Excel(name = "模型英文名称")
    private String enname;

    /**
     * 目录标识
     */
    @ApiModelProperty("目录标识")
    @Excel(name = "目录标识")
    private String cateid;

    /**
     * 开发语言
     * <字典:development_language>
     */
    @ApiModelProperty("开发语言")
    @Excel(name = "开发语言")
    private String devlang;

    /**
     * 模型版本号
     */
    @ApiModelProperty("模型版本号")
    @Excel(name = "模型版本号")
    private String version;

    /**
     * 模型介绍
     */
    @ApiModelProperty("模型介绍")
    @Excel(name = "模型介绍")
    private String intro;

    /**
     * 模型类型
     * 1水利专业模型 2排水专业模型 3供水专业模型 4海洋专业模型
     */
    @ApiModelProperty("模型类型")
    @Excel(name = "模型类型,1集总式 2分布式 3水力学")
    private String type;

    /**
     * 模型标签
     */
    @ApiModelProperty("模型标签")
    @Excel(name = "模型标签")
    private String tags;

    /**
     * 开发者用户编号
     */
    @ApiModelProperty("开发者用户编号")
    @Excel(name = "开发者用户编号")
    private Long author;

    /**
     * 是否发布
     */
    @ApiModelProperty("是否发布")
    @Excel(name = "是否发布")
    private Integer isPublic;

    /**
     * 是否审核
     */
    @ApiModelProperty("是否审核")
    @Excel(name = "是否审核")
    private Integer isApproved;

    /**
     * 模型状态
     */
    @ApiModelProperty("模型状态")
    @Excel(name = "模型状态")
    private Integer status;

    /**
     * 模型类名
     */
    @ApiModelProperty("模型类名")
    @Excel(name = "模型类名")
    private String className;

    /**
     * 模型提供单位
     */
    @ApiModelProperty("模型提供单位")
    @Excel(name = "模型提供单位")
    private String mdUnit;

    /**
     * 模型单位联系方式
     */
    @ApiModelProperty("模型单位联系方式")
    @Excel(name = "模型单位联系方式")
    private String mdContact;

    /**
     * 开发单位
     */
    @ApiModelProperty("开发单位")
    @Excel(name = "开发单位")
    private String developer;

    /**
     * 是否启动消息服务
     */
    @ApiModelProperty("是否启动消息服务")
    @Excel(name = "是否启动消息服务")
    private Integer msgFlag;

    /**
     * 模型消息WebHook
     */
    @ApiModelProperty("模型消息WebHook")
    @Excel(name = "模型消息WebHook")
    private String msgWebHook;

    /**
     * 模型CPU核心数
     */
    @ApiModelProperty("模型CPU核心数")
    @Excel(name = "模型CPU核心数")
    private Integer mdCPU;

    /**
     * 是否需要GPU
     */
    @ApiModelProperty("是否需要GPU")
    @Excel(name = "是否需要GPU")
    private Integer mdGpu;

    /**
     * 模型运行平台
     */
    @ApiModelProperty("模型运行平台")
    @Excel(name = "模型运行平台")
    private String mdRunEnv;

    /**
     * 模型运行命令
     */
    @ApiModelProperty("模型运行命令")
    @Excel(name = "模型运行命令")
    private String mdRunCmd;

    /**
     * 模型输入输出文件名称
     */
    @ApiModelProperty("模型输入输出文件名称")
    @Excel(name = "模型输入输出文件名称")
    private String mdInOutName;

    /**
     * 模型输入输出文件英文名称
     */
    @ApiModelProperty("模型输入输出文件英文名称")
    @Excel(name = "模型输入输出文件英文名称")
    private String mdInOutNameEn;

    /**
     * 模型调用示例
     */
    @ApiModelProperty("模型调用示例")
    @Excel(name = "模型调用示例")
    private String mirrorImageEg;

    /**
     * 模型镜像地址/服务地址
     * 如果是软件包，就是路径，如果是API服务，就是IP地址
     */
    @ApiModelProperty("模型镜像地址/服务地址")
    @Excel(name = "模型镜像地址/服务地址")
    private String mirrorImageUrl;

    /**
     * 模型对应文件描述表
     * 文档上传路径，FILEID
     */
    @ApiModelProperty("模型对应文件描述表")
    @Excel(name = "模型对应文件描述表")
    private String mirrorImageDesc;

    /**
     * 编辑时间
     */
    @ApiModelProperty("编辑时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "编辑时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date modifyBy;

    /**
     * 注册人员
     */
    private String registrant;

    public MdModelInfo(String mdid, String fileid) {
        this.mdid = mdid;
        this.mirrorImageDesc = fileid;
    }

    public String getRegistrant() {
        return registrant;
    }

    public void setRegistrant(String registrant) {
        this.registrant = registrant;
    }

    public void setMdid(String mdid) {
        this.mdid = mdid;
    }

    public String getMdid() {
        return mdid;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setEnname(String enname) {
        this.enname = enname;
    }

    public String getEnname() {
        return enname;
    }

    public void setCateid(String cateid) {
        this.cateid = cateid;
    }

    public String getCateid() {
        return cateid;
    }

    public void setDevlang(String devlang) {
        this.devlang = devlang;
    }

    public String getDevlang() {
        return devlang;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getVersion() {
        return version;
    }

    public void setIntro(String intro) {
        this.intro = intro;
    }

    public String getIntro() {
        return intro;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    public String getTags() {
        return tags;
    }

    public void setAuthor(Long author) {
        this.author = author;
    }

    public Long getAuthor() {
        return author;
    }

    public void setIsPublic(Integer isPublic) {
        this.isPublic = isPublic;
    }

    public Integer getIsPublic() {
        return isPublic;
    }

    public void setIsApproved(Integer isApproved) {
        this.isApproved = isApproved;
    }

    public Integer getIsApproved() {
        return isApproved;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getStatus() {
        return status;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getClassName() {
        return className;
    }

    public void setMdUnit(String mdUnit) {
        this.mdUnit = mdUnit;
    }

    public String getMdUnit() {
        return mdUnit;
    }

    public void setMdContact(String mdContact) {
        this.mdContact = mdContact;
    }

    public String getMdContact() {
        return mdContact;
    }

    public void setDeveloper(String developer) {
        this.developer = developer;
    }

    public String getDeveloper() {
        return developer;
    }

    public void setMsgFlag(Integer msgFlag) {
        this.msgFlag = msgFlag;
    }

    public Integer getMsgFlag() {
        return msgFlag;
    }

    public void setMsgWebHook(String msgWebHook) {
        this.msgWebHook = msgWebHook;
    }

    public String getMsgWebHook() {
        return msgWebHook;
    }

    public void setMdCPU(Integer mdCPU) {
        this.mdCPU = mdCPU;
    }

    public Integer getMdCPU() {
        return mdCPU;
    }

    public void setMdGpu(Integer mdGpu) {
        this.mdGpu = mdGpu;
    }

    public Integer getMdGpu() {
        return mdGpu;
    }

    public void setMdRunEnv(String mdRunEnv) {
        this.mdRunEnv = mdRunEnv;
    }

    public String getMdRunEnv() {
        return mdRunEnv;
    }

    public void setMdRunCmd(String mdRunCmd) {
        this.mdRunCmd = mdRunCmd;
    }

    public String getMdRunCmd() {
        return mdRunCmd;
    }

    public void setMdInOutName(String mdInOutName) {
        this.mdInOutName = mdInOutName;
    }

    public String getMdInOutName() {
        return mdInOutName;
    }

    public void setMdInOutNameEn(String mdInOutNameEn) {
        this.mdInOutNameEn = mdInOutNameEn;
    }

    public String getMdInOutNameEn() {
        return mdInOutNameEn;
    }

    public void setMirrorImageEg(String mirrorImageEg) {
        this.mirrorImageEg = mirrorImageEg;
    }

    public String getMirrorImageEg() {
        return mirrorImageEg;
    }

    public void setMirrorImageUrl(String mirrorImageUrl) {
        this.mirrorImageUrl = mirrorImageUrl;
    }

    public String getMirrorImageUrl() {
        return mirrorImageUrl;
    }

    public void setMirrorImageDesc(String mirrorImageDesc) {
        this.mirrorImageDesc = mirrorImageDesc;
    }

    public String getMirrorImageDesc() {
        return mirrorImageDesc;
    }

    public void setModifyBy(Date modifyBy) {
        this.modifyBy = modifyBy;
    }

    public Date getModifyBy() {
        return modifyBy;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("mdid", getMdid())
                .append("name", getName())
                .append("enname", getEnname())
                .append("cateid", getCateid())
                .append("devlang", getDevlang())
                .append("version", getVersion())
                .append("intro", getIntro())
                .append("type", getType())
                .append("tags", getTags())
                .append("author", getAuthor())
                .append("isPublic", getIsPublic())
                .append("isApproved", getIsApproved())
                .append("status", getStatus())
                .append("className", getClassName())
                .append("mdUnit", getMdUnit())
                .append("mdContact", getMdContact())
                .append("developer", getDeveloper())
                .append("msgFlag", getMsgFlag())
                .append("msgWebHook", getMsgWebHook())
                .append("mdCPU", getMdCPU())
                .append("mdGpu", getMdGpu())
                .append("mdRunEnv", getMdRunEnv())
                .append("mdRunCmd", getMdRunCmd())
                .append("mdInOutName", getMdInOutName())
                .append("mdInOutNameEn", getMdInOutNameEn())
                .append("mirrorImageEg", getMirrorImageEg())
                .append("mirrorImageUrl", getMirrorImageUrl())
                .append("mirrorImageDesc", getMirrorImageDesc())
                .append("createBy", getCreateBy())
                .append("modifyBy", getModifyBy())
                .toString();
    }

    public MdModelInfo(String mdid, String name, String enname, String cateid, String devlang, String version, String intro, String type, String tags, Long author, Integer isPublic, Integer isApproved, Integer status, String className, String mdUnit, String mdContact, String developer, Integer msgFlag, String msgWebHook, Integer mdCPU, Integer mdGpu, String mdRunEnv, String mdRunCmd, String mdInOutName, String mdInOutNameEn, String mirrorImageEg, String mirrorImageUrl, String mirrorImageDesc, Date modifyBy, String registrant) {
        this.mdid = mdid;
        this.name = name;
        this.enname = enname;
        this.cateid = cateid;
        this.devlang = devlang;
        this.version = version;
        this.intro = intro;
        this.type = type;
        this.tags = tags;
        this.author = author;
        this.isPublic = isPublic;
        this.isApproved = isApproved;
        this.status = status;
        this.className = className;
        this.mdUnit = mdUnit;
        this.mdContact = mdContact;
        this.developer = developer;
        this.msgFlag = msgFlag;
        this.msgWebHook = msgWebHook;
        this.mdCPU = mdCPU;
        this.mdGpu = mdGpu;
        this.mdRunEnv = mdRunEnv;
        this.mdRunCmd = mdRunCmd;
        this.mdInOutName = mdInOutName;
        this.mdInOutNameEn = mdInOutNameEn;
        this.mirrorImageEg = mirrorImageEg;
        this.mirrorImageUrl = mirrorImageUrl;
        this.mirrorImageDesc = mirrorImageDesc;
        this.modifyBy = modifyBy;
        this.registrant = registrant;
    }

    public MdModelInfo() {
    }
}
