JAVA动态表达式:反向解析表达式

06-17 1122阅读

接上面:

JAVA动态表达式:反向解析表达式
(图片来源网络,侵删)

JAVA动态表达式:Antlr4 G4 模板 + 读取字符串表达式结构树-CSDN博客

JAVA动态表达式:Antlr4 表达式树解析-CSDN博客 

JAVA动态表达式:Antlr4 G4模板-CSDN博客 

 上面的内容是实现了表达式转行成类。

如:@process.name == '2' and @node.name == '2024-01-05' and @node.name == '2024-01-05 12:12:12' and @realname == 2 and @price == 100

转成类

{"conditionList":[{"rightOperatorExpression":{"valueType":"string","id":"Constant_7yQB4sQ773","label":"字符串","type":1,"value":"2"},"compareOperation":1,"id":"5d0TGl78rU","describe":"","type":"single","leftOperatorExpression":{"valueType":1,"source":"流程","id":"ProcessContext_4gZvyeE561","label":"流程名称","type":4,"value":"name"}},{"formulaRelation":"and","id":"I7K143vL3k","type":"symbol"},{"rightOperatorExpression":{"valueType":"datetime","id":"Constant_aXe521q118","label":"日期时间","type":1,"value":"2024-01-05"},"compareOperation":1,"id":"7N123NP318","describe":"","type":"single","leftOperatorExpression":{"valueType":2,"source":"节点","id":"ProcessContext_7AfIuR5BX7","label":"节点名称","type":4,"value":"name"}},{"formulaRelation":"and","id":"3FN13dEWAF","type":"symbol"},{"rightOperatorExpression":{"valueType":"datetime","id":"Constant_10ENW911b2","label":"日期时间","type":1,"value":"2024-01-05 12:12:12"},"compareOperation":1,"id":"OJ642z63w7","describe":"","type":"single","leftOperatorExpression":{"valueType":2,"source":"节点","id":"ProcessContext_5sa4v49lK7","label":"节点名称","type":4,"value":"name"}},{"formulaRelation":"and","id":"S983Z7o17q","type":"symbol"},{"rightOperatorExpression":{"valueType":"double","id":"Constant_8Ue11K1vwC","label":"数字","type":1,"value":2.0},"compareOperation":1,"id":"Nd3MwT6825","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","source":"默认参数","id":"Parameter_0b3f5p6qMv","label":"OA账户真实姓名","type":6,"value":"realname"}},{"formulaRelation":"and","id":"47507m21jl","type":"symbol"},{"rightOperatorExpression":{"valueType":"double","id":"Constant_279ArEXgY8","label":"数字","type":1,"value":100.0},"compareOperation":1,"id":"XihU63r5i9","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","source":"表单","id":"Parameter_e30getb583","label":"表单参数","type":6,"value":"price"}}],"tierIndex":4,"name":"规则4","id":"rule_3mkmn0o4q4"}

这里介绍的是把上面的类再转成字符串表达式,如:

Import-Test001-010
{"conditionList":[{"rightOperatorExpression":{"valueType":"string","id":"Constant_tfknq6skkf","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"rt0idtwzxc","describe":"规则1","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_ytpk6vpt21","label":"字符串","type":1,"value":"1"}},{"rightOperatorExpression":{"valueType":2,"id":"ProcessContext_9a9f922685","label":"节点名称","type":4,"value":"name"},"compareOperation":2,"id":"1c917b7fbd","describe":"","type":"single","leftOperatorExpression":{"valueType":1,"id":"ProcessContext_9f15f170f4","label":"流程名称","type":4,"value":"name"}},{"rightOperatorExpression":{"valueType":"string","id":"Parameter_1d15beaf2e","label":"OA账户真实姓名","type":6,"value":"realname"},"compareOperation":4,"id":"1c78ac0229","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Parameter_aaa3536781","label":"表单参数","type":6,"value":"FormParam"}},{"rightOperatorExpression":{"valueType":"string","id":"Form_436e4932b1","label":"多选框","type":3,"value":"checkbox_27b105b7d7"},"compareOperation":6,"id":"9e99278b5b","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Form_3c616e1a7a","label":"输入框","type":3,"value":"input_ca42671408"}},{"rightOperatorExpression":{"valueType":"string","id":"Constant_7eb4ffbd1e","label":"字符串","type":1,"value":"2"},"compareOperation":3,"id":"128e5e7224","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_b436b913e9","label":"字符串","type":1,"value":"1"}},{"rightOperatorExpression":{"valueType":"double","id":"Constant_1a5e342a25","label":"数字","type":1,"value":32},"compareOperation":5,"id":"af575dc3d6","describe":"","type":"single","leftOperatorExpression":{"valueType":"double","id":"Constant_e69ead44b0","label":"数字","type":1,"value":3}},{"rightOperatorExpression":{"valueType":"string","id":"Constant_f510dd8ad5","label":"字符串","type":1,"value":"1"},"compareOperation":7,"id":"5f3f44ac38","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_a21cde8d7f","label":"字符串","type":1,"value":"323232"}},{"rightOperatorExpression":{"valueType":"string","id":"Constant_116069a7df","label":"字符串","type":1,"value":"3232"},"compareOperation":8,"id":"99cabf0634","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_fe1756702a","label":"字符串","type":1,"value":"3232"}},{"rightOperatorExpression":{"valueType":"datetime","id":"Constant_be6e43fdaf","label":"日期时间","type":1,"value":"2024-06-30 14:36:37"},"compareOperation":1,"id":"a4517f1711","describe":"","type":"single","leftOperatorExpression":{"valueType":"datetime","id":"Constant_c20a7953a1","label":"日期时间","type":1,"value":"2024-06-21 14:36:25"}}],"tierIndex":1,"name":"规则1","id":"rule_zomczf22w1"}
解析结果:'1' == '1' and @process.name != @node.name and @FormParam = @不支持表单参数.checkbox_27b105b7d7 and '1'  32 and '323232' contains '1' and '3232' notContains '3232' and '2024-06-21 14:36:25' == '2024-06-30 14:36:37'
{"conditionList":[{"rightOperatorExpression":{"valueType":"string","id":"Constant_dd6904b674","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"0e0ae66dcd","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_4b35fbbcce","label":"字符串","type":1,"value":"1"}},{"formulaRelation":"or","id":"14b12e2dd5","type":"symbol"},{"rightOperatorExpression":{"valueType":"string","id":"Constant_0a6c1388d1","label":"字符串","type":1,"value":"2"},"compareOperation":1,"id":"5e0dc56220","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_4fb7b3991e","label":"字符串","type":1,"value":"1"}},{"conditionList":[{"rightOperatorExpression":{"valueType":"string","id":"Constant_7cf203dc5f","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"76d750f0e9","describe":"","type":"single","leftOperatorExpression":{"valueType":"double","id":"Constant_d6f0a9860d","label":"数字","type":1,"value":1}},{"formulaRelation":"and","id":"2f0567eafd","type":"symbol"},{"rightOperatorExpression":{"valueType":"string","id":"Constant_f6de7246c4","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"096d7d2706","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_42c9425a94","label":"字符串","type":1,"value":"1"}}],"tierIndex":3,"id":"2e59e3ade9","type":"group"},{"rightOperatorExpression":{"valueType":"string","id":"Constant_29af1c4efa","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"0c720277e8","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_2b9a5a10e2","label":"字符串","type":1,"value":"1"}}],"tierIndex":2,"name":"规则2","id":"rule_ewqebdxezv"}
解析结果:'1' == '1' or '1' == '2' and (1 == '1' and '1' == '1') and '1' == '1'
{"conditionList":[{"conditionList":[{"conditionList":[{"rightOperatorExpression":{"valueType":"string","id":"Constant_dd2a8733ce","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"e646d24d32","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_9bbaab6ccb","label":"字符串","type":1,"value":"1"}},{"formulaRelation":"or","id":"c60167921a","type":"symbol"},{"rightOperatorExpression":{"valueType":"string","id":"Constant_7eca17e5ec","label":"字符串","type":1,"value":"2"},"compareOperation":1,"id":"d61118a259","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_f0d68f29d8","label":"字符串","type":1,"value":"2"}}],"tierIndex":3,"id":"4de5c56afc","type":"group"}],"tierIndex":2,"id":"4579c3410b","type":"group"},{"rightOperatorExpression":{"valueType":"string","id":"Constant_603046bd07","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"e16d2d2d99","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_e3a3152051","label":"字符串","type":1,"value":"1"}}],"tierIndex":1,"name":"3","id":"rule_c73dcea8b4"}
解析结果:(('1' == '1' or '2' == '2')) and '1' == '1'
Import-Test002-007
{"conditionList":[{"rightOperatorExpression":{"valueType":"double","id":"Constant_0Yh85884g8","label":"数字","type":1,"value":1.0},"compareOperation":1,"id":"11817kPoco","describe":"","type":"single","leftOperatorExpression":{"valueType":"double","id":"Constant_XEy3B9032t","label":"数字","type":1,"value":1.0}}],"tierIndex":1,"name":"规则1","id":"rule_jzswbcq7ku"}
解析结果:1==1
{"conditionList":[{"conditionList":[{"conditionList":[{"rightOperatorExpression":{"valueType":"double","id":"Constant_l6Fl1462t3","label":"数字","type":1,"value":1.0},"compareOperation":1,"id":"8cI873FO02","describe":"","type":"single","leftOperatorExpression":{"valueType":"double","id":"Constant_00sd1L7o17","label":"数字","type":1,"value":1.0}},{"formulaRelation":"and","id":"4d7rX3KO2K","type":"symbol"},{"conditionList":[{"rightOperatorExpression":{"valueType":"double","id":"Constant_X51iAXd4s7","label":"数字","type":1,"value":2.0},"compareOperation":1,"id":"uCX43oau4d","describe":"","type":"single","leftOperatorExpression":{"valueType":"double","id":"Constant_3GSA3R8840","label":"数字","type":1,"value":2.0}},{"formulaRelation":"and","id":"S9o3U8Kwg0","type":"symbol"},{"rightOperatorExpression":{"valueType":"double","id":"Constant_6a6221SIQq","label":"数字","type":1,"value":100.0},"compareOperation":5,"id":"8zxg92ghHE","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","source":"表单","id":"Parameter_OJ5Pj7s8S6","label":"表单参数","type":6,"value":"price"}}],"tierIndex":"4","id":"Tf3aMgi9x9","type":"group"}],"tierIndex":"3","id":"B75g1d6OXh","type":"group"},{"formulaRelation":"or","id":"83A53172ij","type":"symbol"},{"conditionList":[{"rightOperatorExpression":{"valueType":"double","id":"Constant_63932k4555","label":"数字","type":1,"value":2.0},"compareOperation":1,"id":"97C1M7688V","describe":"","type":"single","leftOperatorExpression":{"valueType":"double","id":"Constant_PsqH1n90E3","label":"数字","type":1,"value":2.0}},{"formulaRelation":"or","id":"3Bw3H12Xoj","type":"symbol"},{"rightOperatorExpression":{"valueType":"double","id":"Constant_x3875nezR3","label":"数字","type":1,"value":3.0},"compareOperation":1,"id":"12747R8AIy","describe":"","type":"single","leftOperatorExpression":{"valueType":"double","id":"Constant_27P8Lx0X1A","label":"数字","type":1,"value":3.0}}],"tierIndex":"3","id":"SGN5jbC569","type":"group"}],"tierIndex":"2","id":"9P71L9y8Sz","type":"group"},{"formulaRelation":"and","id":"O2PSGn3jso","type":"symbol"},{"rightOperatorExpression":{"valueType":"string","id":"Constant_X3hVTb54P1","label":"字符串","type":1,"value":"1"},"compareOperation":1,"id":"Qc835NR21i","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","id":"Constant_W0f9p28586","label":"字符串","type":1,"value":"啦啦啦"}}],"tierIndex":2,"name":"规则2","id":"rule_lsaqgcyqha"}
解析结果:((1 == 1 and (2 == 2 and @price > 100)) or (2 == 2 or 3 == 3)) and '啦啦啦' == '1'
{"conditionList":[{"rightOperatorExpression":{"valueType":"string","id":"Constant_7yQB4sQ773","label":"字符串","type":1,"value":"2"},"compareOperation":1,"id":"5d0TGl78rU","describe":"","type":"single","leftOperatorExpression":{"valueType":1,"source":"流程","id":"ProcessContext_4gZvyeE561","label":"流程名称","type":4,"value":"name"}},{"formulaRelation":"and","id":"I7K143vL3k","type":"symbol"},{"rightOperatorExpression":{"valueType":"datetime","id":"Constant_aXe521q118","label":"日期时间","type":1,"value":"2024-01-05"},"compareOperation":1,"id":"7N123NP318","describe":"","type":"single","leftOperatorExpression":{"valueType":2,"source":"节点","id":"ProcessContext_7AfIuR5BX7","label":"节点名称","type":4,"value":"name"}},{"formulaRelation":"and","id":"3FN13dEWAF","type":"symbol"},{"rightOperatorExpression":{"valueType":"datetime","id":"Constant_10ENW911b2","label":"日期时间","type":1,"value":"2024-01-05 12:12:12"},"compareOperation":1,"id":"OJ642z63w7","describe":"","type":"single","leftOperatorExpression":{"valueType":2,"source":"节点","id":"ProcessContext_5sa4v49lK7","label":"节点名称","type":4,"value":"name"}},{"formulaRelation":"and","id":"S983Z7o17q","type":"symbol"},{"rightOperatorExpression":{"valueType":"double","id":"Constant_8Ue11K1vwC","label":"数字","type":1,"value":2.0},"compareOperation":1,"id":"Nd3MwT6825","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","source":"默认参数","id":"Parameter_0b3f5p6qMv","label":"OA账户真实姓名","type":6,"value":"realname"}},{"formulaRelation":"and","id":"47507m21jl","type":"symbol"},{"rightOperatorExpression":{"valueType":"double","id":"Constant_279ArEXgY8","label":"数字","type":1,"value":100.0},"compareOperation":1,"id":"XihU63r5i9","describe":"","type":"single","leftOperatorExpression":{"valueType":"string","source":"表单","id":"Parameter_e30getb583","label":"表单参数","type":6,"value":"price"}}],"tierIndex":4,"name":"规则4","id":"rule_3mkmn0o4q4"}
解析结果:@process.name == '2' and @node.name == '2024-01-05' and @node.name == '2024-01-05 12:12:12' and @realname == 2 and @price == 100

实现代码

package com.java.core.web.antlr4.util;
import com.java.core.web.antlr4.pojo.Condition;
import com.java.core.web.antlr4.pojo.LeftOperatorExpression;
import com.java.core.web.antlr4.pojo.RightOperatorExpression;
import com.java.core.web.antlr4.pojo.SymbolOptions;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class JsonToFormula {
    public static void main(String[] args) {
        //String conditionJson = "{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_0Yh85884g8\",\"label\":\"数字\",\"type\":1,\"value\":1.0},\"compareOperation\":1,\"id\":\"11817kPoco\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_XEy3B9032t\",\"label\":\"数字\",\"type\":1,\"value\":1.0}}],\"tierIndex\":1,\"name\":\"规则1\",\"id\":\"rule_jzswbcq7ku\"}";
        //String conditionJson="{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_tfknq6skkf\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"rt0idtwzxc\",\"describe\":\"规则1\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_ytpk6vpt21\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}},{\"rightOperatorExpression\":{\"valueType\":2,\"id\":\"ProcessContext_9a9f922685\",\"label\":\"节点名称\",\"type\":4,\"value\":\"name\"},\"compareOperation\":2,\"id\":\"1c917b7fbd\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":1,\"id\":\"ProcessContext_9f15f170f4\",\"label\":\"流程名称\",\"type\":4,\"value\":\"name\"}},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Parameter_1d15beaf2e\",\"label\":\"OA账户真实姓名\",\"type\":6,\"value\":\"realname\"},\"compareOperation\":4,\"id\":\"1c78ac0229\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Parameter_aaa3536781\",\"label\":\"表单参数\",\"type\":6,\"value\":\"FormParam\"}},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Form_436e4932b1\",\"label\":\"多选框\",\"type\":3,\"value\":\"checkbox_27b105b7d7\"},\"compareOperation\":6,\"id\":\"9e99278b5b\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Form_3c616e1a7a\",\"label\":\"输入框\",\"type\":3,\"value\":\"input_ca42671408\"}},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_7eb4ffbd1e\",\"label\":\"字符串\",\"type\":1,\"value\":\"2\"},\"compareOperation\":3,\"id\":\"128e5e7224\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_b436b913e9\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}},{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_1a5e342a25\",\"label\":\"数字\",\"type\":1,\"value\":32},\"compareOperation\":5,\"id\":\"af575dc3d6\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_e69ead44b0\",\"label\":\"数字\",\"type\":1,\"value\":3}},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_f510dd8ad5\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":7,\"id\":\"5f3f44ac38\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_a21cde8d7f\",\"label\":\"字符串\",\"type\":1,\"value\":\"323232\"}},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_116069a7df\",\"label\":\"字符串\",\"type\":1,\"value\":\"3232\"},\"compareOperation\":8,\"id\":\"99cabf0634\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_fe1756702a\",\"label\":\"字符串\",\"type\":1,\"value\":\"3232\"}},{\"rightOperatorExpression\":{\"valueType\":\"datetime\",\"id\":\"Constant_be6e43fdaf\",\"label\":\"日期时间\",\"type\":1,\"value\":\"2024-06-30 14:36:37\"},\"compareOperation\":1,\"id\":\"a4517f1711\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"datetime\",\"id\":\"Constant_c20a7953a1\",\"label\":\"日期时间\",\"type\":1,\"value\":\"2024-06-21 14:36:25\"}}],\"tierIndex\":1,\"name\":\"规则1\",\"id\":\"rule_zomczf22w1\"}";
        //String conditionJson = "{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_dd6904b674\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"0e0ae66dcd\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_4b35fbbcce\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}},{\"formulaRelation\":\"or\",\"id\":\"14b12e2dd5\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_0a6c1388d1\",\"label\":\"字符串\",\"type\":1,\"value\":\"2\"},\"compareOperation\":1,\"id\":\"5e0dc56220\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_4fb7b3991e\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}},{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_7cf203dc5f\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"76d750f0e9\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_d6f0a9860d\",\"label\":\"数字\",\"type\":1,\"value\":1}},{\"formulaRelation\":\"and\",\"id\":\"2f0567eafd\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_f6de7246c4\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"096d7d2706\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_42c9425a94\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}}],\"tierIndex\":3,\"id\":\"2e59e3ade9\",\"type\":\"group\"},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_29af1c4efa\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"0c720277e8\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_2b9a5a10e2\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}}],\"tierIndex\":2,\"name\":\"规则2\",\"id\":\"rule_ewqebdxezv\"}";
        //String conditionJson="{\"conditionList\":[{\"conditionList\":[{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_dd2a8733ce\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"e646d24d32\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_9bbaab6ccb\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}},{\"formulaRelation\":\"or\",\"id\":\"c60167921a\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_7eca17e5ec\",\"label\":\"字符串\",\"type\":1,\"value\":\"2\"},\"compareOperation\":1,\"id\":\"d61118a259\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_f0d68f29d8\",\"label\":\"字符串\",\"type\":1,\"value\":\"2\"}}],\"tierIndex\":3,\"id\":\"4de5c56afc\",\"type\":\"group\"}],\"tierIndex\":2,\"id\":\"4579c3410b\",\"type\":\"group\"},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_603046bd07\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"e16d2d2d99\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_e3a3152051\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"}}],\"tierIndex\":1,\"name\":\"3\",\"id\":\"rule_c73dcea8b4\"}";
        //String conditionJson="{\"conditionList\":[{\"conditionList\":[{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_l6Fl1462t3\",\"label\":\"数字\",\"type\":1,\"value\":1.0},\"compareOperation\":1,\"id\":\"8cI873FO02\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_00sd1L7o17\",\"label\":\"数字\",\"type\":1,\"value\":1.0}},{\"formulaRelation\":\"and\",\"id\":\"4d7rX3KO2K\",\"type\":\"symbol\"},{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_X51iAXd4s7\",\"label\":\"数字\",\"type\":1,\"value\":2.0},\"compareOperation\":1,\"id\":\"uCX43oau4d\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_3GSA3R8840\",\"label\":\"数字\",\"type\":1,\"value\":2.0}},{\"formulaRelation\":\"and\",\"id\":\"S9o3U8Kwg0\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_6a6221SIQq\",\"label\":\"数字\",\"type\":1,\"value\":100.0},\"compareOperation\":5,\"id\":\"8zxg92ghHE\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"source\":\"表单\",\"id\":\"Parameter_OJ5Pj7s8S6\",\"label\":\"表单参数\",\"type\":6,\"value\":\"price\"}}],\"tierIndex\":\"4\",\"id\":\"Tf3aMgi9x9\",\"type\":\"group\"}],\"tierIndex\":\"3\",\"id\":\"B75g1d6OXh\",\"type\":\"group\"},{\"formulaRelation\":\"or\",\"id\":\"83A53172ij\",\"type\":\"symbol\"},{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_63932k4555\",\"label\":\"数字\",\"type\":1,\"value\":2.0},\"compareOperation\":1,\"id\":\"97C1M7688V\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_PsqH1n90E3\",\"label\":\"数字\",\"type\":1,\"value\":2.0}},{\"formulaRelation\":\"or\",\"id\":\"3Bw3H12Xoj\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_x3875nezR3\",\"label\":\"数字\",\"type\":1,\"value\":3.0},\"compareOperation\":1,\"id\":\"12747R8AIy\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_27P8Lx0X1A\",\"label\":\"数字\",\"type\":1,\"value\":3.0}}],\"tierIndex\":\"3\",\"id\":\"SGN5jbC569\",\"type\":\"group\"}],\"tierIndex\":\"2\",\"id\":\"9P71L9y8Sz\",\"type\":\"group\"},{\"formulaRelation\":\"and\",\"id\":\"O2PSGn3jso\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_X3hVTb54P1\",\"label\":\"字符串\",\"type\":1,\"value\":\"1\"},\"compareOperation\":1,\"id\":\"Qc835NR21i\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_W0f9p28586\",\"label\":\"字符串\",\"type\":1,\"value\":\"啦啦啦\"}}],\"tierIndex\":2,\"name\":\"规则2\",\"id\":\"rule_lsaqgcyqha\"}";
        String conditionJson="{\"conditionList\":[{\"rightOperatorExpression\":{\"valueType\":\"string\",\"id\":\"Constant_7yQB4sQ773\",\"label\":\"字符串\",\"type\":1,\"value\":\"2\"},\"compareOperation\":1,\"id\":\"5d0TGl78rU\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":1,\"source\":\"流程\",\"id\":\"ProcessContext_4gZvyeE561\",\"label\":\"流程名称\",\"type\":4,\"value\":\"name\"}},{\"formulaRelation\":\"and\",\"id\":\"I7K143vL3k\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"datetime\",\"id\":\"Constant_aXe521q118\",\"label\":\"日期时间\",\"type\":1,\"value\":\"2024-01-05\"},\"compareOperation\":1,\"id\":\"7N123NP318\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":2,\"source\":\"节点\",\"id\":\"ProcessContext_7AfIuR5BX7\",\"label\":\"节点名称\",\"type\":4,\"value\":\"name\"}},{\"formulaRelation\":\"and\",\"id\":\"3FN13dEWAF\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"datetime\",\"id\":\"Constant_10ENW911b2\",\"label\":\"日期时间\",\"type\":1,\"value\":\"2024-01-05 12:12:12\"},\"compareOperation\":1,\"id\":\"OJ642z63w7\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":2,\"source\":\"节点\",\"id\":\"ProcessContext_5sa4v49lK7\",\"label\":\"节点名称\",\"type\":4,\"value\":\"name\"}},{\"formulaRelation\":\"and\",\"id\":\"S983Z7o17q\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_8Ue11K1vwC\",\"label\":\"数字\",\"type\":1,\"value\":2.0},\"compareOperation\":1,\"id\":\"Nd3MwT6825\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"source\":\"默认参数\",\"id\":\"Parameter_0b3f5p6qMv\",\"label\":\"OA账户真实姓名\",\"type\":6,\"value\":\"realname\"}},{\"formulaRelation\":\"and\",\"id\":\"47507m21jl\",\"type\":\"symbol\"},{\"rightOperatorExpression\":{\"valueType\":\"double\",\"id\":\"Constant_279ArEXgY8\",\"label\":\"数字\",\"type\":1,\"value\":100.0},\"compareOperation\":1,\"id\":\"XihU63r5i9\",\"describe\":\"\",\"type\":\"single\",\"leftOperatorExpression\":{\"valueType\":\"string\",\"source\":\"表单\",\"id\":\"Parameter_e30getb583\",\"label\":\"表单参数\",\"type\":6,\"value\":\"price\"}}],\"tierIndex\":4,\"name\":\"规则4\",\"id\":\"rule_3mkmn0o4q4\"}";
        String formula = jsonToListOrObject(conditionJson);
        System.out.println(formula);
    }
    /**
     * Json转换List或Object
     *
     * @param json
     * @return
     */
    public static String jsonToListOrObject(String json) {
        JSONObject jsonObject = JSONObject.fromObject(json);
        String conditionJson = jsonObject.getString("conditionList");
        List conditionList = new ArrayList();
        if (jsonObject != null) {
            conditionList = JsonUtil.jsonToList(conditionJson, Condition.class);
        }
        //json转换公式
        String formula = analysisJson(conditionList, "");
        return formula;
    }
    /**
     * json转换公式
     *
     * @param conditionList
     * @param formula
     * @return
     */
    public static String analysisJson(List conditionList, String formula) {
        boolean needAnd = false;//判断是否要加and
        for (int i = 0; i  
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]