123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668 |
- package org.jeecg.common.util;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.io.IOUtils;
- 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 ("null".equals(object)) {
- return (true);
- }
- return (false);
- }
-
- public static boolean isNotEmpty(Object object) {
- if (object != null && !object.equals("") && !object.equals("null")) {
- return (true);
- }
- return (false);
- }
- public static String decode(String strIn, String sourceCode, String targetCode) {
- String temp = code2code(strIn, sourceCode, targetCode);
- return temp;
- }
- 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 || (strIn.trim()).equals("")) {
- 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) {
- Integer[] integer = new Integer[s.length];
- if (s == null) {
- return null;
- }
- 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, ""));
- }
- /**
- * 转义成Unicode编码
- * @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 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("Proxy-Client-IP");
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getHeader("WL-Proxy-Client-IP");
- }
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- }
- return ip;
- }
- /**
- * @return 本机IP
- * @throws SocketException
- */
- public static String getRealIp() throws SocketException {
- String localip = null;// 本地IP,如果没有配置外网IP则返回它
- String netip = null;// 外网IP
- Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
- InetAddress ip = null;
- boolean finded = false;// 是否找到外网IP
- while (netInterfaces.hasMoreElements() && !finded) {
- NetworkInterface ni = netInterfaces.nextElement();
- Enumeration<InetAddress> address = ni.getInetAddresses();
- while (address.hasMoreElements()) {
- ip = address.nextElement();
- if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// 外网IP
- 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) {
- Pattern p = Pattern.compile("\\s*|\t|\r|\n");
- 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<Object, Object>();
- }
- /**
- * 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:A类 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");
- isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || ipAddress.equals("127.0.0.1");
- 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>
- * 例如:hello_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("_")) {
- // 不含下划线,仅将首字母小写
- //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
- //update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
- return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase();
- //update-end--Author:zhoujf Date:20180503 for:TASK #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>
- * 例如:hello_world,test_id->helloWorld,testId
- *
- * @param name
- * 转换前的下划线大写方式命名的字符串
- * @return 转换后的驼峰式命名的字符串
- */
- public static String camelNames(String names) {
- if(names==null||names.equals("")){
- 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:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
- /**
- * 将下划线大写方式命名的字符串转换为驼峰式。(首字母写)
- * 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
- * 例如:hello_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("_")) {
- // 不含下划线,仅将首字母小写
- 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:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
-
- /**
- * 将驼峰命名转化成下划线
- * @param para
- * @return
- */
- public static String camelToUnderline(String para){
- if(para.length()<3){
- 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;
- }
-
- /**
- * 将map的key全部转成小写
- * @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<>();
- Set<String> keySet = row.keySet();
- for (String key : keySet) {
- String newKey = key.toLowerCase();
- resultMap.put(newKey, row.get(key));
- }
- select.add(resultMap);
- }
- return select;
- }
- /**
- * 将entityList转换成modelList
- * @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 {
- //换个写法,解决springboot读取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;
- }
- }
|