From 0fc3b3562ea1993d9e53faaf151e2ccaa0d84ec2 Mon Sep 17 00:00:00 2001 From: "BF-202309241046\\Administrator" Date: Fri, 5 Jul 2024 09:10:12 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A8=E5=B1=9E=E6=80=A7=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/domain/BaseForwardReport.java | 2 + .../product/bomnew/util/FieldGetterUtil.java | 104 ++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/FieldGetterUtil.java diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java index 21558205..6fb8fd83 100644 --- a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/service/domain/BaseForwardReport.java @@ -60,6 +60,8 @@ public abstract class BaseForwardReport { List bomList = convertBomList.stream().filter(u -> ObjectUtil.isNotNull(u.getBomRowId()) && u.getBomRowId() > 0) .collect(Collectors.toList()); + + //bomRowId 下无数据 bomList.forEach(item->{ List tmpList= convertBomList.stream().filter(u -> Objects.equals(u.getParentRowId(),item.getBomRowId()) ) diff --git a/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/FieldGetterUtil.java b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/FieldGetterUtil.java new file mode 100644 index 00000000..ea7c1930 --- /dev/null +++ b/nflg_project_dev/nflg-bom-new/src/main/java/com/nflg/product/bomnew/util/FieldGetterUtil.java @@ -0,0 +1,104 @@ +package com.nflg.product.bomnew.util; + +import cn.hutool.core.text.CharSequenceUtil; +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.SneakyThrows; + +import java.io.Serializable; +import java.lang.invoke.SerializedLambda; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.function.Function; + +public class FieldGetterUtil { + + public interface FieldGetter extends Function, Serializable { + + @SneakyThrows + default String getFieldName() { + String methodName = getMethodName(); + if (methodName.startsWith("get")) { + methodName = methodName.substring(3); + } + return CharSequenceUtil.lowerFirst(methodName); + } + + + default String getTableField() { + String fieldName = getFieldName(); + fieldName = fieldName.replaceFirst(fieldName.charAt(0) + "", (fieldName.charAt(0) + "").toLowerCase()); + Field field; + try { + SerializedLambda serializedLambda = getSerializedLambda(); + field = Class.forName(serializedLambda.getImplClass().replace("/", ".")).getDeclaredField(fieldName); + // 从field取出字段名,可以根据实际情况调整 + TableField tableField = field.getAnnotation(TableField.class); + if (tableField != null && tableField.value().length() > 0) { + return tableField.value(); + } else { + return fieldName.replaceAll("[A-Z]", "_$0").toLowerCase(); + } + + } catch (ClassNotFoundException | NoSuchFieldException e) { + throw new RuntimeException(e); + } + + } + + @SneakyThrows + default String getMethodName() { + return getSerializedLambda().getImplMethodName(); + } + + @SneakyThrows + default Class getFieldClass() { + return getReturnType(); + } + + @SneakyThrows + default SerializedLambda getSerializedLambda() { + // 从function取出序列化方法 + Method method = getClass().getDeclaredMethod("writeReplace"); + method.setAccessible(true); + return (SerializedLambda) method.invoke(this); + } + + @SneakyThrows + default Class getReturnType() { + SerializedLambda lambda = getSerializedLambda(); + Class className = Class.forName(lambda.getImplClass().replace("/", ".")); + Method method = className.getMethod(getMethodName()); + return method.getReturnType(); + } + + + } + + public static String getFieldInfo(FieldGetter fieldGetter) { + + return fieldGetter.getTableField(); + + + } + + + public static String getFieldName( FieldGetter fieldGetter) { + return fieldGetter.getFieldName(); + + } + + public static Class getFieldClass( FieldGetter fieldGetter) { + return fieldGetter.getFieldClass(); + + } + + + public static String getMethodName( FieldGetter fieldGetter) { + return fieldGetter.getMethodName(); + + } + + + + +}