package com.kcim.common.util.excel.handler;

import cn.afterturn.easypoi.handler.inter.IExcelDictHandler;
import com.kcim.vo.DictDataVo;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @program: CostAccount
 * @description: 收费项目项目类别实现
 * @author: Wang.YS
 * @create: 2023-10-19 14:33
 **/

public class DrugTypeHandler implements IExcelDictHandler {


    public final List<DictDataVo> list ;

    public DrugTypeHandler(List<DictDataVo> dataVoList) {
        this.list = dataVoList;
    }
    /**
     * 返回字典所有值
     * key: dictKey
     * value: dictValue
     *
     * @param dict 字典Key
     * @return
     */
    @Override
    public List<Map> getList(String dict) {
        List<Map> dictList    = new ArrayList<>();
        if(!CollectionUtils.isEmpty(list)){
            for (DictDataVo dataVo : list) {
                Map<String, String> dictMap = new HashMap<>();
                dictMap.put("dictKey", dataVo.getCode());
                dictMap.put("dictValue", dataVo.getName());
                dictList.add(dictMap);
            }
        }
        return dictList;
    }

    /**
     * 从值翻译到名称 导出用
     *
     * @param dict  字典Key
     * @param obj   对象
     * @param name  属性名称
     * @param value 属性值
     * @return
     */
    @Override
    public String toName(String dict, Object obj, String name, Object value) {
        if ("drugType".equals(dict)) {
            if(!StringUtils.isEmpty(value)){
                String level = value.toString();
                Map<String, String> dictMap = list.stream().collect(Collectors.toMap(DictDataVo::getCode, DictDataVo::getName, (a, b) -> b));
                return dictMap.get(level);
            }

        }
        return null;
    }

    /**
     * 从名称翻译到值
     *
     * @param dict  字典Key
     * @param obj   对象
     * @param name  属性名称
     * @param value 属性值
     * @return
     */
    @Override
    public String toValue(String dict, Object obj, String name, Object value) {
        if ("drugType".equals(dict)) {
            if(!StringUtils.isEmpty(value)){
                if(!CollectionUtils.isEmpty(list)){
                    Map<String, String> dictMap = list.stream().collect(Collectors.toMap(DictDataVo::getName, DictDataVo::getCode, (a, b) -> b));
                    String level = value.toString();
                    return dictMap.get(level);
                }
            }
        }
        return null;
    }
}
