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;


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

    private String content;
    @Dict(dictName = "ionicdemo_MsgContentTypeCodeList")
    private String contenttype;
    @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 dstaddresses;
    private String dstusers;
    private String errorinfo;
    private String fileat;
    private String fileat2;
    private String fileat3;
    private String fileat4;
    @Dict(dictName = "ionicdemo_MsgImportanceLevelCodeList")
    private Integer importanceflag;
    @Dict(dictName = "ionicdemo_CodeList50CodeList")
    private Integer iserror;
    @Dict(dictName = "ionicdemo_CodeList50CodeList")
    private Integer issend;
    @TableId(value= "msgsendqueuehisid",type=IdType.UUID)//指定主键生成策略
    private String msgsendqueuehisid;
    private String msgsendqueuehisname;
    @Dict(dictName = "ionicdemo_MsgTypeCodeList")
    private Integer msgtype;
    private Timestamp plansendtime;
    private Timestamp processtime;
    private String sendtag;
    private String subject;
    private String totaldstaddresses;
    @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;
    private String userdata;
    private String userdata2;
    private String userdata3;
    private String userdata4;
    /**
     *  设置属性值[消息内容]
     *  @param content
     */
    public void setContent(String content){
        if(StringUtils.isEmpty(content))
            content=null;
        this.content = content;
        this.set("contentdirtyflag",true);
    }
    /**
     *  获取属性值[消息内容]
     */
    public String getContent(){
        return this.content;
    }
    /**
     *  重置属性值[消息内容]
     */
    public void resetContent(){
        this.set("contentdirtyflag",false);
        this.content = null;
    }
    /**
     *  设置属性值[内容类型]
     *  @param contenttype
     */
    public void setContenttype(String contenttype){
        if(StringUtils.isEmpty(contenttype))
            contenttype=null;
        this.contenttype = contenttype;
        this.set("contenttypedirtyflag",true);
    }
    /**
     *  获取属性值[内容类型]
     */
    public String getContenttype(){
        return this.contenttype;
    }
    /**
     *  重置属性值[内容类型]
     */
    public void resetContenttype(){
        this.set("contenttypedirtyflag",false);
        this.contenttype = 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 dstaddresses
     */
    public void setDstaddresses(String dstaddresses){
        if(StringUtils.isEmpty(dstaddresses))
            dstaddresses=null;
        this.dstaddresses = dstaddresses;
        this.set("dstaddressesdirtyflag",true);
    }
    /**
     *  获取属性值[目标地址]
     */
    public String getDstaddresses(){
        return this.dstaddresses;
    }
    /**
     *  重置属性值[目标地址]
     */
    public void resetDstaddresses(){
        this.set("dstaddressesdirtyflag",false);
        this.dstaddresses = null;
    }
    /**
     *  设置属性值[目标用户]
     *  @param dstusers
     */
    public void setDstusers(String dstusers){
        if(StringUtils.isEmpty(dstusers))
            dstusers=null;
        this.dstusers = dstusers;
        this.set("dstusersdirtyflag",true);
    }
    /**
     *  获取属性值[目标用户]
     */
    public String getDstusers(){
        return this.dstusers;
    }
    /**
     *  重置属性值[目标用户]
     */
    public void resetDstusers(){
        this.set("dstusersdirtyflag",false);
        this.dstusers = null;
    }
    /**
     *  设置属性值[错误信息]
     *  @param errorinfo
     */
    public void setErrorinfo(String errorinfo){
        if(StringUtils.isEmpty(errorinfo))
            errorinfo=null;
        this.errorinfo = errorinfo;
        this.set("errorinfodirtyflag",true);
    }
    /**
     *  获取属性值[错误信息]
     */
    public String getErrorinfo(){
        return this.errorinfo;
    }
    /**
     *  重置属性值[错误信息]
     */
    public void resetErrorinfo(){
        this.set("errorinfodirtyflag",false);
        this.errorinfo = null;
    }
    /**
     *  设置属性值[文件附件]
     *  @param fileat
     */
    public void setFileat(String fileat){
        if(StringUtils.isEmpty(fileat))
            fileat=null;
        this.fileat = fileat;
        this.set("fileatdirtyflag",true);
    }
    /**
     *  获取属性值[文件附件]
     */
    public String getFileat(){
        return this.fileat;
    }
    /**
     *  重置属性值[文件附件]
     */
    public void resetFileat(){
        this.set("fileatdirtyflag",false);
        this.fileat = null;
    }
    /**
     *  设置属性值[文件附件2]
     *  @param fileat2
     */
    public void setFileat2(String fileat2){
        if(StringUtils.isEmpty(fileat2))
            fileat2=null;
        this.fileat2 = fileat2;
        this.set("fileat2dirtyflag",true);
    }
    /**
     *  获取属性值[文件附件2]
     */
    public String getFileat2(){
        return this.fileat2;
    }
    /**
     *  重置属性值[文件附件2]
     */
    public void resetFileat2(){
        this.set("fileat2dirtyflag",false);
        this.fileat2 = null;
    }
    /**
     *  设置属性值[文件附件3]
     *  @param fileat3
     */
    public void setFileat3(String fileat3){
        if(StringUtils.isEmpty(fileat3))
            fileat3=null;
        this.fileat3 = fileat3;
        this.set("fileat3dirtyflag",true);
    }
    /**
     *  获取属性值[文件附件3]
     */
    public String getFileat3(){
        return this.fileat3;
    }
    /**
     *  重置属性值[文件附件3]
     */
    public void resetFileat3(){
        this.set("fileat3dirtyflag",false);
        this.fileat3 = null;
    }
    /**
     *  设置属性值[文件附件4]
     *  @param fileat4
     */
    public void setFileat4(String fileat4){
        if(StringUtils.isEmpty(fileat4))
            fileat4=null;
        this.fileat4 = fileat4;
        this.set("fileat4dirtyflag",true);
    }
    /**
     *  获取属性值[文件附件4]
     */
    public String getFileat4(){
        return this.fileat4;
    }
    /**
     *  重置属性值[文件附件4]
     */
    public void resetFileat4(){
        this.set("fileat4dirtyflag",false);
        this.fileat4 = null;
    }
    /**
     *  设置属性值[重要程度]
     *  @param importanceflag
     */
    public void setImportanceflag(Integer importanceflag){
        this.importanceflag = importanceflag;
        this.set("importanceflagdirtyflag",true);
    }
    /**
     *  获取属性值[重要程度]
     */
    public Integer getImportanceflag(){
        return this.importanceflag;
    }
    /**
     *  重置属性值[重要程度]
     */
    public void resetImportanceflag(){
        this.set("importanceflagdirtyflag",false);
        this.importanceflag = null;
    }
    /**
     *  设置属性值[处理错误]
     *  @param iserror
     */
    public void setIserror(Integer iserror){
        this.iserror = iserror;
        this.set("iserrordirtyflag",true);
    }
    /**
     *  获取属性值[处理错误]
     */
    public Integer getIserror(){
        return this.iserror;
    }
    /**
     *  重置属性值[处理错误]
     */
    public void resetIserror(){
        this.set("iserrordirtyflag",false);
        this.iserror = null;
    }
    /**
     *  设置属性值[是否发送]
     *  @param issend
     */
    public void setIssend(Integer issend){
        this.issend = issend;
        this.set("issenddirtyflag",true);
    }
    /**
     *  获取属性值[是否发送]
     */
    public Integer getIssend(){
        return this.issend;
    }
    /**
     *  重置属性值[是否发送]
     */
    public void resetIssend(){
        this.set("issenddirtyflag",false);
        this.issend = null;
    }
    /**
     *  设置属性值[消息发送队列（历史）标识]
     *  @param msgsendqueuehisid
     */
    public void setMsgsendqueuehisid(String msgsendqueuehisid){
        if(StringUtils.isEmpty(msgsendqueuehisid))
            msgsendqueuehisid=null;
        this.msgsendqueuehisid = msgsendqueuehisid;
        this.set("msgsendqueuehisiddirtyflag",true);
    }
    /**
     *  获取属性值[消息发送队列（历史）标识]
     */
    public String getMsgsendqueuehisid(){
        return this.msgsendqueuehisid;
    }
    /**
     *  重置属性值[消息发送队列（历史）标识]
     */
    public void resetMsgsendqueuehisid(){
        this.set("msgsendqueuehisiddirtyflag",false);
        this.msgsendqueuehisid = null;
    }
    /**
     *  设置属性值[消息发送队列（历史）名称]
     *  @param msgsendqueuehisname
     */
    public void setMsgsendqueuehisname(String msgsendqueuehisname){
        if(StringUtils.isEmpty(msgsendqueuehisname))
            msgsendqueuehisname=null;
        this.msgsendqueuehisname = msgsendqueuehisname;
        this.set("msgsendqueuehisnamedirtyflag",true);
    }
    /**
     *  获取属性值[消息发送队列（历史）名称]
     */
    public String getMsgsendqueuehisname(){
        return this.msgsendqueuehisname;
    }
    /**
     *  重置属性值[消息发送队列（历史）名称]
     */
    public void resetMsgsendqueuehisname(){
        this.set("msgsendqueuehisnamedirtyflag",false);
        this.msgsendqueuehisname = null;
    }
    /**
     *  设置属性值[消息类型]
     *  @param msgtype
     */
    public void setMsgtype(Integer msgtype){
        this.msgtype = msgtype;
        this.set("msgtypedirtyflag",true);
    }
    /**
     *  获取属性值[消息类型]
     */
    public Integer getMsgtype(){
        return this.msgtype;
    }
    /**
     *  重置属性值[消息类型]
     */
    public void resetMsgtype(){
        this.set("msgtypedirtyflag",false);
        this.msgtype = null;
    }
    /**
     *  设置属性值[计划发送时间]
     *  @param plansendtime
     */
    public void setPlansendtime(Timestamp plansendtime){
        this.plansendtime = plansendtime;
        this.set("plansendtimedirtyflag",true);
    }
    /**
     *  获取属性值[计划发送时间]
     */
    public Timestamp getPlansendtime(){
        return this.plansendtime;
    }
    /**
     *  重置属性值[计划发送时间]
     */
    public void resetPlansendtime(){
        this.set("plansendtimedirtyflag",false);
        this.plansendtime = null;
    }
    /**
     *  设置属性值[处理时间]
     *  @param processtime
     */
    public void setProcesstime(Timestamp processtime){
        this.processtime = processtime;
        this.set("processtimedirtyflag",true);
    }
    /**
     *  获取属性值[处理时间]
     */
    public Timestamp getProcesstime(){
        return this.processtime;
    }
    /**
     *  重置属性值[处理时间]
     */
    public void resetProcesstime(){
        this.set("processtimedirtyflag",false);
        this.processtime = null;
    }
    /**
     *  设置属性值[发送者标识]
     *  @param sendtag
     */
    public void setSendtag(String sendtag){
        if(StringUtils.isEmpty(sendtag))
            sendtag=null;
        this.sendtag = sendtag;
        this.set("sendtagdirtyflag",true);
    }
    /**
     *  获取属性值[发送者标识]
     */
    public String getSendtag(){
        return this.sendtag;
    }
    /**
     *  重置属性值[发送者标识]
     */
    public void resetSendtag(){
        this.set("sendtagdirtyflag",false);
        this.sendtag = null;
    }
    /**
     *  设置属性值[消息标题]
     *  @param subject
     */
    public void setSubject(String subject){
        if(StringUtils.isEmpty(subject))
            subject=null;
        this.subject = subject;
        this.set("subjectdirtyflag",true);
    }
    /**
     *  获取属性值[消息标题]
     */
    public String getSubject(){
        return this.subject;
    }
    /**
     *  重置属性值[消息标题]
     */
    public void resetSubject(){
        this.set("subjectdirtyflag",false);
        this.subject = null;
    }
    /**
     *  设置属性值[全部地址]
     *  @param totaldstaddresses
     */
    public void setTotaldstaddresses(String totaldstaddresses){
        if(StringUtils.isEmpty(totaldstaddresses))
            totaldstaddresses=null;
        this.totaldstaddresses = totaldstaddresses;
        this.set("totaldstaddressesdirtyflag",true);
    }
    /**
     *  获取属性值[全部地址]
     */
    public String getTotaldstaddresses(){
        return this.totaldstaddresses;
    }
    /**
     *  重置属性值[全部地址]
     */
    public void resetTotaldstaddresses(){
        this.set("totaldstaddressesdirtyflag",false);
        this.totaldstaddresses = 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;
    }
    /**
     *  设置属性值[用户数据]
     *  @param userdata
     */
    public void setUserdata(String userdata){
        if(StringUtils.isEmpty(userdata))
            userdata=null;
        this.userdata = userdata;
        this.set("userdatadirtyflag",true);
    }
    /**
     *  获取属性值[用户数据]
     */
    public String getUserdata(){
        return this.userdata;
    }
    /**
     *  重置属性值[用户数据]
     */
    public void resetUserdata(){
        this.set("userdatadirtyflag",false);
        this.userdata = null;
    }
    /**
     *  设置属性值[用户数据2]
     *  @param userdata2
     */
    public void setUserdata2(String userdata2){
        if(StringUtils.isEmpty(userdata2))
            userdata2=null;
        this.userdata2 = userdata2;
        this.set("userdata2dirtyflag",true);
    }
    /**
     *  获取属性值[用户数据2]
     */
    public String getUserdata2(){
        return this.userdata2;
    }
    /**
     *  重置属性值[用户数据2]
     */
    public void resetUserdata2(){
        this.set("userdata2dirtyflag",false);
        this.userdata2 = null;
    }
    /**
     *  设置属性值[用户数据3]
     *  @param userdata3
     */
    public void setUserdata3(String userdata3){
        if(StringUtils.isEmpty(userdata3))
            userdata3=null;
        this.userdata3 = userdata3;
        this.set("userdata3dirtyflag",true);
    }
    /**
     *  获取属性值[用户数据3]
     */
    public String getUserdata3(){
        return this.userdata3;
    }
    /**
     *  重置属性值[用户数据3]
     */
    public void resetUserdata3(){
        this.set("userdata3dirtyflag",false);
        this.userdata3 = null;
    }
    /**
     *  设置属性值[用户数据4]
     *  @param userdata4
     */
    public void setUserdata4(String userdata4){
        if(StringUtils.isEmpty(userdata4))
            userdata4=null;
        this.userdata4 = userdata4;
        this.set("userdata4dirtyflag",true);
    }
    /**
     *  获取属性值[用户数据4]
     */
    public String getUserdata4(){
        return this.userdata4;
    }
    /**
     *  重置属性值[用户数据4]
     */
    public void resetUserdata4(){
        this.set("userdata4dirtyflag",false);
        this.userdata4 = null;
    }
    /**
     * 重置当前数据对象属性值
     */
    public  void reset(){
        resetContent();
        resetContenttype();
        resetCreatedate();
        resetCreateman();
        resetDstaddresses();
        resetDstusers();
        resetErrorinfo();
        resetFileat();
        resetFileat2();
        resetFileat3();
        resetFileat4();
        resetImportanceflag();
        resetIserror();
        resetIssend();
        resetMsgsendqueuehisid();
        resetMsgsendqueuehisname();
        resetMsgtype();
        resetPlansendtime();
        resetProcesstime();
        resetSendtag();
        resetSubject();
        resetTotaldstaddresses();
        resetUpdatedate();
        resetUpdateman();
        resetUserdata();
        resetUserdata2();
        resetUserdata3();
        resetUserdata4();
    }
     /**
     * 获取数据主键（普通主键与联合主键）
     * @return
     */
    @JsonIgnore
    public Serializable getDefaultPrimaryKey()
    {
	    //随机生成主键
         return  IdWorker.get32UUID();

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