package com.bonus.material.tool.domain;

import com.bonus.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ToolEntity implements Serializable {

    private Long typeId;

    /**
     * 4级父节点名称
     */
    @Excel(name = "工具专业")
    private String fourthParentName;
    /**
     * 3级父节点名称
     */
    @Excel(name = "施工类型")
    private String greatGrandparentName;

    /**
     * 2级父节点名称
     */
    @Excel(name = "工具类型")
    private String grandparentTypeName;

    /**
     * 1级父节点名称
     */
    @Excel(name = "工具名称")
    private String parentTypeName;
    /**
     * 类型名称（非空）
     */
    @Excel(name = "规格型号")
    private String typeName;

    /**
     * 上级ID
     */
    private Long parentId;

    /**
     * 计量单位名称
     */
    private String unitName;

    /**
     * 管理方式(0编号 1计数)
     */
    private String manageType;

    /**
     * 层级
     */
    private String level;

    /**
     * 删除标志（0代表存在 2代表删除），默认值0
     */
    private String delFlag = "0";

    /**
     * 创建者，默认空字符串
     */
    private String createBy = "";

    /**
     * 创建时间
     * 注：数据库字段为 datetime，Java 8+ 推荐使用 LocalDateTime（兼容日期时间，无时区问题）
     */
    private LocalDateTime createTime;

    /**
     * 更新者，默认空字符串
     */
    private String updateBy = "";

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    private String fileList;


    // 子节点列表（非数据库字段，用于构建树形结构）
    private List<ToolEntity> children = new ArrayList<>();

    private List<Integer> typeIds;

    @ApiModelProperty(value = "租赁单价")
    private BigDecimal leasePrice;

    @ApiModelProperty(value = "关键字")
    private String keyWord;

    @ApiModelProperty(value = "单价")
    private BigDecimal originCost;
}
