Merge remote-tracking branch 'dest/glms/feature/1.4.2' into test
This commit is contained in:
@@ -24,5 +24,25 @@ namespace YLErp.DBModels
|
||||
{
|
||||
return fundTag == Credit ? Credit : Cash;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 腿是否按授信分配(§2.3 情形1 回退口径):腿上显式选择优先(Credit=授信、Cash=现金);
|
||||
/// 腿未选(默认)时取交易级资金来源(trade.margin_fund_source,必填默认现金)——授信→按授信分配
|
||||
/// (额度不足拆单),现金→现金。交易级空值按现金(存量防御,SaveTrade 已归一)。
|
||||
/// 标签定稿(ApplyMarginFundTags)与簿记资金校验(RealtimePnlCalc.TradeCanBeConfirm)
|
||||
/// 共用本口径,保证校验与定稿一致。
|
||||
/// </summary>
|
||||
public static bool PreferCredit(string legFundTag, string tradeFundSource)
|
||||
{
|
||||
if (legFundTag == Credit)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (legFundTag == Cash)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return string.IsNullOrEmpty(legFundTag) && tradeFundSource == Credit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,4 +220,86 @@ namespace YLErp.DBModels
|
||||
/// </summary>
|
||||
public decimal MarginInterestLoss { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// EQD-7084 新“框架合约”Tab 的新增字段及拆分后的估值口径。
|
||||
/// 该模型不映射数据库,仅由新查询接口计算返回。
|
||||
/// </summary>
|
||||
public class EodSwapRiskNewFields
|
||||
{
|
||||
/// <summary>
|
||||
/// 浮动收益端标的类型,仅供前端按债券/非债券选择期初价格精度使用,
|
||||
/// 不参与任何收益或估值计算。
|
||||
/// </summary>
|
||||
public string UnderlyingInstrumentType { get; set; }
|
||||
|
||||
/// <summary>浮动收益端多空方向。</summary>
|
||||
public string UnderlyingDirection { get; set; }
|
||||
|
||||
/// <summary>浮动收益端标的代码。</summary>
|
||||
public string UnderlyingCode { get; set; }
|
||||
|
||||
/// <summary>期初标的价格;债券按百分价格展示。</summary>
|
||||
public decimal? InitialPrice { get; set; }
|
||||
|
||||
/// <summary>名义数量,取合约名义本金。</summary>
|
||||
public decimal NotionalQuantity { get; set; }
|
||||
|
||||
/// <summary>合约起始日。</summary>
|
||||
public DateTime? ContractStartDate { get; set; }
|
||||
|
||||
/// <summary>合约到期日。</summary>
|
||||
public DateTime? ContractMaturityDate { get; set; }
|
||||
|
||||
/// <summary>利息端基准:FR007 或固定利率。</summary>
|
||||
public string InterestBenchmark { get; set; }
|
||||
|
||||
/// <summary>普通利息腿当前交易日适用利率合计。</summary>
|
||||
public decimal InterestRatePrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开平仓费用。日终腿已按我方收益方向归一:我方支付为负、我方收取为正;
|
||||
/// 新 Tab 单独展示该金额,但估值中仍须计入一次。
|
||||
/// </summary>
|
||||
public decimal OpeningClosingFee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 不含开平仓费用的浮动端待实现收益,来源为日终浮动腿的 PosiMtmPnL;
|
||||
/// 不可再由旧口径的 PosiProfitSum 反推,避免把费用重新混入本列。
|
||||
/// </summary>
|
||||
public decimal FloatingUnrealizedPnl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 排除初始/维持保证金腿后的普通利息端待实现收益。保证金利息保留在其独立两列,
|
||||
/// 且只通过 MarginInterestAmount 参与估值,以满足“利息端仅展示利息端盈亏”的新口径。
|
||||
/// </summary>
|
||||
public decimal OrdinaryInterestPnl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 保证金利息净额,仅供两种合约估值维持旧总额;前端不直接绑定该字段,
|
||||
/// 以防它再次落入“合约利息端待实现收益”。
|
||||
/// </summary>
|
||||
public decimal MarginInterestAmount { get; set; }
|
||||
|
||||
/// <summary>收取对手方保证金利息。</summary>
|
||||
public decimal MarginInterestGain { get; set; }
|
||||
|
||||
/// <summary>支付对手方保证金利息。</summary>
|
||||
public decimal MarginInterestLoss { get; set; }
|
||||
|
||||
/// <summary>到期轧差口径估值;仅 DividendPayDate=0 时有值,且包含期间付息/分红。</summary>
|
||||
public decimal? MaturityNettingValuation { get; set; }
|
||||
|
||||
/// <summary>期间支付派息口径估值;仅 DividendPayDate 非 0 时有值,不重复计入期间付息/分红。</summary>
|
||||
public decimal? PeriodPaymentValuation { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// EQD-7084 新“框架合约”Tab 响应。继承旧响应以保持原有列字段完全一致,
|
||||
/// 新接口只额外序列化新增字段。
|
||||
/// </summary>
|
||||
public class EodSwapRiskNewResponse : EodSwapResponse
|
||||
{
|
||||
public EodSwapRiskNewFields NewFields { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace YLErp.DBModels
|
||||
{
|
||||
public enum PushStateEnum
|
||||
{
|
||||
待推送 = 0,
|
||||
成功 = 1,
|
||||
失败 = 2
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 外发推送失败状态。只记录定位信息,不保存报文。
|
||||
/// </summary>
|
||||
[Table("push_status")]
|
||||
public class PushStatus
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public long id { get; set; }
|
||||
|
||||
[Column("value_date")]
|
||||
public DateTime ValueDate { get; set; }
|
||||
|
||||
[Column("push_type")]
|
||||
public int PushType { get; set; }
|
||||
|
||||
[Column("record_id")]
|
||||
public long RecordId { get; set; }
|
||||
|
||||
[Column("state")]
|
||||
public PushStateEnum State { get; set; }
|
||||
|
||||
[Column("retry_count")]
|
||||
public int RetryCount { get; set; }
|
||||
|
||||
[Column("last_error")]
|
||||
public string LastError { get; set; }
|
||||
|
||||
[Column("push_time")]
|
||||
public DateTime? PushTime { get; set; }
|
||||
|
||||
[Column("create_time")]
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
[Column("update_time")]
|
||||
public DateTime? UpdateTime { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -404,13 +404,12 @@ namespace YLErp.DBModels
|
||||
/// 期末标的结算收益率(EQD-6953 平仓)。普通债券类收益互换平仓时由债券计算器按
|
||||
/// 期末标的交割全价反算(估值日=平仓日 ValueDate),允许手工覆盖。
|
||||
/// 命名遵循《互换价格字段命名规范决策文档》时点维度:平仓/了结用 Exit(勿用 End/Close/Final)。
|
||||
/// [NotMapped]:不落 swap_flow_event 表列;仅随 UnwindData 序列化进 swap_event.EventData JSON,
|
||||
/// 由平仓待复核回显(GetSwapEvent)与结算确认书 Excel(TradeSettleBillGenerator) 消费。
|
||||
/// 直接保存到 swap_flow_event.ExitYtm,提前终止详情页和结算确认书均读取该次平仓浮动腿记录。
|
||||
/// ⚠️ 存储口径为【展示态百分数】(如 6.3721 表示 6.3721%),与同页期末交割全价(展示态)一致,
|
||||
/// 区别于录入页 trade.InitYtm 的存储态小数(0.063721)——两者载体不同、互不干扰,勿"顺手统一"。
|
||||
/// 精度:确认书导出固定 4 位小数不去零(ToString("0.0000"));本字段保留 4 位(四舍五入)。
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
[Column("ExitYtm", TypeName = "decimal(18,4)")]
|
||||
public decimal? ExitYtm { get; set; }
|
||||
|
||||
}
|
||||
|
||||
@@ -677,6 +677,17 @@ namespace YLErp.DBModels
|
||||
[TradeAuditExclude]
|
||||
public string MarginTemplateName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 保证金资金来源(收益互换,必填,默认现金):预付金腿未选资金标签(默认)时的定稿依据(§2.3 情形1)。
|
||||
/// 值与 swap_position.fund_tag 同词表:Credit=优先授信(额度不足自动拆单)、Cash=现金。
|
||||
/// 录入页必选(新交易默认 Cash),SaveTrade 对空值归一为 Cash(兜住 DMA 等绕过页面的链路);
|
||||
/// 历史来源:旧版 trade.MarginTemplateName 曾以字典文本(授信保证金/现金保证金)承载该语义,模板V2迁移后由本列承接。
|
||||
/// </summary>
|
||||
[DisplayName("资金来源")]
|
||||
[TradeAuditExclude]
|
||||
[Column("margin_fund_source")]
|
||||
public string MarginFundSource { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 预付金算法
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user