using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; using System.Xml.Serialization; using YLErp.Modules.SuperviseReportModule.SAC.Common; using static YLErp.DBModels.Consts.ConsReport; namespace YLErp.Modules.SuperviseReportModule.SAC.Model { /// /// 主协议 /// [Table("A1001_MasterAgrmt")] public class MasterAgrmtModel : ReportBaseModel { /// /// 操作标识 /// 长度:1 /// 必填:是 /// 说明: /// [XmlIgnore] [SacDescription("OperationType", "操作标识", "1", true, "")] public OptFlagsEnum OperationType { get; set; } /// /// 主协议编号 /// 长度:32 /// 必填:否 /// 说明:校验规则:补正时必填 /// [XmlElement(IsNullable = false)] [CheckConditionStringValue(ConditionName = nameof(OperationType), ConditionValue = "A", CheckHandleNameArr = new[] { "B" })] [CheckConditionStringNEQValue(ConditionName = nameof(OperationType), ConditionValue = "A", CheckHandleNameArr = new[] { "A" })] [CheckStringMaxLength(MaxLength = 32, CheckHandleName = "A")] [CheckStringMaxLength(MaxLength = 32, Required = false, CheckHandleName = "B")] [DefaultValue("")] [SacDescription("MasterAgrmtID", "主协议编号", "32", false, "校验规则:补正时必填;")] public string MasterAgrmtID { get; set; } /// /// 主协议编号(双方约定) /// 长度:100 /// 必填:是 /// 说明:双方约定 /// [CheckStringMaxLength(MaxLength = 100)] [DefaultValue("")] [SacDescription("MasterAgrmtNo", "主协议编号(双方约定)", "100", true, "双方约定;")] public string MasterAgrmtNo { get; set; } /// /// 签订时间 /// 长度:10 /// 必填:是 /// 说明:校验规则:必须是yyyy-MM-dd /// [CheckStringLength(Length = 10)] [CheckStringIsDateTimeFormat(FormatString = "yyyy-MM-dd")] [DefaultValue("")] [SacDescription("SigningDate", "签订时间", "10", true, "校验规则:必须是YYYY-MM-DD;")] public string SigningDate { get; set; } /// /// 主协议版本 /// 长度:10(此处文档描述应该有错误,长度应为1~2) /// 必填:是 /// 说明: /// [CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "6", "99" })] [DefaultValue("")] [SacDescription("MasterAgrmtVer", "主协议版本", "10(此处文档描述应该有错误,长度应为1~2)", true, "")] public string MasterAgrmtVer { get; set; } /// /// 填报方角色 /// 长度:2 /// 必填:是 /// 说明: /// [CheckStringInMap(Map = new[] { "0", "1" })] [DefaultValue("")] [SacDescription("FillParty", "填报方角色", "2", true, "")] public string FillParty { get; set; } /// /// 交易对手方名称(全称) /// 长度:200 /// 必填:是 /// 说明: /// [CheckStringMaxLength(MaxLength = 200)] [DefaultValue("")] [SacDescription("NameOfCounterparty", "交易对手方名称(全称)", "200", true, "")] public string NameOfCounterparty { get; set; } /// /// 统一社会信用代码 /// 长度:18 /// 必填:否 /// 说明:校验规则:字段长度18位;当交易对手方类型是除了境外金融机构、境外非金融机构外的机构时,必填 /// [CheckConditionStringInMap(ConditionName = nameof(CounterpartyType), ConditionMap = new[] { "14", "15" }, CheckHandleNameArr = new[] { "A" })] [CheckConditionStringNotInMap(ConditionName = nameof(CounterpartyType), ConditionMap = new[] { "14", "15" }, CheckHandleNameArr = new[] { "B" })] [CheckStringMaxLength(MaxLength = 18, CheckHandleName = "A", Required = false)] [CheckStringMinLength(MinLength = 1, CheckHandleName = "B")] [CheckStringMaxLength(MaxLength = 18, CheckHandleName = "B")] [DefaultValue("")] [SacDescription("CODS", "统一社会信用代码", "18", false, "校验规则:字段长度18位;\r\n当交易对手方类型是除了境外金融机构、境外非金融机构外的机构时,必填;")] public string CODS { get; set; } /// /// 交易对手编码 /// 长度:20 /// 必填:否 /// 说明:校验规则:应当符合标准规范 /// [CheckStringMaxLength(MaxLength = 20, Required = false)] [DefaultValue("")] [SacDescription("CounterpartyCode", "交易对手编码", "20", false, "校验规则:应当符合标准规范;")] public string CounterpartyCode { get; set; } /// /// LEI码 /// 长度:20 /// 必填:否 /// 说明:校验规则:当交易对手方类型是境外金融机构、境外非金融机构时,必填 /// [CheckConditionStringInMap(ConditionName = nameof(CounterpartyType), ConditionMap = new[] { "14", "15" }, CheckHandleNameArr = new[] { "A" })] [CheckStringMinLength(MinLength = 1, CheckHandleName = "A")] [CheckStringMaxLength(MaxLength = 20, CheckHandleName = "A")] [DefaultValue("")] [SacDescription("LEI", "LEI码", "20", false, "校验规则:当交易对手方类型是境外金融机构、境外非金融机构时,必填;")] public string LEI { get; set; } /// /// 交易对手类别 /// 长度:200 /// 必填:是 /// 说明:应当符合《投资者适当性管理办法》 /// [CheckStringInMap(Map = new[] { "0", "1" })] [DefaultValue("")] [SacDescription("ProCounterparty", "交易对手类别", "200", true, "应当符合《投资者适当性管理办法》;")] public string ProCounterparty { get; set; } /// /// 交易对手方类型 /// 长度:20 /// 必填:是 /// 说明:其他金融机构为监管部门发牌的机构;应当符合标准规范 /// [CheckStringInMap(Map = new[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21" })] [DefaultValue("")] [SacDescription("CounterpartyType", "交易对手方类型", "20", true, "其他金融机构为监管部门发牌的机构;\r\n应当符合标准规范;")] public string CounterpartyType { get; set; } /// /// 非金融机构行业代码 /// 长度:20 /// 必填:否 /// 说明:校验规则:当“交易对手方类型”选择境内非金融机构时,必填;参照国家统计局发布的《国民经济行业分类》 /// [CheckConditionStringInMap(ConditionName = nameof(CounterpartyType), ConditionMap = new[] { "13" }, CheckHandleNameArr = new[] { "A" })] [CheckConditionStringNotInMap(ConditionName = nameof(CounterpartyType), ConditionMap = new[] { "13" }, CheckHandleNameArr = new[] { "B" })] [CheckStringMaxLength(MaxLength = 20, CheckHandleName = "A")] [CheckStringMaxLength(MaxLength = 20, Required = false, CheckHandleName = "B")] [DefaultValue("")] [SacDescription("NFICode", "非金融机构行业代码", "20", false, "校验规则:当“交易对手方类型”选择境内非金融机构时,必填;\r\n参照国家统计局发布的《国民经济行业分类》;")] public string NFICode { get; set; } /// /// 交易对手方注册资本(万元) /// 长度:36,2 /// 必填:否 /// 说明:校验规则:保留两位小数 /// [CheckStringIntMaxLength(BeforePointMaxLength = 36, AfterPointMaxLength = 2, Required = false)] [DefaultValue("")] [SacDescription("CounterpartyRegdCptl", "交易对手方注册资本(万元)", "36,2", false, "校验规则:必须两位小数以内")] public string CounterpartyRegdCptl { get; set; } /// /// 主协议备注 /// 长度:1024 /// 必填:否 /// 说明:交易对手是否为国有或国有控股企业,及其他需要说明事项 /// [CheckStringMaxLength(MaxLength = 1024, Required = false)] [DefaultValue("")] [SacDescription("MasterAgrmtRemark", "主协议备注", "1024", false, "交易对手是否为国有或国有控股企业,及其他需要说明事项;")] public string MasterAgrmtRemark { get; set; } /// /// 主协议附件 /// 长度: /// 必填:是 /// 说明:校验规则:只支持PDF格式 /// [CheckStringEndsWith(EndsWithString = ".pdf")] [DefaultValue("")] [SacDescription("MasterAgrmtAtt", "主协议附件", "", true, "校验规则:只支持PDF格式;")] public string MasterAgrmtAtt { get; set; } /// /// 交易对手方身份 /// 长度:2 /// 必填:是 /// 说明: /// [CheckStringInMap(Map = new[] { "1", "2" })] [DefaultValue("")] [SacDescription("CounterpartyIdentity", "交易对手方身份", "2", true, "")] public string CounterpartyIdentity { get; set; } /// /// 填报方业务代表明细 /// 长度: /// 必填: /// 说明: /// [CheckIEnumerableTMinCount(MinCount = 1)] [XmlElement] [NotMapped] [SacDescription("CounterpartyInformationTuple", "填报方业务代表明细", "", false, "")] public List CounterpartyInformationTuple { get; set; } } /// /// 填报方业务代表明细 /// [Table("A1001_CounterpartyInfomation")] public class CounterpartyInfomationModel : ReportSubBaseModel { /// /// 主协议编号 /// 长度:200 /// 必填:是 /// 说明: /// [XmlIgnore] public string MasterAgrmtNo { get; set; } /// /// 填报方业务代表姓名 /// 长度:200 /// 必填:是 /// 说明: /// [CheckStringMaxLength(MaxLength = 200)] [DefaultValue("")] [SacDescription("Name", "填报方业务代表姓名", "200", true, "")] public string Name { get; set; } /// /// 职务 /// 长度:200 /// 必填:否 /// 说明: /// [CheckStringMaxLength(MaxLength = 200, Required = false)] [DefaultValue("")] [SacDescription("Title", "职务", "200", false, "")] public string Title { get; set; } /// /// 电话 /// 长度:200 /// 必填:否 /// 说明: /// [CheckStringMaxLength(MaxLength = 200, Required = false)] [DefaultValue("")] [SacDescription("Telephone", "电话", "200", false, "")] public string Telephone { get; set; } /// /// 手机 /// 长度:11 /// 必填:否 /// 说明:校验规则:手机号 /// [CheckStringLength(Length = 11, Required = false)] [DefaultValue("")] [SacDescription("Mobile", "手机", "11", false, "校验规则:手机号;")] public string Mobile { get; set; } /// /// 邮箱 /// 长度:200 /// 必填:否 /// 说明: /// [CheckStringMaxLength(MaxLength = 200, Required = false)] [DefaultValue("")] [SacDescription("Email", "邮箱", "200", false, "")] public string Email { get; set; } } }