1241 lines
35 KiB
C#
1241 lines
35 KiB
C#
using Newtonsoft.Json;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using YLErp.DBModels.Attributes;
|
|
using YLErp.DBModels.Enums;
|
|
using YLErp.Helpers;
|
|
|
|
namespace YLErp.DBModels
|
|
{
|
|
/// <summary>
|
|
/// 客户信息
|
|
/// </summary>
|
|
[Table("client")]
|
|
public class Client : DBModelWithOperator, IDBModelWithCreator, IDataEntity, IDataTraceV2, IClonable<Client>
|
|
{
|
|
[DisplayName("密码")]
|
|
public string Pwd { get; set; }
|
|
[DisplayName("资金余额")]
|
|
public double? Capitalbalance { get; set; }
|
|
|
|
[DisplayName("商品类签署日期")]
|
|
[DataChange]
|
|
public DateTime? ProtocolSignDate { get; set; }
|
|
|
|
[DisplayName("权益类签署日期")]
|
|
[DataChange]
|
|
public DateTime? RightProtocolSignDate { get; set; }
|
|
|
|
[DisplayName("协议签署版本")]
|
|
[DataChange]
|
|
public string ProtocolSignVersion { get; set; }
|
|
|
|
[DisplayName("办公地址")]
|
|
[DataChange]
|
|
public string PostalAddress { get; set; }
|
|
|
|
[DisplayName("邮政编码")]
|
|
[DataChange]
|
|
public string PostalCode { get; set; }
|
|
|
|
[DisplayName("所属机构")]
|
|
[DataChange]
|
|
public int ParentId { get; set; }
|
|
|
|
[DisplayName("报告展示机构名称")]
|
|
public int? IsDocShowParentName { get; set; }
|
|
|
|
[DisplayName("报告展示机构名称")]
|
|
[DataChange]
|
|
public string IsDocShowParentNameStr { get { return IsDocShowParentName == 1 ? "是" : "否"; } }
|
|
|
|
[DisplayName("证件号码")]
|
|
[DataChange]
|
|
public string IdentificationNumber { get; set; }
|
|
|
|
[DisplayName("证照编号")]
|
|
[DataChange]
|
|
public string LicenseCode { get; set; }
|
|
[DisplayName("营业执照有效期")]
|
|
[DataChange]
|
|
public string LicenseValidTimeStr { get; set; }
|
|
[NotMapped]
|
|
public DateTime? LicenseValidTime
|
|
{
|
|
get
|
|
{
|
|
DateTime date = new DateTime();
|
|
if (!string.IsNullOrWhiteSpace(LicenseValidTimeStr)
|
|
&& (DateTime.TryParseExact(LicenseValidTimeStr, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out date)
|
|
|| DateTime.TryParseExact(LicenseValidTimeStr, "yyyy/MM/dd", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out date)
|
|
|| DateTime.TryParse(LicenseValidTimeStr, out date))
|
|
)
|
|
{
|
|
return date;
|
|
}
|
|
return null;
|
|
}
|
|
set { value = this.LicenseValidTime; }
|
|
}
|
|
[DisplayName("电话")]
|
|
[DataChange]
|
|
public string Phone { get; set; }
|
|
|
|
[DisplayName("地址")]
|
|
[DataChange]
|
|
public string Address { get; set; }
|
|
|
|
[DisplayName("Email")]
|
|
[DataChange]
|
|
public string Email { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户编号
|
|
/// </summary>
|
|
[DisplayName("客户编号")]
|
|
[DataChange]
|
|
public string Number { set; get; }
|
|
|
|
/// <summary>
|
|
/// 客户名称
|
|
/// </summary>
|
|
[DisplayName("客户名称"), Required]
|
|
[DataChange]
|
|
public string Name { set; get; }
|
|
/// <summary>
|
|
/// 默认登录名
|
|
/// </summary>
|
|
[DisplayName("默认登录名")]
|
|
public string DefaultLoginName { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户等级
|
|
/// </summary>
|
|
[DisplayName("客户等级")]
|
|
[NotMapped]
|
|
public string Level { set; get; }
|
|
|
|
[DisplayName("客户等级")]
|
|
public int? LevelId { get; set; }
|
|
|
|
[DisplayName("交易分组"),Obsolete("5.9版本删除")]
|
|
public int? TradeGroupId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 授信方向
|
|
/// </summary>
|
|
[DisplayName("授信方向")]
|
|
[DataChange]
|
|
public string CreditDirection { set; get; }
|
|
|
|
/// <summary>
|
|
/// 年度授信
|
|
/// </summary>
|
|
[DisplayName("年度授信")]
|
|
[DataChange]
|
|
public double? CreditYear { set; get; }
|
|
|
|
/// <summary>
|
|
/// 授信到期日
|
|
/// </summary>
|
|
[DisplayName("授信到期日")]
|
|
[DataChange]
|
|
public DateTime? CreditDeadline { set; get; }
|
|
|
|
/// <summary>
|
|
/// 临时授信
|
|
/// </summary>
|
|
[DisplayName("临时授信")]
|
|
[DataChange]
|
|
public double? CreditTemp { set; get; }
|
|
|
|
/// <summary>
|
|
/// 临时授信到期日
|
|
/// </summary>
|
|
[DisplayName("临时授信到期日")]
|
|
[DataChange]
|
|
public DateTime? CreditTempDeadline { set; get; }
|
|
|
|
/// <summary>
|
|
/// 客户类型
|
|
/// </summary>
|
|
[DisplayName("客户类型")]
|
|
[DataChange]
|
|
public string Type { set; get; }
|
|
|
|
/// <summary>
|
|
/// 是否需要追保
|
|
/// </summary>
|
|
[DisplayName("是否需要追保")]
|
|
[DataChange]
|
|
public int? PendingMarginCallPayment { set; get; }
|
|
|
|
|
|
[DisplayName("营业部销售")]
|
|
[DataChange]
|
|
public string Seller { get; set; }
|
|
|
|
[DisplayName("归属营业部")]
|
|
[DataChange]
|
|
public int? SalesDepartmentId { get; set; }
|
|
|
|
[DisplayName("营业部名称")]
|
|
[NotMapped]
|
|
public string SalesDepartment { get; set; }
|
|
|
|
[NotMapped]
|
|
public string CreditName { get; set; }
|
|
|
|
public string ProcessStatus { get; set; }
|
|
|
|
public int? RejectOrderId { get; set; }
|
|
|
|
public int ProcessOrderId { get; set; }
|
|
|
|
public int ProcessOrderBranch { get; set; }
|
|
|
|
[DisplayName("开户时间")]
|
|
public DateTime? ProcessOptDate { get; set; }
|
|
|
|
public string ApprovalStatus { get; set; }
|
|
|
|
public int ApprovalOrderId { get; set; }
|
|
public long ApprovalLogId { get; set; }
|
|
|
|
[DisplayName("开户时间")]
|
|
public DateTime? ApprovalOptDate { get; set; }
|
|
|
|
[DisplayName("评估日期")]
|
|
[DataChange]
|
|
public DateTime? EvaluateDate { get; set; }
|
|
|
|
[DisplayName("评估有效期")]
|
|
[DataChange]
|
|
public string EvaluateOfValidity { get; set; }
|
|
|
|
[DisplayName("评估到期日")]
|
|
[DataChange]
|
|
public DateTime? EvaluateExpireDate { get; set; }
|
|
|
|
[DisplayName("适当性类型")]
|
|
[DataChange]
|
|
public string ProperClientClass { get; set; }
|
|
|
|
[DisplayName("个人客户风险承受能力等级")]
|
|
[DataChange]
|
|
public string EndureLevel { get; set; }
|
|
|
|
[DisplayName("客户经理")]
|
|
public string CustomerManager { get; set; }
|
|
|
|
[DisplayName("客户经理")]
|
|
[DataChange]
|
|
public string CustomerManagerId { get; set; }
|
|
|
|
[NotMapped]
|
|
public List<int> CustomerManagerIdsInt
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(CustomerManagerId))
|
|
{
|
|
return new List<int>();
|
|
}
|
|
return CustomerManagerId.Split(","[0]).Select(t => Convert.ToInt32(t)).ToList();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 客户性质
|
|
/// </summary>
|
|
[DisplayName("客户性质")]
|
|
[DataChange]
|
|
public int? CustomerNature { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户性质1
|
|
/// </summary>
|
|
[DisplayName("客户性质1")]
|
|
[DataChange]
|
|
public string CustomerNature1 { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户性质2
|
|
/// </summary>
|
|
[DisplayName("客户性质2")]
|
|
[DataChange]
|
|
public string CustomerNature2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// 注册资本(万元)
|
|
/// </summary>
|
|
[DisplayName("产品规模(万元)")]
|
|
[DataChange]
|
|
public string RegisteredCapital { get; set; }
|
|
|
|
/// <summary>
|
|
/// 实际受益人
|
|
/// </summary>
|
|
[DisplayName("实际受益人")]
|
|
[DataChange]
|
|
public string ActualBeneficiary { get; set; }
|
|
|
|
/// <summary>
|
|
/// 实际控制人
|
|
/// </summary>
|
|
[DisplayName("实际控制人")]
|
|
[DataChange]
|
|
public string ActualController { get; set; }
|
|
|
|
/// <summary>
|
|
/// 注册地址
|
|
/// </summary>
|
|
[DisplayName("注册地址")]
|
|
[DataChange]
|
|
public string RegisteredAddress { get; set; }
|
|
|
|
/// <summary>
|
|
/// 财务状况
|
|
/// </summary>
|
|
[DisplayName("财务状况")]
|
|
[DataChange]
|
|
public string FinancialSituation { get; set; }
|
|
|
|
/// <summary>
|
|
/// 投资经验
|
|
/// </summary>
|
|
[DisplayName("投资经验")]
|
|
[DataChange]
|
|
public string InvestmentExperience { get; set; }
|
|
|
|
/// <summary>
|
|
/// 所属行业是否和投资品种有关
|
|
/// </summary>
|
|
[DisplayName("行业标的相关")]
|
|
[DataChange]
|
|
public int? IsIndustryConnectVariety { get; set; }
|
|
|
|
/// <summary>
|
|
/// 投资目标
|
|
/// </summary>
|
|
[DisplayName("交易目的")]
|
|
[DataChange]
|
|
public string TransactionTarget { get; set; }
|
|
|
|
/// <summary>
|
|
/// 投资目标
|
|
/// </summary>
|
|
[DisplayName("交易目的")]
|
|
public List<string> TransactionTargetList
|
|
{
|
|
get
|
|
{
|
|
try
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(TransactionTarget))
|
|
{
|
|
return TransactionTarget.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
|
|
}
|
|
|
|
return new List<string>();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogFactory.GetLogger<Client>().Error("TransactionTarget转成List出错", ex);
|
|
return new List<string>();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 资金来源
|
|
/// </summary>
|
|
[DisplayName("资金来源")]
|
|
[DataChange]
|
|
public int? FundsSource { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否存在实际控制关系
|
|
/// </summary>
|
|
[DisplayName("实际控制关系")]
|
|
[DataChange]
|
|
public int? IsRealControl { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// 是否存在小微客户
|
|
/// </summary>
|
|
[DisplayName("小微客户")]
|
|
public int? IsSmallAndMicroEnterprises { get; set; }
|
|
|
|
[DisplayName("上市公司")]
|
|
[DataChange]
|
|
public string IsSmallAndMicroEnterprisesStr { get { return IsSmallAndMicroEnterprises == 1 ? "是" : "否"; } }
|
|
|
|
/// <summary>
|
|
/// 投资期限
|
|
/// </summary>
|
|
[DisplayName("投资期限")]
|
|
[DataChange]
|
|
public int? InvestmentTerm { get; set; }
|
|
|
|
private string _derivativesInvestmentVarieties;
|
|
/// <summary>
|
|
/// 衍生品投资品种
|
|
/// </summary>
|
|
[DisplayName("交易种类")]
|
|
[DataChange]
|
|
public string DerivativesInvestmentVarieties { get { return _derivativesInvestmentVarieties ?? ""; } set { _derivativesInvestmentVarieties = value; } }
|
|
|
|
/// <summary>
|
|
/// 风险偏好
|
|
/// </summary>
|
|
[DisplayName("风险偏好")]
|
|
[DataChange]
|
|
public string RiskPreference { get; set; }
|
|
|
|
/// <summary>
|
|
/// 可接受损失
|
|
/// </summary>
|
|
[DisplayName("可接受损失")]
|
|
[DataChange]
|
|
public string AcceptableLoss { get; set; }
|
|
|
|
/// <summary>
|
|
/// 期望收益2
|
|
/// </summary>
|
|
[DisplayName("期望收益")]
|
|
[DataChange]
|
|
public string ExpectedReturn2 { get; set; }
|
|
|
|
/// <summary>
|
|
/// 不良诚信记录
|
|
/// </summary>
|
|
[DisplayName("不良诚信记录")]
|
|
[DataChange]
|
|
public int? BadFaithRecord { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否评估
|
|
/// </summary>
|
|
[DisplayName("是否评估")]
|
|
[DataChange]
|
|
public int? IsEvaluate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 问卷得分
|
|
/// </summary>
|
|
[DisplayName("问卷得分")]
|
|
[DataChange]
|
|
public int? QuestionnaireScore { get; set; }
|
|
|
|
/// <summary>
|
|
/// 适当性等级
|
|
/// </summary>
|
|
[DisplayName("适当性评级")]
|
|
[DataChange]
|
|
public int? AppropriatenessDegree { get; set; }
|
|
|
|
/// <summary>
|
|
/// 适当性等级名称
|
|
/// 已废弃
|
|
/// </summary>
|
|
[DisplayName("适当性等级")]
|
|
public string AppropriatenessDegreeName
|
|
{
|
|
get
|
|
{
|
|
if (PS.Config.Is浙期)
|
|
{
|
|
switch (AppropriatenessDegree)
|
|
{
|
|
case 0: return "专业A级";
|
|
case 1: return "专业B级";
|
|
case 2: return "普通C4类";
|
|
case 3: return "普通C5类";
|
|
case 4: return "C2";
|
|
case 5: return "C3";
|
|
default: return string.Empty;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (AppropriatenessDegree)
|
|
{
|
|
case 1: return "C1";
|
|
case 2: return "C2";
|
|
case 3: return "C3";
|
|
case 4: return "C4";
|
|
case 5: return "C5";
|
|
default: return string.Empty;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 可接受风险服务
|
|
/// </summary>
|
|
[DisplayName("可接受风险服务")]
|
|
[DataChange]
|
|
public int? RiskServiceDegree { get; set; }
|
|
|
|
/// <summary>
|
|
/// 可接受风险服务
|
|
/// </summary>
|
|
[DisplayName("可接受风险服务")]
|
|
[DataChange]
|
|
[IgnoreCompareChange]
|
|
public string RiskServiceDegreeName
|
|
{
|
|
get
|
|
{
|
|
switch (RiskServiceDegree)
|
|
{
|
|
case 1: return "R1";
|
|
case 2: return "R2";
|
|
case 3: return "R3";
|
|
case 4: return "R4";
|
|
case 5: return "R5";
|
|
default: return string.Empty;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 是否接受高风险等级服务
|
|
/// </summary>
|
|
[DisplayName("接受高风险服务")]
|
|
[DataChange]
|
|
public int? IsAcceptHighRiskService { get; set; }
|
|
|
|
/// <summary>
|
|
/// 适当性评估人
|
|
/// </summary>
|
|
[DisplayName("适当性评估人")]
|
|
[DataChange]
|
|
public int? AppropriatenessAssessor { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户是否要求转化类型
|
|
/// </summary>
|
|
[DisplayName("转化类型")]
|
|
[DataChange]
|
|
public int? IsRequireConversionTypes { get; set; }
|
|
|
|
/// <summary>
|
|
/// 评估结果是否变动
|
|
/// </summary>
|
|
[DisplayName("评估结果变动")]
|
|
[DataChange]
|
|
public int? IsAssessmentResultChange { get; set; }
|
|
|
|
/// <summary>
|
|
/// 备注
|
|
/// </summary>
|
|
[DisplayName("备注")]
|
|
[DataChange]
|
|
public string Remark { get; set; }
|
|
|
|
/// <summary>
|
|
/// 变动原因及历史评估结果
|
|
/// </summary>
|
|
[DisplayName("变动原因及历史")]
|
|
[DataChange]
|
|
public string ChangeReasonAndEvaluationResults { get; set; }
|
|
|
|
/// <summary>
|
|
/// 失信行为记录
|
|
/// </summary>
|
|
[DisplayName("失信行为记录")]
|
|
[DataChange]
|
|
public string DisbeliefRecord { get; set; }
|
|
|
|
///// <summary>
|
|
///// 资信等级Id(废弃)
|
|
///// </summary>
|
|
//[DisplayName("资信级别")]
|
|
//[Obsolete]
|
|
//public int? CreditRatingId { get; set; }
|
|
|
|
/// <summary>
|
|
/// 资信等级
|
|
/// </summary>
|
|
[NotMapped]
|
|
public string CreditRatingStr { get; set; }
|
|
|
|
/// <summary>
|
|
/// 营业执照号有效期
|
|
/// </summary>
|
|
[DisplayName("营业执照号有效期")]
|
|
[DataChange]
|
|
public DateTime? LicenseCodeDate { get; set; }
|
|
|
|
/// <summary>
|
|
/// 经营范围
|
|
/// </summary>
|
|
[DisplayName("经营范围")]
|
|
[DataChange]
|
|
public int? BusinessScope { get; set; }
|
|
|
|
/// <summary>
|
|
/// 私募基金产品信息
|
|
/// </summary>
|
|
[DisplayName("私募基金产品信息")]
|
|
[DataChange]
|
|
public string PrivateFundProductInformation { get; set; }
|
|
|
|
[DisplayName("客户代码")]
|
|
[DataChange]
|
|
public string Code { get; set; }
|
|
|
|
[DisplayName("交易确认书当前编号")]
|
|
[DataChange]
|
|
public int? CurrentContractNo { get; set; }
|
|
|
|
//[DisplayName("授信总额")]
|
|
//public double? Credit { get; set; }
|
|
|
|
/// <summary>
|
|
/// 该字段和客户登陆系统数据库systemusers表中的Guid做匹配
|
|
/// </summary>
|
|
public string Guid { get; set; }
|
|
|
|
[DisplayName("客户类别")]
|
|
[DataChange]
|
|
public string ClientType { get; set; }
|
|
|
|
[DisplayName("产品编号")]
|
|
[DataChange]
|
|
public string ProductNumber { get; set; }
|
|
|
|
[DisplayName("机构属性")]
|
|
[DataChange]
|
|
public string InstitutionalAttributes { get; set; }
|
|
|
|
[DisplayName("行业")]
|
|
[DataChange]
|
|
public string BusinessType { get; set; }
|
|
|
|
[DisplayName("证照类型")]
|
|
[DataChange]
|
|
public string LicenseType { get; set; }
|
|
|
|
[DisplayName("地域")]
|
|
[DataChange]
|
|
public string Region { get; set; }
|
|
|
|
/// <summary>
|
|
/// 授信是否可以用来支付期权费
|
|
/// true:授信可以支付期权费和预付金
|
|
/// false:授信只可以支付预付金
|
|
/// </summary>
|
|
[DisplayName("期权费授信")]
|
|
[DataChange]
|
|
public int? IsTradeCredit { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否可以添加授信开关
|
|
/// 为空或者0时,授信审批无法提交
|
|
/// </summary>
|
|
[DisplayName("授信")]
|
|
public int? IsCreditOn { get; set; }
|
|
|
|
/// <summary>
|
|
/// 追保方向
|
|
/// </summary>
|
|
[DisplayName("追保方向")]
|
|
[DataChange]
|
|
public int MarginOptionType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否自动撤单(通道业务)
|
|
/// </summary>
|
|
public int? IsAutoReback { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否曾通过审批
|
|
/// </summary>
|
|
public int HadPass { get; set; }
|
|
|
|
/// <summary>
|
|
/// 衍生品投资品种
|
|
/// </summary>
|
|
[NotMapped]
|
|
public string DerivativesInvestmentVarietiesName
|
|
{
|
|
get
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(DerivativesInvestmentVarieties))
|
|
{
|
|
var list = DerivativesInvestmentVarieties.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
|
|
.Select(n => int.TryParse(n, out var nn) ? nn : 0).Where(n => n > 0).ToList();
|
|
return string.Join(",", list.Select(v => System.Enum.Parse(typeof(DerivativesInvestmentVarietiesEnum), v.ToString())));
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 投资者类型
|
|
/// </summary>
|
|
[DisplayName("投资者类型")]
|
|
[DataChange]
|
|
public int? InvestorType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 管理人全称
|
|
/// </summary>
|
|
[DisplayName("管理人全称")]
|
|
[DataChange]
|
|
public string AdminFullName { get; set; }
|
|
|
|
/// <summary>
|
|
/// 管理人登记编号
|
|
/// </summary>
|
|
[DisplayName("管理人登记编号")]
|
|
[DataChange]
|
|
public string AdminRegisteredNum { get; set; }
|
|
|
|
/// <summary>
|
|
/// 投资者类型
|
|
/// </summary>
|
|
[NotMapped]
|
|
public string InvestorTypeName
|
|
{
|
|
get
|
|
{
|
|
if (InvestorType == null)
|
|
{
|
|
return "";
|
|
}
|
|
return Enum.Parse(typeof(InvestorTypeEnum), InvestorType.ToString()).ToString();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 0:同业;1:非同业
|
|
/// </summary>
|
|
[DisplayName("同业/非同业")]
|
|
public int? SamePeer { get; set; }
|
|
|
|
/// <summary>
|
|
/// 公司缩写
|
|
/// </summary>
|
|
[DisplayName("客户简称")]
|
|
[DataChange]
|
|
public string Abbreviation { get; set; }
|
|
|
|
/// <summary>
|
|
/// 同业/非同业
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("同业/非同业")]
|
|
[DataChange]
|
|
public string SamePeerDesc
|
|
{
|
|
get
|
|
{
|
|
if (!SamePeer.HasValue)
|
|
{
|
|
return "";
|
|
}
|
|
return EnumHelper.GetDescriptionByName((SamePeerEnum)SamePeer.Value);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 上传文件时,如果时双录视频文件,需要填写时间
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("双录时间:")]
|
|
public DateTime? BookTime { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易资产
|
|
/// </summary>
|
|
[DataChange]
|
|
[DisplayName("交易资产:")]
|
|
public TradingInstTypeEnum TradingInstType { get; set; }
|
|
[NotMapped]
|
|
public string TradingInstTypeName { get; set; }
|
|
|
|
[DisplayName("组织机构代码")]
|
|
[DataChange]
|
|
public string CounterpartyCode { get; set; }
|
|
|
|
[DisplayName("行业代码")]
|
|
[DataChange]
|
|
public string NFICode { get; set; }
|
|
|
|
private AccessRuleEnum _accessRule = AccessRuleEnum.BothAccess;
|
|
[DisplayName("准入规则")]
|
|
public int? AccessRule
|
|
{
|
|
get
|
|
{
|
|
return (Nullable<int>)_accessRule;
|
|
}
|
|
set
|
|
{
|
|
if (value.HasValue)
|
|
{
|
|
_accessRule = (AccessRuleEnum)value.Value;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 阈值
|
|
/// </summary>
|
|
[DisplayName("阈值")]
|
|
public double? FundThreshold { get; set; }
|
|
|
|
[DisplayName("预付金追加方式")]
|
|
public string RuleT0orT1 { get; set; }
|
|
|
|
/// <summary>
|
|
/// 国君特殊逻辑 处理这个字段,具体逻辑是按 补充协议二日期来赋值,当补充协议二日期 有值这是单章版 ,反之双章版
|
|
/// 其余客户公司正常使用
|
|
/// </summary>
|
|
[DisplayName("确认书模板")]
|
|
public string ConfirmBookMode { get; set; }
|
|
|
|
|
|
[DisplayName("上市公司")]
|
|
public int? IsListed { get; set; }
|
|
|
|
[DisplayName("上市公司")]
|
|
[DataChange]
|
|
public string IsListedStr
|
|
{
|
|
get
|
|
{
|
|
if (IsListed == null)
|
|
{
|
|
return "";
|
|
}
|
|
return IsListed == 1 ? "是" : "否";
|
|
}
|
|
}
|
|
|
|
[DisplayName("内部客户")]
|
|
public int? IsInsided { get; set; }
|
|
|
|
[DisplayName("内部客户")]
|
|
[DataChange]
|
|
public string IsInsidedStr
|
|
{
|
|
get
|
|
{
|
|
if (IsInsided == null)
|
|
{
|
|
return "";
|
|
}
|
|
return IsInsided == 1 ? "是" : "否";
|
|
}
|
|
}
|
|
|
|
[DisplayName("追保通知")]
|
|
public int? IsSendRecovery { get; set; }
|
|
|
|
[DisplayName("追保通知")]
|
|
[DataChange]
|
|
public string IsSendRecoveryStr
|
|
{
|
|
get
|
|
{
|
|
if (IsSendRecovery == null)
|
|
{
|
|
return "";
|
|
}
|
|
return IsSendRecovery == 0 ? "否" : "是";
|
|
}
|
|
}
|
|
|
|
[DisplayName("结算币种")]
|
|
public string SettlementCurrency { get; set; }
|
|
|
|
/// <summary>
|
|
/// 准入规则
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("准入规则")]
|
|
[DataChange]
|
|
public string AccessRuleDesc
|
|
{
|
|
get
|
|
{
|
|
if (!AccessRule.HasValue)
|
|
{
|
|
return "";
|
|
}
|
|
return EnumHelper.GetDescriptionByName((AccessRuleEnum)AccessRule.Value);
|
|
}
|
|
}
|
|
|
|
[DisplayName("资金流向")]
|
|
public BoundSideEnum BoundSide { get; set; }
|
|
|
|
[DisplayName("席位")]
|
|
public string Seat { get; set; }
|
|
|
|
[DisplayName("履约协议编号")]
|
|
public string AgreementBookNo { get; set; }
|
|
|
|
/// <summary>
|
|
/// 协议编号类型 单向 true 双向 false
|
|
/// </summary>
|
|
[DisplayName("履约协议类型")]
|
|
public bool? AgreementBookType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 协议编号类型 单向 true 双向 false
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("履约协议类型")]
|
|
public string AgreementBookTypeDesc
|
|
{
|
|
get
|
|
{
|
|
return AgreementBookType ?? true ? "单向" : "双向";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 清算机构
|
|
/// </summary>
|
|
[DisplayName("清算机构")]
|
|
public string ClearingAgency { get; set; }
|
|
|
|
/// <summary>
|
|
/// 主协议编号
|
|
/// </summary>
|
|
[DisplayName("主协议编号")]
|
|
public string MainProtocolCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 补充协议编号
|
|
/// </summary>
|
|
[DisplayName("补充协议编号")]
|
|
public string SupProtocolCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 补充协议二签署日期
|
|
/// 次月生效;例:值7.15,8.1号之前为双章版,之后为单章版
|
|
/// </summary>
|
|
[DisplayName("补充协议二签署日期")]
|
|
public DateTime? SupProtocolDate { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// 银行信用评级(只用于银行类客户)
|
|
/// </summary>
|
|
[DisplayName("银行信用评级")]
|
|
public string BankCreditRating { get; set; }
|
|
|
|
/// <summary>
|
|
/// 互换对冲方式 0 手动 1 自动
|
|
/// </summary>
|
|
[DisplayName("互换对冲方式")]
|
|
public int? SwapHedgingType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 资金流向
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("资金流向")]
|
|
[DataChange]
|
|
public string BoundSideDesc
|
|
{
|
|
get
|
|
{
|
|
return EnumHelper.GetDescriptionByName(BoundSide);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 产品名称
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("产品名称")]
|
|
public string ProductName { get; set; }
|
|
|
|
Dictionary<string, string> _metaDic;
|
|
|
|
/// <summary>
|
|
/// 扩展元数据字典(特别增加这个字段为了这个类的扩展性)
|
|
/// 以后不要轻易动这个字段了,前端和模板经常用到
|
|
/// </summary>
|
|
[NotMapped]
|
|
public Dictionary<string, string> MetaDic
|
|
{
|
|
get
|
|
{
|
|
return _metaDic ?? (_metaDic = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase));
|
|
}
|
|
set
|
|
{
|
|
_metaDic = value;
|
|
}
|
|
}
|
|
|
|
[NotMapped]
|
|
public bool creditCanApplySwap
|
|
{
|
|
get
|
|
{
|
|
//授信是否可用于收益互换 3A银行或证券同业
|
|
if (BusinessType != null && ((BusinessType.Contains("银行") && "AAA".Equals(BankCreditRating)) || (BusinessType.Contains("证券") && SamePeer == 0)))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public string GetDataTraceKeyId()
|
|
{
|
|
return id.ToString();
|
|
}
|
|
|
|
public Client Clone()
|
|
{
|
|
return (Client)MemberwiseClone();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取交易资产类型枚举描述
|
|
/// </summary>
|
|
public string GetTradingInstTypeDesc()
|
|
{
|
|
return TradingInstTypeUtil.GetDesc(TradingInstType);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{Name}--{id}";
|
|
}
|
|
|
|
public string GetDataTraceKeyInfo()
|
|
{
|
|
return "客户:" + Name;
|
|
}
|
|
|
|
/// <summary>
|
|
/// LEI编码
|
|
/// </summary>
|
|
[DisplayName("LEI编码")]
|
|
public string LEICode { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否中央对手方清算
|
|
/// </summary>
|
|
[DisplayName("是否中央对手方清算")]
|
|
public string IsCentralClearing { get; set; }
|
|
|
|
/// <summary>
|
|
/// 中央清算平台名称
|
|
/// </summary>
|
|
[DisplayName("中央清算平台名称")]
|
|
public string CentralClearingPaltform { get; set; }
|
|
|
|
/// <summary>
|
|
/// 交易平台
|
|
/// </summary>
|
|
[DisplayName("交易平台")]
|
|
public string TradingPaltform { get; set; }
|
|
/// <summary>
|
|
/// 追保系数
|
|
/// </summary>
|
|
[DisplayName("追保系数")]
|
|
public double? MarginRate { get; set; }
|
|
/// <summary>
|
|
/// 可取系数
|
|
/// </summary>
|
|
[DisplayName("可取系数")]
|
|
public double? DesirableRate { get; set; }
|
|
/// <summary>
|
|
/// 最小转账金额
|
|
/// </summary>
|
|
[DisplayName("最小转账金额")]
|
|
public double? MinimumTransferAmount { get; set; }
|
|
/// <summary>
|
|
/// 创建人ID
|
|
/// </summary>
|
|
[DisplayName("操作人")]
|
|
public int? CreatorId { set; get; }
|
|
|
|
/// <summary>
|
|
/// 创建人名称
|
|
/// </summary>
|
|
[DisplayName("操作人")]
|
|
public string CreatorName { set; get; }
|
|
|
|
/// <summary>
|
|
/// 创建时间
|
|
/// </summary>
|
|
[DisplayName("操作时间")]
|
|
public DateTime? CreateDate { set; get; }
|
|
|
|
/// <summary>
|
|
/// 所属部门
|
|
/// </summary>
|
|
[DisplayName("所属部门")]
|
|
public string Department { get; set; }
|
|
|
|
/// <summary>
|
|
/// 业务种类
|
|
/// </summary>
|
|
[DisplayName("业务种类")]
|
|
public string ServiceType { get; set; }
|
|
/// <summary>
|
|
/// 客户端权限
|
|
/// </summary>
|
|
[DisplayName("客户端权限")]
|
|
[Column("client_right")]
|
|
|
|
public string ClientRight { get; set; }
|
|
|
|
/// <summary>
|
|
/// 客户端权限
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("客户端权限")]
|
|
[DataChange]
|
|
public string ClientRightDesc
|
|
{
|
|
get
|
|
{
|
|
switch (this.ClientRight)
|
|
{
|
|
case "4":
|
|
return "只看报价";
|
|
case "5":
|
|
return "查看报价与交易";
|
|
case "6":
|
|
return "无权限";
|
|
default:
|
|
return this.ClientRight;
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 代理委托邮箱
|
|
/// </summary>
|
|
[DisplayName("代理委托邮箱")]
|
|
[Column("proxy_email")]
|
|
[DataChange]
|
|
public string ProxyEmail { get; set; }
|
|
/// <summary>
|
|
/// 邮箱授权码
|
|
/// </summary>
|
|
[DisplayName("邮箱授权码")]
|
|
[Column("proxy_email_pwd")]
|
|
public string ProxyEmailPwd { get; set; }
|
|
|
|
/// <summary>
|
|
/// 收益互换交易类别1:MDA,0:非DMA
|
|
/// </summary>
|
|
[DisplayName("收益互换交易类别")]
|
|
[Column("swap_trade_type")]
|
|
public int? SwapTradeType { get; set; }
|
|
/// <summary>
|
|
/// 收益互换交易类别
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("收益互换交易类别")]
|
|
[DataChange]
|
|
public string SwapTradeTypeStr
|
|
{
|
|
get
|
|
{
|
|
switch (this.SwapTradeType)
|
|
{
|
|
case 0:
|
|
return "普通";
|
|
case 1:
|
|
return "定义文件";
|
|
default:
|
|
return "普通";
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 统一社会信用代码
|
|
/// </summary>
|
|
[DisplayName("统一社会信用代码")]
|
|
[Column("unified_social_credit_code")]
|
|
[DataChange]
|
|
public string UnifiedSocialCreditCode { get; set; }
|
|
|
|
[DisplayName("管理人名称")]
|
|
[Column("manager")]
|
|
[DataChange]
|
|
public string Manager { get; set; }
|
|
|
|
[DisplayName("外部编号")]
|
|
[Column("out_number")]
|
|
[DataChange]
|
|
public string OutNumber { get; set; }
|
|
|
|
[DisplayName("定义文件编号")]
|
|
[Column("settle_file_number")]
|
|
[DataChange]
|
|
public string SettleFileNumber { get; set; }
|
|
|
|
[DisplayName("业务类型")]
|
|
[Column("business_use_type")]
|
|
public string BusinessUseType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 业务类型
|
|
/// </summary>
|
|
[NotMapped]
|
|
[DisplayName("业务类型")]
|
|
[DataChange]
|
|
public string BusinessUseTypeStr
|
|
{
|
|
get
|
|
{
|
|
if (!string.IsNullOrEmpty(this.BusinessUseType))
|
|
{
|
|
return this.BusinessUseType.Replace("0","TRS").Replace("1","做市报价");
|
|
|
|
}
|
|
return "TRS";
|
|
}
|
|
}
|
|
[DisplayName("管理人社会信用代码")]
|
|
[Column("manager_social_credit_code")]
|
|
[DataChange]
|
|
public string ManagerSocialCreditCode { get; set; }
|
|
|
|
[DisplayName("管理人简称")]
|
|
[Column("manager_abbreviation")]
|
|
[DataChange]
|
|
public string ManagerAbbreviation { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// 是否不再预警(0:预警,1:不预警)
|
|
/// </summary>
|
|
[DisplayName("是否不再预警")]
|
|
public bool? isWarning { get; set; }
|
|
|
|
}
|
|
|
|
[NotMapped]
|
|
public class ClientDto : Client
|
|
{
|
|
|
|
}
|
|
|
|
public enum BoundSideEnum
|
|
{
|
|
南向,
|
|
北向,
|
|
无
|
|
}
|
|
}
|