Files
zszq-trs/YLErpDAL/Model/ExDividendInfo.cs
T
张名锐 5a51d66970 refactor(dividend): 优化除权除息计算逻辑并改进数据类型精度
- 将除权除息相关数值字段从 double 类型改为 decimal 类型以提高精度
- 重构了红利比率计算方法 GetRatio,新增 GetRatioDecimal 方法使用 decimal 计算
- 修改价格和持仓数量计算逻辑,统一使用 decimal 进行高精度运算
- 更新数据库查询逻辑,将篮子标的判断从 IsBasket() 方法改为 CommodityCode 条件
- 优化 AddDividendInfos 方法中的批量处理逻辑,增加业务键冲突检测
- 添加数据源标识字段 DataSource 和来源更新时间字段 SourceUpdatedAt
- 新增 FindExDividendByBusinessKey 和 MergeNonZeroDividendValues 辅助方法
- 更新结算服务中除权除息信息的获取方式,使用字典查找替代 LINQ JOIN
- 修复前端保存除权信息时的响应处理逻辑
- 为基金类型也开放除权功能,不仅限于股票类型
- 添加单元测试验证篮子标的查询翻译逻辑的正确性
2026-08-13 10:53:57 +08:00

101 lines
2.8 KiB
C#

using BaseOUDAL;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace YLErp.DBModels
{
public static class ExDividendDataSources
{
public const string Manual = "Manual";
public const string MarketData = "MarketData";
}
[Table("ex_dividend_info")]
public class ex_dividend_info : DBModelWithOperator
{
public static string LogClass = "除权除息信息";
/// <summary>
/// 股权登记日
/// </summary>
[DisplayName("股权登记日")]
public DateTime? ExDividendDate { get; set; }
/// <summary>
/// 税率
/// </summary>
[NotMapped]
public double DividRate { get; set; }
[DisplayName("标的资产")]
public int UnderlyingId { get; set; }
/// <summary>
/// 标的资产码
/// </summary>
[DisplayName("标的资产码"), Required]
public string UnderlyingCode { get; set; }
/// <summary>
/// 派息金额
/// </summary>
[DisplayName("派息金额")]
public decimal GiveCashAmount { get; set; }
/// <summary>
/// 送股手数
/// </summary>
[DisplayName("送股股数")]
public decimal GiveShareAmount { get; set; }
/// <summary>
/// 配股手数
/// </summary>
[DisplayName("配股股数")]
public decimal RationedSharesAmount { get; set; }
/// <summary>
/// 配股手数
/// </summary>
[DisplayName("配股价")]
public decimal RationedSharesPrice { get; set; }
/// <summary>
/// 是否有效
/// </summary>
public bool ValidStatus { get; set; }
/// <summary>
/// Ownership of the record. Manual records always take precedence over imports.
/// </summary>
[DisplayName("数据来源"), Required, MaxLength(32)]
public string DataSource { get; set; } = ExDividendDataSources.Manual;
/// <summary>
/// Last update timestamp supplied by the market-data provider.
/// </summary>
[DisplayName("来源更新时间")]
public DateTime? SourceUpdatedAt { get; set; }
}
public class ex_dividend_infoReq : BaseSearchReq
{
/// <summary>
///
/// </summary>
public int id { get; set; }
[DisplayName("标的资产")]
public int? UnderlyingId { get; set; }
/// <summary>
/// 标的资产码
/// </summary>
public string UnderlyingCode { get; set; }
/// <summary>
/// 股权登记日
/// </summary>
public DateTime? ExDividendDate { get; set; }
}
}