| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package com.jfireel.expression.util;
- import com.mixsmart.utils.CustomFunction;
- import com.mixsmart.utils.ListUtils;
- import com.mixsmart.utils.StringUtils;
- import java.util.List;
- /**
- * @author yangyj
- * @Date 2023/3/10 16:41
- * @description TODO
- */
- public class ValueUtil {
- public static Object[] obtain(Object left, Object right) {
- if (StringUtils.isNotEmpty(left, right)) {
- if (left instanceof List) {
- List<Object> tmp = CustomFunction.obj2ListNe(left);
- if (tmp.size() == 0) {
- return null;
- }
- left = sum(tmp);
- }
- if (right instanceof List) {
- List<Object> tmp = CustomFunction.obj2ListNe(right);
- if (tmp.size() == 0) {
- return null;
- }
- right = sum(tmp);
- }
- if (StringUtils.isNotEmpty(left) && StringUtils.isNotEmpty(right)) {
- return new Object[]{left, right};
- }
- }
- return null;
- }
- /**
- * 判断条件 处理字母+数字的数据 去掉字母
- * @param left
- * @param right
- * @param letterNumber
- * @return
- */
- public static Object[] obtain(Object left, Object right, boolean letterNumber) {
- if (StringUtils.isNotEmpty(left, right)) {
- if (left instanceof List) {
- List<Object> tmp = CustomFunction.obj2ListNe(left);
- if (tmp.size() == 0) {
- return null;
- }
- if(tmp.size() == 1){
- if(StringUtils.isNumber(tmp.get(0).toString())){
- left = Double.valueOf(tmp.get(0).toString());
- }else{
- left = tmp.get(0);
- }
- }else{
- left = sum(tmp);
- }
- }
- if (right instanceof List) {
- List<Object> tmp = CustomFunction.obj2ListNe(right);
- if (tmp.size() == 0) {
- return null;
- }
- if(tmp.size() == 1){
- if(StringUtils.isNumber(tmp.get(0).toString())){
- right = Double.valueOf(tmp.get(0).toString());
- }else{
- right = tmp.get(0);
- }
- }else{
- right = sum(tmp);
- }
- }
- if (StringUtils.isNotEmpty(left) && StringUtils.isNotEmpty(right)) {
- if (letterNumber) {
- left = isLetterNumber(left);
- right = isLetterNumber(right);
- }
- return new Object[]{left, right};
- }
- }
- return null;
- }
- public static Object sum(List<Object> list) {
- if (ListUtils.isNotEmpty(list)) {
- return (float) list.stream().filter(StringUtils::isNumber).map(StringUtils::handleNull).mapToDouble(Double::parseDouble).sum();
- }
- return 0;
- }
- public static Object isLetterNumber(Object str){
- // 检查是否是字母数字组合(必须同时包含字母和数字,且只包含字母数字)
- if (str != null && str.toString().matches("^(?=.*[a-zA-Z])(?=.*\\d)[a-zA-Z\\d]+$")) {
- // 提取所有数字
- return Double.valueOf(str.toString().replaceAll("[^0-9]", ""));
- }
- return str;
- }
- }
|