2018-06-03 22:26:41 +08:00

96 lines
2.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.amarsoft.aims.util;
import com.amarsoft.are.ARE;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectManager;
import com.amarsoft.are.jbo.JBOException;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.lang.StringX;
/**
* 汇率辅助处理工具类
* @author syang
* @date 2013-12-27
*/
public class ERateTool {
/** 人民币币种常量 */
public static final String CURRENCY_RMB = "01";
/**
* 取任一两种币种间的汇率
* @param fromCurrency 原币种
* @param toCurrency 转换的目标币种
* @return
*/
public static double getERate(String fromCurrency,String toCurrency){
if(StringX.isEmpty(fromCurrency)){
ARE.getLog().error("汇率转换源币种为空");
return 1.0;
}
if(StringX.isEmpty(toCurrency)){
ARE.getLog().error("汇率转换目标币种为空");
return 1.0;
}
if(fromCurrency.equals(toCurrency)){ //两个币种相同直接返回1
return 1.0;
}
double currencyFrom = 1.0;
double currencyTo = 1.0;
try {
BizObjectManager bm = JBOFactory.getBizObjectManager("jbo.sys.ERATE_INFO");
BizObject boFrom = bm.createQuery("Currency=:Currency").setParameter("Currency", fromCurrency).getSingleResult(false);
BizObject boTo = bm.createQuery("Currency=:Currency").setParameter("Currency", toCurrency).getSingleResult(false);
if(boFrom==null||boTo==null)return 1.0;
currencyFrom = boFrom.getAttribute("ExchangeValue").getDouble();
currencyTo = boTo.getAttribute("ExchangeValue").getDouble();
} catch (JBOException e) {
ARE.getLog().error("汇率获取错误JBO读取错误");
}
return NumberAssistant.divided(currencyFrom, currencyTo);
}
/**
* 获取转换成人民币的汇率
* @param sCurrency
* @return
*/
public static double getERateRMB(String currency){
return getERate(currency,CURRENCY_RMB);
}
/**
* 获取金额通过两个币种转换后的值
* @param sum 金额
* @param fromCurrency 原币种
* @param toCurrency 目标币种
* @return
*/
public static double getExchange(double sum,String fromCurrency,String toCurrency){
return NumberAssistant.multiply(sum,getERate(fromCurrency,toCurrency));
}
/**
* 指定币种的金额转换为人民币后的金额
* @param sum 金额
* @param fromCurrency 原币种
* @return
*/
public static double getExchangeRMB(double sum,String fromCurrency){
return getExchange(sum,fromCurrency,CURRENCY_RMB);
}
/**
* 人民币转换为本位币后的金额
* @param rmbSum 人民币金额
* @param baseCurrency 本位币币种
* @return
*/
public static double getRMBExchangeBase(double rmbSum,String baseCurrency){
return getExchange(rmbSum,CURRENCY_RMB,baseCurrency);
}
}