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 |   85 +++++++++++++++++++++++++++++++-----------
 1 files changed, 62 insertions(+), 23 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
index 840961f..04e27ac 100755
--- 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,11 +1,11 @@
 package com.java110.utils.util;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import org.apache.commons.beanutils.BeanUtils;
+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;
@@ -13,12 +13,7 @@
 import java.lang.reflect.Field;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * @ClassName BeanConvertUtil
@@ -36,7 +31,7 @@
     static {
         ConvertUtils.register(new Converter() { //娉ㄥ唽涓�涓棩鏈熻浆鎹㈠櫒
 
-        	public <T> T convert(Class<T> type, Object value) {
+            public <T> T convert(Class<T> type, Object value) {
                 Date date1 = null;
                 if (value instanceof String && type.getClass().equals(Date.class)) {
                     String date = (String) value;
@@ -74,13 +69,13 @@
      * @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);
-                //beanMap.putAll((Map)orgBean);
-                objectFieldsPutMap(dstBean, beanMap, (Map) orgBean);
+                objectFieldsPutMap(dstBean, beanMap, (Map<String, Object>) orgBean);
                 return dstBean;
             }
             final BeanCopier beanCopier = BeanCopier.create(orgBean.getClass(), dstBean.getClass(), true);
@@ -92,21 +87,45 @@
         return dstBean;
     }
 
-    private static void objectFieldsPutMap(Object dstBean, BeanMap beanMap, Map<String,Object> orgMap) {
-        //Field[] fields = dstBean.getClass().getDeclaredFields();
+    private static void objectFieldsPutMap(Object dstBean, BeanMap beanMap, Map<String, Object> orgMap) {
         Field[] fields = FieldUtils.getAllFields(dstBean.getClass());
         for (Field field : fields) {
-            if (!orgMap.containsKey(field.getName())) {
+            String fieldName = field.getName();
+            if (!orgMap.containsKey(fieldName)) {
                 continue;
             }
-            Class<?> dstClass = field.getType();
-            //System.out.println("瀛楁绫诲瀷" + dstClass);
 
-            Object value = orgMap.get(field.getName());
-            //String 杞琩ate
-            Object tmpValue = Java110Converter.getValue(value, dstClass);
-            //System.out.println("tmpValue"+value.toString());
-            beanMap.put(field.getName(), tmpValue);
+            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) {
+                // 杞崲澶辫触涓嶆姏閿欙紝淇濇寔鍘熸湁閫昏緫鍏煎
+            }
         }
     }
 
@@ -183,6 +202,17 @@
         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"));
+    }
+
 
     /**
      * bean闆嗗悎杞崲涓簃ap瀵硅薄闆嗗悎
@@ -199,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