package cn.ibizlab.r7.runtime.service.runtimemgr.dto;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.math.BigInteger;
import java.util.Map;
import java.util.HashMap;
import java.io.Serializable;
import java.math.BigDecimal;
import cn.ibizlab.r7.runtime.core.r7rt_base.valuerule.anno.usergroupdetail.*;
import cn.ibizlab.r7.runtime.core.r7rt_base.domain.UserGroupDetail;
import org.springframework.cglib.beans.BeanCopier;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 服务DTO对象[UserGroupDetailDTO]
 */
public class UserGroupDetailDTO implements Serializable {

	private static final long serialVersionUID = 1L;

    /**
     * 属性 [UPDATEMAN]
     *
     */
    @UserGroupDetailUpdateManDefault(info = "默认规则")
    private String updateMan;

    @JsonIgnore
    private boolean updateManDirtyFlag;

    /**
     * 属性 [UPDATEDATE]
     *
     */
    @UserGroupDetailUpdateDateDefault(info = "默认规则")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    private Timestamp updateDate;

    @JsonIgnore
    private boolean updateDateDirtyFlag;

    /**
     * 属性 [ENABLE]
     *
     */
    @UserGroupDetailEnableDefault(info = "默认规则")
    private Integer enable;

    @JsonIgnore
    private boolean enableDirtyFlag;

    /**
     * 属性 [USERGROUPDETAILNAME]
     *
     */
    @UserGroupDetailUserGroupDetailNameDefault(info = "默认规则")
    private String userGroupDetailName;

    @JsonIgnore
    private boolean userGroupDetailNameDirtyFlag;

    /**
     * 属性 [USERGROUPDETAILID]
     *
     */
    @UserGroupDetailUserGroupDetailIdDefault(info = "默认规则")
    private String userGroupDetailId;

    @JsonIgnore
    private boolean userGroupDetailIdDirtyFlag;

    /**
     * 属性 [CREATEDATE]
     *
     */
    @UserGroupDetailCreateDateDefault(info = "默认规则")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    private Timestamp createDate;

    @JsonIgnore
    private boolean createDateDirtyFlag;

    /**
     * 属性 [CREATEMAN]
     *
     */
    @UserGroupDetailCreateManDefault(info = "默认规则")
    private String createMan;

    @JsonIgnore
    private boolean createManDirtyFlag;

    /**
     * 属性 [USEROBJECTNAME]
     *
     */
    @UserGroupDetailUserObjectNameDefault(info = "默认规则")
    private String userObjectName;

    @JsonIgnore
    private boolean userObjectNameDirtyFlag;

    /**
     * 属性 [USERGROUPNAME]
     *
     */
    @UserGroupDetailUserGroupNameDefault(info = "默认规则")
    private String userGroupName;

    @JsonIgnore
    private boolean userGroupNameDirtyFlag;

    /**
     * 属性 [USERGROUPID]
     *
     */
    @UserGroupDetailUserGroupIdDefault(info = "默认规则")
    private String userGroupId;

    @JsonIgnore
    private boolean userGroupIdDirtyFlag;

    /**
     * 属性 [USEROBJECTID]
     *
     */
    @UserGroupDetailUserObjectIdDefault(info = "默认规则")
    private String userObjectId;

    @JsonIgnore
    private boolean userObjectIdDirtyFlag;


    /**
     * 获取 [UPDATEMAN]
     */
    @JsonProperty("updateman")
    public String getUpdateMan(){
        return updateMan ;
    }

    /**
     * 设置 [UPDATEMAN]
     */
    @JsonProperty("updateman")
    public void setUpdateMan(String  updateMan){
        this.updateMan = updateMan ;
        this.updateManDirtyFlag = true ;
    }

    /**
     * 获取 [UPDATEMAN]脏标记
     */
    @JsonIgnore
    public boolean getUpdateManDirtyFlag(){
        return updateManDirtyFlag ;
    }

    /**
     * 获取 [UPDATEDATE]
     */
    @JsonProperty("updatedate")
    public Timestamp getUpdateDate(){
        return updateDate ;
    }

    /**
     * 设置 [UPDATEDATE]
     */
    @JsonProperty("updatedate")
    public void setUpdateDate(Timestamp  updateDate){
        this.updateDate = updateDate ;
        this.updateDateDirtyFlag = true ;
    }

    /**
     * 获取 [UPDATEDATE]脏标记
     */
    @JsonIgnore
    public boolean getUpdateDateDirtyFlag(){
        return updateDateDirtyFlag ;
    }

    /**
     * 获取 [ENABLE]
     */
    @JsonProperty("enable")
    public Integer getEnable(){
        return enable ;
    }

    /**
     * 设置 [ENABLE]
     */
    @JsonProperty("enable")
    public void setEnable(Integer  enable){
        this.enable = enable ;
        this.enableDirtyFlag = true ;
    }

    /**
     * 获取 [ENABLE]脏标记
     */
    @JsonIgnore
    public boolean getEnableDirtyFlag(){
        return enableDirtyFlag ;
    }

    /**
     * 获取 [USERGROUPDETAILNAME]
     */
    @JsonProperty("usergroupdetailname")
    public String getUserGroupDetailName(){
        return userGroupDetailName ;
    }

    /**
     * 设置 [USERGROUPDETAILNAME]
     */
    @JsonProperty("usergroupdetailname")
    public void setUserGroupDetailName(String  userGroupDetailName){
        this.userGroupDetailName = userGroupDetailName ;
        this.userGroupDetailNameDirtyFlag = true ;
    }

    /**
     * 获取 [USERGROUPDETAILNAME]脏标记
     */
    @JsonIgnore
    public boolean getUserGroupDetailNameDirtyFlag(){
        return userGroupDetailNameDirtyFlag ;
    }

    /**
     * 获取 [USERGROUPDETAILID]
     */
    @JsonProperty("usergroupdetailid")
    public String getUserGroupDetailId(){
        return userGroupDetailId ;
    }

    /**
     * 设置 [USERGROUPDETAILID]
     */
    @JsonProperty("usergroupdetailid")
    public void setUserGroupDetailId(String  userGroupDetailId){
        this.userGroupDetailId = userGroupDetailId ;
        this.userGroupDetailIdDirtyFlag = true ;
    }

    /**
     * 获取 [USERGROUPDETAILID]脏标记
     */
    @JsonIgnore
    public boolean getUserGroupDetailIdDirtyFlag(){
        return userGroupDetailIdDirtyFlag ;
    }

    /**
     * 获取 [CREATEDATE]
     */
    @JsonProperty("createdate")
    public Timestamp getCreateDate(){
        return createDate ;
    }

    /**
     * 设置 [CREATEDATE]
     */
    @JsonProperty("createdate")
    public void setCreateDate(Timestamp  createDate){
        this.createDate = createDate ;
        this.createDateDirtyFlag = true ;
    }

    /**
     * 获取 [CREATEDATE]脏标记
     */
    @JsonIgnore
    public boolean getCreateDateDirtyFlag(){
        return createDateDirtyFlag ;
    }

    /**
     * 获取 [CREATEMAN]
     */
    @JsonProperty("createman")
    public String getCreateMan(){
        return createMan ;
    }

    /**
     * 设置 [CREATEMAN]
     */
    @JsonProperty("createman")
    public void setCreateMan(String  createMan){
        this.createMan = createMan ;
        this.createManDirtyFlag = true ;
    }

    /**
     * 获取 [CREATEMAN]脏标记
     */
    @JsonIgnore
    public boolean getCreateManDirtyFlag(){
        return createManDirtyFlag ;
    }

    /**
     * 获取 [USEROBJECTNAME]
     */
    @JsonProperty("userobjectname")
    public String getUserObjectName(){
        return userObjectName ;
    }

    /**
     * 设置 [USEROBJECTNAME]
     */
    @JsonProperty("userobjectname")
    public void setUserObjectName(String  userObjectName){
        this.userObjectName = userObjectName ;
        this.userObjectNameDirtyFlag = true ;
    }

    /**
     * 获取 [USEROBJECTNAME]脏标记
     */
    @JsonIgnore
    public boolean getUserObjectNameDirtyFlag(){
        return userObjectNameDirtyFlag ;
    }

    /**
     * 获取 [USERGROUPNAME]
     */
    @JsonProperty("usergroupname")
    public String getUserGroupName(){
        return userGroupName ;
    }

    /**
     * 设置 [USERGROUPNAME]
     */
    @JsonProperty("usergroupname")
    public void setUserGroupName(String  userGroupName){
        this.userGroupName = userGroupName ;
        this.userGroupNameDirtyFlag = true ;
    }

    /**
     * 获取 [USERGROUPNAME]脏标记
     */
    @JsonIgnore
    public boolean getUserGroupNameDirtyFlag(){
        return userGroupNameDirtyFlag ;
    }

    /**
     * 获取 [USERGROUPID]
     */
    @JsonProperty("usergroupid")
    public String getUserGroupId(){
        return userGroupId ;
    }

    /**
     * 设置 [USERGROUPID]
     */
    @JsonProperty("usergroupid")
    public void setUserGroupId(String  userGroupId){
        this.userGroupId = userGroupId ;
        this.userGroupIdDirtyFlag = true ;
    }

    /**
     * 获取 [USERGROUPID]脏标记
     */
    @JsonIgnore
    public boolean getUserGroupIdDirtyFlag(){
        return userGroupIdDirtyFlag ;
    }

    /**
     * 获取 [USEROBJECTID]
     */
    @JsonProperty("userobjectid")
    public String getUserObjectId(){
        return userObjectId ;
    }

    /**
     * 设置 [USEROBJECTID]
     */
    @JsonProperty("userobjectid")
    public void setUserObjectId(String  userObjectId){
        this.userObjectId = userObjectId ;
        this.userObjectIdDirtyFlag = true ;
    }

    /**
     * 获取 [USEROBJECTID]脏标记
     */
    @JsonIgnore
    public boolean getUserObjectIdDirtyFlag(){
        return userObjectIdDirtyFlag ;
    }



    public UserGroupDetail toDO() {
        UserGroupDetail srfdomain = new UserGroupDetail();
        if(getUpdateManDirtyFlag())
            srfdomain.setUpdateMan(updateMan);
        if(getUpdateDateDirtyFlag())
            srfdomain.setUpdateDate(updateDate);
        if(getEnableDirtyFlag())
            srfdomain.setEnable(enable);
        if(getUserGroupDetailNameDirtyFlag())
            srfdomain.setUserGroupDetailName(userGroupDetailName);
        if(getUserGroupDetailIdDirtyFlag())
            srfdomain.setUserGroupDetailId(userGroupDetailId);
        if(getCreateDateDirtyFlag())
            srfdomain.setCreateDate(createDate);
        if(getCreateManDirtyFlag())
            srfdomain.setCreateMan(createMan);
        if(getUserObjectNameDirtyFlag())
            srfdomain.setUserObjectName(userObjectName);
        if(getUserGroupNameDirtyFlag())
            srfdomain.setUserGroupName(userGroupName);
        if(getUserGroupIdDirtyFlag())
            srfdomain.setUserGroupId(userGroupId);
        if(getUserObjectIdDirtyFlag())
            srfdomain.setUserObjectId(userObjectId);

        return srfdomain;
    }

    public void fromDO(UserGroupDetail srfdomain) {
        if(srfdomain == null )
          return ;
        if(srfdomain.getUpdateManDirtyFlag())
            this.setUpdateMan(srfdomain.getUpdateMan());
        if(srfdomain.getUpdateDateDirtyFlag())
            this.setUpdateDate(srfdomain.getUpdateDate());
        if(srfdomain.getEnableDirtyFlag())
            this.setEnable(srfdomain.getEnable());
        if(srfdomain.getUserGroupDetailNameDirtyFlag())
            this.setUserGroupDetailName(srfdomain.getUserGroupDetailName());
        if(srfdomain.getUserGroupDetailIdDirtyFlag())
            this.setUserGroupDetailId(srfdomain.getUserGroupDetailId());
        if(srfdomain.getCreateDateDirtyFlag())
            this.setCreateDate(srfdomain.getCreateDate());
        if(srfdomain.getCreateManDirtyFlag())
            this.setCreateMan(srfdomain.getCreateMan());
        if(srfdomain.getUserObjectNameDirtyFlag())
            this.setUserObjectName(srfdomain.getUserObjectName());
        if(srfdomain.getUserGroupNameDirtyFlag())
            this.setUserGroupName(srfdomain.getUserGroupName());
        if(srfdomain.getUserGroupIdDirtyFlag())
            this.setUserGroupId(srfdomain.getUserGroupId());
        if(srfdomain.getUserObjectIdDirtyFlag())
            this.setUserObjectId(srfdomain.getUserObjectId());

    }

    public List<UserGroupDetailDTO> fromDOPage(List<UserGroupDetail> poPage)   {
        if(poPage == null)
            return null;
        List<UserGroupDetailDTO> dtos=new ArrayList<UserGroupDetailDTO>();
        for(UserGroupDetail domain : poPage) {
            UserGroupDetailDTO dto = new UserGroupDetailDTO();
            dto.fromDO(domain);
            dtos.add(dto);
        }
        return dtos;
    }
}

