DefinePatternLayout.java:
package com.xy6.interview.util;
import org.apache.log4j.PatternLayout;
/**
* log4j发邮件辅助类
*
* @author daxiang
* @since 2014-07-19
*/
public class DefinePatternLayout extends PatternLayout {
/*
* 解决log4j发邮件,内容中文乱码
* 覆盖layout类中的getContentType方法
*
*/
@Override
public String getContentType(){
return "text/plain;charset=GBK";
}
}
ProductConstants.java:
package com.xy6.interview.util;
import java.math.BigDecimal;
/**
* 常量类
*
* @author daxiang
* @since 2014-07-17
*/
public class ProductConstants {
// 基本销售税
public static BigDecimal RateBasic = new BigDecimal("0.10");
// 进口税
public static BigDecimal RateImport = new BigDecimal("0.05");
}
ProductFreeTaxTypeUtil.java:
package com.xy6.interview.util;
import java.util.ArrayList;
import com.xy6.interview.IProductService;
import com.xy6.interview.ProductService;
/**
* 免税商品类别工具类
*
* @author daxiang
* @since 2014-07-17
*/
public class ProductFreeTaxTypeUtil {
public static ArrayList<String> listFreeTaxProType = new ArrayList<String>();
/**
* 初始化免税商品类型集合
*/
public static void init(){
IProductService productService = new ProductService();
String strFilePath = "G:/PROGRAM/j2ee/workspace/DemoInterview2/com/xy6/interview/data/freetaxtype.xml";
listFreeTaxProType = productService.readFreeTypeList(strFilePath);
}
}
ProductUtil.java:
package com.xy6.interview.util;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* 工具类
*
* @author daxiang
* @since 2014-07-17
*/
public class ProductUtil {
/**
* 格式化金额,精度为0.05
* 金额a.ax精确到2位小数-->获取金额最后一位数字x-->
* 如果不能整除5,result = a.ax - 0.0x + 0.1-->
* 如果能整除5,result = a.ax
*
* @param bd 金额
* @return 舍入到0.05后的金额
*/
public static BigDecimal roundTax(BigDecimal bd){
if(bd == null || BigDecimal.ZERO.compareTo(bd) == 1){
return BigDecimal.ZERO.setScale(2);
}
bd = bd.setScale(2,RoundingMode.HALF_UP);
String strBd = bd.toString();
String strLastBit = strBd.substring(strBd.length()-1,strBd.length());
BigDecimal bdTemp = BigDecimal.ZERO;
bdTemp.setScale(2);
int iLastBit = Integer.valueOf(strLastBit);
if(iLastBit%5 != 0){
bdTemp = BigDecimal.valueOf(iLastBit).divide(BigDecimal.valueOf(100));
bdTemp = bdTemp.multiply(BigDecimal.valueOf(-1));
bdTemp = bdTemp.add(iLastBit>5 ? new BigDecimal("0.1") : new BigDecimal("0.05"));
}
bd = bd.add(bdTemp);
return bd;
}
}
StringUtils.java:
由于代码较多,在此不在贴出。请下载源码后获取该文件。
参见:http://blog.csdn.net/daxiang12092205/article/details/37939075