package com.qianwen.smartman.common.utils; import cn.hutool.crypto.Mode; import cn.hutool.crypto.Padding; import cn.hutool.crypto.symmetric.DES; import com.google.common.collect.Lists; import java.util.ArrayList; import java.util.List; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.common.UtilAll; import com.qianwen.smartman.common.constant.CommonConstant; import com.qianwen.smartman.common.constant.TenantConstant; import com.qianwen.core.tool.node.INode; import com.qianwen.core.tool.utils.Func; import com.qianwen.core.tool.utils.StringUtil; public class CommonUtil { public static String changeInstanceNameToPID(DefaultMQPushConsumer consumer) { String instanceName = consumer.getInstanceName(); if ("DEFAULT".equals(consumer.getInstanceName())) { instanceName = UtilAll.getPid() + "#" + System.nanoTime(); } return instanceName; } public static int initCapacity(int size) { return (int) ((size / 0.75d) + 1.0d); } /** * 拼接redisKey,[cacheName]::[keyPrefix][key] * @param cacheName 缓存名称 * @param keyPrefix key前缀 * @param key 最末端的key * @return */ public static String getReallyCacheName(String cacheName, String keyPrefix, String key) { return cacheName.concat("::").concat(keyPrefix).concat(key); } public static String getReallyCacheName(String cacheName, String keyPrefix, String key, Object... args) { return StringUtil.format(cacheName.concat("::").concat(keyPrefix).concat(key), args); } public static String getDefaultPass() { DES des = new DES(Mode.ECB, Padding.ZeroPadding, "yw8W8jud0CoJUm6Q".getBytes()); return des.decryptStr(TenantConstant.DEFAULT_ENCRYPTED_PASS); } public static String secToTime(Integer time) { String timeStr; int hour = 0; int minute = 0; int second = 0; if (Func.isEmpty(time) || time.intValue() <= 0) { return "00:00:00"; } time = Integer.valueOf(time.intValue() / 1000); minute = time.intValue() / CommonConstant.SECONDS_OF_MINUTE.intValue(); if (minute < CommonConstant.SECONDS_OF_MINUTE.intValue()) { second = time.intValue() % CommonConstant.SECONDS_OF_MINUTE.intValue(); timeStr = "00:" + unitFormat(minute) + ":" + unitFormat(second); } else { hour = minute / CommonConstant.SECONDS_OF_MINUTE.intValue(); minute %= CommonConstant.SECONDS_OF_MINUTE.intValue(); second = time.intValue() - hour * CommonConstant.SECONDS_OF_HOUR.intValue() - minute * CommonConstant.SECONDS_OF_MINUTE.intValue(); timeStr = unitFormat(hour) + ":" + unitFormat(minute) + ":" + unitFormat(second); } return timeStr; } private static String unitFormat(int i) { String retStr; if (i >= 0 && i < CommonConstant.NUMBER_ABOVE_TWO.intValue()) { retStr = "0" + i; } else { retStr = "" + i; } return retStr; } public static > List treeToList(List items) { List list = new ArrayList<>(); items.forEach(forestNode -> { list.add(forestNode); recursion(forestNode, list); }); return list; } private static > void recursion(T forestNode, List list) { if (Func.isNotEmpty(forestNode.getChildren())) { forestNode.getChildren().forEach(childForestNode -> { list.add(childForestNode); recursion(childForestNode, list); }); } } public static List> groupList(List list, int batchSize) { if (Func.isEmpty(list)) { return Lists.newArrayList(); } int size = list.size(); List> res = Lists.newArrayList(); int i = 0; while (i <= size) { if (i + batchSize >= size) { List list1 = list.subList(i, size); res.add(list1); break; } int j = i + batchSize; List newList = list.subList(i, j); i = j; res.add(newList); } return res; } }