From e5bf0d08d05f5c58224fe28cdf743a1bae88e3f0 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 30 十一月 2023 16:48:55 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java | 317 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 317 insertions(+), 0 deletions(-) diff --git a/ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java b/ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java new file mode 100644 index 0000000..cf3ee1f --- /dev/null +++ b/ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java @@ -0,0 +1,317 @@ +package com.ycl.common.util; + + +import com.ycl.mapper.common.GeneratedCodeMapper; +import com.ycl.utils.common.RandomUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; +@Component +public class UtilNumber { + private GeneratedCodeMapper generatedCodeMapper; + + @Autowired + public void setGeneratedCodeMapper(GeneratedCodeMapper generatedCodeMapper) { + this.generatedCodeMapper = generatedCodeMapper; + } + + public static String getCode(String type, int n) { + String code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + RandomStringUtil.getRandomString(n, RandomStringUtil.ALL); + return code; + } + + public static String getNumber(String type, int n) { + String code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + RandomNumberGenerator.generateNumber(n); + return code; + } + + public static String getApplicationCode(String type, int n) { + String code = type + getApplicationSecret(n); + return code; + } + + public static String getApplicationSecret(int n) { + String code = RandomStringUtil.getRandomString(n, RandomStringUtil.CAPITAL_NUM_LOWER); + return code; + } + + public static String getRqUID(String channel) { + // 6浣嶉殢鏈烘暟,鐢ㄤ簬鐢熸垚璁㈠崟鍙� + + String rand1 = RandomNumberGenerator.generateNumber(4); + String rand2 = RandomNumberGenerator.generateNumber(6); + + String rqUID = channel + DateUtils.getNowDate("yyyyMMdd") + + DateUtils.getNowDate("HHmmss") + rand1 + rand2; + return rqUID; + } + + public static String getRqTradeNo(String channel) { + // 6浣嶉殢鏈烘暟,鐢ㄤ簬鐢熸垚浜ゆ槗鍙� + String rand2 = RandomNumberGenerator.generateNumber(6); + String rqUID = channel + DateUtils.getNowDate("yyyyMMdd") + + DateUtils.getNowDate("HHmmss") + rand2; + return rqUID; + } + + public static String getSettleAccount(String memberId) { + // md5 + String subStr = memberId.substring(memberId.length() - 12, + memberId.length()); + String md5Str = Md5.md5(Md5.md5(subStr)); +// String rand1 = RandomNumberGenerator.generateNumber(4); +// String rand2 = RandomNumberGenerator.generateNumber(6); + String merchantId = subStr + md5Str.substring(0, 3); + return merchantId; + + } + + public static String getShopQRCode(String memberId) { + // md5 + String rand1 = RandomNumberGenerator.generateNumber(4); + String rand2 = RandomNumberGenerator.generateNumber(6); + String shopQRCode = Md5.md5(memberId.substring(0, 12) + rand1 + rand2); + return shopQRCode; + + } + + public static String getMsgId() { + String rand1 = RandomNumberGenerator.generateNumber(4); + String rand2 = RandomNumberGenerator.generateNumber(4); + + String msgId = "merchant" + + DateUtils.getNowDate("yyyyMMdd") + + DateUtils.getNowDate("HHmmss") + rand1 + rand2; + return msgId; + + } + + public static String toSignStr(Object obj, Class<?> clazz) { + if (obj == null) { + return ""; + } + List<String> listStr = new ArrayList<String>(); + + Field[] fields = clazz.getDeclaredFields();// 鏍规嵁Class瀵硅薄鑾峰緱灞炴�� 绉佹湁鐨勪篃鍙互鑾峰緱 + try { + for (Field f : fields) { + f.setAccessible(true); // 璁剧疆浜涘睘鎬ф槸鍙互璁块棶鐨� + Object val = f.get(obj); // 寰楀埌姝ゅ睘鎬х殑鍊� + String name = f.getName(); // 寰楀埌姝ゅ睘鎬х殑鍚嶇О + if (!name.equals("sign") && CommonUtils.isNotEmpty(val)) { + listStr.add(name + "=" + val); + } + } + + } catch (IllegalAccessException e) { + } + // 鑺傜偣闂翠互&绗﹁繛鎺ワ紝褰㈡垚鏈�缁堝緟绛惧悕瀛楃涓� + Collections.sort(listStr); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < listStr.size(); i++) { + String msg = listStr.get(i); + if (i > 0) { + sb.append("&"); + } + sb.append(msg); + } + return sb.toString(); + } + + /** + * 鍔熻兘鎻忚堪锛氬幓闄ゅ瓧绗︿覆棣栭儴涓�"0"瀛楃 + * + * @param str 浼犲叆闇�瑕佽浆鎹㈢殑瀛楃涓� + * @return 杞崲鍚庣殑瀛楃涓� + */ + public static String removeZero(String str) { + char ch; + String result = ""; + if (str != null && str.trim().length() > 0 + && !str.trim().equalsIgnoreCase("null")) { + try { + for (int i = 0; i < str.length(); i++) { + ch = str.charAt(i); + if (ch != '0') { + result = str.substring(i); + break; + } + } + } catch (Exception e) { + result = ""; + } + } else { + result = ""; + } + return result; + + } + + /** + * 鍔熻兘鎻忚堪锛氶噾棰濆瓧绗︿覆杞崲锛氬崟浣嶅垎杞垚鍗曞厓 + * + * @param str 浼犲叆闇�瑕佽浆鎹㈢殑閲戦瀛楃涓� + * @return 杞崲鍚庣殑閲戦瀛楃涓� + */ + public static String fenToYuan(Object o) { + if (o == null) + return "0.00"; + String s = o.toString(); + int len = -1; + StringBuilder sb = new StringBuilder(); + if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) { + s = removeZero(s); + if (s != null && s.trim().length() > 0 + && !s.equalsIgnoreCase("null")) { + len = s.length(); + int tmp = s.indexOf("-"); + if (tmp >= 0) { + if (len == 2) { + sb.append("-0.0").append(s.substring(1)); + } else if (len == 3) { + sb.append("-0.").append(s.substring(1)); + } else { + sb.append(s.substring(0, len - 2)).append(".") + .append(s.substring(len - 2)); + } + } else { + if (len == 1) { + sb.append("0.0").append(s); + } else if (len == 2) { + sb.append("0.").append(s); + } else { + sb.append(s.substring(0, len - 2)).append(".") + .append(s.substring(len - 2)); + } + } + } else { + sb.append("0.00"); + } + } else { + sb.append("0.00"); + } + return sb.toString(); + } + + /** + * 鍔熻兘鎻忚堪锛氶噾棰濆瓧绗︿覆杞崲锛氬崟浣嶅厓杞垚鍗曞垎 + * + * @param str 浼犲叆闇�瑕佽浆鎹㈢殑閲戦瀛楃涓� + * @return 杞崲鍚庣殑閲戦瀛楃涓� + */ + public static String yuanToFen(Object o) { + if (o == null) + return "0"; + String s = o.toString(); + int posIndex = -1; + String str = ""; + StringBuilder sb = new StringBuilder(); + if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) { + posIndex = s.indexOf("."); + if (posIndex > 0) { + int len = s.length(); + if (len == posIndex + 1) { + str = s.substring(0, posIndex); + if (str == "0") { + str = ""; + } + sb.append(str).append("00"); + } else if (len == posIndex + 2) { + str = s.substring(0, posIndex); + if (str == "0") { + str = ""; + } + sb.append(str) + .append(s.substring(posIndex + 1, posIndex + 2)) + .append("0"); + } else if (len == posIndex + 3) { + str = s.substring(0, posIndex); + if (str == "0") { + str = ""; + } + sb.append(str).append( + s.substring(posIndex + 1, posIndex + 3)); + } else { + str = s.substring(0, posIndex); + if (str == "0") { + str = ""; + } + sb.append(str).append( + s.substring(posIndex + 1, posIndex + 3)); + } + } else { + sb.append(s).append("00"); + } + } else { + sb.append("0"); + } + str = removeZero(sb.toString()); + if (str != null && str.trim().length() > 0 + && !str.trim().equalsIgnoreCase("null")) { + return str; + } else { + return "0"; + } + } + + /** + * 鍒涘缓鍟嗛摵缂栧彿 + * 搴楅摵缂栧彿锛氬勾鏈堟棩 + 搴忓彿 渚嬶細202210100001 + * + * @param + * @return java.lang.String + * @author AI + * @date 2022-10-10 15:43 + */ + public String createShopCode() { + String ymd = getYMD(); + Integer number = generatedCodeMapper.createNumber(ymd, "shop"); + String numberStr = RandomUtils.formatSign(number, 4); + return getYMD() + numberStr; + } + + /** + * 鍒涘缓妗堜欢缂栧彿 + * 妗堜欢缂栧彿瑙勫垯锛氬勾浠� + 鍖哄幙缂栧彿 + 鏈堟棩 + 搴忓彿 渚嬶細202233112310100001 + * + * @param + * @return java.lang.String + * @author AI + * @date 2022-10-10 15:43 + */ + public String createCaseCode() { + String ymd = getYMD(); + double num = Math.random(); + int myRandInt = (int)(num*100+1); +// Integer number = myRandInt; + Integer number = generatedCodeMapper.createNumber(ymd, "case"); + String numberStr = RandomUtils.formatSign(number, 4); + String year = String.valueOf(LocalDateTime.now().getYear()); + String areaCode = "331123"; + DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("MMdd"); + String md = dtf2.format(LocalDateTime.now()); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(year); + stringBuilder.append(areaCode); + stringBuilder.append(md); + stringBuilder.append(numberStr); + return stringBuilder.toString(); + } + + private static String getYMD() { + DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyyMMdd"); + return dtf2.format(LocalDateTime.now()); + } + + public static void main(String[] args) { + + } +} -- Gitblit v1.8.0