From a13255b4129ee8a7a7b7e1ecd8e02dd2c78f7c17 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 16 一月 2025 16:19:20 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java |  541 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 349 insertions(+), 192 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
index b797540..367f7e0 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/util/WebUtil.java
@@ -33,7 +33,6 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.servlet.http.HttpServletRequest;
-import java.beans.IntrospectionException;
 import java.beans.PropertyDescriptor;
 import java.lang.reflect.*;
 import java.math.BigDecimal;
@@ -147,9 +146,23 @@
 	 * @param beanClass Bean鐨勭被
 	 * @return 浠庡垪琛ㄩ噷鑾峰彇绗竴涓璞�
 	 */
-	public static <T> T getFirstObjectFromJson(String jsonString,Class<T> beanClass){
+	public static <T> T getFirstObjectFromJsonArray(String jsonString,Class<T> beanClass){
 		if(!isNull(jsonString)) {
 			return JSONObject.parseArray(jsonString, beanClass).get(0);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * 浠巎son瀛楃涓蹭腑鑾峰彇绗竴涓璞�
+	 * @param jsonString json鐨勫瓧绗︿覆
+	 * @param beanClass Bean鐨勭被
+	 * @return 浠庡垪琛ㄩ噷鑾峰彇绗竴涓璞�
+	 */
+	public static <T> List<T> getObjectListFromJsonArray(String jsonString,Class<T> beanClass){
+		if(!isNull(jsonString)) {
+			return JSONObject.parseArray(jsonString, beanClass);
 		} else {
 			return null;
 		}
@@ -303,7 +316,7 @@
 			String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat);
 			if(StringUtils.isNotBlank(jsonString)) {
 				JSONObject jsonObject = JSONObject.parseObject(jsonString);
-				if(jsonObject!=null){
+				if(jsonObject != null){
 					for(String key : jsonObject.keySet()){
 						map.put(key,jsonObject.get(key));
 					}
@@ -324,7 +337,7 @@
 			String jsonString = JSONObject.toJSONStringWithDateFormat(o, VciDateUtil.DateTimeMillFormat, SerializerFeature.WriteDateUseDateFormat);
 			if(StringUtils.isNotBlank(jsonString)) {
 				JSONObject jsonObject = JSONObject.parseObject(jsonString);
-				if(jsonObject!=null){
+				if(jsonObject != null){
 					for(String key : jsonObject.keySet()){
 						map.put(key,jsonObject.getString(key));
 					}
@@ -457,7 +470,7 @@
 			Object key = it.next();
 			String newKey = key.toString().toLowerCase();
 			Object value = map.get(key);
-			if(value !=null){
+			if(value != null){
 				if(value instanceof String && WebUtil.isNotNull(value.toString())){
 					unNullMap.put(newKey, value);
 				}else if(!(value instanceof String)){
@@ -476,7 +489,7 @@
     public static Map<String,String> getReferAttrName(Class c){
     	Map<String,String> fieldMap = new HashMap<String, String>();
     	List<Field> allField = getAllFieldForObj(c);
-    	if(allField!=null&&allField.size()>0){
+    	if(!CollectionUtils.isEmpty(allField)){
     		for(Field field : allField){
     			if (field.isAnnotationPresent(Transient.class)){
     				//鏈夊弬鐓ф垨鑰呮灇涓�
@@ -508,7 +521,7 @@
 	public static List<String> getReferBoAttrName(Class c,boolean isNotHasEnum){
     	List<String> fieldMap = new ArrayList<String>();
     	List<Field> allField = getAllFieldForObj(c);
-    	if(allField!=null&&allField.size()>0){
+    	if(!CollectionUtils.isEmpty(allField)){
     		for(Field field : allField){
     			if (field.isAnnotationPresent(Transient.class)){
     				//鏈夊弬鐓ф垨鑰呮灇涓�
@@ -524,18 +537,18 @@
     }
     
     /**
-     * 鑾峰彇瀵硅薄涓庝笟鍔$被鍨嬮噷鐨勫睘鎬ф槧灏�
-     * @param c 瀵硅薄鎵�灞炵被
-     * @return Map<String,String> 涓氬姟绫诲瀷鐨勫瓧娈碉細瀵硅薄涓婄殑灞炴��
+     * 鑾峰彇DO瀵硅薄涓庝笟鍔$被鍨嬮噷鐨勫睘鎬ф槧灏�
+     * @param c DO瀵硅薄鎵�灞炵被
+     * @return Map<String,String> 涓氬姟绫诲瀷鐨勫瓧娈�(key)锛欴O瀵硅薄涓婄殑灞炴��(value)
      */
-    public static Map<String/*涓氬姟绫诲瀷涓殑瀛楁*/,String/*瀵硅薄涓婄殑灞炴��*/> getFieldNameMap(Class c){
+    public static Map<String/*涓氬姟绫诲瀷涓殑瀛楁*/,String/*DO瀵硅薄涓婄殑灞炴��*/> getFieldNameMap(Class c){
     	Map<String,String> fieldMap = new HashMap<String, String>();
     	List<Field> allField = getAllFieldForObj(c);
-    	if(allField!=null&&allField.size()>0){
+    	if(!CollectionUtils.isEmpty(allField)){
     		for(Field field : allField){
     			if(!field.getName().equals("serialVersionUID")){
 	    			if(!field.isAnnotationPresent(Transient.class) ){
-	    				String clientBoAttrName = getCboAttrNameFromField(field,c);
+	    				String clientBoAttrName = getCboAttrNameFromField(field, c);
 	    				fieldMap.put(clientBoAttrName, field.getName());
 	    				if(field.isAnnotationPresent(VciUseEnum.class)){
 	    					//杩欎釜鏄灇涓撅紝闇�瑕�
@@ -555,10 +568,10 @@
     		}
     	}
 		if(!CollectionUtils.isEmpty(fieldMap)){
-			//鐪嬬湅鏈夋病鏈塶ull
+			//鐪嬬湅鏈夋病鏈塶ull锛岃繃婊ゆ帀value涓簄ull鐨�
 			Map<String,String> fieldMapNotNull = new HashMap<>();
 			fieldMap.forEach((key,value)->{
-				if(value!=null){
+				if(value != null){
 					fieldMapNotNull.put(key,value);
 				}
 			});
@@ -608,14 +621,14 @@
 		if(!isFindColumn){
 			//鎵句竴涓婫et鏂规硶涓�..set鏂规硶涓婅偗瀹氭槸涓嶆敮鎸佺殑锛�
 			Method getMethod = getGetmethod(c, field);
-			if(getMethod!=null && !getMethod.isAnnotationPresent(Transient.class)){
+			if(getMethod != null && !getMethod.isAnnotationPresent(Transient.class)){
 				if(getMethod.isAnnotationPresent(Column.class)){
 					String name = ((Column)getMethod.getAnnotation(Column.class)).name();
 					if(isNotNull(name)){
 						clientBoAttrName = name.toLowerCase();
 					}
 				}
-			}else if(getMethod!=null && getMethod.isAnnotationPresent(Transient.class)){
+			}else if(getMethod != null && getMethod.isAnnotationPresent(Transient.class)){
 				//璇存槑涓嶆槸鎸佷箙鍖栫殑灞炴�э紝浣嗘槸浠庡钩鍙颁腑鏌ヨ鍑烘潵鍚庡彲鑳藉緱闇�瑕佹樉绀�
 				String referColumn = ((Transient)field.getAnnotation(Transient.class)).referColumn();
 				if(isNotNull(referColumn)){
@@ -623,7 +636,9 @@
 				}
 			}
 		}
-		return VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP.getOrDefault(clientBoAttrName.toLowerCase(Locale.ROOT),clientBoAttrName);
+		//濡傛灉鐗堟湰鏈搴忓彿鐨勫睘鎬э紝闇�瑕佷粠灞炴�х殑鏄犲皠涓紝鑾峰彇涓氬姟绫诲瀷涓殑瀛楁鍚嶇О
+		clientBoAttrName = VciQueryWrapperForDO.BASEMODEL_CBO_FIELD_MAP.getOrDefault(clientBoAttrName.toLowerCase(Locale.ROOT),clientBoAttrName);
+		return clientBoAttrName;
     }
     
     /**
@@ -653,7 +668,7 @@
      */
     public static Field getPkFieldForObj(Class c){
     	List<Field> allField = getAllFieldForObj(c);
-    	if(allField!=null&&allField.size()>0){
+    	if(!CollectionUtils.isEmpty(allField)){
     		for(Field field : allField){
     			if(field.isAnnotationPresent(Id.class)){
     				return  field;
@@ -676,7 +691,7 @@
 	 */
 	public static Field getTsField(Class c){
     	List<Field> allField = getAllFieldForObj(c);
-    	if(allField!=null&&allField.size()>0){
+    	if(!CollectionUtils.isEmpty(allField)){
     		for(Field field : allField){
     			if(field.getName().equals("ts")){
     				return  field;
@@ -707,10 +722,10 @@
 	 */
 	public static Field getFieldForObject(String fieldName,Class c){
     	List<Field> allField = getAllFieldForObj(c);
-    	if(allField!=null&&allField.size()>0){
+    	if(!CollectionUtils.isEmpty(allField)){
     		for(Field field : allField){
     			if(field.getName().toLowerCase().equalsIgnoreCase(fieldName.toLowerCase())){
-    				return  field;
+    				return field;
     			}
     		}
     	}
@@ -748,12 +763,12 @@
      * @return 鏂规硶
      */
     public static Method getSetmethod(Class c,String fieldName){
-    	if(c!=null&&isNotNull(fieldName)){
+    	if(c != null && isNotNull(fieldName)){
     		try {
     			PropertyDescriptor pd = new PropertyDescriptor(fieldName, c);
 				return pd.getWriteMethod();
-			} catch (SecurityException e) {
-			} catch (IntrospectionException e) {
+			} catch (Exception e) {
+				//TODO 涓嶅仛澶勭悊
 			}
     	}
     	return null;
@@ -770,8 +785,8 @@
     		try {
     			PropertyDescriptor pd = new PropertyDescriptor(fieldName, c);
 				return pd.getReadMethod();
-			} catch (SecurityException e) {
-			} catch (IntrospectionException e) {
+			} catch (Exception e) {
+				//TODO 涓嶅仛浠讳綍澶勭悊
 			}
     	}
     	return null;
@@ -813,89 +828,83 @@
      * @param value 灞炴�у��
      */
     public static void setValueForFieldFromCbo(String fieldName,Object obj,String value){
+		System.out.println("fieldName锛�"+fieldName+"锛寁alue锛�"+value);
 		try{
 			Field field = getFieldForObject(fieldName,obj);
-			if(field!=null){
-				 field.setAccessible(true);
-	                Method setMethod = getSetmethod(field.getDeclaringClass(), fieldName);
-	                if(setMethod ==null) {
-	                		logger.error(obj.getClass().getName() + "涓睘鎬�" + fieldName + "娌℃湁setter鏂规硶");
-	                }
-	                Class type = field.getType();
-	                //浠庡钩鍙拌鍙栧埌鐨勫�间笉浼氫负null锛屼负绌烘椂涓�""锛涙墍浠ヤ笉澶勭悊绌哄��
-	                if(type.equals(int.class) || type.equals(Integer.class)){
-	                    int valueObj = getInt(value);
-	                    if(setMethod !=null) {
-	                        setMethod.invoke(obj,valueObj);
-	                    }else{
-	                        field.set(obj,valueObj);
-	                    }
-	                }else if(type.equals(float.class) || type.equals(Float.class)){
-	                    float valueObj = getFloat(value);
-	                    if(setMethod !=null) {
-	                        setMethod.invoke(obj, valueObj);
-	                    }else{
-	                        field.set(obj,valueObj);
-	                    }
-	                }else if(type.equals(long.class) || type.equals(Long.class)){
-	                    long valueObj = getLong(value);
-	                    if(setMethod !=null) {
-	                        setMethod.invoke(obj, valueObj);
-	                    }else{
-	                        field.set(obj,valueObj);
-	                    }
-	                }else if(type.equals(Double.class) || type.equals(double.class)){
-	                    double valueObj = getDouble(value);
-	                    if(setMethod !=null) {
-	                        setMethod.invoke(obj, valueObj);
-	                    }else{
-	                        field.set(obj,valueObj);
-	                    }
-	                    //浠庡钩鍙颁腑鏌ヨ鍑烘潵灏变笉鐢ㄥ鐞嗙簿搴︿簡锛屽洜涓哄钩鍙颁細鑷澶勭悊
-	                }else if(type.equals(Short.class) || type.equals(short.class)){
-	                	short valueObject = getShort(value);
-						if(setMethod !=null) {
-							setMethod.invoke(obj, valueObject);
-						}else{
-							field.set(obj,valueObject);
-						}
-					}else if(type.equals(Date.class)){
-	                    //骞冲彴瀹為檯瀛樺偍鐨勯兘鏄疶imestamp,涓嶈鏄棩鏈燂紝鏃ユ湡鏃堕棿锛岄兘鏄�傚鏋滀粎鏄椂闂达紝闇�瑕佺敤瀛楃涓叉潵瀛樺偍銆�
-	                    Date d = null;
-	                    if(StringUtils.isNotBlank(value)){
-	                    		try {
-								if (value.indexOf("-") > -1 && value.indexOf(".") > -1 && value.indexOf(" ") > -1 && value.substring(value.lastIndexOf(".") + 1).length() == 9) {
-									//2013-4-19.14.5. 45. 734000000  杩欑鏍煎紡锛岃繖涓湪浣跨敤SQL璇彞鐩存帴鏌ヨ鍑烘椂闂村瓧娈电殑鏃跺�欏氨浼氭樉绀烘垚杩欐牱
-									String ymd = value.substring(0, value.indexOf("."));
-									value = value.substring(value.indexOf(".") + 1);
-									if (value.indexOf(".") > -1) {
-										String hms = value.substring(0, value.lastIndexOf("."));
-										String nano = value.substring(value.lastIndexOf(".") + 1).trim();
-										hms = hms.replace(".", ":").replace(" ", "");
-										Date tempDate = VciDateUtil.str2Date(ymd + " " + hms, "yyyy-M-d h:m:s");
-										if (tempDate != null) {
-											Timestamp ts = Timestamp.valueOf(VciDateUtil.date2Str(tempDate, VciDateUtil.DateTimeFormat) + "." + nano);
-											d = ts;
-										}
+			if(field != null){
+				field.setAccessible(true);
+				Method setMethod = getSetmethod(field.getDeclaringClass(), fieldName);
+				if(setMethod == null) {
+					logger.error(obj.getClass().getName() + "涓睘鎬�" + fieldName + "娌℃湁setter鏂规硶");
+				}
+				Class type = field.getType();
+				//浠庡钩鍙拌鍙栧埌鐨勫�间笉浼氫负null锛屼负绌烘椂涓�""锛涙墍浠ヤ笉澶勭悊绌哄��
+				if(type.equals(int.class) || type.equals(Integer.class)){
+					int valueObj = getInt(value);
+					if(setMethod != null) {
+						setMethod.invoke(obj,valueObj);
+					}else{
+						field.set(obj,valueObj);
+					}
+				}else if(type.equals(float.class) || type.equals(Float.class)){
+					float valueObj = getFloat(value);
+					if(setMethod != null) {
+						setMethod.invoke(obj, valueObj);
+					}else{
+						field.set(obj,valueObj);
+					}
+				}else if(type.equals(long.class) || type.equals(Long.class)){
+					long valueObj = getLong(value);
+					if(setMethod != null) {
+						setMethod.invoke(obj, valueObj);
+					}else{
+						field.set(obj,valueObj);
+					}
+				}else if(type.equals(Double.class) || type.equals(double.class)){
+					double valueObj = getDouble(value);
+					if(setMethod != null) {
+						setMethod.invoke(obj, valueObj);
+					}else{
+						field.set(obj,valueObj);
+					}
+					//浠庡钩鍙颁腑鏌ヨ鍑烘潵灏变笉鐢ㄥ鐞嗙簿搴︿簡锛屽洜涓哄钩鍙颁細鑷澶勭悊
+				}else if(type.equals(Short.class) || type.equals(short.class)){
+					short valueObject = getShort(value);
+					if(setMethod != null) {
+						setMethod.invoke(obj, valueObject);
+					}else{
+						field.set(obj,valueObject);
+					}
+				}else if(type.equals(Date.class)){
+					//骞冲彴瀹為檯瀛樺偍鐨勯兘鏄疶imestamp,涓嶈鏄棩鏈燂紝鏃ユ湡鏃堕棿锛岄兘鏄�傚鏋滀粎鏄椂闂达紝闇�瑕佺敤瀛楃涓叉潵瀛樺偍銆�
+					Date d = null;
+					if(StringUtils.isNotBlank(value)){
+							try {
+							if (value.indexOf("-") > -1 && value.indexOf(".") > -1 && value.indexOf(" ") > -1 && value.substring(value.lastIndexOf(".") + 1).length() == 9) {
+								//2013-4-19.14.5. 45. 734000000  杩欑鏍煎紡锛岃繖涓湪浣跨敤SQL璇彞鐩存帴鏌ヨ鍑烘椂闂村瓧娈电殑鏃跺�欏氨浼氭樉绀烘垚杩欐牱
+								String ymd = value.substring(0, value.indexOf("."));
+								value = value.substring(value.indexOf(".") + 1);
+								if (value.indexOf(".") > -1) {
+									String hms = value.substring(0, value.lastIndexOf("."));
+									String nano = value.substring(value.lastIndexOf(".") + 1).trim();
+									hms = hms.replace(".", ":").replace(" ", "");
+									Date tempDate = VciDateUtil.str2Date(ymd + " " + hms, "yyyy-M-d h:m:s");
+									if (tempDate != null) {
+										Timestamp ts = Timestamp.valueOf(VciDateUtil.date2Str(tempDate, VciDateUtil.DateTimeFormat) + "." + nano);
+										d = ts;
 									}
-								} else if (value.matches("\\d+\\.?\\d*")) {
-									//杩樻湁鍧戠埞鐨勬槸缁欑殑long鍨嬬殑瀛楃涓�
-									d = new Date();
-									d.setTime(getLong(value));
-								} else {
-									if(field.isAnnotationPresent(VciFieldType.class)) {
-										VciFieldType vciFieldType = field.getAnnotation(VciFieldType.class);
-										if(VciFieldTypeEnum.VTDate.equals(vciFieldType.value())) {
-											d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat);
-										}else if(VciFieldTypeEnum.VTDateTime.equals(vciFieldType.value())){
-											d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat);
-										}else {
-											if(value.indexOf("-") > -1 &&value.length() == 10 ) {
-												d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat);
-											}else {
-												d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat);
-											}
-										}
+								}
+							} else if (value.matches("\\d+\\.?\\d*")) {
+								//杩樻湁鍧戠埞鐨勬槸缁欑殑long鍨嬬殑瀛楃涓�
+								d = new Date();
+								d.setTime(getLong(value));
+							} else {
+								if(field.isAnnotationPresent(VciFieldType.class)) {
+									VciFieldType vciFieldType = field.getAnnotation(VciFieldType.class);
+									if(VciFieldTypeEnum.VTDate.equals(vciFieldType.value())) {
+										d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat);
+									}else if(VciFieldTypeEnum.VTDateTime.equals(vciFieldType.value())){
+										d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat);
 									}else {
 										if(value.indexOf("-") > -1 &&value.length() == 10 ) {
 											d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat);
@@ -903,34 +912,41 @@
 											d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat);
 										}
 									}
-								}
-							} catch (Exception e) {
-								try {
-									d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat);
-								} catch (Exception e1) {
-
+								}else {
+									if(value.indexOf("-") > -1 &&value.length() == 10 ) {
+										d = VciDateUtil.str2Date(value, VciDateUtil.DateFormat);
+									}else {
+										d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat);
+									}
 								}
 							}
-	                    }
-	                    try {
-	                        if(d != null ){
-	                            if(setMethod !=null) {
-	                                setMethod.invoke(obj, d);
-	                            }else{
-	                                field.set(obj,d);
-	                            }
-	                        }
-	                    } catch (Exception e) {
-	                    }
-	                }else if(type.equals(String.class)){
-	                    if(setMethod != null) {
-	                        setMethod.invoke(obj, value);
-	                    }else{
-	                        field.set(obj,value);
-	                    }
-	                }else{
-	                    logger.info("WebUtil.setValueForFieldForCbo:涓嶆敮鎸佺殑绫诲瀷" + type.toString());
-	                }
+						} catch (Exception e) {
+							try {
+								d = VciDateUtil.str2Date(value, VciDateUtil.DateTimeMillFormat);
+							} catch (Exception e1) {
+
+							}
+						}
+					}
+					try {
+						if(d != null ){
+							if(setMethod !=null) {
+								setMethod.invoke(obj, d);
+							}else{
+								field.set(obj,d);
+							}
+						}
+					} catch (Exception e) {
+					}
+				}else if(type.equals(String.class)){
+					if(setMethod != null) {
+						setMethod.invoke(obj, value);
+					}else{
+						field.set(obj,value);
+					}
+				}else{
+					logger.info("WebUtil.setValueForFieldForCbo:涓嶆敮鎸佺殑绫诲瀷" + type.toString());
+				}
 			}
 		}catch (Exception e) {
 			if(logger.isErrorEnabled()){
@@ -1009,7 +1025,7 @@
 					setMethod.invoke(targetObject, value);
 				}else{
 					Field field = getFieldForObject(fieldName, targetObject);
-					if(field !=null){
+					if(field != null){
 						field.setAccessible(true);
 						field.set(targetObject, value);
 					}
@@ -1040,12 +1056,12 @@
 		if(isNotNull(fieldName)){
 			try {
 				Method getMethod = getGetmethod(sourceObject.getClass(), fieldName);
-				if(getMethod !=null){
+				if(getMethod != null){
 					return getMethod.invoke(sourceObject);
 				}else{
 					//璇存槑娌℃湁璁剧疆getter锛屾瘮濡侭O鍜孡O瀵硅薄杩欑
 					Field field = getFieldForObject(fieldName, sourceObject);
-					if(field !=null){
+					if(field != null){
 						field.setAccessible(true);
 						return field.get(sourceObject);
 					}
@@ -1089,7 +1105,7 @@
 	 * @param fieldAttrMap 灞炴�ф槧灏�
 	 */
 	public static void copyValueToObjectFromCbos(BusinessObject cbo,Object obj,Map<String,String> fieldAttrMap){
-		if(cbo!=null){
+		if(cbo != null){
 			copyValueToObjectFromBos(cbo,obj,fieldAttrMap);
 		}
 	}
@@ -1140,7 +1156,7 @@
 	 * @param bo 涓氬姟鏁版嵁
 	 * @param obj 瀵硅薄
 	 */
-	public static void copyValueToObjectFromBos(com.vci.corba.omd.data.BusinessObject bo ,Object obj){
+	public static void copyValueToObjectFromBos(BusinessObject bo ,Object obj){
 		copyValueToObjectFromBos(bo,obj,null);
 	}
 
@@ -1150,59 +1166,66 @@
 	 * @param obj 瀵硅薄
 	 * @param fieldAttrMap 灞炴�ф槧灏�
 	 */
-    public static void copyValueToObjectFromBos(com.vci.corba.omd.data.BusinessObject bo , Object obj, Map<String,String> fieldAttrMap){
-    	if(bo!=null && obj != null){
+    public static void copyValueToObjectFromBos(BusinessObject bo , Object obj, Map<String,String> fieldAttrMap){
+    	if(bo != null && obj != null){
     		//鍏堟妸鎵�鏈夌殑瀛楁鏄犲皠鎵惧埌
     		if(fieldAttrMap == null){
     			fieldAttrMap = getFieldNameMap(obj.getClass());
     		}
-			com.vci.corba.omd.data.AttributeValue[] newAList = bo.newAttrValList;
-			com.vci.corba.omd.data.AttributeValue[] hisAList = bo.hisAttrValList;
+			AttributeValue[] newAList = bo.newAttrValList;
+			AttributeValue[] hisAList = bo.hisAttrValList;
 			//瑕佸厛鎶夿O瀵硅薄涓婄殑鍊兼嫹璐濊繃鍘�
 			List<Field> boFields = getAllFieldForObj(bo.getClass());
-	
-			if(boFields!=null){
-				for(Field field :boFields){
-					if(fieldAttrMap.containsKey(field.getName().toLowerCase())){
+			if(!CollectionUtils.isEmpty(boFields)){
+				for(Field field : boFields){
+					if(VciQueryWrapperForDO.BASEMODEL_CBO_FIELD_MAP.containsValue(field.getName().toLowerCase())){
 						//璇存槑杩欎釜灏辨槸鍦˙O瀵硅薄涓婄殑
 						Object value = getValueFromField(field.getName(), bo);
-						if(value !=null){
-							setValueForFieldFromCbo(fieldAttrMap.get(field.getName().toLowerCase()), obj, getStringValueFromObject(value));
+						if(value != null){
+							//BusinessObject鍜孊aseModel涓紝鏄惁绗竴鐗堟湰鐗堟鐨勫睘鎬э紝闇�瑕佸崟鐙鐞�
+							String fieldValue;
+							if(VciQueryWrapperForDO.BASE_MODEL_COMPATIBILITY_MAP.containsValue(field.getName().toLowerCase())){
+								fieldValue = getStringValueFromObject(value).equalsIgnoreCase("true")?"1":"0";
+							}else{
+								fieldValue = getStringValueFromObject(value);
+							}
+							String fieldName = fieldAttrMap.get(field.getName().toLowerCase());
+							if(StringUtils.isNotBlank(fieldName)){
+								setValueForFieldFromCbo(fieldName, obj, fieldValue);
+							}
 						}
 					}
 				}
 			}
-			if(newAList!=null&&newAList.length>0){
+			if(newAList != null && newAList.length > 0){
 				for(int i = 0 ; i < newAList.length;i++){
-					com.vci.corba.omd.data.AttributeValue av = newAList[i];
-					String attrName = av.attrName.toLowerCase();
+					AttributeValue av = newAList[i];
+					String attrName = av.name.toLowerCase();
 					if(fieldAttrMap.containsKey(attrName)) {
 						String fieldName = fieldAttrMap.get(attrName);
-						setValueForFieldFromCbo(fieldName, obj, av.attrVal);
+						setValueForFieldFromCbo(fieldName, obj, av.value);
 					}else{
 						fieldAttrMap.forEach((cboField,fieldName)->{
-							if(fieldName!=null && fieldName.equalsIgnoreCase(attrName) && cboField.contains(".")){
+							if(fieldName != null && fieldName.equalsIgnoreCase(attrName) && cboField.contains(".")){
 								//鍙傜収鐨勬椂鍊�
-								setValueForFieldFromCbo(fieldName, obj, av.attrVal);
-								return;
+								setValueForFieldFromCbo(fieldName, obj, av.value);
 							}
 						});
 					}
 				}
 			}
-			if(hisAList!=null&&hisAList.length>0){
+			if(hisAList != null && hisAList.length > 0){
 				for(int i = 0 ; i < hisAList.length;i++){
-					com.vci.corba.omd.data.AttributeValue av = hisAList[i];
-					String attrName = av.attrName.toLowerCase();
+					AttributeValue av = hisAList[i];
+					String attrName = av.name.toLowerCase();
 					String fieldName = fieldAttrMap.get(attrName);
-					if(fieldName!=null){
-						setValueForFieldFromCbo(fieldName, obj, av.attrVal);
+					if(fieldName != null){
+						setValueForFieldFromCbo(fieldName, obj, av.value);
 					}else{
 						fieldAttrMap.forEach((cboField,field)->{
-							if(field!=null && field.equalsIgnoreCase(attrName) && cboField.contains(".")){
+							if(field != null && field.equalsIgnoreCase(attrName) && cboField.contains(".")){
 								//鍙傜収鐨勬椂鍊�
-								setValueForFieldFromCbo(field, obj, av.attrVal);
-								return;
+								setValueForFieldFromCbo(field, obj, av.value);
 							}
 						});
 					}
@@ -1217,7 +1240,7 @@
 	 * @param map map
 	 */
 	public static void copyValueToMapFromCbos(BusinessObject cbo,Map<String,String> map){
-    	if(cbo!=null){
+    	if(cbo != null){
     		copyValueToMapFromBos(cbo,map);
 		}
     }
@@ -1227,23 +1250,23 @@
 	 * @param bo 涓氬姟鏁版嵁
 	 * @param map map
 	 */
-    public static void copyValueToMapFromBos(com.vci.corba.omd.data.BusinessObject bo, Map<String,String> map){
+    public static void copyValueToMapFromBos(BusinessObject bo, Map<String,String> map){
     	if(bo!=null ){
     		//鍏堟妸鎵�鏈夌殑瀛楁鏄犲皠鎵惧埌
-			com.vci.corba.omd.data.AttributeValue[] newAList = bo.newAttrValList;
-			com.vci.corba.omd.data.AttributeValue[] hisAList = bo.hisAttrValList;
-			if(hisAList!=null&&hisAList.length>0){//
+			AttributeValue[] newAList = bo.newAttrValList;
+			AttributeValue[] hisAList = bo.hisAttrValList;
+			if(hisAList != null && hisAList.length > 0){//
 				for(int i = 0 ; i < hisAList.length;i++){
-					com.vci.corba.omd.data.AttributeValue av = hisAList[i];
-					String attrName = av.attrName.toLowerCase();
-					map.put(attrName, av.attrVal);
+					AttributeValue av = hisAList[i];
+					String attrName = av.name.toLowerCase();
+					map.put(attrName, av.value);
 				}
 			}
-			if(newAList!=null&&newAList.length>0){//NEW鐨勪紭鍏堢骇楂樹簺
+			if(newAList != null && newAList.length > 0){//NEW鐨勪紭鍏堢骇楂樹簺
 				for(int i = 0 ; i < newAList.length;i++){
-					com.vci.corba.omd.data.AttributeValue av = newAList[i];
-					String attrName = av.attrName.toLowerCase();
-					map.put(attrName, av.attrVal);
+					AttributeValue av = newAList[i];
+					String attrName = av.name.toLowerCase();
+					map.put(attrName, av.value);
 				}
 			}
 		}
@@ -1276,15 +1299,15 @@
 			if(hisAList!=null&&hisAList.length>0){
 				for(int i = 0 ; i < hisAList.length;i++){
 					AttributeValue av = hisAList[i];
-					String attrName = av.attrName.toLowerCase();
-					map.put(attrName, av.attrVal);
+					String attrName = av.name.toLowerCase();
+					map.put(attrName, av.value);
 				}
 			}
 			if(newAList!=null&&newAList.length>0){
 				for(int i = 0 ; i < newAList.length;i++){
 					AttributeValue av = newAList[i];
-					String attrName = av.attrName.toLowerCase();
-					map.put(attrName, av.attrVal);
+					String attrName = av.name.toLowerCase();
+					map.put(attrName, av.value);
 				}
 			}
     	}
@@ -1327,18 +1350,18 @@
 			if(newAList!=null&&newAList.length>0){
 				for(int i = 0 ; i < newAList.length;i++){
 					AttributeValue av = newAList[i];
-					String attrName = av.attrName.toLowerCase();
+					String attrName = av.name.toLowerCase();
 					String fieldName = fieldAttrMap.get(attrName);
-					setValueForFieldFromCbo(fieldName, obj, av.attrVal);//渚濈劧浣跨敤CBO鐨勫鐞嗘柟寮�
+					setValueForFieldFromCbo(fieldName, obj, av.value);//渚濈劧浣跨敤CBO鐨勫鐞嗘柟寮�
 				}
 			}
 			if(hisAList!=null&&hisAList.length>0){
 				for(int i = 0 ; i < hisAList.length;i++){
 					AttributeValue av = hisAList[i];
-					String attrName = av.attrName.toLowerCase();
+					String attrName = av.name.toLowerCase();
 					String fieldName = fieldAttrMap.get(attrName);
 					if(fieldName!=null){
-						setValueForFieldFromCbo(fieldName, obj, av.attrVal);
+						setValueForFieldFromCbo(fieldName, obj, av.value);
 					}
 				}
 			}
@@ -1358,13 +1381,132 @@
     			if(value == null){
     				value = "";
     			}
-				if(isDefaultField(key)){
-					setValueToField(key, cbo, value);
+				if(isDefaultField(key.toLowerCase())){
+					//閲嶆柊鍗曠嫭澶勭悊銆傚洜涓築aseModel鐨勫熀纭�灞炴�у拰BusinessObject涓殑鏈夋墍宸紓
+					setValueToCboField(key.toLowerCase(), cbo, value);
 				}
 				ObjectTool.setBOAttributeValue(cbo,key.toLowerCase(), value);
 			}
     	}
     }
+
+	/**
+	 * 缁橞usinessObject瀵硅薄涓殑灞炴�ц缃��
+	 * @param fieldName 琛ㄤ腑瀛楁鎴朌O瀵硅薄涓殑灞炴��
+	 * @param bo BusinessObject
+	 * @param value 灞炴�у��
+	 */
+	public static void setValueToCboField(String fieldName, BusinessObject bo, String value){
+		switch (fieldName){
+			case "oid":
+				bo.oid = value;
+				break;
+			case "revisionoid":
+				bo.revoid = value;
+				break;
+			case "nameoid":
+				bo.nameoid = value;
+				break;
+			case "btmname":
+				bo.btName = value;
+				break;
+			case "lastr":
+				bo.isLastR = "1".equals(value);
+				break;
+			case "firstr":
+				bo.isFirstR = "1".equals(value);
+				break;
+			case "lastv":
+				bo.isLastV = "1".equals(value);
+				break;
+			case "firstv":
+				bo.isFirstV = "1".equals(value);
+				break;
+			case "creator":
+				bo.creator = value;
+				break;
+			case "createtime":
+				try {
+					long createTime = Long.parseLong(value);
+					bo.createTime = createTime;
+				} catch (NumberFormatException e) {
+					try {
+						bo.createTime = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat).getTime();
+					} catch (Exception e2) {
+						//TODO
+					}
+				}
+				break;
+			case "lastmodifier":
+				bo.modifier = value;
+				break;
+			case "lastmodifytime":
+				try {
+					long lastModifyTime = Long.parseLong(value);
+					bo.modifyTime = lastModifyTime;
+				} catch (NumberFormatException e) {
+					try {
+						bo.modifyTime = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat).getTime();
+					} catch (Exception e2) {
+						//TODO
+					}
+				}
+				break;
+			case "revisionrule":
+				bo.revisionRule = value;
+				break;
+			case "versionrule":
+				bo.versionRule = value;
+				break;
+			case "revisionseq":
+				bo.revisionSeq = Short.parseShort(value);
+				break;
+			case "revisionvalue":
+				bo.revisionValue = value;
+				break;
+			case "versionseq":
+				bo.versionSeq = Short.parseShort(value);
+				break;
+			case "versionvalue":
+				bo.versionValue = value;
+				break;
+			case "lctid":
+				bo.lctId = value;
+				break;
+			case "lcstatus":
+				bo.lcStatus = value;
+				break;
+			case "ts":
+				try {
+					long ts = Long.parseLong(value);
+					bo.ts = ts;
+				} catch (NumberFormatException e) {
+					try {
+						bo.ts = VciDateUtil.str2Date(value, VciDateUtil.DateTimeFormat).getTime();
+					} catch (Exception e2) {
+						//TODO
+					}
+				}
+				break;
+			case "id":
+				bo.id = value;
+				break;
+			case "name":
+				bo.name = value;
+				break;
+			case "description":
+				bo.description = value;
+				break;
+			case "owner":
+				bo.owner = value;
+				break;
+			case "copyfromversion":
+				bo.fromVersion = value;
+				break;
+			default:
+				break;
+		}
+	}
 
 	/**
 	 * 鎷疯礉閾炬帴绫诲瀷鐨勫�煎埌map
@@ -1380,7 +1522,7 @@
     			if(value == null){
     				value = "";
     			}
-				if(isDefaultField(key)){
+				if(isDefaultField(key.toLowerCase())){
 					setValueToField(key, clo, value);
 				}else {
 					ObjectTool.setLOAttributeValue(clo,key.toLowerCase(), value);
@@ -1420,7 +1562,7 @@
     			if(value==null){
     				value = "";
     			}
-				if(isDefaultField(fieldName)){
+				if(isDefaultField(fieldName.toLowerCase())){
 					setValueToField(fieldName, cbo, value);
 				}
 				ObjectTool.setBOAttributeValue(cbo,attrName.toLowerCase(), value);
@@ -1434,8 +1576,7 @@
 	 * @return true涓洪粯璁�
 	 */
 	public static boolean isDefaultField(String fieldNames){
-		if(VciQueryWrapperForDO.BASIC_FIELD_MAP.containsKey(fieldNames) || VciQueryWrapperForDO.LIFECYCLE_MANAGE_FIELD_MAP.containsKey(fieldNames)
-		|| VciQueryWrapperForDO.REVISION_MANAGE_FIELD_MAP.containsKey(fieldNames) ) {
+		if(VciQueryWrapperForDO.BASEMODEL_CBO_FIELD_MAP.containsKey(fieldNames)) {
     		return true;
     	}
     	return false;
@@ -1494,7 +1635,7 @@
 	 * @return base寮傚父瀵硅薄
 	 */
 	public static VciBaseException getVciBaseException(PLException e){
-		return new VciBaseException(e.code, new java.lang.String[]{e.getMessage()});
+		return new VciBaseException(e.code, new String[]{e.getMessage()});
 	}
 
 	/**
@@ -1718,8 +1859,8 @@
 			for (int i = 0; i < select.getSelectItems().size(); i++) {
 				SelectItem selectItem = select.getSelectItem(i);
 				AttributeValue attributeValue = new AttributeValue();
-				attributeValue.attrName = selectItem.getAlias().getName();
-				attributeValue.attrVal	= valueArry[i];
+				attributeValue.name = selectItem.getAlias().getName();
+				attributeValue.value = valueArry[i];
 				attributeValues[i] = attributeValue;
 			}
 			BusinessObject.newAttrValList= attributeValues;
@@ -1729,4 +1870,20 @@
 		}
 		return BusinessObject;
 	}
+
+	/**
+	 * 鑾峰彇瀵硅薄涓殑灞炴�ч泦鍚堛��
+	 * @param tClass 瀵硅薄
+	 * @return 灞炴�ч泦鍚圡ap銆俴ey锛氬睘鎬у悕绉帮紝value锛氬睘鎬�
+	 */
+	public static Map<String, Field> getFieldMapForObject(Class tClass) {
+		Map<String, Field> fieldMap = new HashMap<>();
+		List<Field> allField = getAllFieldForObj(tClass);
+		if(!CollectionUtils.isEmpty(allField)){
+			for(Field field : allField){
+				fieldMap.put(field.getName(), field);
+			}
+		}
+		return fieldMap;
+	}
 }

--
Gitblit v1.9.3