/**
 * There are <a href="https://github.com/ketayao/keta-custom">keta-custom</a> code generation
 */
package com.sw.common.accessory.server.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sw.common.accessory.server.EnumValuesAccy;
import com.sw.common.mybatisplus.base.BaseEntity;
import lombok.Data;

import java.util.Date;

/**
 * @Author
 * @Description：
 * @Date: Create in
 * @Modified By:
 */
@Data
@TableName(value = "accy_accessory")
public class Accessory extends BaseEntity {
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 设备辅材id
     */
    private Long equipmentAccessoryId;

    /**
     * 设备编号
     */
    private String equipmentCode;

    /**
     * 物料id
     */
    private Long materialId;

    /**
     * 物料类型
     */
    private String materialType;

    /**
     * 物料名称
     */
    private String materialName;

    /**
     * 物料料号
     */
    private String materialCode;

    /**
     * 批次号
     */
    private String batchCode;

    /**
     * 数量
     */
    private Integer number;

    /**
     * 唯一码
     */
    private String uniqueCode;

    /**
     * 物料状态（0:正常,1:返修,2:报废,3:煅烧可用,）
     */
    private Integer accessoryStatus;

    /**
     * 使用状态（0：待上机，1：上机中，2：退库中，3：已退库）
     */
    private Integer status;

    /**
     * 预警状态（0：未预警，1：已预警）
     */
    private Integer warnStatus;

    /**
     * 供应商
     */
    private String supplier;

    /**
     * 规格
     */
    private String specification;
    /**
     * 物料型号
     */
    private String xh;
    /**
     * 物料图号
     */
    private String th;
    /**
     * 物料单位
     */
    private String unit;

    /**
     * 额定寿命
     */
    private Integer ratedLife;

    /**
     * 已使用寿命
     */
    private Integer usefulLife;

    /**
     * 剩余寿命
     */
    private Integer remainingLife;

    /**
     * 预警寿命
     */
    private Integer warnLife;

    /**
     * 上机时间
     */
    private Date upperTime;

    /**
     * 寿命类型（0：炉次） ,默认 0
     */
    private Integer lifeType;

    public void setRatedLife(Integer ratedLife) {
        this.ratedLife = ratedLife;
        setRemainingLife();
    }


    public void setRemainingLife() {
        if (this.ratedLife != null && this.usefulLife != null) {
            this.remainingLife = this.ratedLife - this.usefulLife;
        }
        if (this.usefulLife == null) {
            this.remainingLife = this.ratedLife;
        }
        if (this.ratedLife == null) {
            this.remainingLife = 0;
        }
        setWarnStatus();
    }

    public void setWarnLife(Integer warnLife) {
        this.warnLife = warnLife;
        setWarnStatus();
    }

    /**
     * 设置已使用寿命
     */
    public void setUsefulLife(Integer usefulLife) {
        this.usefulLife = usefulLife;
        setRemainingLife();
    }

    private void setWarnStatus() {
        if (this.warnLife != null && this.remainingLife != null &&
                this.warnLife >= this.remainingLife) {
            this.warnStatus = 1;
            this.warnTime = new Date();
        } else {
            this.warnStatus = 0;
            this.warnTime = null;
        }
    }


    /**
     * 下机时间
     */
    private Date downTime;

    public Date getDownTime() {
        if (this.status == EnumValuesAccy.AccyUseStatus.退库中.getKey()) {
            return downTime;
        }
        return null;
    }

    /**
     * 预警时间
     */
    private Date warnTime;

    /**
     * 创建/修改人
     */
    private String userCreate;

    /**
     * 创建/修改时间
     */
    private Date gmtCreate;


    public Accessory() {
    }

    public Accessory(Long id) {
        this.id = id;
    }
}
