package com.ruoyi.common.utils;


import com.fasterxml.jackson.databind.ObjectMapper;
import com.singularsys.jep.JepException;

import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 获取计算方法工具类
 */
public class ComputeUtils {


    public static TreeMap<String, Map<String, String>> getCompute(String compute) {
        if (compute == null) {
            return null;
        }
        try {
            ObjectMapper ObjectMapper = new ObjectMapper();
            return ObjectMapper.readValue(compute, TreeMap.class);

        } catch (Exception e) {

        }
        return null;
    }

    public static void main(String[] args) throws JepException {
//        String a = "x+y*z+r";
//        Jep jep = new Jep();
//
//        jep.parse(a);
//        jep.addVariable("x", 0.5);
//        jep.addVariable("y", 3);
//        jep.addVariable("z", 4);
//        jep.addVariable("a", 4);
//        jep.addVariable("s", 4);
//        System.out.println(jep.evaluate().toString());


        String str = "price*count/number+0.2+";

        // 构建正则表达式，匹配除了 "price"、"count" 和 "number" 之外的其他字符
        String regex = "(?!price|count|number|\\+|-|\\*|/|\\d)\\b\\w+\\b";

        // 创建 Pattern 对象
        Pattern pattern = Pattern.compile(regex);

        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(str);

        // 判断是否存在除了 "price"、"count" 和 "number" 之外的其他字符
        if (matcher.find()) {
            System.out.println("存在除了 \"price\"、\"count\" 和 \"number\" 之外的其他字符");
        } else {
            System.out.println("字符串中没有除了 \"price\"、\"count\" 和 \"number\" 之外的其他字符");
        }
    }
//    public static List<ProductVo> getTreePrice(TreeMap<Integer, String> treeMap, Integer count) {
//        List<ProductVo> productVos = new ArrayList<>();
//        ProductVo productVo = null;
//        for (Integer key : treeMap.keySet()) {
//            if (key < count || productVos.size() < ProductStatic.MAX_GET_PRICE) {
//                continue;
//            }
//            productVo.setPrice(new BigDecimal(treeMap.get(key))).setCount(key);
//            productVos.add(productVo);
//        }
//        return productVos;
//    }

}
