From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 25 六月 2025 11:51:38 +0800 Subject: [PATCH] Merge branch 'mdc_hyjs_master' --- lxzn-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java | 695 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 695 insertions(+), 0 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java new file mode 100644 index 0000000..e4496d7 --- /dev/null +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java @@ -0,0 +1,695 @@ +package org.jeecg.common.util; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.constant.SymbolConstant; +import org.springframework.beans.BeanUtils; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.net.UnknownHostException; +import java.sql.Date; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * + * @Author 寮犱唬娴� + * + */ +@Slf4j +public class oConvertUtils { + public static boolean isEmpty(Object object) { + if (object == null) { + return (true); + } + if ("".equals(object)) { + return (true); + } + if (CommonConstant.STRING_NULL.equals(object)) { + return (true); + } + return (false); + } + + public static boolean isNotEmpty(Object object) { + if (object != null && !"".equals(object) && !object.equals(CommonConstant.STRING_NULL)) { + return (true); + } + return (false); + } + + public static String decode(String strIn, String sourceCode, String targetCode) { + String temp = code2code(strIn, sourceCode, targetCode); + return temp; + } + + @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming") + public static String StrToUTF(String strIn, String sourceCode, String targetCode) { + strIn = ""; + try { + strIn = new String(strIn.getBytes("ISO-8859-1"), "GBK"); + } catch (UnsupportedEncodingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return strIn; + + } + + private static String code2code(String strIn, String sourceCode, String targetCode) { + String strOut = null; + if (strIn == null || "".equals(strIn.trim())) { + return strIn; + } + try { + byte[] b = strIn.getBytes(sourceCode); + for (int i = 0; i < b.length; i++) { + System.out.print(b[i] + " "); + } + strOut = new String(b, targetCode); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return strOut; + } + + public static int getInt(String s, int defval) { + if (s == null || s == "") { + return (defval); + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static int getInt(String s) { + if (s == null || s == "") { + return 0; + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return 0; + } + } + + public static int getInt(String s, Integer df) { + if (s == null || s == "") { + return df; + } + try { + return (Integer.parseInt(s)); + } catch (NumberFormatException e) { + return 0; + } + } + + public static Integer[] getInts(String[] s) { + if (s == null) { + return null; + } + Integer[] integer = new Integer[s.length]; + for (int i = 0; i < s.length; i++) { + integer[i] = Integer.parseInt(s[i]); + } + return integer; + + } + + public static double getDouble(String s, double defval) { + if (s == null || s == "") { + return (defval); + } + try { + return (Double.parseDouble(s)); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static double getDou(Double s, double defval) { + if (s == null) { + return (defval); + } + return s; + } + + /*public static Short getShort(String s) { + if (StringUtil.isNotEmpty(s)) { + return (Short.parseShort(s)); + } else { + return null; + } + }*/ + + public static int getInt(Object object, int defval) { + if (isEmpty(object)) { + return (defval); + } + try { + return (Integer.parseInt(object.toString())); + } catch (NumberFormatException e) { + return (defval); + } + } + + public static Integer getInt(Object object) { + if (isEmpty(object)) { + return null; + } + try { + return (Integer.parseInt(object.toString())); + } catch (NumberFormatException e) { + return null; + } + } + + public static int getInt(BigDecimal s, int defval) { + if (s == null) { + return (defval); + } + return s.intValue(); + } + + public static Integer[] getIntegerArry(String[] object) { + int len = object.length; + Integer[] result = new Integer[len]; + try { + for (int i = 0; i < len; i++) { + result[i] = new Integer(object[i].trim()); + } + return result; + } catch (NumberFormatException e) { + return null; + } + } + + public static String getString(String s) { + return (getString(s, "")); + } + + /** + * 杞箟鎴怳nicode缂栫爜 + * @param s + * @return + */ + /*public static String escapeJava(Object s) { + return StringEscapeUtils.escapeJava(getString(s)); + }*/ + + public static String getString(Object object) { + if (isEmpty(object)) { + return ""; + } + return (object.toString().trim()); + } + + public static String getString(int i) { + return (String.valueOf(i)); + } + + public static String getString(float i) { + return (String.valueOf(i)); + } + + public static String getString(String s, String defval) { + if (isEmpty(s)) { + return (defval); + } + return (s.trim()); + } + + public static String getString(Object s, String defval) { + if (isEmpty(s)) { + return (defval); + } + return (s.toString().trim()); + } + + public static long stringToLong(String str) { + Long test = new Long(0); + try { + test = Long.valueOf(str); + } catch (Exception e) { + } + return test.longValue(); + } + + /** + * 鑾峰彇鏈満IP + */ + public static String getIp() { + String ip = null; + try { + InetAddress address = InetAddress.getLocalHost(); + ip = address.getHostAddress(); + + } catch (UnknownHostException e) { + e.printStackTrace(); + } + return ip; + } + + /** + * 鍒ゆ柇涓�涓被鏄惁涓哄熀鏈暟鎹被鍨嬨�� + * + * @param clazz + * 瑕佸垽鏂殑绫汇�� + * @return true 琛ㄧず涓哄熀鏈暟鎹被鍨嬨�� + */ + private static boolean isBaseDataType(Class clazz) throws Exception { + return (clazz.equals(String.class) || clazz.equals(Integer.class) || clazz.equals(Byte.class) || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class) || clazz.equals(Short.class) || clazz.equals(BigDecimal.class) || clazz.equals(BigInteger.class) || clazz.equals(Boolean.class) || clazz.equals(Date.class) || clazz.isPrimitive()); + } + + /** + * @param request + * IP + * @return IP Address + */ + public static String getIpAddrByRequest(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || CommonConstant.UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || CommonConstant.UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || CommonConstant.UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return ip; + } + + /** + * @return 鏈満IP + * @throws SocketException + */ + public static String getRealIp() throws SocketException { + // 鏈湴IP锛屽鏋滄病鏈夐厤缃缃慖P鍒欒繑鍥炲畠 + String localip = null; + // 澶栫綉IP + String netip = null; + + Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces(); + InetAddress ip = null; + // 鏄惁鎵惧埌澶栫綉IP + boolean finded = false; + while (netInterfaces.hasMoreElements() && !finded) { + NetworkInterface ni = netInterfaces.nextElement(); + Enumeration<InetAddress> address = ni.getInetAddresses(); + while (address.hasMoreElements()) { + ip = address.nextElement(); + // 澶栫綉IP + if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) { + netip = ip.getHostAddress(); + finded = true; + break; + } else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) { + // 鍐呯綉IP + localip = ip.getHostAddress(); + } + } + } + + if (netip != null && !"".equals(netip)) { + return netip; + } else { + return localip; + } + } + + /** + * java鍘婚櫎瀛楃涓蹭腑鐨勭┖鏍笺�佸洖杞︺�佹崲琛岀銆佸埗琛ㄧ + * + * @param str + * @return + */ + public static String replaceBlank(String str) { + String dest = ""; + if (str != null) { + String reg = "\\s*|\t|\r|\n"; + Pattern p = Pattern.compile(reg); + Matcher m = p.matcher(str); + dest = m.replaceAll(""); + } + return dest; + + } + + /** + * 鍒ゆ柇鍏冪礌鏄惁鍦ㄦ暟缁勫唴 + * + * @param substring + * @param source + * @return + */ + public static boolean isIn(String substring, String[] source) { + if (source == null || source.length == 0) { + return false; + } + for (int i = 0; i < source.length; i++) { + String aSource = source[i]; + if (aSource.equals(substring)) { + return true; + } + } + return false; + } + + /** + * 鑾峰彇Map瀵硅薄 + */ + public static Map<Object, Object> getHashMap() { + return new HashMap<>(5); + } + + /** + * SET杞崲MAP + * + * @param str + * @return + */ + public static Map<Object, Object> setToMap(Set<Object> setobj) { + Map<Object, Object> map = getHashMap(); + for (Iterator iterator = setobj.iterator(); iterator.hasNext();) { + Map.Entry<Object, Object> entry = (Map.Entry<Object, Object>) iterator.next(); + map.put(entry.getKey().toString(), entry.getValue() == null ? "" : entry.getValue().toString().trim()); + } + return map; + + } + + public static boolean isInnerIp(String ipAddress) { + boolean isInnerIp = false; + long ipNum = getIpNum(ipAddress); + /** + * 绉佹湁IP锛欰绫� 10.0.0.0-10.255.255.255 B绫� 172.16.0.0-172.31.255.255 C绫� 192.168.0.0-192.168.255.255 褰撶劧锛岃繕鏈�127杩欎釜缃戞鏄幆鍥炲湴鍧� + **/ + long aBegin = getIpNum("10.0.0.0"); + long aEnd = getIpNum("10.255.255.255"); + long bBegin = getIpNum("172.16.0.0"); + long bEnd = getIpNum("172.31.255.255"); + long cBegin = getIpNum("192.168.0.0"); + long cEnd = getIpNum("192.168.255.255"); + String localIp = "127.0.0.1"; + isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || localIp.equals(ipAddress); + return isInnerIp; + } + + private static long getIpNum(String ipAddress) { + String[] ip = ipAddress.split("\\."); + long a = Integer.parseInt(ip[0]); + long b = Integer.parseInt(ip[1]); + long c = Integer.parseInt(ip[2]); + long d = Integer.parseInt(ip[3]); + + long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; + return ipNum; + } + + private static boolean isInner(long userIp, long begin, long end) { + return (userIp >= begin) && (userIp <= end); + } + + /** + * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆� + * 濡傛灉杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓蹭负绌猴紝鍒欒繑鍥炵┖瀛楃涓层��</br> + * 渚嬪锛歨ello_world->helloWorld + * + * @param name + * 杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓� + * @return 杞崲鍚庣殑椹煎嘲寮忓懡鍚嶇殑瀛楃涓� + */ + public static String camelName(String name) { + StringBuilder result = new StringBuilder(); + // 蹇�熸鏌� + if (name == null || name.isEmpty()) { + // 娌″繀瑕佽浆鎹� + return ""; + } else if (!name.contains(SymbolConstant.UNDERLINE)) { + // 涓嶅惈涓嬪垝绾匡紝浠呭皢棣栧瓧姣嶅皬鍐� + //update-begin--Author:zhoujf Date:20180503 for锛歍ASK #2500 銆愪唬鐮佺敓鎴愬櫒銆戜唬鐮佺敓鎴愬櫒寮�鍙戜竴閫氱敤妯℃澘鐢熸垚鍔熻兘 + //update-begin--Author:zhoujf Date:20180503 for锛歍ASK #2500 銆愪唬鐮佺敓鎴愬櫒銆戜唬鐮佺敓鎴愬櫒寮�鍙戜竴閫氱敤妯℃澘鐢熸垚鍔熻兘 + return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase(); + //update-end--Author:zhoujf Date:20180503 for锛歍ASK #2500 銆愪唬鐮佺敓鎴愬櫒銆戜唬鐮佺敓鎴愬櫒寮�鍙戜竴閫氱敤妯℃澘鐢熸垚鍔熻兘 + } + // 鐢ㄤ笅鍒掔嚎灏嗗師濮嬪瓧绗︿覆鍒嗗壊 + String[] camels = name.split("_"); + for (String camel : camels) { + // 璺宠繃鍘熷瀛楃涓蹭腑寮�澶淬�佺粨灏剧殑涓嬫崲绾挎垨鍙岄噸涓嬪垝绾� + if (camel.isEmpty()) { + continue; + } + // 澶勭悊鐪熸鐨勯┘宄扮墖娈� + if (result.length() == 0) { + // 绗竴涓┘宄扮墖娈碉紝鍏ㄩ儴瀛楁瘝閮藉皬鍐� + result.append(camel.toLowerCase()); + } else { + // 鍏朵粬鐨勯┘宄扮墖娈碉紝棣栧瓧姣嶅ぇ鍐� + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + } + return result.toString(); + } + + /** + * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆� + * 濡傛灉杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓蹭负绌猴紝鍒欒繑鍥炵┖瀛楃涓层��</br> + * 渚嬪锛歨ello_world,test_id->helloWorld,testId + * + * @param name + * 杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓� + * @return 杞崲鍚庣殑椹煎嘲寮忓懡鍚嶇殑瀛楃涓� + */ + public static String camelNames(String names) { + if(names==null||"".equals(names)){ + return null; + } + StringBuffer sf = new StringBuffer(); + String[] fs = names.split(","); + for (String field : fs) { + field = camelName(field); + sf.append(field + ","); + } + String result = sf.toString(); + return result.substring(0, result.length() - 1); + } + + //update-begin--Author:zhoujf Date:20180503 for锛歍ASK #2500 銆愪唬鐮佺敓鎴愬櫒銆戜唬鐮佺敓鎴愬櫒寮�鍙戜竴閫氱敤妯℃澘鐢熸垚鍔熻兘 + /** + * 灏嗕笅鍒掔嚎澶у啓鏂瑰紡鍛藉悕鐨勫瓧绗︿覆杞崲涓洪┘宄板紡銆�(棣栧瓧姣嶅啓) + * 濡傛灉杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓蹭负绌猴紝鍒欒繑鍥炵┖瀛楃涓层��</br> + * 渚嬪锛歨ello_world->HelloWorld + * + * @param name + * 杞崲鍓嶇殑涓嬪垝绾垮ぇ鍐欐柟寮忓懡鍚嶇殑瀛楃涓� + * @return 杞崲鍚庣殑椹煎嘲寮忓懡鍚嶇殑瀛楃涓� + */ + public static String camelNameCapFirst(String name) { + StringBuilder result = new StringBuilder(); + // 蹇�熸鏌� + if (name == null || name.isEmpty()) { + // 娌″繀瑕佽浆鎹� + return ""; + } else if (!name.contains(SymbolConstant.UNDERLINE)) { + // 涓嶅惈涓嬪垝绾匡紝浠呭皢棣栧瓧姣嶅皬鍐� + return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); + } + // 鐢ㄤ笅鍒掔嚎灏嗗師濮嬪瓧绗︿覆鍒嗗壊 + String[] camels = name.split("_"); + for (String camel : camels) { + // 璺宠繃鍘熷瀛楃涓蹭腑寮�澶淬�佺粨灏剧殑涓嬫崲绾挎垨鍙岄噸涓嬪垝绾� + if (camel.isEmpty()) { + continue; + } + // 鍏朵粬鐨勯┘宄扮墖娈碉紝棣栧瓧姣嶅ぇ鍐� + result.append(camel.substring(0, 1).toUpperCase()); + result.append(camel.substring(1).toLowerCase()); + } + return result.toString(); + } + //update-end--Author:zhoujf Date:20180503 for锛歍ASK #2500 銆愪唬鐮佺敓鎴愬櫒銆戜唬鐮佺敓鎴愬櫒寮�鍙戜竴閫氱敤妯℃澘鐢熸垚鍔熻兘 + + /** + * 灏嗛┘宄板懡鍚嶈浆鍖栨垚涓嬪垝绾� + * @param para + * @return + */ + public static String camelToUnderline(String para){ + int length = 3; + if(para.length()<length){ + return para.toLowerCase(); + } + StringBuilder sb=new StringBuilder(para); + //瀹氫綅 + int temp=0; + //浠庣涓変釜瀛楃寮�濮� 閬垮厤鍛藉悕涓嶈鑼� + for(int i=2;i<para.length();i++){ + if(Character.isUpperCase(para.charAt(i))){ + sb.insert(i+temp, "_"); + temp+=1; + } + } + return sb.toString().toLowerCase(); + } + + /** + * 闅忔満鏁� + * @param place 瀹氫箟闅忔満鏁扮殑浣嶆暟 + */ + public static String randomGen(int place) { + String base = "qwertyuioplkjhgfdsazxcvbnmQAZWSXEDCRFVTGBYHNUJMIKLOP0123456789"; + StringBuffer sb = new StringBuffer(); + Random rd = new Random(); + for(int i=0;i<place;i++) { + sb.append(base.charAt(rd.nextInt(base.length()))); + } + return sb.toString(); + } + + /** + * 鑾峰彇绫荤殑鎵�鏈夊睘鎬э紝鍖呮嫭鐖剁被 + * + * @param object + * @return + */ + public static Field[] getAllFields(Object object) { + Class<?> clazz = object.getClass(); + List<Field> fieldList = new ArrayList<>(); + while (clazz != null) { + fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields()))); + clazz = clazz.getSuperclass(); + } + Field[] fields = new Field[fieldList.size()]; + fieldList.toArray(fields); + return fields; + } + + /** + * 灏唌ap鐨刱ey鍏ㄩ儴杞垚灏忓啓 + * @param list + * @return + */ + public static List<Map<String, Object>> toLowerCasePageList(List<Map<String, Object>> list){ + List<Map<String, Object>> select = new ArrayList<>(); + for (Map<String, Object> row : list) { + Map<String, Object> resultMap = new HashMap<>(5); + Set<String> keySet = row.keySet(); + for (String key : keySet) { + String newKey = key.toLowerCase(); + resultMap.put(newKey, row.get(key)); + } + select.add(resultMap); + } + return select; + } + + /** + * 灏唀ntityList杞崲鎴恗odelList + * @param fromList + * @param tClass + * @param <F> + * @param <T> + * @return + */ + public static<F,T> List<T> entityListToModelList(List<F> fromList, Class<T> tClass){ + if(fromList == null || fromList.isEmpty()){ + return null; + } + List<T> tList = new ArrayList<>(); + for(F f : fromList){ + T t = entityToModel(f, tClass); + tList.add(t); + } + return tList; + } + + public static<F,T> T entityToModel(F entity, Class<T> modelClass) { + log.debug("entityToModel : Entity灞炴�х殑鍊艰祴鍊煎埌Model"); + Object model = null; + if (entity == null || modelClass ==null) { + return null; + } + + try { + model = modelClass.newInstance(); + } catch (InstantiationException e) { + log.error("entityToModel : 瀹炰緥鍖栧紓甯�", e); + } catch (IllegalAccessException e) { + log.error("entityToModel : 瀹夊叏鏉冮檺寮傚父", e); + } + BeanUtils.copyProperties(entity, model); + return (T)model; + } + + /** + * 鍒ゆ柇 list 鏄惁涓虹┖ + * + * @param list + * @return true or false + * list == null : true + * list.size() == 0 : true + */ + public static boolean listIsEmpty(Collection list) { + return (list == null || list.size() == 0); + } + + /** + * 鍒ゆ柇 list 鏄惁涓嶄负绌� + * + * @param list + * @return true or false + * list == null : false + * list.size() == 0 : false + */ + public static boolean listIsNotEmpty(Collection list) { + return !listIsEmpty(list); + } + + /** + * 璇诲彇闈欐�佹枃鏈唴瀹� + * @param url + * @return + */ + public static String readStatic(String url) { + String json = ""; + try { + //鎹釜鍐欐硶锛岃В鍐硈pringboot璇诲彇jar鍖呬腑鏂囦欢鐨勯棶棰� + InputStream stream = oConvertUtils.class.getClassLoader().getResourceAsStream(url.replace("classpath:", "")); + json = IOUtils.toString(stream,"UTF-8"); + } catch (IOException e) { + log.error(e.getMessage(),e); + } + return json; + } + + public static <T> List<T> castList(Object obj, Class<T> clazz) + { + List<T> result = new ArrayList<T>(); + if(obj instanceof List<?>) + { + for (Object o : (List<?>) obj) + { + result.add(clazz.cast(o)); + } + return result; + } + return null; + } + +} -- Gitblit v1.9.3