package com.ruoyi.system.utils;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

/**
 * @author xyx
 * @date 2024/4/18
 */
public class AuxiliaryAccRuleHandler {

    private static final Map<String, Function<String, String>> AUXILIARY_ACCOUNTING_RULES = new HashMap<>();

    static {
        // 唐山矿  param 无论传的是什么都会返回 “非填充开采”
        AUXILIARY_ACCOUNTING_RULES.put("010101", param -> "非充填开采");
        // 范矿
        AUXILIARY_ACCOUNTING_RULES.put("011701", param -> "非充填开采");
        // 钱矿
        AUXILIARY_ACCOUNTING_RULES.put("010105", param -> "非充填开采");
        // 宏丰
        AUXILIARY_ACCOUNTING_RULES.put("011502", param -> "非充填开采");
        // 林西
        AUXILIARY_ACCOUNTING_RULES.put("011704", param -> "非充填开采");
        // 单侯
        AUXILIARY_ACCOUNTING_RULES.put("011204", param -> "非充填开采");
        // 吕矿
        AUXILIARY_ACCOUNTING_RULES.put("011702", param -> {
            if ("基本生产".equals(param) || "制造费用".equals(param)) {
                return "非充填开采";
            } else if ("管理费用".equals(param) || "销售费用".equals(param)) {
                return null;
            }
            return null;
        });
        // 东欢陀
        AUXILIARY_ACCOUNTING_RULES.put("010102", param -> {
            if ("基本生产".equals(param) || "制造费用".equals(param)){
                return "非充填开采";
            } else if ("管理费用".equals(param)) {
                return "部门_机关";
            } else if ("其他业务成本_运输业务".equals(param)){
                return "其他业务支出费用要素_通用材料/油类";
            }
            return null;
        });
    }

    /**
     *
     * @param sskId 矿id
     * @param param 费用来源 [ 基本生产, 制造费用, 管理费用, 销售费用, 其他业务成本_运输业务 ]
     * @return 自定义档案 name: ZH_CN
     */
    public static String handleAuxiliaryAccounting(String sskId, String param) {
        return AUXILIARY_ACCOUNTING_RULES.getOrDefault(sskId, p -> null).apply(param);
    }
}
