销售税面试题八编码实现之辅助类

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值