package com.sa.ibiz.demo.demo.domain;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonProperty.Access;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.cglib.beans.BeanGenerator;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import java.util.Map;
import java.util.HashMap;
import org.springframework.util.StringUtils;
import com.sa.ibiz.demo.ibizutil.security.AuthenticationUser;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import java.util.UUID;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import org.springframework.cglib.beans.BeanCopier;
import com.sa.ibiz.demo.ibizutil.annotation.Dict;
import com.sa.ibiz.demo.ibizutil.domain.EntityBase;
import java.io.Serializable;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import java.math.BigInteger;
import com.sa.ibiz.demo.ibizutil.enums.FillMode;
import com.sa.ibiz.demo.ibizutil.enums.PredefinedType;
import com.sa.ibiz.demo.ibizutil.annotation.PreField;
import com.alibaba.fastjson.annotation.JSONField;


/**
 * 实体[System] 数据对象
 */
@TableName(value = "T_SRFSYSTEM",resultMap = "SystemResultMap")
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class System extends EntityBase implements Serializable{

    private String aurloginaddr;
    private String aurlogoutaddr;
    private String bigicon;
    @PreField(fill= FillMode.INSERT,preType = PredefinedType.CREATEDATE)
    private Timestamp createdate;
    @PreField(fill= FillMode.INSERT,preType = PredefinedType.CREATEMAN)
    @Dict(dictName = "ionicdemo_SysOperatorCodeList")
    private String createman;
    private String funlic;
    private String service;
    private String systemaddr;
    @Dict(dictName = "ionicdemo_SystemFuncCodeList")
    private Integer systemfun;
    @TableId(value= "systemid",type=IdType.UUID)//指定主键生成策略
    private String systemid;
    private String systemname;
    private String systemparam;
    @Dict(dictName = "ionicdemo_SystemTypeCodeList")
    private String systemtype;
    @PreField(fill= FillMode.INSERT_UPDATE,preType = PredefinedType.UPDATEDATE)
    private Timestamp updatedate;
    @PreField(fill= FillMode.INSERT_UPDATE,preType = PredefinedType.UPDATEMAN)
    @Dict(dictName = "ionicdemo_SysOperatorCodeList")
    private String updateman;
    /**
     *  设置属性值[认证请求地址]
     *  @param aurloginaddr
     */
    public void setAurloginaddr(String aurloginaddr){
        if(StringUtils.isEmpty(aurloginaddr))
            aurloginaddr=null;
        this.aurloginaddr = aurloginaddr;
        this.set("aurloginaddrdirtyflag",true);
    }
    /**
     *  获取属性值[认证请求地址]
     */
    public String getAurloginaddr(){
        return this.aurloginaddr;
    }
    /**
     *  重置属性值[认证请求地址]
     */
    public void resetAurloginaddr(){
        this.set("aurloginaddrdirtyflag",false);
        this.aurloginaddr = null;
    }
    /**
     *  设置属性值[认证注销地址]
     *  @param aurlogoutaddr
     */
    public void setAurlogoutaddr(String aurlogoutaddr){
        if(StringUtils.isEmpty(aurlogoutaddr))
            aurlogoutaddr=null;
        this.aurlogoutaddr = aurlogoutaddr;
        this.set("aurlogoutaddrdirtyflag",true);
    }
    /**
     *  获取属性值[认证注销地址]
     */
    public String getAurlogoutaddr(){
        return this.aurlogoutaddr;
    }
    /**
     *  重置属性值[认证注销地址]
     */
    public void resetAurlogoutaddr(){
        this.set("aurlogoutaddrdirtyflag",false);
        this.aurlogoutaddr = null;
    }
    /**
     *  设置属性值[图标]
     *  @param bigicon
     */
    public void setBigicon(String bigicon){
        if(StringUtils.isEmpty(bigicon))
            bigicon=null;
        this.bigicon = bigicon;
        this.set("bigicondirtyflag",true);
    }
    /**
     *  获取属性值[图标]
     */
    public String getBigicon(){
        return this.bigicon;
    }
    /**
     *  重置属性值[图标]
     */
    public void resetBigicon(){
        this.set("bigicondirtyflag",false);
        this.bigicon = null;
    }
    /**
     *  设置属性值[建立时间]
     *  @param createdate
     */
    public void setCreatedate(Timestamp createdate){
        this.createdate = createdate;
        this.set("createdatedirtyflag",true);
    }
    /**
     *  获取属性值[建立时间]
     */
    public Timestamp getCreatedate(){
        return this.createdate;
    }
    /**
     *  重置属性值[建立时间]
     */
    public void resetCreatedate(){
        this.set("createdatedirtyflag",false);
        this.createdate = null;
    }
    /**
     *  设置属性值[建立人]
     *  @param createman
     */
    public void setCreateman(String createman){
        if(StringUtils.isEmpty(createman))
            createman=null;
        this.createman = createman;
        this.set("createmandirtyflag",true);
    }
    /**
     *  获取属性值[建立人]
     */
    public String getCreateman(){
        return this.createman;
    }
    /**
     *  重置属性值[建立人]
     */
    public void resetCreateman(){
        this.set("createmandirtyflag",false);
        this.createman = null;
    }
    /**
     *  设置属性值[集成服务授权码]
     *  @param funlic
     */
    public void setFunlic(String funlic){
        if(StringUtils.isEmpty(funlic))
            funlic=null;
        this.funlic = funlic;
        this.set("funlicdirtyflag",true);
    }
    /**
     *  获取属性值[集成服务授权码]
     */
    public String getFunlic(){
        return this.funlic;
    }
    /**
     *  重置属性值[集成服务授权码]
     */
    public void resetFunlic(){
        this.set("funlicdirtyflag",false);
        this.funlic = null;
    }
    /**
     *  设置属性值[厂商备注]
     *  @param service
     */
    public void setService(String service){
        if(StringUtils.isEmpty(service))
            service=null;
        this.service = service;
        this.set("servicedirtyflag",true);
    }
    /**
     *  获取属性值[厂商备注]
     */
    public String getService(){
        return this.service;
    }
    /**
     *  重置属性值[厂商备注]
     */
    public void resetService(){
        this.set("servicedirtyflag",false);
        this.service = null;
    }
    /**
     *  设置属性值[系统地址]
     *  @param systemaddr
     */
    public void setSystemaddr(String systemaddr){
        if(StringUtils.isEmpty(systemaddr))
            systemaddr=null;
        this.systemaddr = systemaddr;
        this.set("systemaddrdirtyflag",true);
    }
    /**
     *  获取属性值[系统地址]
     */
    public String getSystemaddr(){
        return this.systemaddr;
    }
    /**
     *  重置属性值[系统地址]
     */
    public void resetSystemaddr(){
        this.set("systemaddrdirtyflag",false);
        this.systemaddr = null;
    }
    /**
     *  设置属性值[系统集成功能]
     *  @param systemfun
     */
    public void setSystemfun(Integer systemfun){
        this.systemfun = systemfun;
        this.set("systemfundirtyflag",true);
    }
    /**
     *  获取属性值[系统集成功能]
     */
    public Integer getSystemfun(){
        return this.systemfun;
    }
    /**
     *  重置属性值[系统集成功能]
     */
    public void resetSystemfun(){
        this.set("systemfundirtyflag",false);
        this.systemfun = null;
    }
    /**
     *  设置属性值[系统标识]
     *  @param systemid
     */
    public void setSystemid(String systemid){
        if(StringUtils.isEmpty(systemid))
            systemid=null;
        this.systemid = systemid;
        this.set("systemiddirtyflag",true);
    }
    /**
     *  获取属性值[系统标识]
     */
    public String getSystemid(){
        return this.systemid;
    }
    /**
     *  重置属性值[系统标识]
     */
    public void resetSystemid(){
        this.set("systemiddirtyflag",false);
        this.systemid = null;
    }
    /**
     *  设置属性值[系统名称]
     *  @param systemname
     */
    public void setSystemname(String systemname){
        if(StringUtils.isEmpty(systemname))
            systemname=null;
        this.systemname = systemname;
        this.set("systemnamedirtyflag",true);
    }
    /**
     *  获取属性值[系统名称]
     */
    public String getSystemname(){
        return this.systemname;
    }
    /**
     *  重置属性值[系统名称]
     */
    public void resetSystemname(){
        this.set("systemnamedirtyflag",false);
        this.systemname = null;
    }
    /**
     *  设置属性值[系统参数]
     *  @param systemparam
     */
    public void setSystemparam(String systemparam){
        if(StringUtils.isEmpty(systemparam))
            systemparam=null;
        this.systemparam = systemparam;
        this.set("systemparamdirtyflag",true);
    }
    /**
     *  获取属性值[系统参数]
     */
    public String getSystemparam(){
        return this.systemparam;
    }
    /**
     *  重置属性值[系统参数]
     */
    public void resetSystemparam(){
        this.set("systemparamdirtyflag",false);
        this.systemparam = null;
    }
    /**
     *  设置属性值[系统类型]
     *  @param systemtype
     */
    public void setSystemtype(String systemtype){
        if(StringUtils.isEmpty(systemtype))
            systemtype=null;
        this.systemtype = systemtype;
        this.set("systemtypedirtyflag",true);
    }
    /**
     *  获取属性值[系统类型]
     */
    public String getSystemtype(){
        return this.systemtype;
    }
    /**
     *  重置属性值[系统类型]
     */
    public void resetSystemtype(){
        this.set("systemtypedirtyflag",false);
        this.systemtype = null;
    }
    /**
     *  设置属性值[更新时间]
     *  @param updatedate
     */
    public void setUpdatedate(Timestamp updatedate){
        this.updatedate = updatedate;
        this.set("updatedatedirtyflag",true);
    }
    /**
     *  获取属性值[更新时间]
     */
    public Timestamp getUpdatedate(){
        return this.updatedate;
    }
    /**
     *  重置属性值[更新时间]
     */
    public void resetUpdatedate(){
        this.set("updatedatedirtyflag",false);
        this.updatedate = null;
    }
    /**
     *  设置属性值[更新人]
     *  @param updateman
     */
    public void setUpdateman(String updateman){
        if(StringUtils.isEmpty(updateman))
            updateman=null;
        this.updateman = updateman;
        this.set("updatemandirtyflag",true);
    }
    /**
     *  获取属性值[更新人]
     */
    public String getUpdateman(){
        return this.updateman;
    }
    /**
     *  重置属性值[更新人]
     */
    public void resetUpdateman(){
        this.set("updatemandirtyflag",false);
        this.updateman = null;
    }
    /**
     * 重置当前数据对象属性值
     */
    public  void reset(){
        resetAurloginaddr();
        resetAurlogoutaddr();
        resetBigicon();
        resetCreatedate();
        resetCreateman();
        resetFunlic();
        resetService();
        resetSystemaddr();
        resetSystemfun();
        resetSystemid();
        resetSystemname();
        resetSystemparam();
        resetSystemtype();
        resetUpdatedate();
        resetUpdateman();
    }
     /**
     * 获取数据主键（普通主键与联合主键）
     * @return
     */
    @JsonIgnore
    public Serializable getDefaultPrimaryKey()
    {
	    //随机生成主键
         return  IdWorker.get32UUID();

    }
     /**
     * 复制当前对象数据到目标对象(粘贴重置)
     *
     * @throws Exception
     */
    public System copyTo(System targetEntity)
	{
		BeanCopier copier=BeanCopier.create(System.class, System.class, false);
		copier.copy(this, targetEntity, null);
        targetEntity.resetSystemid();
		return targetEntity;
	}
}