|
@@ -3,6 +3,8 @@ package api.common.util;
|
|
|
import api.common.pojo.annotation.WChildren;
|
|
|
import api.common.pojo.annotation.WId;
|
|
|
import api.common.pojo.annotation.WParentId;
|
|
|
+import api.common.pojo.po.model.VehiclePO;
|
|
|
+import api.common.pojo.vo.model.VehicleVO;
|
|
|
import api.common.pojo.vo.system.DictVO;
|
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -10,7 +12,6 @@ import org.springframework.beans.BeanUtils;
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
import java.lang.reflect.Method;
|
|
|
-import java.security.PublicKey;
|
|
|
import java.util.*;
|
|
|
import java.util.function.BiConsumer;
|
|
|
import java.util.function.Function;
|
|
@@ -19,9 +20,6 @@ public class ObjectUtil {
|
|
|
|
|
|
|
|
|
* 空值判断
|
|
|
- *
|
|
|
- * @param obj
|
|
|
- * @return
|
|
|
*/
|
|
|
public static boolean isNull(Object obj) {
|
|
|
boolean isNullFlag = true;
|
|
@@ -93,47 +91,192 @@ public class ObjectUtil {
|
|
|
|
|
|
public static List<DictVO> DictListToTree(List<DictVO> list) {
|
|
|
List<DictVO> treeList = new ArrayList<DictVO>();
|
|
|
- for (DictVO dictVO: list) {
|
|
|
- if("0".equals(dictVO.getPid())){
|
|
|
- treeList.add(findChildren(dictVO,list));
|
|
|
+ for (DictVO dictVO : list) {
|
|
|
+ if ("0".equals(dictVO.getPid())) {
|
|
|
+ treeList.add(findChildren(dictVO, list));
|
|
|
}
|
|
|
}
|
|
|
return treeList;
|
|
|
}
|
|
|
|
|
|
private static DictVO findChildren(DictVO dictVO, List<DictVO> list) {
|
|
|
- for (DictVO node: list) {
|
|
|
- if(dictVO.getId().equals(node.getPid())){
|
|
|
- if(dictVO.getChildren() == null || dictVO.getChildren().size() == 0){
|
|
|
+ for (DictVO node : list) {
|
|
|
+ if (dictVO.getId().equals(node.getPid())) {
|
|
|
+ if (dictVO.getChildren() == null || dictVO.getChildren().size() == 0) {
|
|
|
dictVO.setChildren(new ArrayList<DictVO>());
|
|
|
}
|
|
|
- dictVO.getChildren().add(findChildren(node,list));
|
|
|
+ dictVO.getChildren().add(findChildren(node, list));
|
|
|
}
|
|
|
}
|
|
|
return dictVO;
|
|
|
}
|
|
|
|
|
|
- public static void voToPo(Object source, Object target){
|
|
|
- BeanUtils.copyProperties(source,target);
|
|
|
+ public static void voToPo(Object source, Object target) {
|
|
|
+ BeanUtils.copyProperties(source, target);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void vehicleVoToVehiclePo(VehicleVO vehicleVO, VehiclePO vehiclePO) {
|
|
|
+ vehiclePO.setId(vehicleVO.getId());
|
|
|
+ vehiclePO.setVehicleName(vehicleVO.getVehicleName());
|
|
|
+ vehiclePO.setDescription(vehicleVO.getDescription());
|
|
|
+ vehiclePO.setVehicleType(vehicleVO.getVehicleTypeStr());
|
|
|
+ vehiclePO.setModelLabel(vehicleVO.getModelLabel());
|
|
|
+ vehiclePO.setShare(vehicleVO.getShare());
|
|
|
+ vehiclePO.setParameterType(vehicleVO.getParameterType());
|
|
|
+
|
|
|
+ vehiclePO.setVehicleCode(vehicleVO.getVehicleCode());
|
|
|
+ vehiclePO.setVehicleFrontView(vehicleVO.getVehicleFrontView());
|
|
|
+ vehiclePO.setVehicleTopView(vehicleVO.getVehicleTopView());
|
|
|
+ vehiclePO.setMaxSpeed(vehicleVO.getMaxSpeed());
|
|
|
+ vehiclePO.setEnginePower(vehicleVO.getEnginePower());
|
|
|
+ vehiclePO.setMaxDeceleration(vehicleVO.getMaxDeceleration());
|
|
|
+ vehiclePO.setMaxSteeringAngle(vehicleVO.getMaxSteeringAngle());
|
|
|
+ vehiclePO.setMass(vehicleVO.getMass());
|
|
|
+ vehiclePO.setFrontSurfaceEffective(vehicleVO.getFrontSurfaceEffective());
|
|
|
+ vehiclePO.setAirDragCoefficient(vehicleVO.getAirDragCoefficient());
|
|
|
+ vehiclePO.setRollingResistanceCoefficient(vehicleVO.getRollingResistanceCoefficient());
|
|
|
+ vehiclePO.setWheelDiameter(vehicleVO.getWheelDiameter());
|
|
|
+ vehiclePO.setWheelDrive(vehicleVO.getWheelDrive());
|
|
|
+ vehiclePO.setOverallEfficiency(vehicleVO.getOverallEfficiency());
|
|
|
+ vehiclePO.setFrontDistance(vehicleVO.getFrontDistance());
|
|
|
+ vehiclePO.setRearDistance(vehicleVO.getRearDistance());
|
|
|
+ vehiclePO.setLeftDistance(vehicleVO.getLeftDistance());
|
|
|
+ vehiclePO.setRightDistance(vehicleVO.getRightDistance());
|
|
|
+ vehiclePO.setHeightDistance(vehicleVO.getHeightDistance());
|
|
|
+ vehiclePO.setWheelbase(vehicleVO.getWheelbase());
|
|
|
+
|
|
|
+ vehiclePO.setWheelCenterToTop(vehicleVO.getWheelCenterToTop());
|
|
|
+ vehiclePO.setWheelCenterToGround(vehicleVO.getWheelCenterToGround());
|
|
|
+ vehiclePO.setCentroidToFrontWheelCenter(vehicleVO.getCentroidToFrontWheelCenter());
|
|
|
+ vehiclePO.setCentroidToGround(vehicleVO.getCentroidToGround());
|
|
|
+
|
|
|
+ vehiclePO.setSprungMass(vehicleVO.getSprungMass());
|
|
|
+ vehiclePO.setVehicleLength(vehicleVO.getVehicleLength());
|
|
|
+ vehiclePO.setVehicleWidth(vehicleVO.getVehicleWidth());
|
|
|
+ vehiclePO.setRotationalInertiaX(vehicleVO.getRotationalInertiaX());
|
|
|
+ vehiclePO.setRotationalInertiaY(vehicleVO.getRotationalInertiaY());
|
|
|
+ vehiclePO.setRotationalInertiaZ(vehicleVO.getRotationalInertiaZ());
|
|
|
+
|
|
|
+ vehiclePO.setFrontLeftWheelEffectiveRollingRadius(vehicleVO.getFrontLeftWheelEffectiveRollingRadius());
|
|
|
+ vehiclePO.setFrontLeftWheelRollingResistanceCoefficient(vehicleVO.getFrontLeftWheelRollingResistanceCoefficient());
|
|
|
+ vehiclePO.setFrontLeftWheelFreeRadius(vehicleVO.getFrontLeftWheelFreeRadius());
|
|
|
+ vehiclePO.setFrontLeftWheelRelationCurvePositiveMomentAndSideslipAngle(vehicleVO.getFrontLeftWheelRelationCurvePositiveMomentAndSideslipAngle());
|
|
|
+ vehiclePO.setFrontLeftWheelRelationCurvePositiveMomentAndSideslipAngleJson(vehicleVO.getFrontLeftWheelRelationCurvePositiveMomentAndSideslipAngleJson());
|
|
|
+ vehiclePO.setFrontLeftWheelRelationCurveLateralForceAndSideslipAngle(vehicleVO.getFrontLeftWheelRelationCurveLateralForceAndSideslipAngle());
|
|
|
+ vehiclePO.setFrontLeftWheelRelationCurveLateralForceAndSideslipAngleJson(vehicleVO.getFrontLeftWheelRelationCurveLateralForceAndSideslipAngleJson());
|
|
|
+ vehiclePO.setFrontLeftWheelRelationCurveLongitudinalForceAndSideslipAngle(vehicleVO.getFrontLeftWheelRelationCurveLongitudinalForceAndSideslipAngle());
|
|
|
+ vehiclePO.setFrontLeftWheelRelationCurveLongitudinalForceAndSideslipAngleJson(vehicleVO.getFrontLeftWheelRelationCurveLongitudinalForceAndSideslipAngleJson());
|
|
|
+
|
|
|
+ vehiclePO.setRearLeftWheelEffectiveRollingRadius(vehicleVO.getRearLeftWheelEffectiveRollingRadius());
|
|
|
+ vehiclePO.setRearLeftWheelRollingResistanceCoefficient(vehicleVO.getRearLeftWheelRollingResistanceCoefficient());
|
|
|
+ vehiclePO.setRearLeftWheelFreeRadius(vehicleVO.getRearLeftWheelFreeRadius());
|
|
|
+ vehiclePO.setRearLeftWheelRelationCurvePositiveMomentAndSideslipAngle(vehicleVO.getRearLeftWheelRelationCurvePositiveMomentAndSideslipAngle());
|
|
|
+ vehiclePO.setRearLeftWheelRelationCurvePositiveMomentAndSideslipAngleJson(vehicleVO.getRearLeftWheelRelationCurvePositiveMomentAndSideslipAngleJson());
|
|
|
+ vehiclePO.setRearLeftWheelRelationCurveLateralForceAndSideslipAngle(vehicleVO.getRearLeftWheelRelationCurveLateralForceAndSideslipAngle());
|
|
|
+ vehiclePO.setRearLeftWheelRelationCurveLateralForceAndSideslipAngleJson(vehicleVO.getRearLeftWheelRelationCurveLateralForceAndSideslipAngleJson());
|
|
|
+ vehiclePO.setRearLeftWheelRelationCurveLongitudinalForceAndSideslipAngle(vehicleVO.getRearLeftWheelRelationCurveLongitudinalForceAndSideslipAngle());
|
|
|
+ vehiclePO.setRearLeftWheelRelationCurveLongitudinalForceAndSideslipAngleJson(vehicleVO.getRearLeftWheelRelationCurveLongitudinalForceAndSideslipAngleJson());
|
|
|
+
|
|
|
+ vehiclePO.setFrontRightWheelEffectiveRollingRadius(vehicleVO.getFrontRightWheelEffectiveRollingRadius());
|
|
|
+ vehiclePO.setFrontRightWheelRollingResistanceCoefficient(vehicleVO.getFrontRightWheelRollingResistanceCoefficient());
|
|
|
+ vehiclePO.setFrontRightWheelFreeRadius(vehicleVO.getFrontRightWheelFreeRadius());
|
|
|
+ vehiclePO.setFrontRightWheelRelationCurvePositiveMomentAndSideslipAngle(vehicleVO.getFrontRightWheelRelationCurvePositiveMomentAndSideslipAngle());
|
|
|
+ vehiclePO.setFrontRightWheelRelationCurvePositiveMomentAndSideslipAngleJson(vehicleVO.getFrontRightWheelRelationCurvePositiveMomentAndSideslipAngleJson());
|
|
|
+ vehiclePO.setFrontRightWheelRelationCurveLateralForceAndSideslipAngle(vehicleVO.getFrontRightWheelRelationCurveLateralForceAndSideslipAngle());
|
|
|
+ vehiclePO.setFrontRightWheelRelationCurveLateralForceAndSideslipAngleJson(vehicleVO.getFrontRightWheelRelationCurveLateralForceAndSideslipAngleJson());
|
|
|
+ vehiclePO.setFrontRightWheelRelationCurveLongitudinalForceAndSideslipAngle(vehicleVO.getFrontRightWheelRelationCurveLongitudinalForceAndSideslipAngle());
|
|
|
+ vehiclePO.setFrontRightWheelRelationCurveLongitudinalForceAndSideslipAngleJson(vehicleVO.getFrontRightWheelRelationCurveLongitudinalForceAndSideslipAngleJson());
|
|
|
+
|
|
|
+ vehiclePO.setRearRightWheelEffectiveRollingRadius(vehicleVO.getRearRightWheelEffectiveRollingRadius());
|
|
|
+ vehiclePO.setRearRightWheelRollingResistanceCoefficient(vehicleVO.getRearRightWheelRollingResistanceCoefficient());
|
|
|
+ vehiclePO.setRearRightWheelFreeRadius(vehicleVO.getRearRightWheelFreeRadius());
|
|
|
+ vehiclePO.setRearRightWheelRelationCurvePositiveMomentAndSideslipAngle(vehicleVO.getRearRightWheelRelationCurvePositiveMomentAndSideslipAngle());
|
|
|
+ vehiclePO.setRearRightWheelRelationCurvePositiveMomentAndSideslipAngleJson(vehicleVO.getRearRightWheelRelationCurvePositiveMomentAndSideslipAngleJson());
|
|
|
+ vehiclePO.setRearRightWheelRelationCurveLateralForceAndSideslipAngle(vehicleVO.getRearRightWheelRelationCurveLateralForceAndSideslipAngle());
|
|
|
+ vehiclePO.setRearRightWheelRelationCurveLateralForceAndSideslipAngleJson(vehicleVO.getRearRightWheelRelationCurveLateralForceAndSideslipAngleJson());
|
|
|
+ vehiclePO.setRearRightWheelRelationCurveLongitudinalForceAndSideslipAngle(vehicleVO.getRearRightWheelRelationCurveLongitudinalForceAndSideslipAngle());
|
|
|
+ vehiclePO.setRearRightWheelRelationCurveLongitudinalForceAndSideslipAngleJson(vehicleVO.getRearRightWheelRelationCurveLongitudinalForceAndSideslipAngleJson());
|
|
|
+
|
|
|
+ vehiclePO.setFrontWheelSuspensionType(vehicleVO.getFrontWheelSuspensionType());
|
|
|
+ vehiclePO.setFrontWheelSuspensionKinematicsCoefficient(vehicleVO.getFrontWheelSuspensionKinematicsCoefficient());
|
|
|
+ vehiclePO.setFrontWheelUnsprungMass(vehicleVO.getFrontWheelUnsprungMass());
|
|
|
+ vehiclePO.setFrontWheelTrackWidth(vehicleVO.getFrontWheelTrackWidth());
|
|
|
+ vehiclePO.setRearWheelSuspensionType(vehicleVO.getRearWheelSuspensionType());
|
|
|
+ vehiclePO.setRearWheelSuspensionKinematicsCoefficient(vehicleVO.getRearWheelSuspensionKinematicsCoefficient());
|
|
|
+ vehiclePO.setRearWheelUnsprungMass(vehicleVO.getRearWheelUnsprungMass());
|
|
|
+ vehiclePO.setRearWheelTrackWidth(vehicleVO.getRearWheelTrackWidth());
|
|
|
+ vehiclePO.setWindwardArea(vehicleVO.getWindwardArea());
|
|
|
+ vehiclePO.setAirDensity(vehicleVO.getAirDensity());
|
|
|
+ vehiclePO.setEngineCrankshaftMomentInertia(vehicleVO.getEngineCrankshaftMomentInertia());
|
|
|
+ vehiclePO.setIdleSpeed(vehicleVO.getIdleSpeed());
|
|
|
+ vehiclePO.setRelationCurveEngineTorqueSpeedAndThrottleOpening(vehicleVO.getRelationCurveEngineTorqueSpeedAndThrottleOpening());
|
|
|
+ vehiclePO.setRelationCurveEngineTorqueSpeedAndThrottleOpeningJson(vehicleVO.getRelationCurveEngineTorqueSpeedAndThrottleOpeningJson());
|
|
|
+ vehiclePO.setMomentInertiaInputShaft(vehicleVO.getMomentInertiaInputShaft());
|
|
|
+ vehiclePO.setMomentInertiaOutputShaft(vehicleVO.getMomentInertiaOutputShaft());
|
|
|
+ vehiclePO.setFinalDriveRatio(vehicleVO.getFinalDriveRatio());
|
|
|
+ vehiclePO.setTransmissionEfficiency(vehicleVO.getTransmissionEfficiency());
|
|
|
+ vehiclePO.setGearRatio(vehicleVO.getGearRatio());
|
|
|
+ vehiclePO.setGearRatioJson(vehicleVO.getGearRatioJson());
|
|
|
+ vehiclePO.setInertia(vehicleVO.getInertia());
|
|
|
+ vehiclePO.setInertiaJson(vehicleVO.getInertiaJson());
|
|
|
+ vehiclePO.setDriving(vehicleVO.getDriving());
|
|
|
+ vehiclePO.setDrivingJson(vehicleVO.getDrivingJson());
|
|
|
+ vehiclePO.setCoasting(vehicleVO.getCoasting());
|
|
|
+ vehiclePO.setCoastingJson(vehicleVO.getCoastingJson());
|
|
|
+ vehiclePO.setShiftTime(vehicleVO.getShiftTime());
|
|
|
+ vehiclePO.setShiftTimeUp12(vehicleVO.getShiftTimeUp12());
|
|
|
+ vehiclePO.setShiftTimeUp12Json(vehicleVO.getShiftTimeUp12Json());
|
|
|
+ vehiclePO.setShiftTimeDown12(vehicleVO.getShiftTimeDown12());
|
|
|
+ vehiclePO.setShiftTimeDown12Json(vehicleVO.getShiftTimeDown12Json());
|
|
|
+ vehiclePO.setShiftTimeUp23(vehicleVO.getShiftTimeUp23());
|
|
|
+ vehiclePO.setShiftTimeUp23Json(vehicleVO.getShiftTimeUp23Json());
|
|
|
+ vehiclePO.setShiftTimeDown23(vehicleVO.getShiftTimeDown23());
|
|
|
+ vehiclePO.setShiftTimeDown23Json(vehicleVO.getShiftTimeDown23Json());
|
|
|
+ vehiclePO.setShiftTimeUp34(vehicleVO.getShiftTimeUp34());
|
|
|
+ vehiclePO.setShiftTimeUp34Json(vehicleVO.getShiftTimeUp34Json());
|
|
|
+ vehiclePO.setShiftTimeDown34(vehicleVO.getShiftTimeDown34());
|
|
|
+ vehiclePO.setShiftTimeDown34Json(vehicleVO.getShiftTimeDown34Json());
|
|
|
+ vehiclePO.setShiftTimeUp45(vehicleVO.getShiftTimeUp45());
|
|
|
+ vehiclePO.setShiftTimeUp45Json(vehicleVO.getShiftTimeUp45Json());
|
|
|
+ vehiclePO.setShiftTimeDown45(vehicleVO.getShiftTimeDown45());
|
|
|
+ vehiclePO.setShiftTimeDown45Json(vehicleVO.getShiftTimeDown45Json());
|
|
|
+ vehiclePO.setShiftTimeUp56(vehicleVO.getShiftTimeUp56());
|
|
|
+ vehiclePO.setShiftTimeUp56Json(vehicleVO.getShiftTimeUp56Json());
|
|
|
+ vehiclePO.setShiftTimeDown56(vehicleVO.getShiftTimeDown56());
|
|
|
+ vehiclePO.setShiftTimeDown56Json(vehicleVO.getShiftTimeDown56Json());
|
|
|
+ vehiclePO.setBrakeType(vehicleVO.getBrakeType());
|
|
|
+ vehiclePO.setFrontLeftWheelBrakingTorque(vehicleVO.getFrontLeftWheelBrakingTorque());
|
|
|
+ vehiclePO.setRearLeftWheelBrakingTorque(vehicleVO.getRearLeftWheelBrakingTorque());
|
|
|
+ vehiclePO.setFrontRightWheelBrakingTorque(vehicleVO.getFrontRightWheelBrakingTorque());
|
|
|
+ vehiclePO.setRearRightWheelBrakingTorque(vehicleVO.getFrontRightWheelBrakingTorque());
|
|
|
+ vehiclePO.setSteeringType(vehicleVO.getSteeringType());
|
|
|
+ vehiclePO.setSteeringGearType(vehicleVO.getSteeringGearType());
|
|
|
+ vehiclePO.setSteeringGearRatio(vehicleVO.getSteeringGearRatio());
|
|
|
+ vehiclePO.setRelationCurveRightWheelAngleAndSteeringGearOutput(vehicleVO.getRelationCurveRightWheelAngleAndSteeringGearOutput());
|
|
|
+ vehiclePO.setRelationCurveRightWheelAngleAndSteeringGearOutputJson(vehicleVO.getRelationCurveRightWheelAngleAndSteeringGearOutputJson());
|
|
|
+ vehiclePO.setRelationCurveLeftWheelAngleAndSteeringGearOutput(vehicleVO.getRelationCurveLeftWheelAngleAndSteeringGearOutput());
|
|
|
+ vehiclePO.setRelationCurveLeftWheelAngleAndSteeringGearOutputJson(vehicleVO.getRelationCurveLeftWheelAngleAndSteeringGearOutputJson());
|
|
|
+ vehiclePO.setDriverType(vehicleVO.getDriverType());
|
|
|
}
|
|
|
|
|
|
|
|
|
* list转tree结构,
|
|
|
- * @param list List<T>类型数据源
|
|
|
- * @param rootId tree的根节点id
|
|
|
- * @param getId <T>类型获取id的方法
|
|
|
- * @param getPid <T>类型获取父id的方法
|
|
|
+ *
|
|
|
+ * @param list List<T>类型数据源
|
|
|
+ * @param rootId tree的根节点id
|
|
|
+ * @param getId <T>类型获取id的方法
|
|
|
+ * @param getPid <T>类型获取父id的方法
|
|
|
* @param getChildren <T>类型获取子对象的方法
|
|
|
* @param setChildren <T>类型设置子对象的方法
|
|
|
- * @param <T> 该对象满足父子关系的相关字段:id 和 父id
|
|
|
- * @param <String> id的数据类型为String
|
|
|
+ * @param <T> 该对象满足父子关系的相关字段:id 和 父id
|
|
|
+ * @param <String> id的数据类型为String
|
|
|
* @return 树形结构的List<T>,多根型
|
|
|
*/
|
|
|
- public static <T,String> List<T> listToTree(List<T> list, String rootId, Function<T, String> getId , Function<T, String> getPid, Function<T, List<T>> getChildren, BiConsumer<T,List<T>> setChildren) {
|
|
|
+ public static <T, String> List<T> listToTree(List<T> list, String rootId, Function<T, String> getId, Function<T, String> getPid, Function<T, List<T>> getChildren, BiConsumer<T, List<T>> setChildren) {
|
|
|
List<T> treeList = new ArrayList<T>();
|
|
|
for (T node : list) {
|
|
|
if (rootId.equals(getPid.apply(node))) {
|
|
|
- treeList.add(findChildren(node, list,getId,getPid,getChildren,setChildren));
|
|
|
+ treeList.add(findChildren(node, list, getId, getPid, getChildren, setChildren));
|
|
|
}
|
|
|
}
|
|
|
return treeList;
|
|
@@ -142,31 +285,32 @@ public class ObjectUtil {
|
|
|
|
|
|
* list转tree递归调用
|
|
|
*/
|
|
|
- private static <T,String> T findChildren(T parent, List<T> list, Function<T, String> getId, Function<T, String> getPid, Function<T, List<T>> getChildren , BiConsumer<T,List<T>> setChildren) {
|
|
|
+ private static <T, String> T findChildren(T parent, List<T> list, Function<T, String> getId, Function<T, String> getPid, Function<T, List<T>> getChildren, BiConsumer<T, List<T>> setChildren) {
|
|
|
for (T node : list)
|
|
|
if (getId.apply(parent).equals(getPid.apply(node))) {
|
|
|
if (getChildren.apply(parent) == null || getChildren.apply(parent).size() == 0) {
|
|
|
setChildren.accept(parent, new ArrayList<T>());
|
|
|
}
|
|
|
- getChildren.apply(parent).add(findChildren(node, list, getId, getPid, getChildren,setChildren));
|
|
|
+ getChildren.apply(parent).add(findChildren(node, list, getId, getPid, getChildren, setChildren));
|
|
|
}
|
|
|
return parent;
|
|
|
}
|
|
|
|
|
|
|
|
|
* list转tree结构,<T>类型需要在属性上添加注解,标识树形结构:@WId 、@WParentId、 @WChildren;
|
|
|
+ *
|
|
|
* @param list
|
|
|
* @param <T>
|
|
|
* @return
|
|
|
*/
|
|
|
- public static <T> List<T> listToTree(List<T> list){
|
|
|
- if(isNull(list)){
|
|
|
+ public static <T> List<T> listToTree(List<T> list) {
|
|
|
+ if (isNull(list)) {
|
|
|
return new LinkedList<T>();
|
|
|
}
|
|
|
- return listToTree(list,"0");
|
|
|
+ return listToTree(list, "0");
|
|
|
}
|
|
|
|
|
|
- public static <T> List<T> listToTree(List<T> list,String root) {
|
|
|
+ public static <T> List<T> listToTree(List<T> list, String root) {
|
|
|
try {
|
|
|
List<T> treeList = new LinkedList<T>();
|
|
|
Class<?> tClass = null;
|
|
@@ -180,24 +324,27 @@ public class ObjectUtil {
|
|
|
Method getParentId = null;
|
|
|
Method getChildren = null;
|
|
|
Method setChildren = null;
|
|
|
- for (Field field:fields) {
|
|
|
- String fieldName= field.getName();
|
|
|
- String firstChar = fieldName.substring(0,1);
|
|
|
- if(field.isAnnotationPresent(WId.class)){
|
|
|
- getId = tClass.getMethod("get" + fieldName.replaceFirst(firstChar,firstChar.toUpperCase()));
|
|
|
- };
|
|
|
- if(field.isAnnotationPresent(WParentId.class)){
|
|
|
- getParentId = tClass.getMethod("get" + fieldName.replaceFirst(firstChar,firstChar.toUpperCase()));
|
|
|
- };
|
|
|
- if(field.isAnnotationPresent(WChildren.class)){
|
|
|
- getChildren = tClass.getMethod("get" + fieldName.replaceFirst(firstChar,firstChar.toUpperCase()));
|
|
|
- setChildren = tClass.getMethod("set" + fieldName.replaceFirst(firstChar,firstChar.toUpperCase()),List.class);
|
|
|
- };
|
|
|
+ for (Field field : fields) {
|
|
|
+ String fieldName = field.getName();
|
|
|
+ String firstChar = fieldName.substring(0, 1);
|
|
|
+ if (field.isAnnotationPresent(WId.class)) {
|
|
|
+ getId = tClass.getMethod("get" + fieldName.replaceFirst(firstChar, firstChar.toUpperCase()));
|
|
|
+ }
|
|
|
+ ;
|
|
|
+ if (field.isAnnotationPresent(WParentId.class)) {
|
|
|
+ getParentId = tClass.getMethod("get" + fieldName.replaceFirst(firstChar, firstChar.toUpperCase()));
|
|
|
+ }
|
|
|
+ ;
|
|
|
+ if (field.isAnnotationPresent(WChildren.class)) {
|
|
|
+ getChildren = tClass.getMethod("get" + fieldName.replaceFirst(firstChar, firstChar.toUpperCase()));
|
|
|
+ setChildren = tClass.getMethod("set" + fieldName.replaceFirst(firstChar, firstChar.toUpperCase()), List.class);
|
|
|
+ }
|
|
|
+ ;
|
|
|
}
|
|
|
|
|
|
for (T node : list) {
|
|
|
- if (root.equals((String)getParentId.invoke(node))) {
|
|
|
- treeList.add(findChildren(node, list,getId,getParentId,getChildren,setChildren));
|
|
|
+ if (root.equals((String) getParentId.invoke(node))) {
|
|
|
+ treeList.add(findChildren(node, list, getId, getParentId, getChildren, setChildren));
|
|
|
}
|
|
|
}
|
|
|
return treeList;
|
|
@@ -210,17 +357,17 @@ public class ObjectUtil {
|
|
|
|
|
|
* list转tree递归调用
|
|
|
*/
|
|
|
- private static <T> T findChildren(T parent, List<T> list, Method getId, Method getParentId, Method getChildren , Method setChildren) throws InvocationTargetException, IllegalAccessException {
|
|
|
- for (T node : list){
|
|
|
- String id = (String)getId.invoke(parent);
|
|
|
- String parentId = (String)getParentId.invoke(node);
|
|
|
- if(id.equals(parentId)){
|
|
|
+ private static <T> T findChildren(T parent, List<T> list, Method getId, Method getParentId, Method getChildren, Method setChildren) throws InvocationTargetException, IllegalAccessException {
|
|
|
+ for (T node : list) {
|
|
|
+ String id = (String) getId.invoke(parent);
|
|
|
+ String parentId = (String) getParentId.invoke(node);
|
|
|
+ if (id.equals(parentId)) {
|
|
|
List<T> children = (List<T>) getChildren.invoke(parent);
|
|
|
- if(ObjectUtil.isNull(children)){
|
|
|
+ if (ObjectUtil.isNull(children)) {
|
|
|
children = new ArrayList<T>();
|
|
|
- setChildren.invoke(parent,children);
|
|
|
+ setChildren.invoke(parent, children);
|
|
|
}
|
|
|
- children.add(findChildren(node, list,getId,getParentId,getChildren,setChildren));
|
|
|
+ children.add(findChildren(node, list, getId, getParentId, getChildren, setChildren));
|
|
|
}
|
|
|
}
|
|
|
return parent;
|