package com.yami.trading.bean.data.domain; import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.yami.trading.common.util.Arith; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; import java.io.Serializable; /** * 实时价格Entity * * @author lucas * @version 2023-03-16 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_realtime") @ApiModel @Slf4j @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public class Realtime implements Comparable, Cloneable, Serializable { private static final long serialVersionUID = 6908987076526939154L; private String uuid; /** * 产品代码 */ @ApiModelProperty("产品代码") private String symbol; /** * 时间戳 */ @ApiModelProperty("时间戳") private Long ts; /** * 产品名称 */ @ApiModelProperty("产品名称") private String name; /** * 开盘价 */ @ApiModelProperty("开盘价") private double open; /** * 最高价 */ @ApiModelProperty("最高价") private double high; /** * 最低价 */ @ApiModelProperty("最低价") private double low; /** * 最新价 */ @ApiModelProperty("最新价") private double close; /** * 成交量 币个数 */ @ApiModelProperty(" 成交量 币个数") private double amount; /** * 成交额 金额 */ @ApiModelProperty(" 成交额 金额") private double volume; /** * type */ private String type; /** * 涨跌幅 */ @TableField(exist = false) @ApiModelProperty("涨跌幅") private double changeRatio; /** * 净值涨跌幅 */ @TableField(exist = false) @ApiModelProperty("净值涨跌幅") private double netChange; /** * 市值 */ @TableField(exist = false) @JSONField(name = "market_capital") private Long marketCapital; /** * 没股净资产 */ @TableField(exist = false) @JSONField(name = "navps") private double navps; /** * 市净率 */ @TableField(exist = false) @JSONField(name = "pb") private double pb; /** * 震幅 */ @TableField(exist = false) @JSONField(name = "amplitude") private double amplitude; /** * 震幅 */ @TableField(exist = false) @JSONField(name = "eps") private double eps; /** * 盘前波动 */ @TableField(exist = false) @JSONField(name = "chg") private double chg; /** * 盘前波动比 */ @TableField(exist = false) @JSONField(name = "percent") private double percent; /** * 流通市值 */ @TableField(exist = false) @JSONField(name = "float_market_capital") private Long floatMarketCapital; /** * 市盈率 */ @TableField(exist = false) @JSONField(name = "pe_forecast") private double peForecast; /** * 量比 */ @TableField(exist = false) @JSONField(name = "volume_ratio") private double volumeRatio; /** * 换手率 */ @TableField(exist = false) @JSONField(name = "turnover_rate") private double turnoverRate; @TableField(exist = false) @ApiModelProperty("产品代码") private String symbolData; /** * 时区切换问题需要留意,TODO * * 时间戳的"yyyy-MM-dd HH:mm:ss"格式 */ @TableField(exist = false) private String currentTime; /** * 卖价 */ private double bid; /** * 买价格 */ private double ask; /** * 均价 */ @TableField(exist = false) private double averagePrice; /** * 本益比 */ @TableField(exist = false) private double earningsRatio; /** * 发行股 */ @TableField(exist = false) private Long issuedShares; /** * 涨停 */ @TableField(exist = false) private double dailyLimit; /** * 跌停 */ @TableField(exist = false) private double limitDown; /** * 52W高 */ @TableField(exist = false) private double w52High; /** * 52W低 */ @TableField(exist = false) private double w52Low; /** * 内盘量 */ @TableField(exist = false) private double internalVolume; /** * wai盘量 */ @TableField(exist = false) private double externalVolume; /** * 近四季EPS */ @TableField(exist = false) private double epsYear; /** * 當季EPS */ @TableField(exist = false) private double epsQuarter; /** * 毛利率 */ @TableField(exist = false) private double grossProfitMargin; /** * 每股淨值 */ @TableField(exist = false) private double netValuePerShare; /** * 本淨比 */ @TableField(exist = false) private double priceToNetRatio; /** * 營益率 */ @TableField(exist = false) private double profitMargin; /** * 年股利 */ @TableField(exist = false) private double annualDividend; /** * 殖利率 */ @TableField(exist = false) private double yield; /** * 淨利率 */ @TableField(exist = false) private double netProfitMargin; /** * 分表标记 */ @TableField(exist = false) private int tableIndex; @Override public Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public int compareTo(Realtime realtime) { if (this.ts > realtime.getTs()) { return 1; } else if (this.ts < realtime.getTs()) { return -1; } return 0; } public double getChangeRatio() { if(percent != 0){ return percent; } if (open == 0) { return 0; } changeRatio = Arith.div(Arith.sub(close, open), open); changeRatio = Arith.mul(changeRatio, 100, 2); return changeRatio; } public double getNetChange() { if(chg !=0){ return chg; } return Arith.div(Arith.mul(close, getChangeRatio()), 100, 4); } }