package com.datacenter.entity.stat;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 合约盈亏统计表（自主合约 + 跟单合约）。
 * Job 每次写两行：includeInternal=0（排除内部账户）和 includeInternal=1（含内部账户）。
 */
@Data
@TableName("stat_contract_pnl")
public class StatContractPnl {

    @TableId(type = IdType.AUTO)
    private Long id;

    /** 统计日期 */
    private LocalDate statDate;

    /** 是否包含内部账户：0=不含；1=含 */
    private Integer includeInternal;

    // ── 自主合约 ─────────────────────────────────────────────────────────────

    /** 当前持仓盈利(USDT)：所有自主持仓中浮盈大于0的总和 */
    private BigDecimal selfHoldProfit;

    /** 当前持仓亏损(USDT)：所有自主持仓中浮亏绝对值的总和 */
    private BigDecimal selfHoldLoss;

    /** 今日平仓盈利(USDT)：今日自主平仓 profit_and_loss > 0 的总和 */
    private BigDecimal selfTodayCloseProfit;

    /** 今日平仓亏损(USDT)：今日自主平仓 profit_and_loss < 0 绝对值的总和 */
    private BigDecimal selfTodayCloseLoss;

    /** 平仓总盈利(USDT)：历史累计自主平仓盈利总和 */
    private BigDecimal selfTotalCloseProfit;

    /** 平仓总亏损(USDT)：历史累计自主平仓亏损绝对值总和 */
    private BigDecimal selfTotalCloseLoss;

    // ── 跟单合约 ─────────────────────────────────────────────────────────────

    /** 当前持仓盈利(USDT)：所有跟单持仓中浮盈大于0的总和 */
    private BigDecimal copyHoldProfit;

    /** 当前持仓亏损(USDT)：所有跟单持仓中浮亏绝对值的总和 */
    private BigDecimal copyHoldLoss;

    /** 今日平仓盈利(USDT)：今日跟单平仓 profit_and_loss > 0 的总和 */
    private BigDecimal copyTodayCloseProfit;

    /** 今日平仓亏损(USDT)：今日跟单平仓 profit_and_loss < 0 绝对值的总和 */
    private BigDecimal copyTodayCloseLoss;

    /** 平仓总盈利(USDT)：历史累计跟单平仓盈利总和 */
    private BigDecimal copyTotalCloseProfit;

    /** 平仓总亏损(USDT)：历史累计跟单平仓亏损绝对值总和 */
    private BigDecimal copyTotalCloseLoss;

    /** 统计更新时间 */
    private LocalDateTime updatedTime;
}
