From c635d78b479510ebe2556a420948effcd30a0731 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期六, 21 十二月 2024 18:40:43 +0800
Subject: [PATCH] 新建德森项目分支

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java |  836 +++++++++++++++++++++++++++++-----------------------------
 1 files changed, 418 insertions(+), 418 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java
index c94a23f..4da7962 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java
@@ -1,418 +1,418 @@
-package com.zy.asrs.wms.utils;
-
-
-import com.alibaba.fastjson.JSON;
-import com.zy.asrs.framework.common.Cools;
-import com.zy.asrs.wms.asrs.entity.dto.MatUniqueObjDto;
-import com.zy.asrs.wms.asrs.entity.param.FieldParam;
-import com.zy.asrs.wms.common.constant.Constants;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.*;
-import java.util.function.BiConsumer;
-import java.util.function.Function;
-
-/**
- * Created by vincent on 2023/3/14
- */
-public class Utils {
-
-    public static final String _LINK = "-";
-
-    public static String getMatUniqueKey(String matnr, String batch, List<FieldParam> params) {
-        MatUniqueObjDto dto = new MatUniqueObjDto();
-        dto.setMatnr(matnr);
-        dto.setBatch(batch);
-
-        ArrayList<FieldParam> list = new ArrayList<>();
-        for (FieldParam param : params) {
-            FieldParam fieldParam = new FieldParam();
-            list.add(fieldParam);
-
-            String value = "";
-            if (!Cools.isEmpty(param.getValue())) {
-                value = param.getValue().toString();
-            }
-
-            fieldParam.setName(param.getName());
-            fieldParam.setType(param.getType());
-            fieldParam.setValue(value);
-        }
-        dto.setParams(list);
-        String encode = Base64.getEncoder().encodeToString(JSON.toJSONString(dto).getBytes());
-        return encode;
-    }
-
-    public static MatUniqueObjDto getMatUniqueObj(String matUniqueKey) {
-        byte[] decode = Base64.getDecoder().decode(matUniqueKey);
-        String decodeStr = new String(decode);
-        MatUniqueObjDto dto = JSON.parseObject(decodeStr, MatUniqueObjDto.class);
-        return dto;
-    }
-
-    public static boolean checkMatSame(String matnr1, String batch1, List<FieldParam> params1, String matnr2, String batch2, List<FieldParam> params2) {
-        if (!matnr1.equals(matnr2)) {
-            return false;
-        }
-
-        if (batch1 != null && batch2 != null) {
-            if(!batch1.equals(batch2)) {
-                return false;
-            }
-        }
-
-        boolean check = true;
-        if(params1 != null && params2 != null) {
-            if(params1.size() != params2.size()) {
-                return false;
-            }
-
-            for (int i = 0; i < params1.size(); i++) {
-                FieldParam param1 = params1.get(i);
-                FieldParam param2 = params2.get(i);
-
-                if (!param1.getName().equals(param2.getName())) {
-                    check = false;
-                    break;
-                }
-
-                if(Cools.isEmpty(param1.getValue()) && Cools.isEmpty(param2.getValue())) {
-                    continue;
-                }
-
-                if(!param1.getValue().equals(param2.getValue())) {
-                    check = false;
-                    break;
-                }
-            }
-
-        }
-
-        return check;
-    }
-
-    /**
-     * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
-     */
-    public static int getRow(String locNo) {
-        if (!Cools.isEmpty(locNo)) {
-            String[] split = locNo.split(_LINK);
-            return Integer.parseInt(split[0]);
-        }
-        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
-    }
-
-    /**
-     * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
-     */
-    public static int getBay(String locNo) {
-        if (!Cools.isEmpty(locNo)) {
-            String[] split = locNo.split(_LINK);
-            return Integer.parseInt(split[1]);
-        }
-        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
-    }
-
-    /**
-     * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
-     */
-    public static int getLev(String locNo) {
-        if (!Cools.isEmpty(locNo)) {
-            String[] split = locNo.split(_LINK);
-            return Integer.parseInt(split[2]);
-        }
-        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
-    }
-
-    public static String getLocNo(Number row, Number bay, Number lev) {
-        return row + _LINK + bay + _LINK + lev;
-    }
-
-    /**
-     * List杞负鏍戝舰缁撴瀯
-     *
-     * @param data           List
-     * @param parentId       椤剁骇鐨刾arentId
-     * @param parentIdMapper 鑾峰彇parentId鐨凢unction
-     * @param idMapper       鑾峰彇id鐨凢unction
-     * @param consumer       璧嬪�糲hildren鐨凜onsumer
-     * @param <T>            鏁版嵁鐨勭被鍨�
-     * @param <R>            parentId鐨勭被鍨�
-     * @return List<T>
-     */
-    public static <T, R> List<T> toTreeData(List<T> data,
-                                            R parentId,
-                                            Function<? super T, ? extends R> parentIdMapper,
-                                            Function<? super T, ? extends R> idMapper,
-                                            BiConsumer<T, List<T>> consumer) {
-        List<T> result = new ArrayList<>();
-        for (T d : data) {
-            R dParentId = parentIdMapper.apply(d);
-            if (parentId.equals(dParentId)) {
-                R dId = idMapper.apply(d);
-                List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer);
-                if(children.size() > 0) {
-                    consumer.accept(d, children);
-                }
-                result.add(d);
-            }
-        }
-        return result;
-    }
-
-//    public static <T> List<T> treeRemove(List<T> data, String condition,
-//                                         Function<? super T, ? extends String> fetcher,
-//                                         Function<T, List<T>> childrenGetter,
-//                                         BiConsumer<T, List<T>> childrenSetter) {
-//        List<T> result = new ArrayList<>();
-//        for (T node : data) {
-//            List<T> children = childrenGetter.apply(node);
-//
-//            if (children != null && !children.isEmpty()) {
-//                List<T> newChildren = treeRemove(children, condition, fetcher, childrenGetter, childrenSetter);
-//                childrenSetter.accept(node, newChildren);
-//            }
-//
-//            if (fetcher.apply(node).contains(condition)) {
-//                result.add(node);
-//            }
-//        }
-//        return result;
-//    }
-
-    public static <T> void treeRemove(List<T> list, String condition, Function<? super T, ? extends String> fetcher, Function<T, List<T>> childrenGetter) {
-        Iterator<T> iterator = list.iterator();
-        while (iterator.hasNext()) {
-            T next = iterator.next();
-            List<T> children = childrenGetter.apply(next);
-            if (children != null && !children.isEmpty()) {
-                treeRemove(children, condition, fetcher, childrenGetter);
-            } else {
-                if (!fetcher.apply(next).contains(condition)) {
-                    iterator.remove();
-                }
-            }
-        }
-    }
-
-    /**
-     * 鏁扮粍鍊掑簭
-     * @param bytes
-     * @param <T>
-     */
-    public static <T> byte[] reverse(byte[] bytes) {
-        if (bytes == null) return null;
-        for (int start = 0, end = bytes.length - 1; start < end; start++, end--) {
-            byte temp = bytes[end];
-            bytes[end] = bytes[start];
-            bytes[start] = temp;
-        }
-        return bytes;
-    }
-
-    /**
-     * 鎴彇鏁扮粍
-     * @param bytes 鍘熸暟缁�
-     * @param pos   瀹氫綅锛堟埅鍙栧悗鍖呭惈瀹氫綅鐐规暟鎹級
-     * @param len   闀垮害
-     * @return new arr
-     */
-    public static byte[] slice(byte[] bytes, int pos, int len) {
-        if (bytes == null || bytes.length == 0 || len == 0) {
-            return new byte[0];
-        }
-        if (pos + len > bytes.length) {
-            throw new RuntimeException("com.zy.acs.common.utils ArrayIndexOutOfBoundsException\n" +
-                    "鍘熸暟缁� bytes 闀垮害涓� " + bytes.length + "锛屾埅鍙栭暱搴﹁秴杩囧師鏁扮粍锛�");
-        }
-        byte[] arr = new byte[len];
-        System.arraycopy(bytes, pos, arr, 0, len);
-        return arr;
-    }
-
-    public static byte[] sliceWithReverse(byte[] bytes, int pos, int len) {
-        byte[] slice = slice(bytes, pos, len);
-        reverse(slice);
-        return slice;
-    }
-
-    public static byte[] merge(Object... objects) {
-        int len = 0;
-        for (Object object : objects) {
-            if (object instanceof byte[]) {
-                byte[] bytes = (byte[]) object;
-                len += bytes.length;
-            }
-            if (object instanceof Byte) {
-                len++;
-            }
-        }
-        byte[] arr = new byte[len];
-        int idx = 0;
-        for (Object object : objects) {
-            if (object instanceof byte[]) {
-                byte[] bytes = (byte[]) object;
-                System.arraycopy(bytes, 0, arr, idx, bytes.length);
-                idx += bytes.length;
-            }
-            if (object instanceof Byte) {
-                byte[] bytes = new byte[] {(Byte) object};
-                System.arraycopy(bytes, 0, arr, idx, bytes.length);
-                idx += bytes.length;
-            }
-        }
-        return arr;
-    }
-
-    public static <T> String join(T[] array, String seq) {
-        StringBuilder sb = new StringBuilder();
-        if (array != null) {
-            for (int i = 0; i < array.length; i++) {
-                sb.append(array[i]);
-                if (i < array.length - 1) {
-                    sb.append(seq);
-                }
-            }
-        }
-        return sb.toString();
-    }
-
-    public static String zeroFill(String msg, Integer len) {
-        len = Optional.ofNullable(len).orElse(16);
-        if (msg.length() == len){
-            return msg;
-        } else if (msg.length() > len){
-            return msg.substring(0, 16);
-        } else {
-            StringBuilder msgBuilder = new StringBuilder(msg);
-            for (int i = 0; i<len-msg.length(); i++){
-                msgBuilder.insert(0,"0");
-            }
-            return msgBuilder.toString();
-        }
-    }
-
-    public static String removePrefix(String str, String prefix) {
-        if (!Cools.isEmpty(str) && !Cools.isEmpty(prefix)) {
-            if (str.startsWith(prefix)) {
-                return str.substring(prefix.length());
-            } else {
-                return str;
-            }
-        } else {
-            return str;
-        }
-    }
-
-    public static String removeSuffix(String str, String suffix) {
-        if (!Cools.isEmpty(str) && !Cools.isEmpty(suffix)) {
-            if (str.endsWith(suffix)) {
-                return str.substring(0, str.indexOf(suffix));
-            } else {
-                return str;
-            }
-        } else {
-            return str;
-        }
-    }
-
-    /**
-     * 澶ч┘宄� 杞� symbol灏忛┘宄�
-     */
-    public static String toSymbolCase(String str, char symbol) {
-        if (str == null) {
-            return null;
-        } else {
-            int length = str.length();
-            StringBuilder sb = new StringBuilder();
-
-            for(int i = 0; i < length; ++i) {
-                char c = str.charAt(i);
-                if (Character.isUpperCase(c)) {
-                    Character preChar = i > 0 ? str.charAt(i - 1) : null;
-                    Character nextChar = i < str.length() - 1 ? str.charAt(i + 1) : null;
-                    if (null != preChar) {
-                        if (symbol == preChar) {
-                            if (null == nextChar || Character.isLowerCase(nextChar)) {
-                                c = Character.toLowerCase(c);
-                            }
-                        } else if (Character.isLowerCase(preChar)) {
-                            sb.append(symbol);
-                            if (null == nextChar || Character.isLowerCase(nextChar)) {
-                                c = Character.toLowerCase(c);
-                            }
-                        } else if (null == nextChar || Character.isLowerCase(nextChar)) {
-                            sb.append(symbol);
-                            c = Character.toLowerCase(c);
-                        }
-                    } else if (null == nextChar || Character.isLowerCase(nextChar)) {
-                        c = Character.toLowerCase(c);
-                    }
-                }
-
-                sb.append(c);
-            }
-
-            return "`" + sb.toString() + "`";
-        }
-    }
-
-    public static String toCamelCase(CharSequence name) {
-        if (null == name) {
-            return null;
-        } else {
-            String name2 = name.toString();
-            if (name2.contains("_")) {
-                int length = name2.length();
-                StringBuilder sb = new StringBuilder(length);
-                boolean upperCase = false;
-
-                for(int i = 0; i < length; ++i) {
-                    char c = name2.charAt(i);
-                    if (c == '_') {
-                        upperCase = true;
-                    } else if (upperCase) {
-                        sb.append(Character.toUpperCase(c));
-                        upperCase = false;
-                    } else {
-                        sb.append(Character.toLowerCase(c));
-                    }
-                }
-
-                return sb.toString();
-            } else {
-                return name2;
-            }
-        }
-    }
-
-    public static String sub(String str, Integer maxLen) {
-        if (str.length() > maxLen) {
-            return str.substring(0, maxLen);
-        }
-        return str;
-    }
-
-    public static String generateSeqNum(String lastSeqNum) {
-        if (Cools.isEmpty(lastSeqNum)) {
-            return zeroFill("1", 4);
-        } else {
-            int i = Integer.parseInt(lastSeqNum);
-            if (i >= 9999) {
-                return zeroFill("1", 4);
-            } else {
-                return zeroFill(String.valueOf(i+1), 4);
-            }
-        }
-    }
-
-    public static void cors(HttpServletResponse response){
-        // 璺ㄥ煙璁剧疆
-        response.setHeader("Access-Control-Max-Age", "3600");
-        response.setHeader("Access-Control-Allow-Origin", "*");
-        response.setHeader("Access-Control-Allow-Methods", "*");
-        response.setHeader("Access-Control-Allow-Headers", "*");
-        response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME);
-    }
-
-}
+package com.zy.asrs.wms.utils;
+
+
+import com.alibaba.fastjson.JSON;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.wms.asrs.entity.dto.MatUniqueObjDto;
+import com.zy.asrs.wms.asrs.entity.param.FieldParam;
+import com.zy.asrs.wms.common.constant.Constants;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+import java.util.function.BiConsumer;
+import java.util.function.Function;
+
+/**
+ * Created by vincent on 2023/3/14
+ */
+public class Utils {
+
+    public static final String _LINK = "-";
+
+    public static String getMatUniqueKey(String matnr, String batch, List<FieldParam> params) {
+        MatUniqueObjDto dto = new MatUniqueObjDto();
+        dto.setMatnr(matnr);
+        dto.setBatch(batch);
+
+        ArrayList<FieldParam> list = new ArrayList<>();
+        for (FieldParam param : params) {
+            FieldParam fieldParam = new FieldParam();
+            list.add(fieldParam);
+
+            String value = "";
+            if (!Cools.isEmpty(param.getValue())) {
+                value = param.getValue().toString();
+            }
+
+            fieldParam.setName(param.getName());
+            fieldParam.setType(param.getType());
+            fieldParam.setValue(value);
+        }
+        dto.setParams(list);
+        String encode = Base64.getEncoder().encodeToString(JSON.toJSONString(dto).getBytes());
+        return encode;
+    }
+
+    public static MatUniqueObjDto getMatUniqueObj(String matUniqueKey) {
+        byte[] decode = Base64.getDecoder().decode(matUniqueKey);
+        String decodeStr = new String(decode);
+        MatUniqueObjDto dto = JSON.parseObject(decodeStr, MatUniqueObjDto.class);
+        return dto;
+    }
+
+    public static boolean checkMatSame(String matnr1, String batch1, List<FieldParam> params1, String matnr2, String batch2, List<FieldParam> params2) {
+        if (!matnr1.equals(matnr2)) {
+            return false;
+        }
+
+        if (batch1 != null && batch2 != null) {
+            if(!batch1.equals(batch2)) {
+                return false;
+            }
+        }
+
+        boolean check = true;
+        if(params1 != null && params2 != null) {
+            if(params1.size() != params2.size()) {
+                return false;
+            }
+
+            for (int i = 0; i < params1.size(); i++) {
+                FieldParam param1 = params1.get(i);
+                FieldParam param2 = params2.get(i);
+
+                if (!param1.getName().equals(param2.getName())) {
+                    check = false;
+                    break;
+                }
+
+                if(Cools.isEmpty(param1.getValue()) && Cools.isEmpty(param2.getValue())) {
+                    continue;
+                }
+
+                if(!param1.getValue().equals(param2.getValue())) {
+                    check = false;
+                    break;
+                }
+            }
+
+        }
+
+        return check;
+    }
+
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
+     */
+    public static int getRow(String locNo) {
+        if (!Cools.isEmpty(locNo)) {
+            String[] split = locNo.split(_LINK);
+            return Integer.parseInt(split[0]);
+        }
+        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+    }
+
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
+     */
+    public static int getBay(String locNo) {
+        if (!Cools.isEmpty(locNo)) {
+            String[] split = locNo.split(_LINK);
+            return Integer.parseInt(split[1]);
+        }
+        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+    }
+
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+     */
+    public static int getLev(String locNo) {
+        if (!Cools.isEmpty(locNo)) {
+            String[] split = locNo.split(_LINK);
+            return Integer.parseInt(split[2]);
+        }
+        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+    }
+
+    public static String getLocNo(Number row, Number bay, Number lev) {
+        return row + _LINK + bay + _LINK + lev;
+    }
+
+    /**
+     * List杞负鏍戝舰缁撴瀯
+     *
+     * @param data           List
+     * @param parentId       椤剁骇鐨刾arentId
+     * @param parentIdMapper 鑾峰彇parentId鐨凢unction
+     * @param idMapper       鑾峰彇id鐨凢unction
+     * @param consumer       璧嬪�糲hildren鐨凜onsumer
+     * @param <T>            鏁版嵁鐨勭被鍨�
+     * @param <R>            parentId鐨勭被鍨�
+     * @return List<T>
+     */
+    public static <T, R> List<T> toTreeData(List<T> data,
+                                            R parentId,
+                                            Function<? super T, ? extends R> parentIdMapper,
+                                            Function<? super T, ? extends R> idMapper,
+                                            BiConsumer<T, List<T>> consumer) {
+        List<T> result = new ArrayList<>();
+        for (T d : data) {
+            R dParentId = parentIdMapper.apply(d);
+            if (parentId.equals(dParentId)) {
+                R dId = idMapper.apply(d);
+                List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer);
+                if(children.size() > 0) {
+                    consumer.accept(d, children);
+                }
+                result.add(d);
+            }
+        }
+        return result;
+    }
+
+//    public static <T> List<T> treeRemove(List<T> data, String condition,
+//                                         Function<? super T, ? extends String> fetcher,
+//                                         Function<T, List<T>> childrenGetter,
+//                                         BiConsumer<T, List<T>> childrenSetter) {
+//        List<T> result = new ArrayList<>();
+//        for (T node : data) {
+//            List<T> children = childrenGetter.apply(node);
+//
+//            if (children != null && !children.isEmpty()) {
+//                List<T> newChildren = treeRemove(children, condition, fetcher, childrenGetter, childrenSetter);
+//                childrenSetter.accept(node, newChildren);
+//            }
+//
+//            if (fetcher.apply(node).contains(condition)) {
+//                result.add(node);
+//            }
+//        }
+//        return result;
+//    }
+
+    public static <T> void treeRemove(List<T> list, String condition, Function<? super T, ? extends String> fetcher, Function<T, List<T>> childrenGetter) {
+        Iterator<T> iterator = list.iterator();
+        while (iterator.hasNext()) {
+            T next = iterator.next();
+            List<T> children = childrenGetter.apply(next);
+            if (children != null && !children.isEmpty()) {
+                treeRemove(children, condition, fetcher, childrenGetter);
+            } else {
+                if (!fetcher.apply(next).contains(condition)) {
+                    iterator.remove();
+                }
+            }
+        }
+    }
+
+    /**
+     * 鏁扮粍鍊掑簭
+     * @param bytes
+     * @param <T>
+     */
+    public static <T> byte[] reverse(byte[] bytes) {
+        if (bytes == null) return null;
+        for (int start = 0, end = bytes.length - 1; start < end; start++, end--) {
+            byte temp = bytes[end];
+            bytes[end] = bytes[start];
+            bytes[start] = temp;
+        }
+        return bytes;
+    }
+
+    /**
+     * 鎴彇鏁扮粍
+     * @param bytes 鍘熸暟缁�
+     * @param pos   瀹氫綅锛堟埅鍙栧悗鍖呭惈瀹氫綅鐐规暟鎹級
+     * @param len   闀垮害
+     * @return new arr
+     */
+    public static byte[] slice(byte[] bytes, int pos, int len) {
+        if (bytes == null || bytes.length == 0 || len == 0) {
+            return new byte[0];
+        }
+        if (pos + len > bytes.length) {
+            throw new RuntimeException("com.zy.acs.common.utils ArrayIndexOutOfBoundsException\n" +
+                    "鍘熸暟缁� bytes 闀垮害涓� " + bytes.length + "锛屾埅鍙栭暱搴﹁秴杩囧師鏁扮粍锛�");
+        }
+        byte[] arr = new byte[len];
+        System.arraycopy(bytes, pos, arr, 0, len);
+        return arr;
+    }
+
+    public static byte[] sliceWithReverse(byte[] bytes, int pos, int len) {
+        byte[] slice = slice(bytes, pos, len);
+        reverse(slice);
+        return slice;
+    }
+
+    public static byte[] merge(Object... objects) {
+        int len = 0;
+        for (Object object : objects) {
+            if (object instanceof byte[]) {
+                byte[] bytes = (byte[]) object;
+                len += bytes.length;
+            }
+            if (object instanceof Byte) {
+                len++;
+            }
+        }
+        byte[] arr = new byte[len];
+        int idx = 0;
+        for (Object object : objects) {
+            if (object instanceof byte[]) {
+                byte[] bytes = (byte[]) object;
+                System.arraycopy(bytes, 0, arr, idx, bytes.length);
+                idx += bytes.length;
+            }
+            if (object instanceof Byte) {
+                byte[] bytes = new byte[] {(Byte) object};
+                System.arraycopy(bytes, 0, arr, idx, bytes.length);
+                idx += bytes.length;
+            }
+        }
+        return arr;
+    }
+
+    public static <T> String join(T[] array, String seq) {
+        StringBuilder sb = new StringBuilder();
+        if (array != null) {
+            for (int i = 0; i < array.length; i++) {
+                sb.append(array[i]);
+                if (i < array.length - 1) {
+                    sb.append(seq);
+                }
+            }
+        }
+        return sb.toString();
+    }
+
+    public static String zeroFill(String msg, Integer len) {
+        len = Optional.ofNullable(len).orElse(16);
+        if (msg.length() == len){
+            return msg;
+        } else if (msg.length() > len){
+            return msg.substring(0, 16);
+        } else {
+            StringBuilder msgBuilder = new StringBuilder(msg);
+            for (int i = 0; i<len-msg.length(); i++){
+                msgBuilder.insert(0,"0");
+            }
+            return msgBuilder.toString();
+        }
+    }
+
+    public static String removePrefix(String str, String prefix) {
+        if (!Cools.isEmpty(str) && !Cools.isEmpty(prefix)) {
+            if (str.startsWith(prefix)) {
+                return str.substring(prefix.length());
+            } else {
+                return str;
+            }
+        } else {
+            return str;
+        }
+    }
+
+    public static String removeSuffix(String str, String suffix) {
+        if (!Cools.isEmpty(str) && !Cools.isEmpty(suffix)) {
+            if (str.endsWith(suffix)) {
+                return str.substring(0, str.indexOf(suffix));
+            } else {
+                return str;
+            }
+        } else {
+            return str;
+        }
+    }
+
+    /**
+     * 澶ч┘宄� 杞� symbol灏忛┘宄�
+     */
+    public static String toSymbolCase(String str, char symbol) {
+        if (str == null) {
+            return null;
+        } else {
+            int length = str.length();
+            StringBuilder sb = new StringBuilder();
+
+            for(int i = 0; i < length; ++i) {
+                char c = str.charAt(i);
+                if (Character.isUpperCase(c)) {
+                    Character preChar = i > 0 ? str.charAt(i - 1) : null;
+                    Character nextChar = i < str.length() - 1 ? str.charAt(i + 1) : null;
+                    if (null != preChar) {
+                        if (symbol == preChar) {
+                            if (null == nextChar || Character.isLowerCase(nextChar)) {
+                                c = Character.toLowerCase(c);
+                            }
+                        } else if (Character.isLowerCase(preChar)) {
+                            sb.append(symbol);
+                            if (null == nextChar || Character.isLowerCase(nextChar)) {
+                                c = Character.toLowerCase(c);
+                            }
+                        } else if (null == nextChar || Character.isLowerCase(nextChar)) {
+                            sb.append(symbol);
+                            c = Character.toLowerCase(c);
+                        }
+                    } else if (null == nextChar || Character.isLowerCase(nextChar)) {
+                        c = Character.toLowerCase(c);
+                    }
+                }
+
+                sb.append(c);
+            }
+
+            return "`" + sb.toString() + "`";
+        }
+    }
+
+    public static String toCamelCase(CharSequence name) {
+        if (null == name) {
+            return null;
+        } else {
+            String name2 = name.toString();
+            if (name2.contains("_")) {
+                int length = name2.length();
+                StringBuilder sb = new StringBuilder(length);
+                boolean upperCase = false;
+
+                for(int i = 0; i < length; ++i) {
+                    char c = name2.charAt(i);
+                    if (c == '_') {
+                        upperCase = true;
+                    } else if (upperCase) {
+                        sb.append(Character.toUpperCase(c));
+                        upperCase = false;
+                    } else {
+                        sb.append(Character.toLowerCase(c));
+                    }
+                }
+
+                return sb.toString();
+            } else {
+                return name2;
+            }
+        }
+    }
+
+    public static String sub(String str, Integer maxLen) {
+        if (str.length() > maxLen) {
+            return str.substring(0, maxLen);
+        }
+        return str;
+    }
+
+    public static String generateSeqNum(String lastSeqNum) {
+        if (Cools.isEmpty(lastSeqNum)) {
+            return zeroFill("1", 4);
+        } else {
+            int i = Integer.parseInt(lastSeqNum);
+            if (i >= 9999) {
+                return zeroFill("1", 4);
+            } else {
+                return zeroFill(String.valueOf(i+1), 4);
+            }
+        }
+    }
+
+    public static void cors(HttpServletResponse response){
+        // 璺ㄥ煙璁剧疆
+        response.setHeader("Access-Control-Max-Age", "3600");
+        response.setHeader("Access-Control-Allow-Origin", "*");
+        response.setHeader("Access-Control-Allow-Methods", "*");
+        response.setHeader("Access-Control-Allow-Headers", "*");
+        response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME);
+    }
+
+}

--
Gitblit v1.9.1