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) 目录( ...
随机推荐
- ASP.NET MVC5 网站开发实践(一) - 项目框架(转)
前几天算是开题了,关于怎么做自己想了很多,但毕竟没做过项目既不知道这些想法有无必要,也不知道能不能实现,不过邓爷爷说过“摸着石头过河”吧.这段时间看了一些博主的文章收获很大,特别是@kencery,依 ...
- C# 键值对类相关
一 C# 键值对类有以下类: ① IDictionary<string, Object> idc = new Dictionary<string, object>(); ...
- 分享Kali Linux 2016.2第49周虚拟机
分享Kali Linux 2016.2第49周虚拟机该虚拟机使用Kali Linux 2016.2第49周的64位镜像安装而成.基本配置如下:(1)该系统默认设置单CPU双核,内存为2GB,硬盘为50 ...
- 点击不同按钮生成不同窗体到某个panel上面,类似Frame用法--不错
//点击不同按钮生成不同页面加载到某个panel上面.procedure TMainForm.DemoButtonClick(Sender: TObject); var NewDemoClass: T ...
- Hadoop 2.0安装以及不停集群加datanode
Hadoop2.0是对Hadoop1.0全面升级,针对Namenode单点问题,提出了HDFS Federation,让多个NameNode分管不同的目录进而实现访问隔离和横向扩展.诞生了通用的计算框 ...
- ural 1142. Relations
1142. Relations Time limit: 1.0 secondMemory limit: 64 MB Background Consider a specific set of comp ...
- TXT文件去除多余空行
有的小说段落之间有大批的空行,看起来十分难看,比如: 长达500多页,手动改就尴尬了,废话不多少,直接上代码: #include "stdafx.h" #include <s ...
- django 安装
git clone https://github.com/django/django.git 或者到django的官网下载 然后 python setup.py install
- [NOIP2015]运输计划 D2 T3 LCA+二分答案+差分数组
[NOIP2015]运输计划 D2 T3 Description 公元2044年,人类进入了宇宙纪元. L国有n个星球,还有n-1条双向航道,每条航道建立在两个星球之间,这n-1条航道连通了L国的所有 ...
- 2017亚洲VR&AR博览会暨高峰论坛
2017亚洲VR&AR博览会暨高峰论坛 2017 Asia VR&AR Fair & Summit(VR&AR Fair 2017) 活动介绍活动时间: 2017年3月 ...