package com.zzsmart.qomo.kn.cost.manage.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 物料bom
 * </p>
 *
 * @author
 * @since 2024-06-19
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("cost_material_bom")
@ApiModel(value = "cost_material_bom对象", description = "cost_material_bom")
public class CostMaterialBom implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @ApiModelProperty(value = "id")
    @TableId(value = "id", type = IdType.AUTO)
    private String id;

    /**
     * 物料编码
     */
    @ApiModelProperty(value = "物料编码")
    @TableField("material_code")
    private String materialCode;

    /**
     * 物料名称
     */
    @ApiModelProperty(value = "物料名称")
    @TableField("material_name")
    private String materialName;

    /**
     * 父级物料编码
     */
    @ApiModelProperty(value = "父级物料编码")
    @TableField("parent_material_code")
    private String parentMaterialCode;

    /**
     * 级别
     */
    @ApiModelProperty(value = "级别")
    @TableField("level")
    private String level;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    @TableField("sort")
    private Integer sort;

    /**
     * 计量单位
     */
    @ApiModelProperty(value = "计量单位")
    @TableField("unit")
    private String unit;

    /**
     * 数量
     */
    @ApiModelProperty(value = "id")
    @TableField("数量")
    private Integer number;

    /**
     * 人工工时（分钟）
     */
    @ApiModelProperty(value = "人工工时（分钟）")
    @TableField("labor_hours")
    private BigDecimal laborHours;

    /**
     * 设备工时
     */
    @ApiModelProperty(value = "设备工时")
    @TableField("device_hours")
    private BigDecimal deviceHours;

    /**
     * 借用物料编码
     */
    @ApiModelProperty(value = "借用物料编码")
    @TableField("borrow_material_code")
    private String borrowMaterialCode;

    /**
     * 参考物料编码
     */
    @ApiModelProperty(value = "参考物料编码")
    @TableField("refer_material_code")
    private String referMaterialCode;

    /**
     * 采购类型
     */

    @ApiModelProperty(value = "采购类型")
    @TableField("purchase_type")
    private String purchaseType;

    /**
     * 特殊采购类型
     */

    @ApiModelProperty(value = "特殊采购类型")
    @TableField("special_purchase_type")
    private String specialPurchaseType;

    /**
     * 说明
     */
    @ApiModelProperty(value = "说明")
    @TableField("explanation")
    private String explanation;

    /**
     * 单位数量
     */
    @ApiModelProperty(value = "单位数量")
    @TableField("quantity")
    private BigDecimal quantity;

    /**
     * 重量（g）
     */
    @ApiModelProperty(value = "重量（g）")
    @TableField("weight")
    private String weight;

    /**
     * 材料/牌号
     */
    @ApiModelProperty(value = "材料/牌号")
    @TableField("material_and_brand")
    private String materialAndBrand;

    /**
     * 表面处理，材料
     */
    @ApiModelProperty(value = "表面处理，材料")
    @TableField("surface_material")
    private String surfaceMaterial;

    /**
     * 厚度（mm）
     */
    @ApiModelProperty(value = "厚度（mm）")
    @TableField("surface_thickness")
    private String surfaceThickness;

    /**
     * 表面积（mm²）
     */
    @ApiModelProperty(value = "表面积（mm²）")
    @TableField("surface_area")
    private String surfaceArea;

    /**
     * 长（mm）
     */
    @ApiModelProperty(value = "长（mm）")
    @TableField("length")
    private String length;

    /**
     * 宽（mm）
     */
    @ApiModelProperty(value = "宽（mm）")
    @TableField("width")
    private String width;

    /**
     * 高（mm）
     */
    @ApiModelProperty(value = "高（mm）")
    @TableField("height")
    private String height;

    /**
     * 图示/图档/文档 文件ID
     */
    @ApiModelProperty(value = "图示/图档/文档 文件ID")
    @TableField("figure_file_id")
    private Long figureFileId;

    /**
     * 是否新模具（0否 1是）
     */
    @ApiModelProperty(value = "是否新模具（0否 1是）")
    @TableField("new_tooling")
    private Boolean newTooling;

    /**
     * 成型方式（枚举）
     */
    @ApiModelProperty(value = "成型方式（枚举）")
    @TableField("shaping_method")
    private String shapingMethod;

    /**
     * 作业内容
     */
    @ApiModelProperty(value = "作业内容")
    @TableField("work_content")
    private String workContent;

    /**
     * 加工地点
     */
    @ApiModelProperty(value = "加工地点")
    @TableField("process_location")
    private String processLocation;

    /**
     * 成本中心
     */
    @ApiModelProperty(value = "成本中心")
    @TableField("cost_center")
    private String costCenter;

    /**
     * 单价（未税）
     */
    @ApiModelProperty(value = "单价（未税）")
    @TableField("unit_price")
    private BigDecimal unitPrice;

    /**
     * 总价（未税）
     */
    @ApiModelProperty(value = "总价（未税）")
    @TableField("total_price")
    private BigDecimal totalPrice;

    /**
     * 模具费（未税）
     */
    @ApiModelProperty(value = "模具费（未税）")
    @TableField("mould_price")
    private BigDecimal mouldPrice;

    /**
     * 创建人
     */
    @TableField("create_by")
    private String createBy;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 修改人
     */
    @TableField("update_by")
    private String updateBy;

    /**
     * 修改时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 备注（特殊技术信息）
     */
    @ApiModelProperty(value = "备注（特殊技术信息）")
    @TableField("remark")
    private String remark;


    public static final String ID = "id";

    public static final String MATERIAL_CODE = "material_code";

    public static final String MATERIAL_NAME = "material_name";

    public static final String PARENT_MATERIAL_CODE = "parent_material_code";

    public static final String LEVEL = "level";

    public static final String SORT = "sort";

    public static final String UNIT = "unit";

    public static final String NUMBER = "number";

    public static final String LABOR_HOURS = "labor_hours";

    public static final String DEVICE_HOURS = "device_hours";

    public static final String BORROW_MATERIAL_CODE = "borrow_material_code";

    public static final String REFER_MATERIAL_CODE = "refer_material_code";

    public static final String PURCHASE_TYPE = "purchase_type";

    public static final String SPECIAL_PURCHASE_TYPE = "special_purchase_type";

    public static final String EXPLANATION = "explanation";

    public static final String QUANTITY = "quantity";

    public static final String WEIGHT = "weight";

    public static final String MATERIAL_AND_BRAND = "material_and_brand";

    public static final String SURFACE_MATERIAL = "surface_material";

    public static final String SURFACE_THICKNESS = "surface_thickness";

    public static final String SURFACE_AREA = "surface_area";

    public static final String LENGTH = "length";

    public static final String WIDTH = "width";

    public static final String HEIGHT = "height";

    public static final String FIGURE_FILE_ID = "figure_file_id";

    public static final String NEW_TOOLING = "new_tooling";

    public static final String SHAPING_METHOD = "shaping_method";

    public static final String WORK_CONTENT = "work_content";

    public static final String PROCESS_LOCATION = "process_location";

    public static final String COST_CENTER = "cost_center";

    public static final String UNIT_PRICE = "unit_price";

    public static final String TOTAL_PRICE = "total_price";

    public static final String MOULD_PRICE = "mould_price";

    public static final String CREATE_BY = "create_by";

    public static final String CREATE_TIME = "create_time";

    public static final String UPDATE_BY = "update_by";

    public static final String UPDATE_TIME = "update_time";

    public static final String REMARK = "remark";

}
