金蝶云苍穹开发工具类整理

1. 金额工具类

import java.math.BigDecimal;

/**
 *	金额工具类
 *@author
 *@date 
 */
public class BigDecimalUtils {

	public static BigDecimal zero = new BigDecimal("0.00");
	public static BigDecimal one = new BigDecimal("1.00");
	public static BigDecimal one_handred = new BigDecimal("100");
	public static BigDecimal one_thousand = new BigDecimal("1000");
	public static BigDecimal one_million = new BigDecimal("1000000");
	public static BigDecimal one_handred_ten = new BigDecimal("110");
	public static BigDecimal ten_thousand = new BigDecimal("10000");
	
	/***
	 * 金额格式转换
	 * @param Object
	 * @return
	 */
	public static BigDecimal toBigDecimal(Object obj)
    {
      if(obj == null)
           return BigDecimalUtils.zero;
        if(obj instanceof BigDecimal)
            return (BigDecimal)obj;
        if(obj instanceof Integer)
            return new BigDecimal(((Integer)obj).toString());
        if(obj instanceof Long)
            return new BigDecimal(((Long)obj).toString());
        if(obj instanceof Double)
            return new BigDecimal(((Double)obj).doubleValue());
        if(obj.toString() == null)
            return BigDecimalUtils.zero;
        String str = obj.toString().trim();
        if(str.toLowerCase().indexOf("e") > -1)
            try
            {
                return new BigDecimal(str);
            }
            catch(NumberFormatException e)
            {
               return BigDecimalUtils.zero;
            }
        if(str.matches("^[+-]?\\d+[\\.\\d]?\\d*+$"))
            return new BigDecimal(str);
        else
            return BigDecimalUtils.zero;
    }
	
	/***
	 * 除
	 * @param  Object
	 * @param  Object
	 * @param scale 精度
	 * @return 金额
	 */
	public static BigDecimal div(Object a, Object b,int scale) {
		if (a == null)
			a = zero;
		if (b == null)
			return zero;

		if (a instanceof BigDecimal && b instanceof BigDecimal) {
			BigDecimal aVal = (BigDecimal) a;
			BigDecimal bVal = (BigDecimal) b;
			return aVal.divide(bVal,scale,BigDecimal.ROUND_HALF_UP);
		}

		return zero;
	}
	/***
	 * 除
	 * @param BigDecimal
	 * @param BigDecimal
	 * @param scale 精度
	 * @return 金额
	 */
	public static BigDecimal div(BigDecimal aVal, BigDecimal bVal,int scale) {

		if (aVal == null)
			aVal = zero;

		if (bVal == null)
			return zero;

		if (bVal.compareTo(zero) == 0)
			return zero;
		BigDecimal ret = aVal.divide(bVal, scale, BigDecimal.ROUND_HALF_UP);

		return ret;

	}
	/***
	 * 除
	 * @param BigDecimal
	 * @param BigDecimal
	 * @return 整数
	 */
	public static BigDecimal getIntDiv(BigDecimal aVal, BigDecimal bVal) {

		if (aVal == null)
			aVal = zero;

		if (bVal == null)
			return zero;

		if (bVal.compareTo(zero) == 0)
			return zero;
		BigDecimal ret = aVal.divide(bVal, 0, BigDecimal.ROUND_UP);

		return ret;

	}
	/***
	 * 乘
	 * @param Object
	 * @param Object
	 * @param scale
	 * @return
	 */
	public static BigDecimal multiply(Object a, Object b,int scale) {

		if (a == null)
			a = zero;

		if (b == null)
			b = zero;

		if (a instanceof BigDecimal && b instanceof BigDecimal) {
			BigDecimal aVal = (BigDecimal) a;
			BigDecimal bVal = (BigDecimal) b;
			return aVal.multiply(bVal).setScale(scale,BigDecimal.ROUND_HALF_UP);
		}

		return zero;
	}
	/***
	 * 乘
	 * @param BigDecimal
	 * @param BigDecimal
	 * @param scale
	 * @return
	 */
	public static BigDecimal multiply(BigDecimal aVal, BigDecimal bVal,int scale) {
		if (aVal == null)
			aVal = zero;

		if (bVal == null)
			bVal = zero;

		BigDecimal ret = aVal.multiply(bVal).setScale(scale,BigDecimal.ROUND_HALF_UP);

		return ret;

	}
	
	/***
	 * 加
	 * @param Object
	 * @param Object
	 * @param scale
	 * @return
	 */
	public static BigDecimal add(Object a, Object b,int scale) {

		if (a == null)
			a = zero;

		if (b == null)
			b = zero;

		if (a instanceof BigDecimal && b instanceof BigDecimal) {
			BigDecimal aVal = (BigDecimal) a;
			BigDecimal bVal = (BigDecimal) b;
			return aVal.add(bVal).setScale(scale, BigDecimal.ROUND_HALF_UP);
		}

		return zero;
	}
	/***
	 * 加
	 * @param BigDecimal
	 * @param BigDecimal
	 * @param scale
	 * @return
	 */
	public static BigDecimal add(BigDecimal aVal, BigDecimal bVal,int scale) {

		if (aVal == null)
			aVal = zero;

		if (bVal == null)
			bVal = zero;

		BigDecimal ret = aVal.add(bVal);
		ret = ret.setScale(scale, BigDecimal.ROUND_HALF_UP);
		return ret;

	}
	
	/***
	 * 减
	 * @param Object
	 * @param Object
	 * @param scale
	 * @return
	 */
	public static BigDecimal sub(Object a, Object b,int scale) {

		if (a == null)
			a = zero;

		if (b == null)
			b = zero;

		if (a instanceof BigDecimal && b instanceof BigDecimal) {
			BigDecimal aVal = (BigDecimal) a;
			BigDecimal bVal = (BigDecimal) b;
			return aVal.subtract(bVal).setScale(scale, BigDecimal.ROUND_HALF_UP);
		}

		return zero;
	}
	/***
	 * 减
	 * @param BigDecimal
	 * @param BigDecimal
	 * @param scale
	 * @return
	 */
	public static BigDecimal sub(BigDecimal aVal, BigDecimal bVal,int scale) {

		if (aVal == null)
			aVal = zero;

		if (bVal == null)
			bVal = zero;

		BigDecimal ret = aVal.subtract(bVal);
		ret = ret.setScale(scale, BigDecimal.ROUND_HALF_UP);
		return ret;

	}
	
	// 加1
	public static BigDecimal addOne(Object a,int scale) {
		return add(a, one,scale);
	}

	// 减1
	public static BigDecimal subOne(Object a,int scale) {
		return sub(a, one,scale);
	}
	
	/**
	 * 金额转大写
	 * @param n
	 * @return
	 */
	public static String digitCapital(double n) {
	    String fraction[] = {"角", "分"};
	    String digit[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
	    String unit[][] = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}};

	    String head = n < 0 ? "负" : "";
	    // 如果是负数取绝对值
	    n = Math.abs(n);
	    String s = "";
	    BigDecimal bigDecimal = new BigDecimal(Double.valueOf(n).toString());
	    String nStr = bigDecimal.toString();
	    // 小数部分
	    String[] split = nStr.split("\\.");
	    if (split.length > 1) {
	        // 小数点为特殊符号,在分割时需进行转义
	        String decimalStr = split[1];
	        if (decimalStr.length() > 2) {
	            decimalStr = decimalStr.substring(0, 2);
	        }
	        // 将小数部分转换为整数
	        Integer integer = Integer.valueOf(decimalStr);
	        String p = "";
	        for (int i = 0; i < decimalStr.length() && i < fraction.length; i++) {
	            p = digit[integer % 10] + fraction[decimalStr.length() - i - 1] + p;
	            integer = integer / 10;
	        }
	        s = p.replaceAll("(零.)+", "") + s;
	    }
	    if (s.length() < 1) {
	        s = "整";
	    }
	    int integerPart = (int)Math.floor(n);
	    // 整数部分
	    for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
	        String p = "";
	        for (int j = 0; j < unit[1].length && n > 0; j++) {
	            p = digit[integerPart % 10] + unit[1][j] + p;
	            integerPart = integerPart / 10;
	        }
	        s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s;
	    }
	    return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
	}
	
	/*
	 *向上取整
	 */
	public static BigDecimal ceil(double aVal,int scale) {
		aVal = Math.ceil(aVal);
		BigDecimal aVal1=BigDecimal.valueOf(aVal);
		aVal1 = aVal1.setScale(scale, BigDecimal.ROUND_HALF_UP);
		return aVal1;
	}
	
	/*
	 * 向下取整
	 */
	public static BigDecimal floor(double aVal,int scale) {
		aVal = Math.floor(aVal);
		BigDecimal aVal1=BigDecimal.valueOf(aVal);
		aVal1 = aVal1.setScale(scale, BigDecimal.ROUND_HALF_UP);
		return aVal1;
	}
}

2. 日期工具类

import kd.bos.exception.*;
import java.text.*;
import org.joda.time.format.*;
import java.util.*;
import org.joda.time.*;

/**
 * 日期工具类
 *@author 
 *@date 
 */
public class DateUtils {
	public static final String FORMAT_YMD = "yyyy-MM-dd";
    public static final String FORMAT_YMDHMS = "yyyy-MM-dd HH:mm:ss";
    public static final String FORMAT_yyyyMMdd = "yyyyMMdd";
    public static final DateTimeFormatter DATE_FORMATTER;
    public static final DateTimeFormatter DATETIME_FORMATTER;
    
    public static Date truncateDate(final Date dt) {
        if (dt == null) {
            return null;
        }
        final Calendar cal = Calendar.getInstance();
        cal.setTime(dt);
        cal.set(cal.get(1), cal.get(2), cal.get(5), 0, 0, 0);
        return new Date(cal.getTimeInMillis() / 1000L * 1000L);
    }
    
    public static Date getLastDay(final Date date, final int i) {
        final Calendar cal = new GregorianCalendar();
        cal.setTime(date);
        cal.set(5, cal.get(5) - i);
        return cal.getTime();
    }
    
    public static Date getNextDay(final Date date, final int i) {
        final Calendar cal = new GregorianCalendar();
        cal.setTime(date);
        cal.set(5, cal.get(5) + i);
        return cal.getTime();
    }
    
    public static int getDiffDays(final Date beginDate, final Date endDate) {
        if (beginDate == null || endDate == null) {
            throw new IllegalArgumentException("getDiffDays param is null!");
        }
        final long diff = (endDate.getTime() - beginDate.getTime()) / 86400000L;
        final int days = new Long(diff).intValue() + 1;
        return days;
    }
    
    public static Date getDataFormat(final Date date, final boolean isStart) {
        final String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(date);
        String suffix = " 00:00:00";
        if (!isStart) {
            suffix = " 23:59:59";
        }
        try {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(dateStr + suffix);
        }
        catch (ParseException e) {
            throw new KDException((Throwable)e, BosErrorCode.systemError, new Object[0]);
        }
    }
    
    public static String formatString(final Date date, final String forPattern) {
        return new DateTime((Object)date).toString(DateTimeFormat.forPattern(forPattern));
    }
    
    public static int getDay(final Date date) {
        return Integer.parseInt(new DateTime((Object)date).toString(DateUtils.DATE_FORMATTER).substring(8));
    }
    
    public static int getMonth(final Date date) {
        return Integer.parseInt(new DateTime((Object)date).toString(DateUtils.DATE_FORMATTER).substring(5, 7));
    }
    
    public static int getYear(final Date date) {
        return Integer.parseInt(new DateTime((Object)date).toString(DateUtils.DATE_FORMATTER).substring(0, 4));
    }
    
    public static Map<String, Date> getWeekDate() {
        final Map<String, Date> weekDate = new HashMap<String, Date>();
        final Calendar cal = Calendar.getInstance();
        cal.setTime(new Date());
        int d = 0;
        if (cal.get(7) == 1) {
            d = -6;
        }
        else {
            d = 2 - cal.get(7);
        }
        cal.add(7, d);
        weekDate.put("beginDate", cal.getTime());
        cal.add(7, 6);
        weekDate.put("endDate", cal.getTime());
        return weekDate;
    }
    
    public static Date getMinMonthDate(Date date) {
        date = getDataFormat(date, true);
        final Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(5, calendar.getActualMinimum(5));
        return calendar.getTime();
    }
    
    public static Date getMaxMonthDate(Date date) {
        date = getDataFormat(date, false);
        final Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(5, calendar.getActualMaximum(5));
        return calendar.getTime();
    }
    
    public static boolean isSameDay(final Date date1, final Date date2) {
        if (date1 == null || date2 == null) {
            return false;
        }
        final Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
        final Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);
        return isSameDay(cal1, cal2);
    }
    
    public static boolean isSameDay(final Calendar cal1, final Calendar cal2) {
        return cal1 != null && cal2 != null && cal1.get(0) == cal2.get(0) && cal1.get(1) == cal2.get(1) && cal1.get(6) == cal2.get(6);
    }
    
    public static boolean isSameMonth(final Date d1, final Date d2) {
        return isSameDay(getMinMonthDate(d1), getMinMonthDate(d1));
    }
    
    public static void main(final String[] args) {
        System.out.println(new LocalDate().toString(DateUtils.DATE_FORMATTER));
        System.out.println(getDataFormat(new Date(), true));
        System.out.println(getDataFormat(new Date(), false));
        System.out.println(getNextDay(new Date(), -1));
    }
    
    static {
        DATE_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
        DATETIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    }
    
    /**
	 * 获取指定日期添加/减去指定天数后的日期
	 * 
	 * @param date
	 * @param days
	 * @return
	 */
	public static Date addDays(Date date, int days) {
		Calendar calendar = Calendar.getInstance();
		calendar.clear();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_MONTH, days);
		return calendar.getTime();
	}
	
	/**
	 * 日期格式化
	 * @param date
	 * @param format
	 * @return
	 */
	public static Date formatDate(String date, String format) {
		SimpleDateFormat dt = new SimpleDateFormat(format);
		try {
			return dt.parse(date);
		} catch (ParseException e) {
		}
		return null;
	}
    
	/**
	 * 日期格式化
	 * @param date
	 * @param format
	 * @return
	 */
	public static String getData(Date date, String format) {
		SimpleDateFormat dt = new SimpleDateFormat(format);
		return dt.format(date);
	}
	
	/**
	 * 日期格式化
	 * @param timeString :Sun Mar 01 00:00:00 CST 2020
	 * @return yyyy-MM-dd
	 */
	public static String DateFormat(String timeString) {
		SimpleDateFormat sfEnd = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat sfStart = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",java.util.Locale.ENGLISH) ;
		try {
			String format = sfEnd.format(sfStart.parse(timeString));
			Date time = DateUtils.formatDate(format, "yyyy-MM-dd");
			timeString=DateUtils.formatString(time, DateUtils.FORMAT_YMD);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return timeString;
	}
	
	/***
	 * 得到两个时期相差天数
	 * @param one
	 * @param two
	 * @return
	 */
	 public static int getDistanceDays(Date one, Date two){  
	        int days=0;  
	        long time1 = one.getTime();  
			long time2 = two.getTime();  
			long diff ;  
			diff = time2 - time1;  
			days =  (int) (diff / (1000 * 60 * 60 * 24));  
	        return days;  
	 }

3.根据物料ID获取物料分类

调用
DynamicObject material = goodsentrys.getDynamicObject("material");
			if(material!=null) {
                DynamicObject materialBill = BusinessDataServiceHelper.loadSingle(material.getPkValue(), material.getDynamicObjectType().getName());
                materialGroupNum = getMaterialGroupNum(materialBill);
            }
/**
 * 根据物料ID获取物料分类
 * @param materialId
 * @return
 */
public static String getMaterialGroupNum(DynamicObject materialBill) {
    String groupNumber = "";
    if(materialBill!=null && "".equals(groupNumber)) {
        QFilter qFilter1 = new QFilter("material", "=", materialBill==null?0L:materialBill.getPkValue());
        DynamicObject[] groups = BusinessDataServiceHelper.load("bd_materialgroupdetail", "standard,group,material", new QFilter[]{qFilter1});
        for(int i =0;i<groups.length;i++) {
            DynamicObject standard = (DynamicObject) groups[i].get("standard");
            DynamicObject group = (DynamicObject) groups[i].get("group");
            if(standard.getString("number").equals("JBFLBZ")) {
                groupNumber = group.getString("number");
            }
        }
    }
    return groupNumber;
}

未完待续,持续更新

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值