From dd6687b118561100e1677e88a9c2f5842a54c531 Mon Sep 17 00:00:00 2001
From: jialh <1972868360@qq.com>
Date: 星期四, 16 四月 2026 18:14:14 +0800
Subject: [PATCH] 水电话费
---
java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 104 insertions(+), 16 deletions(-)
diff --git a/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java b/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
old mode 100644
new mode 100755
index ec1ebc7..04e27ac
--- a/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
+++ b/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
@@ -1,17 +1,19 @@
package com.java110.utils.util;
-import org.apache.commons.beanutils.BeanUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.community.CommunityDto;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
-import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.lang3.reflect.FieldUtils;
+import org.springframework.cglib.beans.BeanCopier;
+import org.springframework.cglib.beans.BeanMap;
+import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* @ClassName BeanConvertUtil
@@ -29,9 +31,9 @@
static {
ConvertUtils.register(new Converter() { //娉ㄥ唽涓�涓棩鏈熻浆鎹㈠櫒
- public Object convert(Class type, Object value) {
+ public <T> T convert(Class<T> type, Object value) {
Date date1 = null;
- if (value instanceof String) {
+ if (value instanceof String && type.getClass().equals(Date.class)) {
String date = (String) value;
SimpleDateFormat sdf = null;
if (date.contains(":")) {
@@ -44,11 +46,13 @@
} catch (ParseException e) {
e.printStackTrace();
}
- return date1;
+ return type.cast(date1);
}
- return value;
+ return null;
}
+
}, Date.class);
+
ConvertUtils.register(new Java110StringConvert(), String.class);
}
@@ -65,13 +69,64 @@
* @return 鐩爣瀵硅薄
*/
public static <T1, T2> T2 covertBean(T1 orgBean, T2 dstBean) {
-
+ if (orgBean == null) {
+ return dstBean;
+ }
try {
- BeanUtils.copyProperties(dstBean, orgBean);
+ if (orgBean instanceof Map) {
+ BeanMap beanMap = BeanMap.create(dstBean);
+ objectFieldsPutMap(dstBean, beanMap, (Map<String, Object>) orgBean);
+ return dstBean;
+ }
+ final BeanCopier beanCopier = BeanCopier.create(orgBean.getClass(), dstBean.getClass(), true);
+ beanCopier.copy(orgBean, dstBean, new Java110Converter());
} catch (Exception e) {
+ e.printStackTrace();
throw new RuntimeException("bean杞崲bean澶辫触", e);
}
return dstBean;
+ }
+
+ private static void objectFieldsPutMap(Object dstBean, BeanMap beanMap, Map<String, Object> orgMap) {
+ Field[] fields = FieldUtils.getAllFields(dstBean.getClass());
+ for (Field field : fields) {
+ String fieldName = field.getName();
+ if (!orgMap.containsKey(fieldName)) {
+ continue;
+ }
+
+ Class<?> targetType = field.getType();
+ Object value = orgMap.get(fieldName);
+ if (value == null) {
+ continue;
+ }
+
+ try {
+ // 鉁� 鏍稿績淇锛氬彧瑕佹槸 Map锛屼笖鐩爣涓嶆槸鍩虹绫诲瀷锛屽氨閫掑綊杞� DTO
+ if (value instanceof Map) {
+ // 鎺掗櫎鍩虹绫诲瀷銆佸寘瑁呯被銆丼tring銆丏ate
+ boolean isBasicType = targetType.isPrimitive()
+ || Number.class.isAssignableFrom(targetType)
+ || String.class == targetType
+ || Boolean.class == targetType
+ || Date.class == targetType;
+
+ if (!isBasicType) {
+ // 閫掑綊鍒涘缓骞惰浆鎹㈠祵濂楀璞�
+ Object nestedObj = targetType.newInstance();
+ objectFieldsPutMap(nestedObj, BeanMap.create(nestedObj), (Map<String, Object>) value);
+ value = nestedObj;
+ }
+ }
+
+ // 鍘熸湁绫诲瀷杞崲锛圫tring->Date绛夛級
+ Object convertedValue = Java110Converter.getValue(value, targetType);
+ beanMap.put(fieldName, convertedValue);
+
+ } catch (Exception ignored) {
+ // 杞崲澶辫触涓嶆姏閿欙紝淇濇寔鍘熸湁閫昏緫鍏煎
+ }
+ }
}
/**
@@ -89,7 +144,7 @@
T2 returnModel = null;
try {
returnModel = t.newInstance();
- BeanUtils.copyProperties(returnModel, orgBean);
+ covertBean(orgBean, returnModel);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("bean杞崲bean澶辫触", e);
@@ -123,15 +178,39 @@
* @return map瀵硅薄
*/
public static Map beanCovertMap(Object orgBean) {
- Map newMap = null;
+ Map<String, Object> map = new HashMap();
try {
- newMap = PropertyUtils.describe(orgBean);
+ BeanMap beanMap = BeanMap.create(orgBean);
+ for (Object key : beanMap.keySet()) {
+ map.put(key + "", beanMap.get(key));
+ }
} catch (Exception e) {
throw new RuntimeException("bean杞崲Map澶辫触", e);
}
+ return map;
+ }
- return newMap;
+ /**
+ * bean杞崲涓簃ap瀵硅薄
+ *
+ * @param orgBean 鍘熷bean
+ * @return map瀵硅薄
+ */
+ public static JSONObject beanCovertJson(Object orgBean) {
+
+ return JSONObject.parseObject(JSONObject.toJSONString(orgBean));
+ }
+
+ /**
+ * bean杞崲涓簃ap瀵硅薄
+ *
+ * @param orgBean 鍘熷bean
+ * @return map瀵硅薄
+ */
+ public static JSONArray beanCovertJSONArray(Object orgBean) {
+
+ return JSONArray.parseArray(JSONArray.toJSONStringWithDateFormat(orgBean, "yyyy-MM-dd HH:mm:ss"));
}
@@ -150,4 +229,13 @@
}
return newMaps;
}
+ public static List<Map<String, Object>> beanCovertMapListC(List<CommunityDto> orgBeans) {
+ List<Map<String, Object>> newMaps = new ArrayList<Map<String, Object>>();
+ Map<String, Object> newMap = null;
+ for (Object orgbean : orgBeans) {
+ newMap = beanCovertMap(orgbean);
+ newMaps.add(newMap);
+ }
+ return newMaps;
+ }
}
--
Gitblit v1.8.0