常用工具类
计算当天开始时间和结束时间
DateTime date = DateUtil.date();
String startDateStr = DateUtil.formatDateTime(DateUtil.beginOfDay(date));
String endDateStr = DateUtil.formatDateTime(DateUtil.beginOfDay(DateUtil.offsetDay(date,1)));
params.put("startDate",startDateStr);
params.put("endDate",endDateStr);
1-数组工具类(ArrayUtils)
package com.tianji.common.utils;import cn.hutool.core.util.ArrayUtil;import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;/*** 数组工具类* @ClassName ArrayUtils**/
public class ArrayUtils extends ArrayUtil {/*** 将源数组转换成指定类型的列表** @param originList 原始列表* @param targetClazz 转换后列表元素的类型* @param <R> 原始列表元素的类型* @param <T> 目标列表元素的类型* @return 目标类型的集合*/public static <R, T> List<T> convert(R[] originList, Class<T> targetClazz) {return convert(originList, targetClazz, null);}/*** 将源数组转换成指定类型的列表** @param originList 原始列表* @param targetClazz 转换后列表元素的类型* @param convert 转换特殊字段接口* @param <R> 原始列表元素的类型* @param <T> 目标列表元素的类型* @return 目标类型的集合*/public static <R, T> List<T> convert(R[] originList, Class<T> targetClazz, Convert<R, T> convert) {if (isEmpty(originList)) {return null;}return Arrays.stream(originList).map(origin -> BeanUtils.copyBean(origin, targetClazz, convert)).collect(Collectors.toList());}
}
2-AspectUtils
package com.tianji.common.utils;import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;import java.lang.reflect.Method;public class AspectUtils {/*** 获取被拦截方法对象* MethodSignature.getMethod() 获取的是顶层接口或者父类的方法对象* 所以应该使用反射获取当前对象的方法对象*/public static Method getMethod(ProceedingJoinPoint pjp) {//获取参数的类型Signature sig = pjp.getSignature();if (sig instanceof MethodSignature) {MethodSignature methodSignature = (MethodSignature) sig;return methodSignature.getMethod();} else {throw new IllegalArgumentException("It's not method");}}/*** 在aop切面中SPEL表达式对formatter进行格式化,* 转换出指定的值** @param formatter* @param method* @param args* @return*/public static String parse(String formatter, Method method, Object[] args) {LocalVariableTableParameterNameDiscoverer nameDiscoverer = new LocalVariableTableParameterNameDiscoverer();return SPELUtils.parse(formatter, nameDiscoverer.getParameterNames(method), args);}
}
3-断言工具类
package com.tianji.common.utils;import com.tianji.common.constants.ErrorInfo;
import com.tianji.common.exceptions.BadRequestException;import java.util.Map;public class AssertUtils {public static void equals(Object obj1, Object obj2, String ... message){if (obj1 == null || obj2 == null) {handleException(message);return;}if (obj1 == obj2) {return;}if(!obj1.equals(obj2)){handleException(message);}}public static void isNotNull(Object obj, String ... message){if (obj == null) {handleException(message);}}public static void isNotBlank(String str, String ... message){if (StringUtils.isBlank(str)) {handleException(message);}}public static void isTrue(Boolean boo, String... message) {if (BooleanUtils.isFalse(boo)) {handleException(message);}}public static void isFalse(Boolean boo, String... message) {if (BooleanUtils.isTrue(boo)) {handleException(message);}}private static void handleException(String ... message){String msg = ErrorInfo.Msg.REQUEST_PARAM_ILLEGAL;if(message != null && message.length > 0){msg = message[0];}throw new BadRequestException(msg);}public static void isNotEmpty(Iterable<?> coll, String ... message) {if(CollUtils.isEmpty(coll)){handleException(message);}}public static void isNotEmpty(Map<?, ?> map, String ... message) {if(CollUtils.isEmpty(map)){handleException(message);}}
}
4-BeanUtils
package com.tianji.common.utils;import cn.hutool.core.bean.BeanUtil;import java.util.List;
import java.util.stream.Collectors;/*** 继承自 hutool 的BeanUtil,增加了bean转换时自定义转换器的功能*/
public class BeanUtils extends BeanUtil {/*** 将原对象转换成目标对象,对于字段不匹配的字段可以使用转换器处理** @param source 原对象* @param clazz 目标对象的class* @param convert 转换器* @param <R> 原对象类型* @param <T> 目标对象类型* @return 目标对象*/public static <R, T> T copyBean(R source, Class<T> clazz, Convert<R, T> convert) {T target = copyBean(source, clazz);if (convert != null) {convert.convert(source, target);}return target;}/*** 将原对象转换成目标对象,对于字段不匹配的字段可以使用转换器处理** @param source 原对象* @param clazz 目标对象的class* @param <R> 原对象类型* @param <T> 目标对象类型* @return 目标对象*/public static <R, T> T copyBean(R source, Class<T> clazz){if (source == null) {return null;}return toBean(source, clazz);}public static <R, T> List<T> copyList(List<R> list, Class<T> clazz) {if (list == null || list.size() == 0) {return CollUtils.emptyList();}return copyToList(list, clazz);}public static <R, T> List<T> copyList(List<R> list, Class<T> clazz, Convert<R, T> convert) {if (list == null || list.size() == 0) {return CollUtils.emptyList();}return list.stream().map(r -> copyBean(r, clazz, convert)).collect(Collectors.toList());}
}