package com.sa.ibiz.demo.demoapp.controller.demo.vo;

import java.sql.Timestamp;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonProperty.Access;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.util.StringUtils;
import com.sa.ibiz.demo.demo.domain.OrgSector;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.util.Map;
import java.util.Date;
import org.springframework.cglib.beans.BeanCopier;
import javax.validation.constraints.Size;
import java.util.UUID;
import org.springframework.cglib.beans.BeanCopier;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sa.ibiz.demo.ibizutil.security.AuthenticationUser;
import java.math.BigInteger;
import com.alibaba.fastjson.JSONObject;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class OrgSector_EditForm_Main2{

    @JsonProperty(access=Access.WRITE_ONLY)
    private Map<String,String> srfparentdata;
    @JsonIgnore
    private Timestamp updatedate;
    @JsonProperty(access=Access.WRITE_ONLY)
    private String srforikey;
    @JsonIgnore
    private String orgsectorid;
    @JsonIgnore
    private String orgsectorname;
    @JsonIgnore
    private String srftempmode;
    @JsonProperty
    private String srfuf;
    @JsonProperty
    private String srfdeid;
    @JsonProperty(access=Access.WRITE_ONLY)
    private String srfsourcekey;
    @JsonIgnore
    private String orgname;
    @JsonIgnore
    private String porgsectorname;
    @JsonIgnore
    private String orgcode;
    @JsonIgnore
    private String shortname;
    @JsonIgnore
    private String reporgsectorname;
    @JsonIgnore
    private Integer validflag;
    @JsonIgnore
    private Integer ordervalue;
    @JsonIgnore
    private Integer virtualflag;
    @JsonIgnore
    private String levelcode;
    @JsonIgnore
    private String bizcode;
    @JsonIgnore
    private String memo;
    @JsonIgnore
    private String createman;
    @JsonIgnore
    private Timestamp createdate;
    @JsonIgnore
    private String updateman;
    @JsonIgnore
    private String orgid;
    @JsonIgnore
    private String reporgsectorid;
    @JsonIgnore
    private String porgsectorid;

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    @JsonProperty(value = "srfupdatedate")
    public Timestamp getSrfupdatedate(){
        return updatedate;
    }
    @JsonProperty(value = "srfupdatedate")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    public void setSrfupdatedate(Timestamp updatedate){
        this.updatedate = updatedate;
    }

    @JsonProperty(value = "srforikey")
    public String getSrforikey(){
        return srforikey;
    }
    @JsonProperty(value = "srforikey")
    public void setSrforikey(String srforikey){
        this.srforikey = srforikey;
    }

    @Size(min = 0, max = 100, message = "[部门标识]长度必须在[100]以内!")
    @JsonProperty(value = "srfkey")
    public String getSrfkey(){
        return orgsectorid;
    }
    @JsonProperty(value = "srfkey")
    public void setSrfkey(String orgsectorid){
        this.orgsectorid = orgsectorid;
    }

    @Size(min = 0, max = 200, message = "[部门名称]长度必须在[200]以内!")
    @JsonProperty(value = "srfmajortext")
    public String getSrfmajortext(){
        return orgsectorname;
    }

    @JsonProperty(value = "srftempmode")
    public String getSrftempmode(){
        return srftempmode;
    }
    @JsonProperty(value = "srftempmode")
    public void setSrftempmode(String srftempmode){
        this.srftempmode = srftempmode;
    }

    @JsonProperty(value = "srfdeid")
    public String getSrfdeid(){
        return srfdeid;
    }
    @JsonProperty(value = "srfdeid")
    public void setSrfdeid(String srfdeid){
        this.srfdeid = srfdeid;
    }

    @NotBlank(message = "[组织机构]不允许为空!")
    @Size(min = 0, max = 200, message = "[组织机构]长度必须在[200]以内!")
    @JsonProperty(value = "orgname")
    public String getOrgname(){
        return orgname;
    }
    @JsonProperty(value = "orgname")
    public void setOrgname(String orgname){
        this.orgname = orgname;
    }

    @Size(min = 0, max = 200, message = "[上级部门]长度必须在[200]以内!")
    @JsonProperty(value = "porgsectorname")
    public String getPorgsectorname(){
        return porgsectorname;
    }
    @JsonProperty(value = "porgsectorname")
    public void setPorgsectorname(String porgsectorname){
        this.porgsectorname = porgsectorname;
    }

    @NotBlank(message = "[部门名称]不允许为空!")
    @Size(min = 0, max = 200, message = "[部门名称]长度必须在[200]以内!")
    @JsonProperty(value = "orgsectorname")
    public String getOrgsectorname(){
        return orgsectorname;
    }
    @JsonProperty(value = "orgsectorname")
    public void setOrgsectorname(String orgsectorname){
        this.orgsectorname = orgsectorname;
    }

    @Size(min = 0, max = 500, message = "[部门组织编号]长度必须在[500]以内!")
    @JsonProperty(value = "orgcode")
    public String getOrgcode(){
        return orgcode;
    }
    @JsonProperty(value = "orgcode")
    public void setOrgcode(String orgcode){
        this.orgcode = orgcode;
    }

    @Size(min = 0, max = 100, message = "[简称]长度必须在[100]以内!")
    @JsonProperty(value = "shortname")
    public String getShortname(){
        return shortname;
    }
    @JsonProperty(value = "shortname")
    public void setShortname(String shortname){
        this.shortname = shortname;
    }

    @Size(min = 0, max = 200, message = "[汇报部门]长度必须在[200]以内!")
    @JsonProperty(value = "reporgsectorname")
    public String getReporgsectorname(){
        return reporgsectorname;
    }
    @JsonProperty(value = "reporgsectorname")
    public void setReporgsectorname(String reporgsectorname){
        this.reporgsectorname = reporgsectorname;
    }

    @NotNull(message = "[启用标志]不允许为空!")
    @JsonProperty(value = "validflag")
    public Integer getValidflag(){
        return validflag;
    }
    @JsonProperty(value = "validflag")
    public void setValidflag(Integer validflag){
        this.validflag = validflag;
    }

    @JsonProperty(value = "ordervalue")
    public Integer getOrdervalue(){
        return ordervalue;
    }
    @JsonProperty(value = "ordervalue")
    public void setOrdervalue(Integer ordervalue){
        this.ordervalue = ordervalue;
    }

    @NotNull(message = "[虚拟部门]不允许为空!")
    @JsonProperty(value = "virtualflag")
    public Integer getVirtualflag(){
        return virtualflag;
    }
    @JsonProperty(value = "virtualflag")
    public void setVirtualflag(Integer virtualflag){
        this.virtualflag = virtualflag;
    }

    @Size(min = 0, max = 500, message = "[级别编码]长度必须在[500]以内!")
    @JsonProperty(value = "levelcode")
    public String getLevelcode(){
        return levelcode;
    }
    @JsonProperty(value = "levelcode")
    public void setLevelcode(String levelcode){
        this.levelcode = levelcode;
    }

    @Size(min = 0, max = 100, message = "[条线代码]长度必须在[100]以内!")
    @JsonProperty(value = "bizcode")
    public String getBizcode(){
        return bizcode;
    }
    @JsonProperty(value = "bizcode")
    public void setBizcode(String bizcode){
        this.bizcode = bizcode;
    }

    @Size(min = 0, max = 4000, message = "[备注]长度必须在[4000]以内!")
    @JsonProperty(value = "memo")
    public String getMemo(){
        return memo;
    }
    @JsonProperty(value = "memo")
    public void setMemo(String memo){
        this.memo = memo;
    }

    @Size(min = 0, max = 60, message = "[建立人]长度必须在[60]以内!")
    @JsonProperty(value = "createman")
    public String getCreateman(){
        return createman;
    }
    @JsonProperty(value = "createman")
    public void setCreateman(String createman){
        this.createman = createman;
    }

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    @JsonProperty(value = "createdate")
    public Timestamp getCreatedate(){
        return createdate;
    }
    @JsonProperty(value = "createdate")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    public void setCreatedate(Timestamp createdate){
        this.createdate = createdate;
    }

    @Size(min = 0, max = 60, message = "[更新人]长度必须在[60]以内!")
    @JsonProperty(value = "updateman")
    public String getUpdateman(){
        return updateman;
    }
    @JsonProperty(value = "updateman")
    public void setUpdateman(String updateman){
        this.updateman = updateman;
    }

    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    @JsonProperty(value = "updatedate")
    public Timestamp getUpdatedate(){
        return updatedate;
    }
    @JsonProperty(value = "updatedate")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", locale = "zh" , timezone="GMT+8")
    public void setUpdatedate(Timestamp updatedate){
        this.updatedate = updatedate;
    }

    @Size(min = 0, max = 100, message = "[部门标识]长度必须在[100]以内!")
    @JsonProperty(value = "orgsectorid")
    public String getOrgsectorid(){
        return orgsectorid;
    }
    @JsonProperty(value = "orgsectorid")
    public void setOrgsectorid(String orgsectorid){
        this.orgsectorid = orgsectorid;
    }

    @Size(min = 0, max = 100, message = "[组织机构]长度必须在[100]以内!")
    @JsonProperty(value = "orgid")
    public String getOrgid(){
        //输出获取外键值方法-用于通过parentdata关系填充外键值id
        if(StringUtils.isEmpty(orgid) && this.getSrfparentdata() != null)
        {
            if(this.getSrfparentdata().containsKey("srfparentmode")&& this.getSrfparentdata().get("srfparentmode").equals("DER1N_ORGSECTOR_ORG_ORGID"))
                this.orgid=this.getSrfparentdata().get("srfparentkey");
        }
        return orgid;
    }
    @JsonProperty(value = "orgid")
    public void setOrgid(String orgid){
        this.orgid = orgid;
    }

    @Size(min = 0, max = 100, message = "[汇报部门]长度必须在[100]以内!")
    @JsonProperty(value = "reporgsectorid")
    public String getReporgsectorid(){
        //输出获取外键值方法-用于通过parentdata关系填充外键值id
        if(StringUtils.isEmpty(reporgsectorid) && this.getSrfparentdata() != null)
        {
            if(this.getSrfparentdata().containsKey("srfparentmode")&& this.getSrfparentdata().get("srfparentmode").equals("DER1N_ORGSECTOR_ORGSECTOR_REPORGSECTORID"))
                this.reporgsectorid=this.getSrfparentdata().get("srfparentkey");
        }
        return reporgsectorid;
    }
    @JsonProperty(value = "reporgsectorid")
    public void setReporgsectorid(String reporgsectorid){
        this.reporgsectorid = reporgsectorid;
    }

    @Size(min = 0, max = 100, message = "[上级部门]长度必须在[100]以内!")
    @JsonProperty(value = "porgsectorid")
    public String getPorgsectorid(){
        //输出获取外键值方法-用于通过parentdata关系填充外键值id
        if(StringUtils.isEmpty(porgsectorid) && this.getSrfparentdata() != null)
        {
            if(this.getSrfparentdata().containsKey("srfparentmode")&& this.getSrfparentdata().get("srfparentmode").equals("DER1N_ORGSECTOR_ORGSECTOR_PORGSECTORID"))
                this.porgsectorid=this.getSrfparentdata().get("srfparentkey");
        }
        return porgsectorid;
    }
    @JsonProperty(value = "porgsectorid")
    public void setPorgsectorid(String porgsectorid){
        this.porgsectorid = porgsectorid;
    }

    public  void fromOrgSector(OrgSector sourceEntity)  {
        this.fromOrgSector(sourceEntity,true);
    }

     /**
	 * do转换为vo
	 * @param sourceEntity do数据对象
	 * @return
	 */
    public  void fromOrgSector(OrgSector sourceEntity,boolean reset)  {
      BeanCopier copier=BeanCopier.create(OrgSector.class, OrgSector_EditForm_Main2.class, false);
      copier.copy(sourceEntity,this,  null);
      this.toString();
	}

    /**
	 * vo转换为do
	 * @param
	 * @return
	 */
    public  OrgSector toOrgSector()  {
        OrgSector targetEntity =new OrgSector();
        BeanCopier copier=BeanCopier.create(OrgSector_EditForm_Main2.class, OrgSector.class, false);
        copier.copy(this, targetEntity, null);
        return targetEntity;
	}

     /**
	 * 新建
	 * @param
	 * @return
	 */
    private boolean isCreate()
    {
    	if((StringUtils.isEmpty(this.srfuf))||this.srfuf.equals("0"))
	    	return true;
    	else
    	    return false;
    }
     /**
	 * 更新
	 * @param
	 * @return
	 */
    private boolean isUpdate()
    {
    	if((!StringUtils.isEmpty(this.srfuf))&&this.srfuf.equals("1"))
	    	return true;
    	else
    	    return false;
    }

}
