package com.dhcc.finance.main.model;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@ApiModel(value = "ThirdPmProjectChild",description = "子项目信息")
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class ThirdPmProjectChild {    
	/**
     * 子项目编号
     */
    @ApiModelProperty(value = "子项目编号", required = true, example = "")
    private String xtzxmbh;

    /**
     * 子项目ID
     */
    @ApiModelProperty(value = "子项目ID", required = true, example = "")
    private String id;

    /**
     * 中信登产品编号
     */
    @ApiModelProperty(value = "中信登产品编号", required = false, example = "")
    private String zxdcpbh;

    /**
     * 项目编号
     */
    @ApiModelProperty(value = "项目编号", required = true, example = "")
    private String xtxmbh;

    /**
     * 子项目名称
     */
    @ApiModelProperty(value = "子项目名称", required = false, example = "")
    private String xtzxmqc;

    /**
     * 信托财产类型
     */
    @ApiModelProperty(value = "信托财产类型", required = true, example = "")
    private String xtcclx;

    /**
     * 单一集合标志
     */
    @ApiModelProperty(value = "单一集合标志", required = true, example = "")
    private String dyjhbz;

    /**
     * 信托功能
     */
    @ApiModelProperty(value = "信托功能", required = false, example = "")
    private String xtgn;

    /**
     * 管理方式
     */
    @ApiModelProperty(value = "管理方式", required = false, example = "")
    private String glfs;

    /**
     * 信托业务分类
     */
    @ApiModelProperty(value = "信托业务分类", required = false, example = "")
    private String xtywfl;

    /**
     * 受益方式
     */
    @ApiModelProperty(value = "受益方式", required = false, example = "")
    private String syfs;

    /**
     * 是否集团推荐
     */
    @ApiModelProperty(value = "是否集团推荐", required = false, example = "")
    private String sfjttj;

    /**
     * 集团内部机构名称
     */
    @ApiModelProperty(value = "集团内部机构名称", required = false, example = "")
    private String jtnbjgmc;

    /**
     * 是否分期发行
     */
    @ApiModelProperty(value = "是否分期发行", required = false, example = "")
    private String sffqmj;

    /**
     * 三单标识
     */
    @ApiModelProperty(value = "三单标识", required = false, example = "")
    private String sdbs;

    /**
     * 募集开始日期
     */
    @ApiModelProperty(value = "募集开始日期", required = false, example = "")
    private Date mjksrq;

    /**
     * 募集结束日期
     */
    @ApiModelProperty(value = "募集结束日期", required = false, example = "")
    private Date mjjsrq;

    /**
     * 拟发行或成立规模类型
     */
    @ApiModelProperty(value = "拟发行或成立规模类型", required = false, example = "")
    private String zgmlx;

    /**
     * 固定规模范围最小值
     */
    @ApiModelProperty(value = "固定规模范围最小值", required = false, example = "")
    private BigDecimal zgmfwzxz;

    /**
     * 固定规模范围最大值
     */
    @ApiModelProperty(value = "固定规模范围最大值", required = false, example = "")
    private BigDecimal zgmfwzdz;

    /**
     * 信托资金保管银行
     */
    @ApiModelProperty(value = "信托资金保管银行", required = false, example = "")
    private String xtzjbgyh;

    /**
     * 是否家族信托
     */
    @ApiModelProperty(value = "是否家族信托", required = false, example = "")
    private String sfjzxt;

    /**
     * 期限类型
     */
    @ApiModelProperty(value = "期限类型", required = false, example = "")
    private String zqxlx;

    /**
     * 期限范围最小值
     */
    @ApiModelProperty(value = "期限范围最小值", required = false, example = "")
    private Integer zqxfwzxz;

    /**
     * 期限范围最大值
     */
    @ApiModelProperty(value = "期限范围最大值", required = false, example = "")
    private Integer zqxfwzdz;

    /**
     * 期限说明
     */
    @ApiModelProperty(value = "期限说明", required = false, example = "")
    private String qxsm;

    /**
     * 拟发行或成立时间
     */
    @ApiModelProperty(value = "拟发行或成立时间", required = false, example = "")
    private Date nfxhclsj;

    /**
     * 财产主要运用方式（资金信托）
     */
    @ApiModelProperty(value = "财产主要运用方式（资金信托）", required = false, example = "")
    private String cczyyyfs;

    /**
     * 管理运用或处分方式（财产权信托）
     */
    @ApiModelProperty(value = "管理运用或处分方式（财产权信托）", required = false, example = "")
    private String glyyhcffs;

    /**
     * 报酬计提方式
     */
    @ApiModelProperty(value = "报酬计提方式", required = false, example = "")
    private String bcjtfs;

    /**
     * 信托报酬率
     */
    @ApiModelProperty(value = "信托报酬率", required = false, example = "")
    private BigDecimal xtbcl;

    /**
     * 信托报酬金额
     */
    @ApiModelProperty(value = "信托报酬金额", required = false, example = "")
    private BigDecimal xtbcje;

    /**
     * 信托合同约定的信托报酬说明
     */
    @ApiModelProperty(value = "信托合同约定的信托报酬说明", required = false, example = "")
    private String xtbcsm;

    /**
     * 信托合同收益率类型
     */
    @ApiModelProperty(value = "信托合同收益率类型", required = false, example = "")
    private String xthtsyllx;

    /**
     * 信托到期信托利益分配方式
     */
    @ApiModelProperty(value = "信托到期信托利益分配方式", required = false, example = "")
    private String xtdqlyfpfs;

    /**
     * 信息披露日
     */
    @ApiModelProperty(value = "信息披露日", required = false, example = "")
    private String xxplr;

    /**
     * 收益分配周期
     */
    @ApiModelProperty(value = "收益分配周期", required = false, example = "")
    private String syfpzq;

    /**
     * 最高预期收益率
     */
    @ApiModelProperty(value = "最高预期收益率", required = false, example = "")
    private BigDecimal zgyqsyl;

    /**
     * 最低预期收益率
     */
    @ApiModelProperty(value = "最低预期收益率", required = false, example = "")
    private BigDecimal zdyqsyl;

    /**
     * 最高预计融资成本
     */
    @ApiModelProperty(value = "最高预计融资成本", required = false, example = "")
    private BigDecimal zgyjrzcb;

    /**
     * 最低预计融资成本
     */
    @ApiModelProperty(value = "最低预计融资成本", required = false, example = "")
    private BigDecimal zdyjrzcb;

    /**
     * 是否全国推介
     */
    @ApiModelProperty(value = "是否全国推介", required = false, example = "")
    private String sfqgtj;

    /**
     * 币种
     */
    @ApiModelProperty(value = "币种", required = false, example = "")
    private String bz;

    /**
     * 项目成立日
     */
    @ApiModelProperty(value = "项目成立日", required = false, example = "")
    private Date xmclr;

    /**
     * 项目终止日
     */
    @ApiModelProperty(value = "项目终止日", required = false, example = "")
    private Date xmzzr;

    /**
     * 委托人
     */
    @ApiModelProperty(value = "委托人", required = false, example = "")
    private String wtrbh;

    /**
     * 受托人主要职责
     */
    @ApiModelProperty(value = "受托人主要职责", required = false, example = "")
    private String strzz;

    /**
     * 设立方式
     */
    @ApiModelProperty(value = "设立方式", required = false, example = "")
    private String slfs;

    /**
     * 项目合作来源
     */
    @ApiModelProperty(value = "项目合作来源", required = false, example = "")
    private String xmhzly;

    /**
     * 合作模式
     */
    @ApiModelProperty(value = "合作模式", required = false, example = "")
    private String hzms;

    /**
     * 是否为服务贵州项目
     */
    @ApiModelProperty(value = "是否为服务贵州项目", required = false, example = "")
    private String sffwgzxm;

    /**
     * 开放式信贷类信托业务和开放式混合型信托业务
     */
    @ApiModelProperty(value = "开放式信贷类信托业务和开放式混合型信托业务", required = false, example = "")
    private String kfsxdlhhx;

    /**
     * 是否投资证券市场
     */
    @ApiModelProperty(value = "是否投资证券市场", required = false, example = "")
    private String sftzzqsc;

    /**
     * 是否诉讼项目
     */
    @ApiModelProperty(value = "是否诉讼项目", required = false, example = "")
    private String sfssxm;

    /**
     * 保障基金认购主体
     */
    @ApiModelProperty(value = "保障基金认购主体", required = false, example = "")
    private String bzjjrgzt;

    /**
     * 保证基金赎回方式
     */
    @ApiModelProperty(value = "保证基金赎回方式", required = false, example = "")
    private String bzjjshfs;

    /**
     * 保障基金赎回频率
     */
    @ApiModelProperty(value = "保障基金赎回频率", required = false, example = "")
    private String bzjjshpl;

    /**
     * 保障基金逾期退回是否涉及我司违约金
     */
    @ApiModelProperty(value = "保障基金逾期退回是否涉及我司违约金", required = false, example = "")
    private String bzjjyqthsfsjwswyj;

    /**
     * 可提前终止
     */
    @ApiModelProperty(value = "可提前终止", required = false, example = "")
    private String ktqzz;

    /**
     * 业务特征
     */
    @ApiModelProperty(value = "业务特征", required = false, example = "")
    private String ywtz;

    /**
     * 业务信息说明
     */
    @ApiModelProperty(value = "业务信息说明", required = false, example = "")
    private String ywxxsm;

    /**
     * 项目结构属性
     */
    @ApiModelProperty(value = "项目结构属性", required = false, example = "")
    private String jgsx;

    /**
     * 投向性质
     */
    @ApiModelProperty(value = "投向性质", required = false, example = "")
    private String txxz;

    /**
     * 优先劣后受益权比例
     */
    @ApiModelProperty(value = "优先劣后受益权比例", required = false, example = "")
    private BigDecimal yxlhsyqbl;

    /**
     * 是否现金类
     */
    @ApiModelProperty(value = "是否现金类", required = false, example = "")
    private String sfxjl;

    /**
     * 是否伞形
     */
    @ApiModelProperty(value = "是否伞形", required = false, example = "")
    private String sfsx;

    /**
     * 是否阳光私募
     */
    @ApiModelProperty(value = "是否阳光私募", required = false, example = "")
    private String sfygsm;

    /**
     * 是否外部分仓
     */
    @ApiModelProperty(value = "是否外部分仓", required = false, example = "")
    private String sfwbfc;

    /**
     * 非标资金池标识
     */
    @ApiModelProperty(value = "非标资金池标识", required = false, example = "")
    private String fbzjcbs;

    /**
     * 项目TOT标识
     */
    @ApiModelProperty(value = "项目TOT标识", required = false, example = "")
    private String totbs;

    /**
     * 关联母项目ID
     */
    @ApiModelProperty(value = "关联母项目ID", required = false, example = "")
    private String glmxm;

    /**
     * 运行方式(资管)
     */
    @ApiModelProperty(value = "运行方式(资管)", required = false, example = "")
    private String yxfs;

    /**
     * 运行方式(人行)
     */
    @ApiModelProperty(value = "运行方式(人行)", required = false, example = "")
    private String yxfsrh;

    /**
     * 可赎回标识
     */
    @ApiModelProperty(value = "可赎回标识", required = false, example = "")
    private String kshbz;

    /**
     * 赎回的限制性条件
     */
    @ApiModelProperty(value = "赎回的限制性条件", required = false, example = "")
    private String shxztj;

    /**
     * 募集方式
     */
    @ApiModelProperty(value = "募集方式", required = false, example = "")
    private String mjfs;

    /**
     * 是否净值型
     */
    @ApiModelProperty(value = "是否净值型", required = false, example = "")
    private String sfjzx;

    /**
     * 净值评估频度
     */
    @ApiModelProperty(value = "净值评估频度", required = false, example = "")
    private String jzpgpd;

    /**
     * 净值披露频度
     */
    @ApiModelProperty(value = "净值披露频度", required = false, example = "")
    private String jzplpd;

    /**
     * 资产管理报告频度
     */
    @ApiModelProperty(value = "资产管理报告频度", required = false, example = "")
    private String zcglbgpd;

    /**
     * 投资范围
     */
    @ApiModelProperty(value = "投资范围", required = false, example = "")
    private String tzfw;

    /**
     * 产品增信标识
     */
    @ApiModelProperty(value = "产品增信标识", required = false, example = "")
    private String cpzxbs;

    /**
     * 增信机构类型
     */
    @ApiModelProperty(value = "增信机构类型", required = false, example = "")
    private String zxjglx;

    /**
     * 增信形式
     */
    @ApiModelProperty(value = "增信形式", required = false, example = "")
    private String zxxs;

    /**
     * 产品类型
     */
    @ApiModelProperty(value = "产品类型", required = false, example = "")
    private String cplx;

    /**
     * 归属机构
     */
    @ApiModelProperty(value = "归属机构", required = false, example = "")
    private String gsjg;

    /**
     * 归属部门
     */
    @ApiModelProperty(value = "归属部门", required = false, example = "")
    private String gsbm;

    /**
     * 高级信托经理编号
     */
    @ApiModelProperty(value = "高级信托经理编号", required = false, example = "")
    private String xmjlbh;

    /**
     * 项目主管编号
     */
    @ApiModelProperty(value = "项目主管编号", required = false, example = "")
    private String xmzgbh;

    /**
     * 分管领导编号
     */
    @ApiModelProperty(value = "分管领导编号", required = false, example = "")
    private String fgldbh;

    /**
     * 风控经理编号
     */
    @ApiModelProperty(value = "风控经理编号", required = false, example = "")
    private String fkjlbh;

    /**
     * 核算会计编号
     */
    @ApiModelProperty(value = "核算会计编号", required = false, example = "")
    private String hskjbh;

    /**
     * 项目阶段
     */
    @ApiModelProperty(value = "项目阶段", required = false, example = "")
    private String xmjd;

    /**
     * 项目状态
     */
    @ApiModelProperty(value = "项目状态", required = false, example = "")
    private String xmzt;

    /**
     * 使用状态
     */
    @ApiModelProperty(value = "使用状态", required = true, example = "")
    private String syzt;

    /**
     * 数据来源
     */
    @ApiModelProperty(value = "数据来源", required = true, example = "")
    private String sjly;

    /**
     * 录入人员
     */
    @ApiModelProperty(value = "录入人员", required = false, example = "")
    private String lrry;

    /**
     * 录入时间
     */
    @ApiModelProperty(value = "录入时间", required = false, example = "")
    private Date lrsj;

    /**
     * 最后修改人员
     */
    @ApiModelProperty(value = "最后修改人员", required = false, example = "")
    private String zhxgry;

    /**
     * 最后修改时间
     */
    @ApiModelProperty(value = "最后修改时间", required = false, example = "CURRENT_TIMESTAMP")
    private Date zhxgsj;

    /**
     * 功能描述：业务数据校验
     * @return boolean
     * @author dml
     * @date 2019年6月17日 上午9:49:39
     * @修改日志：
     */
    public String chackData() {
		if (StringUtils.isBlank(this.xtzxmbh)) {
			return "信托子项目编号为空";
		}
		if (StringUtils.isBlank(this.xtxmbh)) {
			return "信托子项目名称为空";
		}
		if (StringUtils.isBlank(this.xtzxmqc)) {
			return "信托项目为空";
		}
		return null;
	
    }
}
