From f3605ebbb111936e7c4effed24b08399910bf2a8 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期四, 08 十二月 2022 13:39:32 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/common/service/erp/ErpSqlServer.java |   66 ++++++++++++++++++++++++++++++++-
 1 files changed, 64 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/common/service/erp/ErpSqlServer.java b/src/main/java/com/zy/common/service/erp/ErpSqlServer.java
index 37c7b15..9c2e716 100644
--- a/src/main/java/com/zy/common/service/erp/ErpSqlServer.java
+++ b/src/main/java/com/zy/common/service/erp/ErpSqlServer.java
@@ -1,6 +1,5 @@
 package com.zy.common.service.erp;
 
-import com.core.common.Cools;
 import com.zy.common.properties.ErpDbProperties;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -10,8 +9,13 @@
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Modifier;
 import java.sql.*;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -46,7 +50,7 @@
         List<T> list = new ArrayList<>();
         if (null != result) {
             for (Map<String, Object> entity : result) {
-                list.add(Cools.conver(entity, cls));
+                list.add(conver(entity, cls));
             }
         }
         return list;
@@ -67,6 +71,64 @@
     /*********************************   鏍稿績灞�   *********************************/
     /*****************************************************************************/
 
+    /**
+     * map 杞� 瀵硅薄
+     */
+    public static <T> T conver(Map<? extends String, ?> map, Class<T> cls){
+        T instance = null;
+        try {
+            Constructor<T> constructor = cls.getDeclaredConstructor();
+            boolean constructorAccessible = constructor.isAccessible();
+            constructor.setAccessible(true);
+            instance = constructor.newInstance();
+            constructor.setAccessible(constructorAccessible);
+        } catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) {
+            e.printStackTrace();
+        }
+        Class<?> prototype = cls;
+        do {
+            for (Field field : prototype.getDeclaredFields()){
+                if (Modifier.isFinal(field.getModifiers())
+                        || Modifier.isStatic(field.getModifiers())
+                        || Modifier.isTransient(field.getModifiers())){
+                    continue;
+                }
+                String fieldName = field.getName();
+                Object val = null;
+                if (map.containsKey(fieldName)){
+                    val = map.get(fieldName);
+                }
+                if (val != null){
+                    boolean fieldAccessible = field.isAccessible();
+                    field.setAccessible(true);
+                    Class<?> type = field.getType();
+                    try {
+                        if (type.equals(Date.class)) {
+                            Constructor<?> constructor = type.getDeclaredConstructor(Date.class);
+                            boolean constructorAccessible = constructor.isAccessible();
+                            constructor.setAccessible(true);
+                            field.set(instance, constructor.newInstance(val));
+                            constructor.setAccessible(constructorAccessible);
+                        } else {
+                            Constructor<?> constructor = type.getDeclaredConstructor(String.class);
+                            boolean constructorAccessible = constructor.isAccessible();
+                            constructor.setAccessible(true);
+                            field.set(instance, constructor.newInstance(String.valueOf(val)));
+                            constructor.setAccessible(constructorAccessible);
+                        }
+                    } catch (IllegalAccessException
+                            | InstantiationException
+                            | InvocationTargetException
+                            | NoSuchMethodException e) {
+                        System.err.println("convert error ===> Class["+prototype+"],Field:["+fieldName+"],Type:["+type+"],Value:["+val+"]");
+                    }
+                    field.setAccessible(fieldAccessible);
+                }
+            }
+            prototype = prototype.getSuperclass();
+        } while (!Object.class.equals(prototype));
+        return instance;
+    }
 
     private List<Map<String, Object>> executeQuery(String sql) {
         Connection conn = null;

--
Gitblit v1.9.1