package com.ruoyi.fuzhou.utils;
|
|
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.ruoyi.common.utils.StringUtils;
|
|
import java.util.List;
|
|
/**
|
* 数据清洗工具
|
*/
|
public class AnalyseUtils {
|
//[{"param":"test","rule":"<","value":0.3}]
|
public static <T> JSONArray listToJSONArray(List<T> list, String rule) {
|
JSONArray ruleArray = JSONArray.parseArray(rule);
|
JSONArray result = new JSONArray();
|
JSONArray array = JSONArray.parseArray(JSONArray.toJSONString(list));
|
if (ruleArray.size() == 0) {
|
return array;
|
}
|
for (int i = 0; i < array.size(); i++) {
|
JSONObject object = array.getJSONObject(i);
|
boolean success = true;
|
for (int m = 0; m < ruleArray.size(); m++) {
|
JSONObject jsonObject = ruleArray.getJSONObject(m);
|
String key = jsonObject.getString("param");
|
String sign = jsonObject.getString("rule");
|
Double value = jsonObject.getDouble("value");
|
if (key == null) {
|
throw new RuntimeException("参数不能为空!");
|
}
|
if (sign == null) {
|
throw new RuntimeException("符号不能为空!");
|
}
|
if (value == null) {
|
throw new RuntimeException("参数不能为空!");
|
}
|
//规则判断
|
String objectValue = object.getString(key);
|
if (StringUtils.isNotEmpty(objectValue)) {
|
try {
|
if ("<".equals(sign)) {
|
success = Double.valueOf(objectValue) < value;
|
} else if ("<=".equals(sign)) {
|
success = Double.valueOf(objectValue) <= value;
|
} else if (">=".equals(sign)) {
|
success = Double.valueOf(objectValue) >= value;
|
} else if (">".equals(sign)) {
|
success = Double.valueOf(objectValue) > value;
|
} else if ("!=".equals(sign)) {
|
success = !Double.valueOf(objectValue).equals(value);
|
} else if ("=".equals(sign)) {
|
success = Double.valueOf(objectValue).equals(value);
|
} else {
|
success = false;
|
}
|
}catch (Exception e){
|
success = false;
|
e.printStackTrace();
|
}
|
} else {
|
success = false;
|
}
|
if (!success) {
|
break;
|
}
|
}
|
if (success) {
|
result.add(object);
|
}
|
}
|
return result;
|
}
|
}
|