package com.njzscloud.common.sn;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njzscloud.common.sn.contant.PadMode;
import com.njzscloud.common.sn.contant.RollbackMode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;
import java.util.Objects;

/**
 * 递增编码表
 */
@Getter
@Setter
@ToString
@Accessors(chain = true)
@TableName("sys_inc_sn")
public class IncSnEntity {

    /**
     * Id
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 代码（全局唯一）
     */
    private String code;

    /**
     * 当前数值
     */
    private Long val;

    /**
     * 步长
     */
    private Integer step;

    /**
     * 初始数值
     */
    private Long initialVal;

    /**
     * 填充模式
     */
    private PadMode padMode;

    /**
     * 填充值
     */
    private String padVal;

    /**
     * 填充长度
     */
    private Integer padLen;
    /**
     * 最大数值
     */
    private Long maxVal;
    /**
     * 回卷模式
     */
    private RollbackMode rollback;
    /**
     * 是否允许溢出
     */
    private Boolean allowOverflow;
    /**
     * 上次时间
     */
    private LocalDateTime lastTime;
    /**
     * 上次批次
     */
    private String lastPici;

    @Override
    public boolean equals(Object o) {
        if (o == null || getClass() != o.getClass()) return false;
        IncSnEntity that = (IncSnEntity) o;
        return Objects.equals(code, that.code);
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(code);
    }
}
