package com.wms.utils.excel.vo;

import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.wms.entity.table.Goods;
import lombok.Data;
import lombok.EqualsAndHashCode;

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

/**
 * 物料excel
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class GoodsExcelVo extends KanbanExcelVo {
    /**
     * 物料编号
     */
    @ExcelProperty("料号")
    private String goodsId;
    /**
     * 物料名称/描述
     */
    @ExcelProperty("描述")
    private String goodsName;
    /**
     * 单位
     */
    @ExcelProperty("单位")
    private String goodsUnit = "PC";
    /**
     * 物料分类
     */
    @ExcelProperty("物料分类")
    private String goodsType;
    /**
     * 供应商分类
     */
    @ExcelProperty("供应商分类")
    private String providerType;
    /**
     * 重量
     */
    @ExcelProperty("重量")
    private BigDecimal weight;
    /**
     * 重量单位
     */
    @ExcelProperty("重量单位")
    private String weightUnit;
    /**
     * 每盒数量
     */
    @ExcelProperty("每盒数量")
    private BigDecimal quantityPerBox;
    /**
     * 拆包方式
     */
    @ExcelProperty("拆包方式")
    private String unpackingType;
    /**
     * 料箱类型
     */
    @ExcelProperty("料箱类型")
    private String vehicleType;
    /**
     * 料箱类型描述
     */
    @ExcelProperty("来料包装")
    private String vehicleTypeDescription;
    /**
     * 料箱类型
     */
    @ExcelProperty("料箱类型2")
    private String goodsInVehicleType;
    /**
     * 补料方式
     * PULL：有看板
     * PUSH：无看板
     */
    @ExcelProperty("补料方式")
    private String feedingType;
    /**
     * 每个看板包含物料数量
     */
    @ExcelProperty("看板QTY")
    private BigDecimal quantityPerKanban;
    /**
     * 看板的数量
     */
    @ExcelProperty("Number of Kanban")
    private BigDecimal kanbanNum;
    /**
     * 补货点
     */
    @ExcelProperty("补货点")
    private BigDecimal feedingValue;
    /**
     * 备注1
     */
    @ExcelProperty("备注1")
    private String remark1;
    /**
     * 备注2
     */
    @ExcelProperty("备注2")
    private String remark2;
    /**
     * 备注3
     */
    @ExcelProperty("备注3")
    private String remark3;
    /**
     * 数据来源
     */
    @ExcelProperty("数据来源")
    private String dataSource;
    /**
     * 最后更新日期
     */
    @ExcelProperty("最近更新时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastUpdateTime;
    /**
     * 最近更新用户
     */
    @ExcelProperty("最近更新用户")
    private String lastUpdateUser;
    /**
     * 热度
     */
    @ExcelProperty("热度")
    private String heat;
    /**
     * 卸货点
     */
    @ExcelProperty("卸货点")
    private String releasePoint;

    /**
     * 从数据库实体转换为excel对象
     * @param goodsPo 数据库实体
     * @return excel对象
     */
    public static GoodsExcelVo of(Goods goodsPo) {
        GoodsExcelVo tempVo = new GoodsExcelVo();
        tempVo = BeanUtil.copyProperties(goodsPo, GoodsExcelVo.class);
        tempVo.setKanban(goodsPo.getKanbanList());
        return tempVo;
    }
}
