package com.ruoyi.asset.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 资产台账对象 ams_asset
 * 
 * @author Yangk
 * @date 2026-06-04
 */
public class AmsAsset extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 资产ID */
    private Long assetId;

    /** 资产编码 */
    @Excel(name = "资产编码")
    private String assetCode;

    /** 资产名称 */
    @Excel(name = "资产名称")
    private String assetName;

    /** 资产类别ID */
    @Excel(name = "资产类别ID", type = Excel.Type.IMPORT)
    private Long categoryId;

    /** 类别编码快照 */
    @Excel(name = "资产类别编码")
    private String categoryCode;

    /** 类别名称快照 */
    @Excel(name = "资产类别名称", type = Excel.Type.EXPORT)
    private String categoryName;

    /** 规格型号 */
    @Excel(name = "规格型号")
    private String specModel;

    /** 品牌 */
    @Excel(name = "品牌")
    private String brand;

    /** 当前所属仓库ID（由入库/调拨业务维护，不参与Excel导入导出） */
    private Long warehouseId;

    /** 当前仓库编码快照 */
    @Excel(name = "仓库编码", type = Excel.Type.EXPORT)
    private String warehouseCode;

    /** 当前仓库名称快照 */
    @Excel(name = "仓库名称", type = Excel.Type.EXPORT)
    private String warehouseName;

    /** 当前存放位置ID（由入库/调拨业务维护，不参与Excel导入导出） */
    private Long locationId;

    /** 当前位置编码快照 */
    @Excel(name = "位置编码", type = Excel.Type.EXPORT)
    private String locationCode;

    /** 当前位置名称快照 */
    @Excel(name = "位置名称", type = Excel.Type.EXPORT)
    private String locationName;

    /** 使用部门ID（由领用/归还业务维护，不参与Excel导入导出） */
    private Long useDeptId;

    /** 使用部门名称快照 */
    @Excel(name = "使用部门", type = Excel.Type.EXPORT)
    private String useDeptName;

    /** 使用人ID（由领用/归还业务维护，不参与Excel导入导出） */
    private Long useUserId;

    /** 使用人名称快照 */
    @Excel(name = "使用人", type = Excel.Type.EXPORT)
    private String useUserName;

    /** 保管人ID */
    @Excel(name = "保管人ID", type = Excel.Type.IMPORT)
    private Long custodianId;

    /** 保管人名称快照 */
    @Excel(name = "保管人", type = Excel.Type.EXPORT)
    private String custodianName;

    /** 购置日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "购置日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date purchaseDate;

    /** 资产原值 */
    @Excel(name = "资产原值")
    private BigDecimal originalValue;

    /** 使用寿命，单位月 */
    @Excel(name = "使用寿命，单位月")
    private Long useLife;

    /** 维保周期，单位月 */
    @Excel(name = "维保周期，单位月")
    private Long maintenanceCycle;

    /** 上次维保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "上次维保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastMaintenanceDate;

    /** 下次维保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "下次维保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date nextMaintenanceDate;

    /** 当前资产状态（仅导出展示，导入时统一设为待入库，状态变更由流转服务驱动） */
    @Excel(name = "资产状态", dictType = "ams_asset_status", type = Excel.Type.EXPORT)
    private String assetStatus;

    /** 当前绑定标签ID */
    private Long tagId;

    /** 当前标签编码 */
    @Excel(name = "当前标签编码", type = Excel.Type.EXPORT)
    private String tagCode;

    /** 当前绑定EPC */
    @Excel(name = "当前绑定EPC", type = Excel.Type.EXPORT)
    private String epcCode;

    /** 删除标志：0存在，1删除 */
    private String delFlag;

    public void setAssetId(Long assetId) 
    {
        this.assetId = assetId;
    }

    public Long getAssetId() 
    {
        return assetId;
    }

    public void setAssetCode(String assetCode) 
    {
        this.assetCode = assetCode;
    }

    public String getAssetCode() 
    {
        return assetCode;
    }

    public void setAssetName(String assetName) 
    {
        this.assetName = assetName;
    }

    public String getAssetName() 
    {
        return assetName;
    }

    public void setCategoryId(Long categoryId) 
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId() 
    {
        return categoryId;
    }

    public void setCategoryCode(String categoryCode) 
    {
        this.categoryCode = categoryCode;
    }

    public String getCategoryCode() 
    {
        return categoryCode;
    }

    public void setCategoryName(String categoryName) 
    {
        this.categoryName = categoryName;
    }

    public String getCategoryName() 
    {
        return categoryName;
    }

    public void setSpecModel(String specModel) 
    {
        this.specModel = specModel;
    }

    public String getSpecModel() 
    {
        return specModel;
    }

    public void setBrand(String brand) 
    {
        this.brand = brand;
    }

    public String getBrand() 
    {
        return brand;
    }

    public void setWarehouseId(Long warehouseId) 
    {
        this.warehouseId = warehouseId;
    }

    public Long getWarehouseId() 
    {
        return warehouseId;
    }

    public void setWarehouseCode(String warehouseCode) 
    {
        this.warehouseCode = warehouseCode;
    }

    public String getWarehouseCode() 
    {
        return warehouseCode;
    }

    public void setWarehouseName(String warehouseName) 
    {
        this.warehouseName = warehouseName;
    }

    public String getWarehouseName() 
    {
        return warehouseName;
    }

    public void setLocationId(Long locationId) 
    {
        this.locationId = locationId;
    }

    public Long getLocationId() 
    {
        return locationId;
    }

    public void setLocationCode(String locationCode) 
    {
        this.locationCode = locationCode;
    }

    public String getLocationCode() 
    {
        return locationCode;
    }

    public void setLocationName(String locationName) 
    {
        this.locationName = locationName;
    }

    public String getLocationName() 
    {
        return locationName;
    }

    public void setUseDeptId(Long useDeptId) 
    {
        this.useDeptId = useDeptId;
    }

    public Long getUseDeptId() 
    {
        return useDeptId;
    }

    public void setUseDeptName(String useDeptName) 
    {
        this.useDeptName = useDeptName;
    }

    public String getUseDeptName() 
    {
        return useDeptName;
    }

    public void setUseUserId(Long useUserId) 
    {
        this.useUserId = useUserId;
    }

    public Long getUseUserId() 
    {
        return useUserId;
    }

    public void setUseUserName(String useUserName) 
    {
        this.useUserName = useUserName;
    }

    public String getUseUserName() 
    {
        return useUserName;
    }

    public void setCustodianId(Long custodianId) 
    {
        this.custodianId = custodianId;
    }

    public Long getCustodianId() 
    {
        return custodianId;
    }

    public void setCustodianName(String custodianName) 
    {
        this.custodianName = custodianName;
    }

    public String getCustodianName() 
    {
        return custodianName;
    }

    public void setPurchaseDate(Date purchaseDate) 
    {
        this.purchaseDate = purchaseDate;
    }

    public Date getPurchaseDate() 
    {
        return purchaseDate;
    }

    public void setOriginalValue(BigDecimal originalValue) 
    {
        this.originalValue = originalValue;
    }

    public BigDecimal getOriginalValue() 
    {
        return originalValue;
    }

    public void setUseLife(Long useLife) 
    {
        this.useLife = useLife;
    }

    public Long getUseLife() 
    {
        return useLife;
    }

    public void setMaintenanceCycle(Long maintenanceCycle) 
    {
        this.maintenanceCycle = maintenanceCycle;
    }

    public Long getMaintenanceCycle() 
    {
        return maintenanceCycle;
    }

    public void setLastMaintenanceDate(Date lastMaintenanceDate) 
    {
        this.lastMaintenanceDate = lastMaintenanceDate;
    }

    public Date getLastMaintenanceDate() 
    {
        return lastMaintenanceDate;
    }

    public void setNextMaintenanceDate(Date nextMaintenanceDate) 
    {
        this.nextMaintenanceDate = nextMaintenanceDate;
    }

    public Date getNextMaintenanceDate() 
    {
        return nextMaintenanceDate;
    }

    public void setAssetStatus(String assetStatus) 
    {
        this.assetStatus = assetStatus;
    }

    public String getAssetStatus() 
    {
        return assetStatus;
    }

    public void setTagId(Long tagId) 
    {
        this.tagId = tagId;
    }

    public Long getTagId() 
    {
        return tagId;
    }

    public void setTagCode(String tagCode) 
    {
        this.tagCode = tagCode;
    }

    public String getTagCode() 
    {
        return tagCode;
    }

    public void setEpcCode(String epcCode) 
    {
        this.epcCode = epcCode;
    }

    public String getEpcCode() 
    {
        return epcCode;
    }

    public void setDelFlag(String delFlag) 
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag() 
    {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("assetId", getAssetId())
            .append("assetCode", getAssetCode())
            .append("assetName", getAssetName())
            .append("categoryId", getCategoryId())
            .append("categoryCode", getCategoryCode())
            .append("categoryName", getCategoryName())
            .append("specModel", getSpecModel())
            .append("brand", getBrand())
            .append("warehouseId", getWarehouseId())
            .append("warehouseCode", getWarehouseCode())
            .append("warehouseName", getWarehouseName())
            .append("locationId", getLocationId())
            .append("locationCode", getLocationCode())
            .append("locationName", getLocationName())
            .append("useDeptId", getUseDeptId())
            .append("useDeptName", getUseDeptName())
            .append("useUserId", getUseUserId())
            .append("useUserName", getUseUserName())
            .append("custodianId", getCustodianId())
            .append("custodianName", getCustodianName())
            .append("purchaseDate", getPurchaseDate())
            .append("originalValue", getOriginalValue())
            .append("useLife", getUseLife())
            .append("maintenanceCycle", getMaintenanceCycle())
            .append("lastMaintenanceDate", getLastMaintenanceDate())
            .append("nextMaintenanceDate", getNextMaintenanceDate())
            .append("assetStatus", getAssetStatus())
            .append("tagId", getTagId())
            .append("tagCode", getTagCode())
            .append("epcCode", getEpcCode())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("delFlag", getDelFlag())
            .toString();
    }
}
