|
@@ -3,21 +3,15 @@ package com.mixsmart.utils;
|
|
|
|
|
|
import cn.hutool.core.date.*;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
-
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
-
|
|
|
-import com.jfireel.expression.Expression;
|
|
|
import com.jfireel.expression.node.CalculateNode;
|
|
|
import com.jfireel.expression.node.impl.OperatorResultNode;
|
|
|
import com.jfireel.expression.node.impl.StaticObjectMethodNode;
|
|
|
import com.jfireel.expression.node.impl.VariableNode;
|
|
|
import com.jfireel.expression.token.Token;
|
|
|
import org.apache.commons.collections4.MapUtils;
|
|
|
-
|
|
|
import org.jsoup.Jsoup;
|
|
|
import org.springblade.core.tool.utils.*;
|
|
|
-
|
|
|
-
|
|
|
import java.io.FileInputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.ParseException;
|
|
@@ -27,12 +21,13 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
-
|
|
|
-
|
|
|
import static java.math.BigDecimal.ROUND_CEILING;
|
|
|
import static java.math.BigDecimal.ROUND_HALF_UP;
|
|
|
|
|
|
|
|
|
+/**
|
|
|
+ * @author yangyj
|
|
|
+ */
|
|
|
public class CustomFunction {
|
|
|
|
|
|
|
|
@@ -660,7 +655,7 @@ public class CustomFunction {
|
|
|
if(list instanceof List){
|
|
|
tmp = (List<Object>) list;
|
|
|
}else{
|
|
|
- tmp=Arrays.asList(list.toString().split("[,|-|~|,]"));
|
|
|
+ tmp=Arrays.asList(list.toString().split("[,|\\-~,]"));
|
|
|
}
|
|
|
int dev =StringUtils.handObj2Integer(design);
|
|
|
for(Object e:tmp){
|
|
@@ -1017,36 +1012,10 @@ public class CustomFunction {
|
|
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * @Description EL表达式解析
|
|
|
- * @return java.lang.Object
|
|
|
- * @Author yangyj
|
|
|
- * @Date 2020.12.10 15:10
|
|
|
- **/
|
|
|
- public static Object parse(Object a) {
|
|
|
- if(StringUtils.isNotEmpty(a)&&!StringUtils.isNumber(a)){
|
|
|
- return Expression.parse(a.toString()).calculate().toString();
|
|
|
- }
|
|
|
- return a;
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * yangyj
|
|
|
- * 混合两个序列内容
|
|
|
- * @param la
|
|
|
- * @param lb
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static List<Object> mixedMList(List<Object> la ,List<Object> lb){
|
|
|
- List<Object> res = new ArrayList<>();
|
|
|
- res.addAll(la);
|
|
|
- res.addAll(lb);
|
|
|
- Collections.shuffle(res);
|
|
|
- return res;
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
@@ -1089,95 +1058,14 @@ public class CustomFunction {
|
|
|
}
|
|
|
return "";
|
|
|
}
|
|
|
- /**
|
|
|
- * @Description 累加公式,最大支持20个数累加,第一个参数是保留小数位
|
|
|
- * @Param [scale,...obj]
|
|
|
- * @return java.lang.Object
|
|
|
- * @Author yangyj
|
|
|
- * @Date 2021.06.17 13:51
|
|
|
- **/
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2){
|
|
|
- return _sumObj(scale,o1,o2);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3){
|
|
|
-
|
|
|
- return _sumObj(scale,o1,o2,o3);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8,Object o9){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8,o9);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8,Object o9,Object o10){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8,Object o9,Object o10,Object o11){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8,Object o9,Object o10,Object o11,Object o12){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11,o12);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8,Object o9,Object o10,Object o11,Object o12,Object o13){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11,o12,o13);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8,Object o9,Object o10,Object o11,Object o12,Object o13,Object o14){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11,o12,o13,o14);
|
|
|
- }
|
|
|
- public static Object sumObj(Object scale,Object o1,Object o2,Object o3,Object o4,Object o5,Object o6,Object o7,Object o8,Object o9,Object o10,Object o11,Object o12,Object o13,Object o14,Object o15){
|
|
|
- return _sumObj(scale,o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11,o12,o13,o14,o15);
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- public static Object dataFormatter(Object o,Object type){
|
|
|
- if(o!=null&&o instanceof List){
|
|
|
- ArrayList<Object> data = (ArrayList<Object>) o;
|
|
|
- List<Object> result = new ArrayList<>();
|
|
|
- for(Object ob:data){
|
|
|
- result.add(ob+"%");
|
|
|
- }
|
|
|
- return result;
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
- /**
|
|
|
- * @yangyj 判断取值,例子:FUNC.ifVal('X<=2?2:(X-1)*3',TABLE[tablename][fieldname])
|
|
|
- * @param ari 运算表达式
|
|
|
- * @param designv 设计值(未知量X的值)
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static Object ifVal(Object ari,Object designv){
|
|
|
- if(designv==null){
|
|
|
- return "";
|
|
|
- }
|
|
|
- if(StringUtils.isEmpty(designv.toString())){
|
|
|
- return "";
|
|
|
- }
|
|
|
- ari = ari.toString().replaceAll("[\\t\\n\\r]", "");
|
|
|
- ari=ari.toString().replace("X",designv.toString());
|
|
|
- return Expression.parse(ari.toString()).calculate().toString();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* @Description 空白或者/都判断为空
|
|
|
* @Param [data]
|
|
@@ -1300,44 +1188,8 @@ public class CustomFunction {
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
- /**
|
|
|
- * @Description 评定表实测值
|
|
|
- * @Param [data, remark]
|
|
|
- * @return java.lang.Object
|
|
|
- * @Author yangyj
|
|
|
- * @Date 2022.01.13 15:26
|
|
|
- **/
|
|
|
- public static Object eval(Object data ,Object remark){
|
|
|
- if(data!=null){
|
|
|
- if(data instanceof List){
|
|
|
- data = removeEmpty(data);
|
|
|
- List<Object> datas = (List<Object>) data;
|
|
|
- if(datas.size()<=10&&datas.size()>0){
|
|
|
- return join(datas,"、");
|
|
|
- }
|
|
|
- }else{
|
|
|
- if(StringUtils.isNotEmpty(data)){
|
|
|
- return handleNull(data);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return remark;
|
|
|
- }
|
|
|
|
|
|
- public static Object model100(Object data ,Object remark){
|
|
|
- if(data!=null){
|
|
|
- if(data instanceof List){
|
|
|
- data = removeEmpty(data);
|
|
|
- List<Object> datas = (List<Object>) data;
|
|
|
- if(datas.size()<=10&&datas.size()>0){
|
|
|
- return join(datas,"、");
|
|
|
- }else{
|
|
|
- return remark;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return "";
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
public static final String ELE_CODE_REG= "(?<=E\\[)[^]]+(?=\\])";
|
|
|
public static final Pattern P = Pattern.compile(ELE_CODE_REG);
|
|
@@ -1662,7 +1514,13 @@ public class CustomFunction {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- /*specifiedRangeList*/
|
|
|
+ /**
|
|
|
+ * @Description specifiedRangeList
|
|
|
+ * @Param [hz:频率, design:设计值, dev:偏差范围, xN 偏差范围单位和设计值单位的比值,例如毫米:厘米=0.1, scale:保存小数位, passRate:合格率[0,1]]
|
|
|
+ * @return java.util.List<java.lang.Object>
|
|
|
+ * @Author yangyj
|
|
|
+ * @Date 2022.03.31 09:16
|
|
|
+ **/
|
|
|
public static List<Object> rangeList(Object hz,Object design,Object dev,Object xN,Object scale,Object passRate){
|
|
|
List<Object> result = new ArrayList<>();
|
|
|
if(StringUtils.isNotEmpty(design,dev,hz)){
|
|
@@ -1917,22 +1775,6 @@ public class CustomFunction {
|
|
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * @Description 获取最后一个对象
|
|
|
- * @Param [list]
|
|
|
- * @return java.lang.Object
|
|
|
- * @Author yangyj
|
|
|
- * @Date 2021.08.09 14:37
|
|
|
- **/
|
|
|
- public static Object getListLast(Object o){
|
|
|
- if(o instanceof List){
|
|
|
- List<Object> list = (List<Object>) o;
|
|
|
- if(ListUtils.isNotEmpty(list)){
|
|
|
- return list.get(list.size()-1);
|
|
|
- }
|
|
|
- }
|
|
|
- return "";
|
|
|
- }
|
|
|
/**
|
|
|
* @Description 获取最后一个对象
|
|
|
* @Param [list]
|
|
@@ -2433,23 +2275,6 @@ public class CustomFunction {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @Description list 去头
|
|
|
- * @Param [o]
|
|
|
- * @return java.lang.Object
|
|
|
- * @Author yangyj
|
|
|
- * @Date 2021.12.31 14:53
|
|
|
- **/
|
|
|
- public static Object removeH(Object o){
|
|
|
- List<Object> result = new ArrayList<>();
|
|
|
- if(o instanceof List){
|
|
|
- result= (List<Object>) o;
|
|
|
- if(result.size()>2){
|
|
|
- return subList(result,2,result.size());
|
|
|
- }
|
|
|
- }
|
|
|
- return result;
|
|
|
- }
|
|
|
|
|
|
|
|
|
public static Object removeByReg(Object o,Object reg){
|
|
@@ -2554,27 +2379,6 @@ public class CustomFunction {
|
|
|
* @Author yangyj
|
|
|
* @Date 2021.07.28 15:50
|
|
|
**/
|
|
|
- public static Object _join(Object o,Object separator){
|
|
|
- StringBuilder r = new StringBuilder();
|
|
|
- if(o instanceof List){
|
|
|
- if(null==separator){
|
|
|
- separator="、";
|
|
|
- }
|
|
|
- for(Object e:(List<Object>)o){
|
|
|
- if(StringUtils.isNotEmpty(e)){
|
|
|
- r.append(handleNull(e)).append(separator);
|
|
|
- }
|
|
|
- }
|
|
|
- }else if(StringUtils.isNotEmpty(o)){
|
|
|
- r.append(o).append(",");
|
|
|
- }
|
|
|
- if(r.length()>0){
|
|
|
- r.deleteCharAt(r.length()-1);
|
|
|
- }
|
|
|
- return r;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
|
|
|
public static Object join(Object o1,Object separator){
|
|
|
Optional<Object> op =Optional.ofNullable(o1);
|
|
@@ -2583,7 +2387,7 @@ public class CustomFunction {
|
|
|
if(StringUtils.isEmpty(s)){
|
|
|
s="、";
|
|
|
}
|
|
|
- return op.map(CustomFunction::obj2ListNe).get().stream().map(StringUtils::handleNull).collect(Collectors.joining(s));
|
|
|
+ return op.map(CustomFunction::obj2ListNe).orElse(Collections.singletonList("")).stream().map(StringUtils::handleNull).collect(Collectors.joining(s));
|
|
|
};
|
|
|
return "";
|
|
|
}
|