|
@@ -6,6 +6,7 @@ import org.springframework.util.CollectionUtils;
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
public class DataUtils {
|
|
|
/**
|
|
@@ -39,9 +40,9 @@ public class DataUtils {
|
|
|
/**
|
|
|
* 按规则进行计算
|
|
|
*
|
|
|
- * @param standardValue 规则值
|
|
|
+ * @param standardValue 规则值
|
|
|
* @param qualifyFormula 规则
|
|
|
- * @param data 要进行规则校验的数据
|
|
|
+ * @param data 要进行规则校验的数据
|
|
|
* @return
|
|
|
*/
|
|
|
public static Double getQualifyResult(Double standardValue, String qualifyFormula, Double data) {
|
|
@@ -60,7 +61,7 @@ public class DataUtils {
|
|
|
/**
|
|
|
* 将一组对象中类型为double的属性求和
|
|
|
*
|
|
|
- * @param objs 要求和的一组对象
|
|
|
+ * @param objs 要求和的一组对象
|
|
|
* @param tClass 这组对象的类型
|
|
|
* @return 一个新的对象,将求和之后的属性赋值给它
|
|
|
* @author lixing
|
|
@@ -74,18 +75,24 @@ public class DataUtils {
|
|
|
}
|
|
|
Field[] declaredFields = tClass.getDeclaredFields();
|
|
|
for (Field declaredField : declaredFields) {
|
|
|
- if (Double.class.equals(declaredField.getType())) {
|
|
|
- declaredField.set(result, objs.stream().filter(
|
|
|
+ if (!Double.class.equals(declaredField.getType())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<T> notNullList = objs.stream().filter(
|
|
|
+ obj -> {
|
|
|
+ try {
|
|
|
+ return declaredField.get(obj) != null;
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(notNullList)) {
|
|
|
+ declaredField.set(result, null);
|
|
|
+ } else {
|
|
|
+ declaredField.set(result, notNullList.stream().mapToDouble(
|
|
|
obj -> {
|
|
|
try {
|
|
|
- return declaredField.get(obj) != null;
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }).
|
|
|
- mapToDouble(obj -> {
|
|
|
- try {
|
|
|
return (Double) declaredField.get(obj);
|
|
|
} catch (IllegalAccessException e) {
|
|
|
e.printStackTrace();
|
|
@@ -93,6 +100,7 @@ public class DataUtils {
|
|
|
}
|
|
|
}).sum());
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
return result;
|
|
|
} catch (Exception e) {
|