package org.dromara.system.domain.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import org.dromara.system.domain.SysFoodIngredient;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;


/**
 * 食材管理视图对象 sys_food_ingredient
 *
 * @author Lion Li
 * @date 2025-06-30
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = SysFoodIngredient.class)
public class SysFoodIngredientVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ExcelProperty(value = "主键ID")
    private Long foodIngredientId;

    /**
     * 食材分类ID
     */
    @ExcelProperty(value = "食材分类ID")
    private String foodCategoryId;

    private String bigCategory;

    private String subCategory;

    /**
     * 食材名称
     */
    @ExcelProperty(value = "食材名称")
    private String name;

    /**
     * 食材编码
     */
    @ExcelProperty(value = "食材编码")
    private String code;

    /**
     * 单位
     */
    @ExcelProperty(value = "单位")
    private String unit;

    private String unitName;

    /**
     * 入货价格（元）
     */
    @ExcelProperty(value = "入货价格", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "元=")
    private BigDecimal purchasePrice;

    /**
     * 食材可食比例构成（%）
     */
    @ExcelProperty(value = "食材可食比例构成", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "%=")
    private BigDecimal edibleRatio;

    /**
     * 保质期（天）
     */
    @ExcelProperty(value = "保质期", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "天=")
    private Long shelfLife;

    /**
     * 库存预警值（g）
     */
    @ExcelProperty(value = "库存预警值", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "g=")
    private BigDecimal stockWarning;

    /**
     * 保质期预警（天）
     */
    @ExcelProperty(value = "保质期预警", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "天=")
    private Long expiryWarning;

    /**
     * 食材描述
     */
    @ExcelProperty(value = "食材描述")
    private String description;

    /**
     * 热量（kcal）
     */
    @ExcelProperty(value = "热量", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "k=cal")
    private BigDecimal calories;

    /**
     * 蛋白质（g）
     */
    @ExcelProperty(value = "蛋白质", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "g=")
    private BigDecimal protein;

    /**
     * 脂肪（g）
     */
    @ExcelProperty(value = "脂肪", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "g=")
    private BigDecimal fat;

    /**
     * 碳水化合物（g）
     */
    @ExcelProperty(value = "碳水化合物", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "g=")
    private BigDecimal carbohydrate;

    /**
     * 水分（ml）
     */
    @ExcelProperty(value = "水分", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=l")
    private BigDecimal water;

    /**
     * 维生素A（μg）
     */
    @ExcelProperty(value = "维生素A", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "μ=g")
    private BigDecimal vitaminA;

    /**
     * 维生素B2（mg）
     */
    @ExcelProperty(value = "维生素B2", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal vitaminB2;

    /**
     * 维生素C（mg）
     */
    @ExcelProperty(value = "维生素C", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal vitaminC;

    /**
     * 钠（mg）
     */
    @ExcelProperty(value = "钠", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal sodium;

    /**
     * 铁（mg）
     */
    @ExcelProperty(value = "铁", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal iron;

    /**
     * 磷（mg）
     */
    @ExcelProperty(value = "磷", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal phosphorus;

    /**
     * 膳食纤维（g）
     */
    @ExcelProperty(value = "膳食纤维", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "g=")
    private BigDecimal dietaryFiber;

    /**
     * 维生素B1（mg）
     */
    @ExcelProperty(value = "维生素B1", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal vitaminB1;

    /**
     * 烟酸（mg）
     */
    @ExcelProperty(value = "烟酸", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal niacin;

    /**
     * 维生素E（mg）
     */
    @ExcelProperty(value = "维生素E", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal vitaminE;

    /**
     * 钙（mg）
     */
    @ExcelProperty(value = "钙", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal calcium;

    /**
     * 钾（mg）
     */
    @ExcelProperty(value = "钾", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "m=g")
    private BigDecimal potassium;

    /**
     * 胆固醇（g）
     */
    @ExcelProperty(value = "胆固醇", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "g=")
    private BigDecimal cholesterol;

    /**
     * 状态（0正常 1停用）
     */
    @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
    private String status;


    private BigDecimal quantity;
    /**
     * 备注
     */
    private String remark;

    private BigDecimal caloriesForInput;
}
