package com.yami.trading.bean.future.dto; import javax.validation.constraints.DecimalMin; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import com.yami.trading.common.dto.BaseDTO; import com.yami.trading.common.query.Query; import com.yami.trading.common.query.QueryType; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * 交割合约管理DTO * @author lucas * @version 2023-04-08 */ @Data @EqualsAndHashCode(callSuper = false) public class FuturesParaDTO { private String uuid; @NotNull(message = "请选择合约代码") private String symbol; @NotNull(message = "时间必填") @DecimalMin(value = "1", message = "时间不能小于等于0") private Integer timenum; /** * TIMEUNIT */ @NotNull(message = "请选择时间单位") private String timeunit; /** * UNIT_AMOUNT */ @NotNull(message = "每手金额必填") @DecimalMin(value = "0.0001", message = "每手金额不能小于等于0") private BigDecimal unitAmount; /** * UNIT_MAX_AMOUNT */ //@NotNull(message = "最高购买金额必填") //@DecimalMin(value = "0.0001", message = "最高购买金额不是浮点数") private BigDecimal unitMaxAmount; /** * PROFIT_RATIO */ @NotNull(message = "最小收益率不是浮点数") @DecimalMin(value = "0.00001", message = "最小收益率不能小于等于0") private BigDecimal profitRatio; /** * UNIT_FEE */ private BigDecimal unitFee; /** * PROFIT_RATIO_MAX */ @NotNull(message = "最大收益率必填") @DecimalMin(value = "0.00001", message = "最大收益率不能小于等于0") private BigDecimal profitRatioMax; @NotNull(message = "资金密码") private String loginSafeword; @ApiModelProperty("比率基数,例如:10000,1000,1000整数类型,默认10000") private Integer profitRatioCardinality; public void mutiply() { this.setProfitRatio(profitRatio.multiply(BigDecimal.valueOf(100))); this.setProfitRatioMax(profitRatioMax.multiply(BigDecimal.valueOf(100))); this.setUnitFee(unitFee.multiply(BigDecimal.valueOf(100))); } public void divide() { this.setProfitRatio(profitRatio.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); this.setProfitRatioMax(profitRatioMax.divide(BigDecimal.valueOf(100),2, RoundingMode.HALF_UP)); this.setUnitFee(unitFee.divide(BigDecimal.valueOf(100),6, RoundingMode.HALF_UP)); } }