package com.wms.utils.excel.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.wms.entity.app.dto.extend.KanbanEntity;
import com.wms.utils.StringUtils;
import lombok.Data;

import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 看板ExcelVO
 */
@Data
public class KanbanGoodsExcelVo {
    /**
     * 料号
     */
    @ExcelProperty("料号")
    private String goodsId;
    /**
     * 热度
     */
    @ExcelProperty("热度")
    private String heat;
    /**
     * 卸货点
     */
    @ExcelProperty("卸货点")
    private String releasePoint;
    /**
     * 看板QTY
     */
    @ExcelProperty("看板QTY")
    private BigDecimal kanbanQty;
    /**
     * Number of Kanban
     */
    @ExcelProperty("Number of Kanban")
    private BigDecimal numberOfKanban;
    /**
     * 补货点
     */
    @ExcelProperty("补货点")
    private BigDecimal feedingPoint;
    /**
     * KANBAN#1
     */
    @ExcelProperty("KANBAN#1")
    private String KANBAN1;
    /**
     * KANBAN#2
     */
    @ExcelProperty("KANBAN#2")
    private String KANBAN2;
    /**
     * KANBAN#3
     */
    @ExcelProperty("KANBAN#3")
    private String KANBAN3;
    /**
     * KANBAN#4
     */
    @ExcelProperty("KANBAN#4")
    private String KANBAN4;
    /**
     * KANBAN#5
     */
    @ExcelProperty("KANBAN#5")
    private String KANBAN5;
    /**
     * KANBAN#6
     */
    @ExcelProperty("KANBAN#6")
    private String KANBAN6;
    /**
     * KANBAN#7
     */
    @ExcelProperty("KANBAN#7")
    private String KANBAN7;
    /**
     * KANBAN#8
     */
    @ExcelProperty("KANBAN#8")
    private String KANBAN8;
    /**
     * KANBAN#9
     */
    @ExcelProperty("KANBAN#9")
    private String KANBAN9;
    /**
     * KANBAN#10
     */
    @ExcelProperty("KANBAN#10")
    private String KANBAN10;
    /**
     * KANBAN#11
     */
    @ExcelProperty("KANBAN#11")
    private String KANBAN11;
    /**
     * KANBAN#12
     */
    @ExcelProperty("KANBAN#12")
    private String KANBAN12;
    /**
     * KANBAN#13
     */
    @ExcelProperty("KANBAN#13")
    private String KANBAN13;
    /**
     * KANBAN#14
     */
    @ExcelProperty("KANBAN#14")
    private String KANBAN14;
    /**
     * KANBAN#15
     */
    @ExcelProperty("KANBAN#15")
    private String KANBAN15;
    /**
     * KANBAN#16
     */
    @ExcelProperty("KANBAN#16")
    private String KANBAN16;
    /**
     *  KANBAN#17
     */
    @ExcelProperty("KANBAN#17")
    private String KANBAN17;
    /**
     * KANBAN#18
     */
    @ExcelProperty("KANBAN#18")
    private String KANBAN18;
    /**
     * KANBAN#19
     */
    @ExcelProperty("KANBAN#19")
    private String KANBAN19;
    /**
     * KANBAN#20
     */
    @ExcelProperty("KANBAN#20")
    private String KANBAN20;
    /**
     * KANBAN#21
     */
    @ExcelProperty("KANBAN#21")
    private String KANBAN21;
    /**
     * KANBAN#22
     */
    @ExcelProperty("KANBAN#22")
    private String KANBAN22;
    /**
     * KANBAN#23
     */
    @ExcelProperty("KANBAN#23")
    private String KANBAN23;
    /**
     * KANBAN#24
     */
    @ExcelProperty("KANBAN#24")
    private String KANBAN24;
    /**
     * KANBAN#25
     */
    @ExcelProperty("KANBAN#25")
    private String KANBAN25;
    /**
     * KANBAN#26
     */
    @ExcelProperty("KANBAN#26")
    private String KANBAN26;
    /**
     * KANBAN#27
     */
    @ExcelProperty("KANBAN#27")
    private String KANBAN27;
    /**
     * KANBAN#28
     */
    @ExcelProperty("KANBAN#28")
    private String KANBAN28;
    /**
     * KANBAN#29
     */
    @ExcelProperty("KANBAN#29")
    private String KANBAN29;
    /**
     * KANBAN#30
     */
    @ExcelProperty("KANBAN#30")
    private String KANBAN30;
    /**
     * KANBAN#31
     */
    @ExcelProperty("KANBAN#31")
    private String KANBAN31;
    /**
     * KANBAN#32
     */
    @ExcelProperty("KANBAN#32")
    private String KANBAN32;
    /**
     * KANBAN#33
     */
    @ExcelProperty("KANBAN#33")
    private String KANBAN33;
    /**
     * KANBAN#34
     */
    @ExcelProperty("KANBAN#34")
    private String KANBAN34;
    /**
     * KANBAN#35
     */
    @ExcelProperty("KANBAN#35")
    private String KANBAN35;
    /**
     * KANBAN#36
     */
    @ExcelProperty("KANBAN#36")
    private String KANBAN36;
    /**
     * KANBAN#37
     */
    @ExcelProperty("KANBAN#37")
    private String KANBAN37;
    /**
     * KANBAN#38
     */
    @ExcelProperty("KANBAN#38")
    private String KANBAN38;
    /**
     * KANBAN#39
     */
    @ExcelProperty("KANBAN#39")
    private String KANBAN39;
    /**
     * KANBAN#40
     */
    @ExcelProperty("KANBAN#40")
    private String KANBAN40;
    /**
     * KANBAN#41
     */
    @ExcelProperty("KANBAN#41")
    private String KANBAN41;
    /**
     * KANBAN#42
     */
    @ExcelProperty("KANBAN#42")
    private String KANBAN42;
    /**
     * KANBAN#43
     */
    @ExcelProperty("KANBAN#43")
    private String KANBAN43;
    /**
     * KANBAN#44
     */
    @ExcelProperty("KANBAN#44")
    private String KANBAN44;
    /**
     * KANBAN#45
     */
    @ExcelProperty("KANBAN#45")
    private String KANBAN45;
    /**
     * KANBAN#46
     */
    @ExcelProperty("KANBAN#46")
    private String KANBAN46;
    /**
     * KANBAN#47
     */
    @ExcelProperty("KANBAN#47")
    private String KANBAN47;
    /**
     * KANBAN#48
     */
    @ExcelProperty("KANBAN#48")
    private String KANBAN48;
    /**
     * KANBAN#49
     */
    @ExcelProperty("KANBAN#49")
    private String KANBAN49;
    /**
     * KANBAN#50
     */
    @ExcelProperty("KANBAN#50")
    private String KANBAN50;

    /**
     * 设定看板
     * @param kanbanList 看板列表
     */
    public void setKanban(List<KanbanEntity> kanbanList) {
        for (Field field : this.getClass().getDeclaredFields()) {
            if (field.getName().startsWith("KANBAN")) {
                int sortNum = -1;
                try {
                    // 获取id排序
                    sortNum = Integer.parseInt(field.getName().split("KANBAN")[1]);
                } catch (Exception e) {
                    continue;
                }
                if (sortNum != -1) {
                    try {
                        if (kanbanList.size() >= sortNum) {
                            field.setAccessible(true);
                            field.set(this, kanbanList.get(sortNum - 1).getKanbanId());
                        }
                    } catch (IllegalAccessException e) {
                        // 捕捉异常
                        System.out.println("设置看板发生异常：" + e.getMessage());
                    }
                }
            }
        }
    }

    /**
     * 设定看板
     */
    public List<KanbanEntity> convertToKanbanList() {
        List<KanbanEntity> kanbanList = new ArrayList<>();
        for (Field field : this.getClass().getDeclaredFields()) {
            if (field.getName().startsWith("KANBAN")) {
                try {
                    field.setAccessible(true);
                    if (field.get(this) != null && StringUtils.isNotEmpty(String.valueOf(field.get(this)))) {
                        KanbanEntity kanbanEntity = new KanbanEntity();
                        kanbanEntity.setKanbanId(String.valueOf(field.get(this)));
                        kanbanList.add(kanbanEntity);
                    }
                } catch (IllegalAccessException e) {
                    // 捕捉异常
                    System.out.println("转化看板数据配置时发生异常：" + e.getMessage());
                }
            }
        }
        return kanbanList;
    }
}
