package com.ema.admin.modules.assets.entity;

import com.ema.common.domain.base.BaseEntity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.sql.Date;
import java.time.LocalDateTime;


import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.EqualsAndHashCode;

/**
 *  资产状态历史表实体类。
 *
 * @author LIJIAN
 * @since 2026-05-13
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("资产状态历史表")
@Table("asset_status_history")
public class AssetStatusHistory implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @Id(keyType = KeyType.Generator, value = "snowFlakeId")
    @ApiModelProperty("主键")
    private String id;

    /**
     * 资产信息id
     */
    @ApiModelProperty("资产信息id")
    private String assetId;

    /**
     * 使用公司
     */
    @ApiModelProperty("使用公司")
    private String useCompany;

    /**
     * 使用部门
     */
    @ApiModelProperty("使用部门")
    private String useDept;

    /**
     * 使用人
     */
    @ApiModelProperty("使用人")
    private String useUser;

    /**
     * 使用状态 在库、正常使用、已转移、报废中、维修中等
     */
    @ApiModelProperty("使用状态 在库、正常使用、已转移、报废中、维修中等")
    private String useStatus;

    /**
     * 当前位置
     */
    @ApiModelProperty("当前位置")
    private String curLocation;

    /**
     * 生效开始日期
     */
    @ApiModelProperty("生效开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date startDate;

    /**
     * 生效结束日期(当前有效为4712-12-31)
     */
    @ApiModelProperty("生效结束日期(当前有效为4712-12-31)")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date endDate;

    /**
     * 操作人
     */
    @ApiModelProperty("操作人")
    private String operatorName;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDateTime operatorDate;

    /**
     * 协管员
     */
    @ApiModelProperty("协管员")
    private String assistantName;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String remark;

}
