Files
zszq-trs/Framework/YLErp.Core/DBModels/SwapEvent.cs
T
张名锐 6835a593b0 feat(swaptrade): 添加收益结算日期验证和限制功能
- 新增 MaxIncomeValueDate 属性用于限制收益结算日期上限
- 实现 parseLocalDate 函数用于解析本地日期格式
- 在前端添加日期选择器的最大日期限制和验证逻辑
- 添加 isAfterMaxIncomeValueDate 和 validateIncomeValueDate 方法进行日期验证
- 在后端添加 GetMaxIncomeValueDate 方法计算最大收益结算日期
- 实现 ValidateIncomeValueDate 对收益结算日期进行服务器端验证
- 添加 NormalizeIncomeUnwindDate 方法统一处理平仓日期
- 在模型中新增 MaxIncomeValueDate 非映射属性用于前端显示
- 更新日期格式化函数确保日期字符串的一致性处理
2026-07-06 15:20:21 +08:00

205 lines
5.9 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YLErp.DBModels;
using YLErp.Helpers;
namespace YLErp.DBModels
{
public class swap_event: DBModelBaseV2
{
/// <summary>
/// 事件日期
/// </summary>
[DisplayName("事件日期")]
[DataChange]
public DateTime ValueDate { get; set; }
/// <summary>
/// 互换交易编号id
/// </summary>
[DisplayName("互换交易编号id")]
[DataChange]
public int SwapTradeId { get; set; }
/// <summary>
/// 事件类型 1:合成持仓,2:平仓,3:收益互换
/// </summary>
[DisplayName("平仓事件")]
[DataChange]
public int EventType { get; set; }
/// <summary>
/// 事件类型名称
/// </summary>
[NotMapped]
public string EventTypeName { get { return ((SwapEventTypeEnum)EventType).ToString(); } }
/// <summary>
/// 事件原因
/// </summary>
[DisplayName("事件原因")]
[DataChange]
public string EventReason { get; set; }
/// <summary>
/// 事件数据json
/// </summary>
[DisplayName("事件数据")]
[DataChange]
public string EventData { get; set; }
/// <summary>
/// 是否无效
/// </summary>
[DisplayName("是否无效")]
[DataChange]
public bool Invalid { get; set; }
/// <summary>
/// 客户资金记录id
/// </summary>
[DisplayName("客户资金记录id")]
[DataChange]
public int ClientCashId { get; set; }
/// <summary>
/// 回退记录id
/// </summary>
[DisplayName("回退记录id")]
[DataChange]
public long BackId { get; set; }
/// <summary>
/// 展期信息
/// </summary>
[NotMapped]
public ExtenstionData extenstionData { get; set; }
/// <summary>
/// 交易编码
/// </summary>
[NotMapped]
public string SwapTradeNumber { get; set; }
/// <summary>
/// 平仓/互换/自动互换主干数据
/// </summary>
[NotMapped]
public UnwindData unwindData { get; set; }
}
/// <summary>
/// 展期信息
/// </summary>
public class ExtenstionData
{
/// <summary>
/// 旧到期日
/// </summary>
public DateTime OldMaturityDate { get; set; }
/// <summary>
/// 新到期日
/// </summary>
public DateTime NewMaturityDate { get; set; }
}
public class UnwindData
{
public UnwindData()
{
FlowEvents = new List<swap_flow_event>();
ClientCashIds = new List<int>();
}
public int SwapTradeId { get; set; }
/// <summary>
/// 平仓类型 1:数量 ,2:名义本金
/// </summary>
public int CloseType { get; set; }
/// <summary>
/// 平仓数量
/// </summary>
public decimal CloseQty { get; set; }
/// <summary>
/// 平仓比例
/// </summary>
public decimal ClosePercent { get; set; }
/// <summary>
/// 平仓名义本金
/// </summary>
public decimal CloseNotionalValue { get; set; }
/// <summary>
/// 开始日期
/// </summary>
public DateTime StartDate { get; set; }
/// <summary>
/// 交易日期
/// </summary>
public DateTime ValueDate { get; set; }
/// <summary>
/// 收益结算日期上限
/// </summary>
[NotMapped]
public DateTime? MaxIncomeValueDate { get; set; }
/// <summary>
/// 平仓/互换日期
/// </summary>
public DateTime? UnwindDate { get; set; }
/// <summary>
/// 期初名义本金
/// </summary>
public decimal NotionalValue { get; set; }
/// <summary>
/// 期初持仓数量
/// </summary>
public decimal NotionalQty { get; set; }
/// <summary>
/// 持仓名义本金
/// </summary>
public decimal PosiNotionalValue { get; set; }
/// <summary>
/// 持仓数量
/// </summary>
public decimal PositionQty { get; set; }
/// <summary>
/// 年化天数
/// </summary>
public int AnnualDays { get; set; }
/// <summary>
/// 平仓方式
/// </summary>
public int CloseMethod { get; set; }
/// <summary>
/// 实现盈亏
/// </summary>
public decimal SwapRealizedPnL { get; set; }
/// <summary>
/// 预付金腿返息盈亏
/// </summary>
public decimal SwapMarginRebatePnl { get; set; }
/// <summary>
/// 预付金腿 返还预付金轧差
/// </summary>
public decimal SwapMarginAmount { get; set; }
/// <summary>
/// 平仓总额
/// </summary>
public decimal SwapCloseAmount { get; set; }
/// <summary>
/// 浮动端分红盈亏
/// </summary>
public decimal SwapDividendPnl { get; set; }
/// <summary>
/// 自动互换生成的客户资金记录ID集合
/// </summary>
public List<int> ClientCashIds { get; set; }
/// <summary>
/// 利息腿/浮动腿 集合,不序列化存储,只做查询
/// </summary>
public List<swap_flow_event> FlowEvents { get; set; }
public string StructureType { get; set; }
/// <summary>
/// 支付日
/// </summary>
public DateTime? PayDate { get; set; }
[NotMapped]
public DateTime? TradeStartDate { get; set; }
}
}