package com.bonus.material.toolProcess.domain;

import com.bonus.material.devchange.domain.MaDevFile;
import com.bonus.material.tool.domain.ToolEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ToolApplyDetailsEntity extends ToolEntity {

    /**
     * 主键（对应字段：id）
     * 数据库类型：int unsigned NOT NULL AUTO_INCREMENT
     */
    private Integer id;

    /**
     * 所属申请单号（对应字段：apply_id）
     * 关联 tool_apply 表的 id 字段
     * 数据库类型：bigint DEFAULT NULL
     */
    private Long applyId;
    /**
     * 装备编码
     */
    private String code;

    /**
     * 原始编码
     */
    private String identifyCode;

    /**
     * 生产厂家（对应字段：supplier_id）
     * 注：字段名注释为“生产厂家”，数据库字段类型为 int，推测是厂家ID（非厂家名称）
     * 数据库类型：int DEFAULT NULL
     */
    private Integer supplierId;

    /**
     * 申请数量（对应字段：apply_num）
     * 数据库类型：decimal(10,2) DEFAULT NULL
     * 用 BigDecimal 存储高精度小数，避免浮点运算误差
     */
    private BigDecimal applyNum;

    /**
     * 资产原值（对应字段：tool_price）
     * 数据库类型：decimal(10,2) DEFAULT NULL
     */
    private BigDecimal toolPrice;

    private BigDecimal originCost;
    /**
     * 出厂日期（对应字段：production_date）
     * 数据库类型：datetime DEFAULT NULL
     * 用 Java 8 新时间类型 LocalDateTime（推荐，替代 Date）
     * 若项目未兼容 Java 8，可改为 java.util.Date，需配合时间序列化配置
     */
    private LocalDate productionDate;

    /**
     * 状态（对应字段：status）
     * 枚举说明：1-待审核，2-通过，3-驳回
     * 数据库类型：char(1) DEFAULT '1'
     * 用 String 存储 char 类型，避免类型转换问题
     */
    private String status;

    private String supplierName;


    /**
     * 合格证
     * 说明：装备合格证的URL列表，存储合格证扫描件或照片
     */
    private List<MaDevFile> certificates;

    /**
     * 定期检验报告
     * 说明：装备定期检验报告的URL列表
     */
    private List<MaDevFile> inspectionReports;

    /**
     * 采购发票
     * 说明：装备采购发票的URL列表，存储发票扫描件或照片
     */
    private List<MaDevFile> purchaseInvoices;

    private String unitName;

    private Long toolId;


}
