package com.yingpai.stock.domain.vo;

import cn.idev.excel.annotation.ExcelProperty;
import cn.idev.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yingpai.stock.domain.StockPool;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 股票池视图对象
 */
@Data
@AutoMapper(target = StockPool.class)
public class StockPoolVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ExcelProperty(value = "ID")
    private Long id;

    /**
     * 股票代码
     */
    @ExcelProperty(value = "股票代码")
    private String stockCode;

    /**
     * 股票名称
     */
    @ExcelProperty(value = "股票名称")
    private String stockName;

    /**
     * 池类型：1-超短池，2-强势池
     */
    @ExcelProperty(value = "池类型")
    private Integer poolType;

    /**
     * 池类型名称
     */
    @ExcelProperty(value = "池类型名称")
    private String poolTypeName;

    /**
     * 加入时的价格
     */
    @ExcelProperty(value = "加入价格")
    private BigDecimal addPrice;

    /**
     * 加入日期
     */
    @ExcelProperty(value = "加入日期")
    @ColumnWidth(15)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate addDate;

    /**
     * 状态：1-有效，0-已移除
     */
    @ExcelProperty(value = "状态")
    private Integer status;

    /**
     * 操作管理员ID
     */
    private Long adminId;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    @ColumnWidth(20)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    // ========== 实时数据字段（不存数据库，接口动态获取） ==========

    /**
     * 当前价格
     */
    @ExcelProperty(value = "当前价格")
    private BigDecimal currentPrice;

    /**
     * 昨收价
     */
    @ExcelProperty(value = "昨收价")
    private BigDecimal yesterdayClose;

    /**
     * 涨跌额
     */
    @ExcelProperty(value = "涨跌额")
    private BigDecimal changeAmount;

    /**
     * 涨跌幅(%)
     */
    @ExcelProperty(value = "涨跌幅(%)")
    private BigDecimal changePercent;

    /**
     * 换手率(%)
     */
    @ExcelProperty(value = "换手率(%)")
    private BigDecimal turnoverRate;

    /**
     * 成交额(元)
     */
    @ExcelProperty(value = "成交额(亿)")
    private BigDecimal tradeAmount;

    /**
     * 入池收益率(%)
     */
    @ExcelProperty(value = "入池收益(%)")
    private BigDecimal profitPercent;
}
