CommonUtils.java
package com.vcredit.framework.utils;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CommonUtils {
private static final Logger logger = LoggerFactory.getLogger(CommonUtils.class);
/**
* 乘法
*/
public static BigDecimal multiply(BigDecimal numOne, BigDecimal numTwo) {
if (numOne == null || numTwo == null) {
return BigDecimal.ZERO;
}
return numOne.multiply(numTwo);
}
/**
* 格式化金额
*
* @param decimal
* @return
*/
public static String formatMoney(BigDecimal decimal) {
decimal = (decimal == null) ? BigDecimal.ZERO : decimal;
return formatMoney(decimal, 2);
}
/**
* 乘法格式金额
*/
public static String formatMultiplyMonty(BigDecimal decimal, BigDecimal decimalTwo) {
return formatMoney(multiply(decimal, decimalTwo));
}
/**
* 乘法格式金额
*/
public static String formatMultiplyPercent(BigDecimal decimal, BigDecimal decimalTwo) {
return formatPercent(multiply(decimal, decimalTwo));
}
/**
* 格式化费率
*
* @param decimal
* @return
*/
public static String formatPercent(BigDecimal decimal) {
decimal = (decimal == null) ? BigDecimal.ZERO : decimal;
return formatPercent(decimal, 2);
}
/**
* 格式化费率
*
* @param decimal
* @return
*/
public static String formatPercent(BigDecimal decimal, int scale) {
return formatPercentNum(decimal, scale) + "%";
}
/**
* 格式化百分比数字(不带百分号)
*
* @param decimal
* @return
*/
public static String formatPercentNum(BigDecimal decimal, int scale) {
if (decimal == null) {
return "0.00";
}
BigDecimal num = decimal.multiply(new BigDecimal("100")).setScale(scale, RoundingMode.HALF_UP);
return String.valueOf(num);
}
/**
* 格式化数字
*
* @param decimal
* @param scale
* @return
*/
public static String formatMoney(BigDecimal decimal, int scale) {
if (decimal == null) {
return "";
}
return String.valueOf(decimal.setScale(scale, RoundingMode.HALF_UP));
}
public static BigDecimal formatDecimal(String value, int scale) {
BigDecimal decimal = getDecimal(new BigDecimal(value));
return decimal.setScale(scale, RoundingMode.HALF_UP);
}
/**
* 身份证号取男女
*
* @param identityNo
* @return
*/
public static String getIdentityGender(String identityNo) {
if (StringUtils.isBlank(identityNo) || identityNo.length() != 18) {
return null;
}
Integer val = Integer.parseInt(String.valueOf(identityNo.charAt(16)));
return (val % 2 == 0) ? "女" : "男";
}
/**
* 身份证号取生日
*
* @param identityNo
* @return
*/
public static String getIdentityBirth(String identityNo) {
if (StringUtils.isBlank(identityNo) || identityNo.length() != 18) {
return null;
}
String birth = identityNo.substring(6, 14);
return DateFormatUtil.string2string(birth, "yyyyMMdd", "yyyy-MM-dd");
}
/**
* 查询参数
*
* @param paramMap
* @param name
* @return String
*/
public static String getValue(Map<String, Object> paramMap, String name) {
if (paramMap == null || paramMap.isEmpty() || StringUtils.isBlank(name) || !paramMap.containsKey(name)) {
return null;
}
Object obj = paramMap.get(name);
if (obj == null) {
return null;
}
String value = obj.toString();
return value.trim();
}
public static String getValue(Map<String, Object> paramMap, String name, String defaultValue) {
return CommonUtils.getValue(getValue(paramMap, name), defaultValue);
}
/**
* 查询参数
*
* @param paramMap
* @param name
* @return Map<String, Object>
*/
public static Map<String, Object> getMapValue(Map<String, Object> paramMap, String name) {
if (paramMap == null || paramMap.isEmpty() || StringUtils.isBlank(name) || !paramMap.containsKey(name)) {
return null;
}
Object obj = paramMap.get(name);
if (obj == null) {
return null;
}
Map<String, Object> value = null;
if (obj instanceof Map)
value = (Map<String, Object>) obj;
return value;
}
/**
* 获取Integer的字符串类型
*
* @param value
* @return
*/
public static String getValue(Integer value) {
if (value == null) {
return "";
}
return String.valueOf(value);
}
/**
* 获取Integer的字符串类型
*
* @param value
* @return
*/
public static String getValue(BigDecimal value) {
if (value == null) {
return "";
}
return String.valueOf(value);
}
/**
* 获取Long的字符串
*
* @param value
* @return
*/
public static String getValue(Long value) {
if (value == null) {
return "";
}
return String.valueOf(value);
}
/**
* 获取String的trimValue
*
* @param value
* @return
*/
public static String getValue(String value) {
if (StringUtils.isBlank(value)) {
return "";
}
return value.trim();
}
/**
* 获取Decimal默认值
*
* @param applyAmount
* @return
*/
public static BigDecimal getDecimal(BigDecimal applyAmount) {
return applyAmount == null ? BigDecimal.ZERO : applyAmount;
}
/**
* 如果字符串为空返回默认值
*
* @param value
* @param defaultValue
* @return
*/
public static String getValue(String value, String defaultValue) {
return StringUtils.isBlank(value) ? defaultValue : value;
}
/**
* 截取尾數字符
*
* @param value
* @param len
* @return
*/
public static String getLast(String value, int len) {
if (StringUtils.isBlank(value) || len <= 0 || value.length() - len <= 0) {
return getValue(value);
}
return value.substring(value.length() - len, value.length());
}
/**
* <pre>
* 字符串替换显示*
*
* 比如身份证要显示成:370************013
*
* @param value - 要操作的内容
* @param start - 替换开始位置
* @param end - 替换结束位置
* @param repChar - 要替换成的内容
* @return String
* </pre>
*/
public static String replace(String value, int start, int end, String repChar) {
if (StringUtils.isBlank(value) || start > end || repChar == null || value.length() < end) {
return value;
}
String con = value.substring(start, end);
String repStr = StringUtils.repeat(repChar, con.length());
return value.replace(con, repStr);
}
/**
* 往对象里设置属性值
*
* @param bean
* @param name
* @param value
*/
public static void setStringValue(Object bean, String name, String value) {
if (StringUtils.isBlank(value)) {
return;
}
try {
BeanUtils.setProperty(bean, name, value);
} catch (IllegalAccessException | InvocationTargetException e) {
logger.error("没有对应的属性", e);
}
}
/**
* 往对象里设置值
*
* @param paramMap
* @param bean
* @param paramName
* @param fieldName
*/
public static void setStringValue(Map<String, Object> paramMap, Object bean, String paramName, String fieldName) {
String value = CommonUtils.getValue(paramMap, paramName);
setStringValue(bean, fieldName, value);
}
public static void setStringValue(Map<String, Object> paramMap, Object bean, String fieldName) {
String value = CommonUtils.getValue(paramMap, fieldName);
setStringValue(bean, fieldName, value);
}
/**
* 计算百分比
*
* @param numOne
* @param numTwo
* @return
*/
public static String calPercent(long numOne, long numTwo, int scale) {
if (numTwo == 0) {
return String.valueOf(BigDecimal.ZERO.setScale(scale)) + "%";
}
BigDecimal start = BigDecimal.valueOf(numOne);
BigDecimal end = BigDecimal.valueOf(numTwo);
BigDecimal result = start.multiply(new BigDecimal(100)).divide(end, RoundingMode.HALF_UP).setScale(scale);
return String.valueOf(result) + "%";
}
/**
* 是否小于等于
*
* @param valOne
* @param valTwo
* @return boolean
*/
public static boolean isLessEqThan(BigDecimal valOne, BigDecimal valTwo) {
BigDecimal valueOne = getDecimal(valOne);
BigDecimal valueTwo = getDecimal(valTwo);
return valueOne.compareTo(valueTwo) <= 0;
}
/**
* 减法
*
* @param valOne
* @param valTwo
* @return boolean
*/
public static BigDecimal subtract(BigDecimal valOne, BigDecimal valTwo) {
BigDecimal valueOne = getDecimal(valOne);
BigDecimal valueTwo = getDecimal(valTwo);
return valueOne.subtract(valueTwo);
}
/**
* +法
*
* @param valOne
* @param valTwo
* @return boolean
*/
public static BigDecimal add(BigDecimal valOne, BigDecimal valTwo) {
BigDecimal valueOne = getDecimal(valOne);
BigDecimal valueTwo = getDecimal(valTwo);
return valueOne.add(valueTwo);
}
/**
* 是否包含
*
* @param value
* @param chars
* @return boolean
*/
public static boolean contains(String value, String chars) {
if (StringUtils.isAnyBlank(value, chars)) {
return false;
}
return value.indexOf(chars) != -1;
}
/**
* 是否包含任一
*
* @param value
* @param chars
* @return
*/
public static boolean containsAny(String value, String... chars) {
if (chars == null || chars.length == 0) {
return false;
}
boolean result = false;
for (String content : chars) {
if (contains(value, content)) {
result = true;
break;
}
}
return result;
}
/**
* Get Int
*
* @param value
* @return
*/
public static Integer getInt(String value) {
if (!StringUtils.isNumeric(value)) {
return 0;
}
return Integer.parseInt(value.trim());
}
/**
* 随机码
*
* @return String
*/
public static String getRandom() {
return String.valueOf(Math.random());
}
/**
* 验证码图片
*
* @param oriURL
* @return
*/
public static final String getRandomCodeUrl(String domain, String context, String oriURL) {
if (StringUtils.isBlank(oriURL)) {
return "";
}
String code = EncodeUtils.base64Encode(oriURL);
StringBuffer buffer = new StringBuffer();
buffer.append(domain).append("/");
buffer.append(context).append("/common/files/random");
buffer.append("?code=").append(code).append("&ver=").append(getRandom());
return buffer.toString();
}
/**
* 是否为零
*
* @param value
* @return boolean
*/
public static final boolean isZero(BigDecimal value) {
return value == null || BigDecimal.ZERO.compareTo(value) == 0;
}
/**
* 字符串左补齐
*
* @param value
* @param length
* @param sign
* @return
*/
public static String leftPad(String value, int length, String sign) {
if (StringUtils.isBlank(value)) {
return null;
}
if (value.trim().length() >= length) {
return value;
}
int padLen = length - value.trim().length();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < padLen; i++) {
builder.append(sign);
}
return builder.toString() + value;
}
public static final boolean isAnySame(Integer expectCount, String... values) {
Set<String> set = new HashSet<String>();
set.addAll(Arrays.asList(values));
return set.size() != expectCount;
}
public static final boolean lt(String numOne, String numTwo) {
if (!StringUtils.isNumeric(numOne) || !StringUtils.isNumeric(numTwo)) {
return false;
}
BigDecimal start = new BigDecimal(numOne);
BigDecimal end = new BigDecimal(numTwo);
return start.compareTo(end) < 0;
}
/**
* 比对身份证(带*)
*
* @param identityNo
* @param spiderIdentityNo
* @return
*/
public static final boolean isEqual(String identityNo, String spiderIdentityNo, String ignoreChar) {
if (StringUtils.isAnyBlank(identityNo, spiderIdentityNo, ignoreChar)) {
return true;
}
if (identityNo.length() != spiderIdentityNo.length()) {
return false;
}
String[] identityNoArr = identityNo.split("");
String[] spiderIdentityNoArr = spiderIdentityNo.split("");
boolean result = true;
for (int i = 0; i < identityNoArr.length; i++) {
String content = identityNoArr[i];
String compareContent = spiderIdentityNoArr[i];
if (StringUtils.equals(content, ignoreChar) || StringUtils.equals(compareContent, ignoreChar)) {
continue;
}
if (!StringUtils.equalsIgnoreCase(content, compareContent)) {
result = false;
break;
}
}
return result;
}
/**
* 返回1-x间的随机数
*
* @return
*/
public static int getRandomInt(int x) {
if (x <= 0) {
throw new RuntimeException("随机上限必须大于等于1");
}
return (int) (1 + Math.random() * x);
}
/**
* 返回胜率为x时是否成功
*
* @param x
* @return
*/
public static boolean xPercentWin(int x) {
int temp = CommonUtils.getRandomInt(100);
return (temp >= 1 && temp <= x);
}
/**
* 校验字符串是否为空 (注:" " == true)
*
* @param str
* @return
*/
public static boolean isEmpty(String str) {
return (StringUtils.isBlank(str) || StringUtils.equals("undefined", str)
|| StringUtils.equalsIgnoreCase("null", str));
}
}
CommonUtils.java的更多相关文章
- cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused
cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused 环境: ...
- 网上图书商城项目学习笔记-036工具类之CommonUtils及日期转换器
1.CommonUtils.java package cn.itcast.commons; import java.util.Map; import java.util.UUID; import or ...
- 工具类封装之--CommonUtils
/** * @file_name : CommonUtils.java * @author : * @date : 2018年3月15日 * Description: */ package cn.xx ...
- Java国密相关算法(bouncycastle)
公用类算法: PCIKeyPair.java /** * @Author: dzy * @Date: 2018/9/27 14:18 * @Describe: 公私钥对 */ @Data @AllAr ...
- Java多线程学习(二)synchronized关键字(2)
转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79670775 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...
- Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性)
Java自定义注解源码+原理解释(使用Java自定义注解校验bean传入参数合法性) 前言:由于前段时间忙于写接口,在接口中需要做很多的参数校验,本着简洁.高效的原则,便写了这个小工具供自己使用(内容 ...
- mysql报错:Cause: java.sql.SQLException: sql injection violation, syntax error: ERROR. pos 39, line 2, column 24, token CLOSE
因为close是mysql关键字 -- ::, DEBUG (BaseJdbcLogger.java:)- ==> Preparing: , -- ::, INFO (XmlBeanDefini ...
- Java IO: ByteArrayOutputStream使用
感谢原文作者:小思思smile 原文链接:https://blog.csdn.net/u014049880/article/details/52329333/ 更多请查阅Java API文档! 在创建 ...
- cas与NGINX整合(转)
CAS (5) -- Nginx代理模式下浏览器访问CAS服务器配置详解 标签: 服务器 2015-12-18 15:04 1633人阅读 评论(0) 收藏 举报 分类: 网络(61) 目录( ...
随机推荐
- Windows Server 2008 R2 实现多用户同时登陆
Windows Server 2008 R2远程用户数设置 在windows server 2008 R2里面,默认的远程桌面连接数为1.这对我们的服务器管理带来了很大的不便,那么怎样来修改2008 ...
- 某app客户端数字签名分析
最近测试app时发现某app对数据包做了签名,其直接后果就导致截获的数据包没法修改,因此对该app的数字签名了进行了一次分析.
- 表格边框css
table标签默认是没有边框的,但是如果我们自己加上边框boder:1px solid black;只有整个表格最外面有边框,那么如何给表格添加样式使得整个表格的tr.td都具有边框呢: <st ...
- Android获取APK包名的几种方法
Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...
- iOS学习11之OC继承
面向对象的三大特性:封装,继承,多态. 1.继承 继承既能保证类的完整,又能简化代码. 把公共的⽅法和实例变量写在⽗类⾥,⼦类只需要写⾃⼰独有的实例变量和⽅法即可. 继承是⾯向对象三⼤特性之⼀,合理的 ...
- unity mathf.repeat 截取操作
截取操作,可用于浮点数. Mathf.Repeat(Time.realtimeSinceStartup, 3*blinkTime) > blinkTime;
- [R语言]forecast.Arima中使用xreg报错
问题: 使用forecast.Arima对带xreg的arima模型进行预测,报xreg Error pre.m4x <- forecast.Arima(m4x, h = 20, xreg = ...
- [深入浅出WP8.1(Runtime)]网络编程之HttpClient类
12.2 网络编程之HttpClient类 除了可以使用HttpWebRequest类来实现HTTP网络请求之外,我们还可以使用HttpClient类来实现.对于基本的请求操作,HttpClient类 ...
- 【HDU】4035 Maze
http://acm.hdu.edu.cn/showproblem.php?pid=4035 题意:给一棵n个节点的树,每个节点有值k[i]和e[i],分别表示k[i]概率走向1号节点,e[i]概率获 ...
- Weka使用介绍
(转) http://baidutech.blog.51cto.com/4114344/1033714/ 1.简介 数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至 ...