zoukankan      html  css  js  c++  java
  • 对数据的处理 :(对空字符串、Null、时间间隔、日期格式等)

    package java;
    
    import java.beans.BeanInfo;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.io.BufferedReader;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.PrintStream;
    import java.lang.reflect.Method;
    import java.math.BigDecimal;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.text.DateFormat;
    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Stack;
    import java.util.StringTokenizer;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import org.apache.commons.beanutils.BeanUtils;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import com.paic.pafa.app.lwc.core.util.DevLog;
    import com.paic.pafa.app.lwc.core.util.StringUtils;
    
    public class CommonFunctions {
    	private static final Log logger = LogFactory.getLog(CommonFunctions.class);
    
    	private CommonFunctions() {
    	}
    
    	private static final Map certificateTypeMap = new HashMap();
    	private static final Map caseMap = new HashMap();
    	static {
    		certificateTypeMap.put("01", "1");
    		certificateTypeMap.put("02", "2");
    		certificateTypeMap.put("03", "3");
    		certificateTypeMap.put("05", "7");
    		certificateTypeMap.put("06", "6");
    		certificateTypeMap.put("99", "0");
    
    		caseMap.put("A", "0");
    		caseMap.put("B", "(0,1000]");
    		caseMap.put("C", "(1000,3000]");
    		caseMap.put("D", "(3000,5000]");
    		caseMap.put("E", "(5000,10000]");
    		caseMap.put("F", "(10000,50000]");
    		caseMap.put("G", "(50000,+∞)");
    	}
    
    	private static final List PREDEFINED_CLASS_LIST = Arrays
    			.asList(new Class[] { Date.class, String.class, Boolean.class,
    					Class.class, Float.class, Integer.class, Double.class,
    					Long.class });
    
    	private static final List DEFAULT_IGNORE_PROPERTY_NAME = Arrays
    			.asList(new String[] { "class" });
    
    	public static final String EMPTY_STRING = "";
    
    	public static final NumberFormat DEFAULT_NUMBER_FORMAT = new DecimalFormat(
    			"#.##");
    
    	public static final NumberFormat NUMBER_FORMAT_00_00 = new DecimalFormat(
    			"0.##");
    
    	public static final NumberFormat NUMBER_FORMAT_00_00_ZERO_PRESENT = new DecimalFormat(
    			"0.00");
    
    	public static final NumberFormat NUMBER_FORMAT_00_0000 = new DecimalFormat(
    			"0.####");
    
    	private static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    
    	public static final String DATE_FORMAT_YYYY = "yyyy";
    
    	public static final String DATE_FORMAT_MM = "MM";
    
    	public static final String DATE_FORMAT_DD = "dd";
    
    	public static final String DATE_FORMAT_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
    
    	public static final String DATE_FORMAT_YYYY_MM_DD = DEFAULT_DATE_FORMAT;
    
    	public static final String DATE_FORMAT_YYYY_MM_DD_NO_SEPATOR = "yyyyMMdd";
    
    	private static final String[] NUM_NAMES = { "零", "壹", "贰", "叁", "肆", "伍",
    			"陆", "柒", "捌", "玖" };
    
    	private static final String[] DIGITAL_NAMES = { "", "", "拾", "佰", "仟", "万",
    			"拾" };
    
    	private static String convertForInteger(String num) throws Exception {
    		if (Integer.parseInt(num) == 0)
    			return "";
    		char[] list = num.toCharArray();
    		Stack stack = new Stack();
    		boolean _continual = false;
    		for (int i = 1; i < list.length + 1; i++) {
    			int pos = list.length - i;
    			int _v = Integer.parseInt(String.valueOf(list[pos]));
    			if (_v == 0) {
    				if (!_continual) {
    					_continual = true;
    				}
    			} else {
    				if (_continual) {
    					stack.push("零");
    					_continual = false;
    				}
    				stack.push(DIGITAL_NAMES[i]);
    				stack.push(NUM_NAMES[_v]);
    			}
    
    		}
    		StringBuffer sb = new StringBuffer();
    		while (!stack.empty()) {
    			sb.append((String) stack.pop());
    		}
    		String value = sb.toString();
    		if (value.endsWith("零")) {
    			value = value.substring(0, value.length() - 1);
    		}
    		return value + "元";
    	}
    
    	private static String convertForFraction(String num) throws Exception {
    		if (num.length() < 2) {
    			num = num + "0";
    		}
    		char[] list = num.toCharArray();
    		int _v1 = Integer.parseInt(String.valueOf(list[0]));
    		int _v2 = Integer.parseInt(String.valueOf(list[1]));
    		if (_v1 == 0 && _v2 == 0) {
    			return "";
    		} else {
    			String value = "";
    			if (_v1 != 0) {
    				value = value + NUM_NAMES[_v1] + "角";
    			}
    			if (_v2 != 0) {
    				value = value + NUM_NAMES[_v2] + "分";
    			}
    			return value;
    		}
    	}
    
    	/**
    	 * 数字转换成中文表示. 如1500->壹仟伍佰元
    	 * 
    	 * @param num
    	 * @return
    	 * @throws Exception
    	 */
    	public static String convertNumberToChinese(String num) throws Exception {
    		int pos = num.indexOf(".");
    		String result = "";
    		if (pos > -1) {
    			String value1 = convertForInteger(num.substring(0, pos));
    			String value2 = convertForFraction(num.substring(pos + 1));
    			if (!StringUtils.hasText(value2)) {
    				value2 = "整";
    			}
    			result = value1 + value2;
    		} else {
    			result = convertForInteger(num) + "整";
    		}
    		if ("整".equals(result)) {
    			return "零元整";
    		}
    		return result;
    	}
    
    	/**
    	 * 把bean转换成Map. 目前有点问题,不要调用
    	 * 
    	 * @param bean
    	 * @return
    	 */
    	public static Map beanToMap(Object bean) {
    		if (null == bean)
    			return new HashMap(0);
    		Map m = new HashMap();
    		try {
    			BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
    			PropertyDescriptor[] propertyDescriptors = beanInfo
    					.getPropertyDescriptors();
    			for (int i = 0; i < propertyDescriptors.length; i++) {
    				Object value = propertyDescriptors[i].getReadMethod().invoke(
    						bean, null);
    				if (DEFAULT_IGNORE_PROPERTY_NAME
    						.contains(propertyDescriptors[i].getName())) {
    					continue;
    				} else if (value == null) {
    					m.put(propertyDescriptors[i].getName(), null);
    				} else if (PREDEFINED_CLASS_LIST.contains(value.getClass())) {
    					m.put(propertyDescriptors[i].getName(), value);
    				} else if (value instanceof List) {
    					List l = (List) value;
    					List convertedList = new ArrayList(l.size());
    					for (Iterator iter = l.iterator(); iter.hasNext();) {
    						Object element = (Object) iter.next();
    						if (element == null) {
    							convertedList.add(null);
    						} else if (PREDEFINED_CLASS_LIST.contains(element
    								.getClass())) {
    							convertedList.add(element);
    						} else {
    							convertedList.add(beanToMap(element));
    						}
    					}
    					m.put(propertyDescriptors[i].getName(), convertedList);
    				} else {
    					m.put(propertyDescriptors[i].getName(), beanToMap(value));
    				}
    			}
    		} catch (Exception e) {
    			e.printStackTrace(System.err);
    			return new HashMap(0);
    		}
    		return m;
    	}
    
    	private static final String NULL_STRING = "null";
    
    	/**
    	 * 以className[field1=value1,field2=value2,...]的形式返回bean的字符串表示
    	 * 
    	 * @param bean
    	 * @return
    	 */
    	public static String introspectBean(Object bean) {
    		return introspectBean(bean, null);
    	}
    
    	/**
    	 * 以className[field1=value1,field2=value2,...]的形式返回bean的字符串表示
    	 * 
    	 * @param bean
    	 * @param ignorePropertyNames
    	 *            忽略的属性名称. 若传入null则返回所有属性
    	 * @return
    	 */
    	public static String introspectBean(Object bean,
    			String[] ignorePropertyNames) {
    		if (null == bean) {
    			return NULL_STRING;
    		}
    		StringBuffer sb = new StringBuffer();
    		List ignorePropertyNameList = new ArrayList(0);
    		if (null != ignorePropertyNames && ignorePropertyNames.length > 0) {
    			ignorePropertyNameList = Arrays.asList(ignorePropertyNames);
    		}
    		sb.append(bean.getClass().getName());
    		sb.append('[');
    		sb.append('
    ');
    		try {
    			BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
    			PropertyDescriptor[] propertyDescriptors = beanInfo
    					.getPropertyDescriptors();
    			for (int i = 0; i < propertyDescriptors.length; i++) {
    				String propertyName = propertyDescriptors[i].getName();
    				if (ignorePropertyNameList.contains(propertyName)) {
    					continue;
    				}
    				Object propertyValue = propertyDescriptors[i].getReadMethod()
    						.invoke(bean, null);
    				sb.append('	');
    				sb.append(propertyName);
    				sb.append('=');
    				sb.append(propertyValue);
    				sb.append(',');
    				sb.append('
    ');
    			}
    		} catch (Exception e) {
    			return bean.getClass().getName()
    					+ ".toString() failed with exception:" + e.getMessage();
    		}
    		sb.append(']');
    		return sb.toString();
    	}
    
    	/**
    	 * 字符串的空值处理
    	 */
    	public static boolean isEmpty(String str) {
    		if ((str == null) || (str.equals("null"))) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	/**
    	 * 字符串的空值处理
    	 */
    	public static String changeNullStringToEmpty(String str) {
    		if ((str == null) || (str.equals("null"))) {
    			return "";
    		} else {
    			return str.trim();
    		}
    	}
    
    	/**
    	 * 对象toString的空值处理
    	 */
    	public static String changeNullStringToEmpty(Object obj) {
    		if (obj == null) {
    			return "";
    		} else {
    			return obj.toString();
    		}
    	}
    
    	/**
    	 * 将空字符串变为指定的值 add by zhaopu
    	 */
    	public static String changeNullStringToValue(String str, String Value) {
    		if (str == null) {
    			return Value;
    		} else {
    			return str.trim();
    		}
    	}
    
    	/**
    	 * 将空字符和null串变为指定的值 add by wanghl 2003-10-23
    	 */
    	public static String changeEmptyStringToValue(String str, String Value) {
    		if (str == null || "".equals(str.trim())) {
    			return Value;
    		} else {
    			return str.trim();
    		}
    	}
    
    	/**
    	 * 将datetime类型的时间转化成字符串 YYYY-MM-DD
    	 */
    	public static String changeDateFormat(java.sql.Date dateTime) {
    		if (dateTime == null) {
    			return "";
    		} else {
    			Calendar calen = Calendar.getInstance();
    			calen.setTime(dateTime);
    			String year = new Integer(calen.get(Calendar.YEAR)).toString();
    			String month = new Integer(calen.get(Calendar.MONTH) + 1)
    					.toString();
    			if (month.length() < 2) {
    				month = "0" + month;
    			}
    			String date = new Integer(calen.get(Calendar.DATE)).toString();
    			if (date.length() < 2) {
    				date = "0" + date;
    
    			}
    			return year + "-" + month + "-" + date;
    		}
    	}
    
    	/**
    	 * 将datetime类型的时间转化成字符串 YYYY-MM-DD HH:MI:SS
    	 */
    	public static String changeDateTimeFormat(java.sql.Date dateTime) {
    		if (dateTime == null) {
    			return "";
    		} else {
    			Calendar calen = Calendar.getInstance();
    			calen.setTime(dateTime);
    			String year = new Integer(calen.get(Calendar.YEAR)).toString();
    			String month = new Integer(calen.get(Calendar.MONTH) + 1)
    					.toString();
    			if (month.length() < 2) {
    				month = "0" + month;
    			}
    			String date = new Integer(calen.get(Calendar.DATE)).toString();
    			if (date.length() < 2) {
    				date = "0" + date;
    
    			}
    			String hour = new Integer(calen.get(Calendar.HOUR_OF_DAY))
    					.toString();
    			if (hour.length() < 2) {
    				hour = "0" + hour;
    			}
    			String minute = new Integer(calen.get(Calendar.MINUTE)).toString();
    			if (minute.length() < 2) {
    				minute = "0" + minute;
    
    			}
    			return year + "-" + month + "-" + date + " " + hour + ":" + minute;
    		}
    	}
    
    	public static List split(String str1, String str2) {
    		List ret = new ArrayList();
    		if (str1 == null || str1.equals(""))
    			return ret;
    		while (str1.indexOf(str2) >= 0) {
    			String temp = str1.substring(0, str1.indexOf(str2));
    			str1 = str1.substring(str1.indexOf(str2) + str2.length());
    			ret.add(temp);
    		}
    		ret.add(str1);
    		return ret;
    	}
    
    	/**
    	 * 分割字符串
    	 * 
    	 * @param source
    	 *            源字符串
    	 * @param separator
    	 *            分隔符
    	 * @return 分割后的字符串
    	 */
    	public static String[] splitString(String source, String separator) {
    		if (!StringUtils.hasText(source)) {
    			return new String[0];
    		}
    		StringTokenizer st = new StringTokenizer(source, separator);
    		String[] result = new String[st.countTokens()];
    		for (int i = 0; st.hasMoreTokens();) {
    			result[i++] = st.nextToken();
    		}
    		return result;
    	}
    
    	/**
    	 * 转换日期格式
    	 */
    	public static String formatDateString(String dateTime, String inputFormat,
    			String outputFormat) {
    		try {
    			if (dateTime == null || dateTime.equals("")) {
    				return "";
    			}
    
    			java.text.SimpleDateFormat iFormat = new java.text.SimpleDateFormat(
    					inputFormat);
    			java.util.Date iDate = iFormat.parse(dateTime);
    
    			java.text.SimpleDateFormat oFormat = new java.text.SimpleDateFormat(
    					outputFormat);
    			String sRet = oFormat.format(iDate);
    			return sRet;
    		} catch (Exception e) {
    			return "";
    		}
    	}
    
    	/**
    	 * 转换平台日期
    	 * 
    	 * @param circDate
    	 *            yyyyMMddHHmm or yyyyMMdd
    	 * @return
    	 */
    	public static String formatCircDate(String circDate) {
    		if (!StringUtils.hasText(circDate)) {
    			return "";
    		}
    		if (12 == circDate.length()) {
    			String year = circDate.substring(0, 4);
    			String month = circDate.substring(4, 6);
    			String day = circDate.substring(6, 8);
    			String hour = circDate.substring(8, 10);
    			String minute = circDate.substring(10, 12);
    			StringBuffer sb = new StringBuffer(25).append(year).append("年")
    					.append(month).append("月").append(day).append("日")
    					.append(hour).append(":").append(minute);
    			return sb.toString();
    		} else if (8 == circDate.length()) {
    			String year = circDate.substring(0, 4);
    			String month = circDate.substring(4, 6);
    			String day = circDate.substring(6, 8);
    			StringBuffer sb = new StringBuffer(25).append(year).append("年")
    					.append(month).append("月").append(day).append("日");
    			return sb.toString();
    		}
    		return "";
    	}
    
    	/**
    	 * 取两个日期间隔的工作日数
    	 * 
    	 * @param fromDate
    	 * @param toDate
    	 * @return
    	 */
    	public static int getDays(String fromDate, String toDate) {
    		int elapsed = 0;
    		if (fromDate == null || fromDate.equals("") || toDate == null
    				|| toDate.equals("")) {
    			return 0;
    		}
    
    		GregorianCalendar gc1, gc2;
    
    		try {
    			int tempYear1 = Integer.parseInt(fromDate.substring(0, 4));
    			int tempMonth1 = Integer.parseInt(fromDate.substring(5, 7));
    			int tempDay1 = Integer.parseInt(fromDate.substring(8, 10));
    			int tempYear2 = Integer.parseInt(toDate.substring(0, 4));
    			int tempMonth2 = Integer.parseInt(toDate.substring(5, 7));
    			int tempDay2 = Integer.parseInt(toDate.substring(8, 10));
    
    			GregorianCalendar g1 = new GregorianCalendar(tempYear1,
    					tempMonth1 - 1, tempDay1);
    			GregorianCalendar g2 = new GregorianCalendar(tempYear2,
    					tempMonth2 - 1, tempDay2);
    
    			if (g2.after(g1)) {
    				gc2 = (GregorianCalendar) g2.clone();
    				gc1 = (GregorianCalendar) g1.clone();
    			} else {
    				gc2 = (GregorianCalendar) g1.clone();
    				gc1 = (GregorianCalendar) g2.clone();
    			}
    			gc1.clear(Calendar.MILLISECOND);
    			gc1.clear(Calendar.SECOND);
    			gc1.clear(Calendar.MINUTE);
    			gc1.clear(Calendar.HOUR_OF_DAY);
    			gc2.clear(Calendar.MILLISECOND);
    			gc2.clear(Calendar.SECOND);
    			gc2.clear(Calendar.MINUTE);
    			gc2.clear(Calendar.HOUR_OF_DAY);
    			while (gc1.before(gc2)) {
    				gc1.add(Calendar.DATE, 1);
    				elapsed++;
    			}
    			return elapsed;
    		} catch (Exception e) {
    			return 0;
    		}
    	}
    
    	/**
    	 * 转换页面显示格式
    	 */
    	public static String changeShowFormat(String str) {
    		return (str.equals("") ? " " : str);
    	}
    
    	public static String getGBCode(String str) {
    		String temp = null;
    		try {
    			String temp_p = str;
    			byte[] temp_t = temp_p.getBytes("ISO8859-1");
    			temp = new String(temp_t);
    		} catch (Exception e) {
    			// System.out.println("错误:"+e.getMessage());
    		}
    		return temp;
    		/*
    		 * finally { return str; }
    		 */
    	}
    
    	/**
    	 * 实例化当前系统时间
    	 */
    	private static Calendar getCalendar() {
    		return Calendar.getInstance();
    	}
    
    	/**
    	 * 取得当前年
    	 */
    	public static String getYear() {
    		return new Integer(getCalendar().get(Calendar.YEAR)).toString();
    	}
    
    	/**
    	 * 取得当前月
    	 */
    	public static String getMonth() {
    		String month = new Integer(getCalendar().get(Calendar.MONTH) + 1)
    				.toString();
    		if (month.length() < 2) {
    			month = "0" + month;
    		}
    		return month;
    	}
    
    	/**
    	 * 取得当前日
    	 */
    	public static String getDate() {
    		String date = new Integer(getCalendar().get(Calendar.DATE)).toString();
    		if (date.length() < 2) {
    			date = "0" + date;
    		}
    		return date;
    	}
    
    	/**
    	 * 取得当前小时
    	 */
    	public static String getHour() {
    		String hour = new Integer(getCalendar().get(Calendar.HOUR)).toString();
    		if (hour.length() < 2) {
    			hour = "0" + hour;
    		}
    		return hour;
    	}
    
    	/**
    	 * 取得当前分钟
    	 */
    	public static String getMinute() {
    		String min = new Integer(getCalendar().get(Calendar.MINUTE)).toString();
    		if (min.length() < 2) {
    			min = "0" + min;
    		}
    		return min;
    	}
    
    	/**
    	 * 取得当前日期
    	 * 
    	 * @return 形如yyyy-mm-dd格式的日期
    	 */
    	public static String getCurrentDate() {
    		java.util.Date curDate = new java.util.Date();
    		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    
    		return df.format(curDate);
    	}
    
    	/**
    	 * 取得当前时间(包括小时分)
    	 * 
    	 * @return 形如yyyy-mm-dd HH:mm格式的日期
    	 */
    	public static String getCurrentDateTime() {
    		java.util.Date curDate = new java.util.Date();
    		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
    
    		return df.format(curDate);
    	}
    
    	/**
    	 * 返回系统日期的后N天
    	 * 
    	 * @para days为正数表示当前日期的后N天 days为负数表示当前日期的前N天
    	 * @return 形如yyyy-mm-dd格式的日期
    	 */
    	public static String getNextDays(int days) {
    		Calendar cld = Calendar.getInstance();
    		cld.add(Calendar.DATE, days);
    		String yy = new Integer(cld.get(Calendar.YEAR)).toString();
    		String mm = new Integer(cld.get(Calendar.MONTH) + 1).toString();
    		String dd = new Integer(cld.get(Calendar.DATE)).toString();
    		if (mm.length() < 2) {
    			mm = "0" + mm;
    		}
    		if (dd.length() < 2) {
    			dd = "0" + dd;
    		}
    		return yy + "-" + mm + "-" + dd;
    	}
    
    	/**
    	 * 返回日期strDate的后N天
    	 * 
    	 * @para days为正数表示当前日期的后N天 days为负数表示当前日期的前N天
    	 * @return 形如yyyy-mm-dd格式的日期
    	 */
    	public static String getNextDays(String strDate, int days) {
    		if (strDate == null || strDate.length() < 10) {
    			return "";
    		}
    		int year = Integer.parseInt(strDate.substring(0, 4));
    		int month = Integer.parseInt(strDate.substring(5, 7));
    		int day = Integer.parseInt(strDate.substring(8, 10));
    
    		Calendar cld = Calendar.getInstance();
    		cld.set(year, month - 1, day);
    		cld.add(Calendar.DATE, days);
    
    		String yy = new Integer(cld.get(Calendar.YEAR)).toString();
    		String mm = new Integer(cld.get(Calendar.MONTH) + 1).toString();
    		String dd = new Integer(cld.get(Calendar.DATE)).toString();
    
    		if (mm.length() < 2) {
    			mm = "0" + mm;
    		}
    		if (dd.length() < 2) {
    			dd = "0" + dd;
    
    		}
    		return yy + "-" + mm + "-" + dd;
    	}
    
    	private static final Calendar CAL1 = Calendar.getInstance();
    
    	private static final Calendar CAL2 = Calendar.getInstance();
    
    	public static synchronized boolean dateInTerm(Date begin, Date end,
    			Date target) {
    		CAL1.setTime(begin);
    		CAL1.set(Calendar.HOUR, 0);
    		CAL1.set(Calendar.MINUTE, 0);
    		CAL1.set(Calendar.SECOND, 0);
    		CAL2.setTime(end);
    		CAL2.set(Calendar.HOUR, 23);
    		CAL2.set(Calendar.MINUTE, 59);
    		CAL2.set(Calendar.SECOND, 59);
    		long targetTimeInMills = target.getTime();
    		DevLog.trace("CommonFunctions.dateInTerm start...");
    		DevLog.debug("polyBegin date:" + CAL1.getTime());
    		DevLog.debug("polyEnd date:" + CAL2.getTime());
    		DevLog.debug("target date:" + target);
    		DevLog.debug("return value:"
    				+ (CAL1.getTimeInMillis() <= targetTimeInMills && targetTimeInMills <= CAL2
    						.getTimeInMillis()));
    		DevLog.trace("CommonFunctions.dateInTerm end.");
    		return CAL1.getTimeInMillis() <= targetTimeInMills
    				&& targetTimeInMills <= CAL2.getTimeInMillis();
    	}
    
    	/**
    	 * 返回系统日期的后x年,y月,z天
    	 * 
    	 * @para 为正数表示当前日期向后 为负数表示当前日期向前
    	 * @return 形如yyyy-mm-dd格式的日期
    	 */
    	// add by zhaopu
    	public static String getNextYearMonthDays(int years, int months, int days) {
    		Calendar cld = Calendar.getInstance();
    		cld.add(Calendar.YEAR, years);
    		cld.add(Calendar.MONTH, months);
    		cld.add(Calendar.DATE, days);
    		String yy = new Integer(cld.get(Calendar.YEAR)).toString();
    		String mm = new Integer(cld.get(Calendar.MONTH) + 1).toString();
    		String dd = new Integer(cld.get(Calendar.DATE)).toString();
    		if (mm.length() < 2) {
    			mm = "0" + mm;
    		}
    		if (dd.length() < 2) {
    			dd = "0" + dd;
    		}
    		return yy + "-" + mm + "-" + dd;
    	}
    
    	/**
    	 * 返回指定日期的后x年,y月,z天
    	 * 
    	 * @para 为正数表示当前日期向后 为负数表示当前日期向前
    	 * @return 形如yyyy-mm-dd格式的日期
    	 */
    	// add by wq
    	public static String getNextYearMonthDays(String strDate, int years,
    			int months, int days) {
    		if (strDate == null || strDate.length() < 10) {
    			return "";
    		}
    		int year = Integer.parseInt(strDate.substring(0, 4));
    		int month = Integer.parseInt(strDate.substring(5, 7)) - 1;
    		int day = Integer.parseInt(strDate.substring(8, 10));
    		Calendar cld = Calendar.getInstance();
    		;
    		cld.set(year, month, day);
    		cld.add(Calendar.YEAR, years);
    		cld.add(Calendar.MONTH, months);
    		cld.add(Calendar.DATE, days);
    		String yy = new Integer(cld.get(Calendar.YEAR)).toString();
    		String mm = new Integer(cld.get(Calendar.MONTH) + 1).toString();
    		String dd = new Integer(cld.get(Calendar.DATE)).toString();
    		if (mm.length() < 2) {
    			mm = "0" + mm;
    		}
    		if (dd.length() < 2) {
    			dd = "0" + dd;
    		}
    		return yy + "-" + mm + "-" + dd;
    	}
    
    	/**
    	 * 比较两日期大小,日期1大于等于日期2 返回1,小于返回-1,等于返回0
    	 */
    	public static int compareDate(String date1, String date2) {
    		int year1 = Integer.parseInt(date1.substring(0, 4));
    		int month1 = Integer.parseInt(date1.substring(5, 7));
    		int day1 = Integer.parseInt(date1.substring(8, 10));
    		int year2 = Integer.parseInt(date2.substring(0, 4));
    		int month2 = Integer.parseInt(date2.substring(5, 7));
    		int day2 = Integer.parseInt(date2.substring(8, 10));
    
    		if (year1 > year2) {
    			return 1;
    		} else if (year1 < year2) {
    			return -1;
    		} else if (year1 == year2) {
    			if (month1 > month2) {
    				return 1;
    			} else if (month1 < month2) {
    				return -1;
    			} else if (month1 == month2) {
    				if (day1 > day2) {
    					return 1;
    				} else if (day1 < day2) {
    					return -1;
    				} else {
    					return 0;
    				}
    			}
    		}
    		return -2;
    	}
    
    	/**
    	 * 日期转换,由字符串转换成java.sql.Date
    	 */
    	public static java.sql.Date getDateFormat(String value) {
    		long templ = 0;
    		if (value == null) {
    			return null;
    		}
    		if (value.equals("")) {
    			return null;
    		} else if (value.length() == 10) {
    			int tempYear = Integer.parseInt(value.substring(0, 4));
    			int tempMonth = Integer.parseInt(value.substring(5, 7));
    			int tempDay = Integer.parseInt(value.substring(8, 10));
    			Calendar calen = Calendar.getInstance();
    			calen.set(tempYear, tempMonth - 1, tempDay);
    			templ = calen.getTime().getTime();
    		} else if (value.length() == 7) {
    			int tempYear = Integer.parseInt(value.substring(0, 4));
    			int tempMonth = Integer.parseInt(value.substring(5, 7));
    			Calendar calen = Calendar.getInstance();
    			calen.set(tempYear, tempMonth - 1, 1);
    			templ = calen.getTime().getTime();
    		}
    
    		return new java.sql.Date(templ);
    	}
    
    	/**
    	 * 日期转换,由字符串转换成java.sql.Date
    	 */
    	public static java.sql.Date getTimeFormat(String value) {
    		if (value == null) {
    			return null;
    		}
    		if (value.equals("")) {
    			return null;
    		} else {
    			int tempYear = Integer.parseInt(value.substring(0, 4));
    			int tempMonth = Integer.parseInt(value.substring(5, 7));
    			int tempDay = Integer.parseInt(value.substring(8, 10));
    			int tempHour = Integer.parseInt(value.substring(11, 13));
    			int tempMin = Integer.parseInt(value.substring(14, 16));
    			int tempSec = Integer.parseInt(value.substring(17, 19));
    			Calendar calen = Calendar.getInstance();
    			calen.set(tempYear, tempMonth, tempDay, tempHour, tempMin, tempSec);
    			return new java.sql.Date(calen.getTime().getTime());
    		}
    	}
    
    	public static Date parseDate(String dateString, String pattern) {
    		DateFormat df = pattern == null ? new SimpleDateFormat(
    				DEFAULT_DATE_FORMAT) : new SimpleDateFormat(pattern);
    		try {
    			return df.parse(dateString);
    		} catch (ParseException e) {
    			throw new IllegalArgumentException("不能解析时间:" + dateString);
    		}
    	}
    
    	public static Date parseDate(String dateString) {
    		try {
    			return new SimpleDateFormat(DEFAULT_DATE_FORMAT).parse(dateString);
    		} catch (ParseException e) {
    			throw new IllegalArgumentException("不能解析时间:" + dateString);
    		}
    	}
    
    	public static Date parseYear(String dateString) {
    		try {
    			return new SimpleDateFormat(DATE_FORMAT_YYYY).parse(dateString);
    		} catch (ParseException e) {
    			throw new IllegalArgumentException("不能解析时间:" + dateString);
    		}
    	}
    
    	// add by zhaopu 将日期转换为指定的格式
    	public static String formatDate(Date date, String pattern) {
    		if (date == null) {
    			return "";
    		}
    		DateFormat df = pattern == null ? new SimpleDateFormat(
    				DEFAULT_DATE_FORMAT) : new SimpleDateFormat(pattern);
    		return df.format(date);
    	}
    
    	public static String formatDate(Date d) {
    		return formatDate(d, null);
    	}
    
    	public static HashMap ConvertNullHashMap(Collection attributes) {
    		HashMap returnHashMap = new HashMap();
    		Iterator iterator = attributes.iterator();
    		String tempStr = "";
    		while (iterator.hasNext()) {
    			String attributeName = (String) iterator.next();
    			returnHashMap.put(attributeName, tempStr);
    		}
    
    		// System.out.println("转换hashmap:" + returnHashMap);
    		return returnHashMap;
    	}
    
    	public static boolean invokeSetMethod(String property, String value,
    			Object bean) {
    		// 设置运行的方法名称
    		String targetMethod = "set" + property.substring(0, 1).toUpperCase()
    				+ property.substring(1, property.length());
    		if (targetMethod == null) {
    			return false;
    		}
    
    		try {
    			Class[] args = new Class[] { String.class };
    
    			Object[] params = new Object[] { value };
    
    			Method m = bean.getClass().getMethod(targetMethod, args);
    
    			if (m == null) {
    				return false;
    			}
    
    			m.invoke(bean, params);
    
    			return true;
    		} catch (java.lang.NoSuchMethodException ex) {
    			return false;
    		} catch (java.lang.reflect.InvocationTargetException ex) {
    			return false;
    		} catch (java.lang.IllegalAccessException ex) {
    			return false;
    		}
    	}
    
    	public static Object invokeGetMethod(String property, Object bean) {
    		Object returnValue = null;
    
    		try {
    			Class[] args = new Class[] {};
    
    			Object[] params = new Object[] {};
    
    			Method m = bean.getClass().getMethod(property, args);
    
    			if (m == null) {
    				return null;
    			}
    
    			returnValue = m.invoke(bean, params);
    
    			return returnValue;
    		} catch (java.lang.NoSuchMethodException ex) {
    			return null;
    		} catch (java.lang.reflect.InvocationTargetException ex) {
    			return null;
    		} catch (java.lang.IllegalAccessException ex) {
    			return null;
    		}
    	}
    
    	public static boolean binarySearch(String[] a, String aKey) {
    		boolean result = false;
    
    		if (a == null || a.length == 0 || aKey == null || aKey.equals("")) {
    			return false;
    		}
    
    		for (int i = 0; i < a.length; i++) {
    			if (aKey.equals(a[i])) {
    				result = true;
    				break;
    			}
    		}
    
    		return result;
    	}
    
    	public static double parseDouble(String str) {
    		double f = 0.0;
    		try {
    			f = Double.parseDouble(str);
    		} catch (Exception ex) {
    			// empty
    		}
    
    		return f;
    	}
    
    	public static String getSubString(String dateTime, int number) {
    		if (dateTime.length() > number) {
    			dateTime = dateTime.substring(0, number);
    		}
    		return dateTime;
    	}
    
    	public static String multiplyString(String originNumber, String multiplier) {
    		int nOrigin = 0;
    		int nMultiplier = 0;
    
    		if ((originNumber == null || originNumber.equals(""))
    				&& (multiplier == null || multiplier.equals(""))) {
    			return "";
    		}
    
    		try {
    			nOrigin = Integer.parseInt(originNumber);
    		} catch (NumberFormatException e) {
    			return "";
    		}
    
    		try {
    			nMultiplier = Integer.parseInt(multiplier);
    		} catch (NumberFormatException e) {
    			return "";
    		}
    
    		return (new Integer(nOrigin * nMultiplier).toString());
    	}
    
    	public static String divideString(String originNumber, String divisor) {
    		int nOrigin = 0;
    		int nDivisor = 0;
    		if ((originNumber == null || originNumber.equals(""))
    				&& (divisor == null || divisor.equals("") || divisor
    						.equals("0"))) {
    			return "";
    		}
    
    		try {
    			nOrigin = Integer.parseInt(originNumber);
    		} catch (NumberFormatException e) {
    			return "";
    		}
    
    		try {
    			nDivisor = Integer.parseInt(divisor);
    		} catch (NumberFormatException e) {
    			return "";
    		}
    
    		return (new Integer(nOrigin / nDivisor).toString());
    	}
    
    	/* add by zhaopu 2003-07-21 将页面的请求以map格式放到scoper中 */
    
    	public static List getSubstringList(String str, String token) {
    		ArrayList substringList = new ArrayList();
    
    		while (str.length() > 0) {
    			int i = str.indexOf(token);
    			String str1 = str.substring(0, i);
    			substringList.add(str1);
    
    			str = str.substring(i + 1, str.length());
    		}
    
    		return substringList;
    	}
    
    	public static List getPartString(String str, String token) {
    		List substringList = null;
    		int index = str.indexOf(token);
    		if (index != -1) {
    			substringList = new ArrayList();
    			substringList.add(str.substring(0, index));
    			substringList.add(str.substring(index + 1, str.length()));
    		}
    		return substringList;
    	}
    
    	// 将二维数组转换成MAP
    	public static HashMap convertArrayToMap(String flagArray[][]) {
    		HashMap flagHashMap = new HashMap();
    		for (int i = 0; i < flagArray.length; i++) {
    			flagHashMap.put(flagArray[i][0], flagArray[i][1]);
    		}
    		return (flagHashMap);
    	}
    
    	// 将字符串按指定的分隔符转换成字符串数组
    	// zhanglf, 2003-09-04
    	public static String[] strToArray(String str, String separator) {
    		if (str == null) {
    			return null;
    		}
    		int index = 0;
    		int index2 = 0;
    		index2 = str.indexOf(separator);
    		List list = new ArrayList();
    		String temp = "";
    		while (index2 != -1) {
    			temp = str.substring(index, index2);
    			// System.out.println("temp :" + temp);
    			list.add(temp);
    			index = index2 + 1;
    			index2 = str.indexOf(separator, index);
    			if (index2 == -1) {
    				temp = str.substring(index);
    				// System.out.println("temp2 :" + temp);
    				list.add(temp);
    			}
    		}
    		int size = list.size();
    		String[] arrStr = new String[size];
    		for (int i = 0; i < size; i++) {
    			arrStr[i] = (String) list.get(i);
    		}
    		// ystem.out.println("list.size :" + list.size());
    
    		return arrStr;
    	}
    
    	/**
    	 * 提供精确的加法运算
    	 * 
    	 * @param v1
    	 *            被加数
    	 * @param v2
    	 *            加数
    	 * @return 两个参数的和 add by dym on 2006-06-12
    	 */
    	public static double add(String v1, double v2) {
    		BigDecimal b1 = new BigDecimal(v1);
    		BigDecimal b2 = new BigDecimal(Double.toString(v2));
    		return b1.add(b2).doubleValue();
    	}
    
    	// 两个数相乘
    	public static String mul(String v1, double v2) {
    		if (v1 == null || v1.trim().equals("")) {
    			return "";
    		}
    		try {
    			BigDecimal b1 = new BigDecimal(v1);
    			BigDecimal b2 = new BigDecimal(Double.toString(v2));
    
    			return String.valueOf(b1.multiply(b2).doubleValue());
    		} catch (Exception ex) {
    			return "";
    		}
    	}
    
    	// 相除
    	public static String div(String v1, double v2) {
    		if (v1 == null || v1.trim().equals("")) {
    			return "";
    		}
    		try {
    			BigDecimal b1 = new BigDecimal(v1);
    			BigDecimal b2 = new BigDecimal(Double.toString(v2));
    
    			return String.valueOf(b1.divide(b2, 10, BigDecimal.ROUND_HALF_UP)
    					.doubleValue());
    		} catch (Exception ex) {
    			return "";
    		}
    	}
    
    	// 相除
    	public static String div(String v1, String v2, int scale) {
    		if (v1 == null || v1.trim().equals("")) {
    			return "";
    		}
    
    		BigDecimal b1 = new BigDecimal(v1);
    		BigDecimal b2 = new BigDecimal(v2);
    
    		return String.valueOf(b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP)
    				.doubleValue());
    	}
    
    	/**
    	 * 提供精确的小数位四舍五入处理。
    	 * 
    	 * @param v
    	 *            需要四舍五入的数字
    	 * @param scale
    	 *            小数点后保留几位
    	 * @return 四舍五入后的结果
    	 */
    	public static double round(double v, int scale) {
    		if (scale < 0) {
    			throw new IllegalArgumentException(
    					"The scale must be a positive integer or zero");
    		}
    
    		BigDecimal b = new BigDecimal(Double.toString(v));
    		BigDecimal one = new BigDecimal("1");
    
    		return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    	}
    
    	public static String replace(String strSource, String strFrom, String strTo) {
    		if (strFrom == null || strFrom.equals("")) {
    			return strSource;
    		}
    		String strDest = "";
    		int intFromLen = strFrom.length();
    		int intPos;
    
    		while ((intPos = strSource.indexOf(strFrom)) != -1) {
    			strDest = strDest + strSource.substring(0, intPos);
    			strDest = strDest + strTo;
    			strSource = strSource.substring(intPos + intFromLen);
    		}
    		strDest = strDest + strSource;
    
    		return strDest;
    	}
    
    	public static String getStackTraceText(Exception e) {
    		try {
    			ByteArrayOutputStream baos = new ByteArrayOutputStream();
    			e.printStackTrace(new PrintStream(baos));
    			byte[] buff = baos.toByteArray();
    			baos.close();
    			return new String(buff);
    		} catch (Exception ex) {
    			return "";
    		}
    	}
    
    	public static String replaceIgnoreCase(String strSource, String strFrom,
    			String strTo) {
    		if (strFrom == null || strFrom.equals("")) {
    			return strSource;
    		}
    		String strDest = "";
    		int intFromLen = strFrom.length();
    		int intPos;
    
    		String tmpStrSource = strSource.toLowerCase();
    		while ((intPos = tmpStrSource.indexOf(strFrom.toLowerCase())) != -1) {
    			strDest = strDest + strSource.substring(0, intPos);
    			strDest = strDest + strTo;
    			strSource = strSource.substring(intPos + intFromLen);
    			tmpStrSource = strSource.toLowerCase();
    		}
    		strDest = strDest + strSource;
    
    		return strDest;
    	}
    
    	public static Map DTO2Map(Object dto) {
    		HashMap result = new HashMap();
    		Class dtoClass = dto.getClass();
    		Method methods[] = dtoClass.getMethods();
    		for (int i = 0; i < methods.length; i++) {
    			Method method = methods[i];
    			if (method.getName().substring(0, 3).equals("get")
    					&& method.getParameterTypes().length == 0
    					&& !method.getName().equals("getClass")) {
    				String key = method.getName().substring(3, 4).toLowerCase()
    						+ method.getName().substring(4);
    				Object value = null;
    				try {
    					value = method.invoke(dto, new Object[0]);
    				} catch (Exception e) {
    				}
    				if (value != null) {
    					result.put(key, value);
    				}
    			}
    		}
    		return result;
    	}
    
    	public static Object Map2DTO(Map map, Object dto) {
    		Class dtoClass = dto.getClass();
    		Method methods[] = dtoClass.getMethods();
    		for (int i = 0; i < methods.length; i++) {
    			Method method = methods[i];
    			if (method.getName().substring(0, 3).equals("set")
    					&& method.getParameterTypes().length != 0
    					&& !method.getName().equals("setClass")
    					&& !method.getName().equals("setRiderDetail11")) {
    				String key = method.getName().substring(3, 4).toLowerCase()
    						+ method.getName().substring(4);
    				String value = null;
    				try {
    					value = (String) map.get(key);
    				} catch (Exception e) {
    				}
    				if (value != null) {
    					invokeSetMethod(key, value, dto);
    				}
    			}
    		}
    		return dto;
    	}
    
    	public static String formatDouble(double num) {
    		String str = num + "";
    		return str.substring(
    				0,
    				str.indexOf(".")
    						+ (str.length() - str.indexOf(".") >= 3 ? 3 : str
    								.length() - str.indexOf(".")));
    	}
    
    	public static Object cloneObject(Object obj) {
    		try {
    			java.io.ByteArrayOutputStream baos = new ByteArrayOutputStream();
    			ObjectOutputStream oos = new ObjectOutputStream(baos);
    			oos.writeObject(obj);
    			oos.flush();
    			byte buff[] = baos.toByteArray();
    			oos.close();
    			baos.close();
    			java.io.ByteArrayInputStream bais = new ByteArrayInputStream(buff);
    			ObjectInputStream ois = new ObjectInputStream(bais);
    			Object cloneObj = ois.readObject();
    			ois.close();
    			bais.close();
    			return cloneObj;
    		} catch (Exception e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
    
    	public static List copyObject(List fromList, Class toClass) {
    		List toList = new ArrayList();
    		if (fromList != null && fromList.size() > 0) {
    			Iterator it = fromList.iterator();
    			while (it.hasNext()) {
    				toList.add(copyObject(it.next(), toClass));
    			}
    		}
    		return toList;
    	}
    
    	public static Object copyObject(Object from, Class toClass) {
    		try {
    			Object to = toClass.newInstance();
    			Class fromClass = from.getClass();
    			Method methods[] = fromClass.getMethods();
    			for (int i = 0; i < methods.length; i++) {
    				Method method = methods[i];
    				if (method.getName().substring(0, 3).equals("get")
    						&& !method.getName().equals("getClass")
    						&& method.getParameterTypes().length == 0) {
    					Class parameterClasses[] = new Class[1];
    					parameterClasses[0] = method.getReturnType();
    					Object returnValue = method.invoke(from, new Object[0]);
    					Object parameters[] = new Object[1];
    					parameters[0] = returnValue;
    					try {
    						Method toMethod = toClass.getMethod("set"
    								+ method.getName().substring(3),
    								parameterClasses);
    						toMethod.invoke(to, parameters);
    					} catch (Exception e) {
    						continue;
    					}
    				}
    			}
    			return to;
    		} catch (Exception e) {
    			return null;
    		}
    	}
    
    	public static Object copyObject(Object from, Object to) {
    		try {
    			Class fromClass = from.getClass();
    			Method methods[] = fromClass.getMethods();
    			for (int i = 0; i < methods.length; i++) {
    				Method method = methods[i];
    				if (method.getName().substring(0, 3).equals("get")
    						&& !method.getName().equals("getClass")
    						&& method.getParameterTypes().length == 0) {
    					Class parameterClasses[] = new Class[1];
    					parameterClasses[0] = method.getReturnType();
    					Object returnValue = method.invoke(from, new Object[0]);
    					Object parameters[] = new Object[1];
    					parameters[0] = returnValue;
    					try {
    						Method toMethod = to.getClass().getMethod(
    								"set" + method.getName().substring(3),
    								parameterClasses);
    						toMethod.invoke(to, parameters);
    					} catch (Exception e) {
    						continue;
    					}
    				}
    			}
    			return to;
    		} catch (Exception e) {
    			return null;
    		}
    
    	}
    
    	/**
    	 * 转换日期格式
    	 */
    	public static String convertDateFormat(String strDate, int days) {
    		if (strDate == null || strDate.length() < 10) {
    			return "";
    		}
    		int year = Integer.parseInt(strDate.substring(0, 4));
    		int month = Integer.parseInt(strDate.substring(5, 7));
    		int day = Integer.parseInt(strDate.substring(8, 10));
    
    		Calendar cld = Calendar.getInstance();
    		cld.set(year, month - 1, day);
    		if (days != -1) {
    			cld.add(Calendar.DATE, days);
    		}
    
    		String yy = new Integer(cld.get(Calendar.YEAR)).toString();
    		String mm = new Integer(cld.get(Calendar.MONTH) + 1).toString();
    		String dd = new Integer(cld.get(Calendar.DATE)).toString();
    
    		if (mm.length() < 2)
    			mm = "0" + mm;
    		if (dd.length() < 2)
    			dd = "0" + dd;
    
    		if (days != -1) {
    			return yy + "年" + mm + "月" + dd + "日";
    		} else {
    			return yy + mm + dd;
    		}
    	}
    
    	public static String convertSimpleDateFormat(String strDate) {
    		if (strDate == null || strDate.length() < 10) {
    			return "";
    		}
    		int year = Integer.parseInt(strDate.substring(0, 4));
    		int month = Integer.parseInt(strDate.substring(5, 7));
    		int day = Integer.parseInt(strDate.substring(8, 10));
    
    		Calendar cld = Calendar.getInstance();
    		cld.set(year, month - 1, day);
    
    		String yy = new Integer(cld.get(Calendar.YEAR)).toString();
    		String mm = new Integer(cld.get(Calendar.MONTH) + 1).toString();
    		String dd = new Integer(cld.get(Calendar.DATE)).toString();
    
    		if (mm.length() < 2)
    			mm = "0" + mm;
    		if (dd.length() < 2)
    			dd = "0" + dd;
    
    		return yy + mm + dd;
    	}
    
    	private static String toChinese(String sStr, String sFour, int i,
    			boolean bPre) {
    		String sStruct = "";// 回传结果
    		for (int j = 0; j < 4; j++) {
    			if (sFour.charAt(j) != '0')// 处理每一位数值时,在前面是否需要加“零”
    			{
    				if (j == 0)// 处理千位
    				{
    					if (!bPre) {
    						sStruct = sStruct + '0';
    					}
    					sStruct = sStruct + sFour.charAt(j);
    				} else// 处理百、十、个位
    				{
    					if (sFour.charAt(j - 1) == '0') {
    						sStruct = sStruct + '0';
    					}
    					sStruct = sStruct + sFour.charAt(j);
    				}
    
    				switch (j)// 单独处理“角”和“分”
    				{
    				case 0: {
    					if (i == 3) {
    						sStruct = sStruct + '角';
    					} else {
    						sStruct = sStruct + '仟';
    					}
    					break;
    				}
    				case 1: {
    					if (i == 3) {
    						sStruct = sStruct + '分';
    					} else {
    						sStruct = sStruct + '佰';
    					}
    					break;
    				}
    				case 2: {
    					sStruct = sStruct + '拾';
    					break;
    				}
    				case 3: {
    					if (!sStruct.equals("")) {
    						switch (i)// 处理单位
    						{
    						case 0: {
    							sStruct = sStruct + "亿";
    							break;
    						}
    						case 1: {
    							sStruct = sStruct + "万";
    							break;
    						}
    						case 2: {
    							sStruct = sStruct + "元";
    							break;
    						}
    						}
    					}
    				}
    				}
    			} else// 当个位为零时,处理单位
    			{
    				if (!sStruct.equals("") && j == 3) {
    					switch (i) {
    					case 0: {
    						sStruct = sStruct + "亿";
    						break;
    					}
    					case 1: {
    						sStruct = sStruct + "万";
    						break;
    					}
    					}
    				}
    				if (i == 2 && j == 3
    						&& (!sStr.equals("") || !sStruct.equals("")))// 是否加“元”字
    				{
    					sStruct = sStruct + "元";
    				}
    			}
    		}
    		return sStruct;
    	}
    
    	// 参数digit最多有两位小数,本方法最大支持金额999999999999.99
    	public static String toUpper(double digit) {
    		// 将数据格式化为四位小数
    		DecimalFormat df = new DecimalFormat("#.0000");
    		StringBuffer sbDigit = new StringBuffer(df.format(digit));
    		sbDigit.replace(sbDigit.length() - 2, sbDigit.length(), "00");
    		String sDigit = "";// 将double转化为string
    		sDigit = sbDigit.toString();
    		sDigit = sDigit.substring(0, sDigit.length() - 5)
    				+ sDigit.substring(sDigit.length() - 4);// 去除小数点
    
    		// 将字符串补齐16位,利于分组
    		// sDigit = sDigit + "00";
    		if (sDigit.length() > 16) {
    			return "款项过大!";
    		}
    
    		if (sDigit.length() < 16) {
    			int iLength = 16 - sDigit.length();
    			for (int i = 0; i < iLength; i++) {
    				sDigit = "0" + sDigit;
    			}
    		}
    		if (sDigit.equals("0000000000000000")) {
    			return "零元整";
    		}
    		String sChinese = sDigit;
    		String sFour = "";// 每四位构造一个string
    		boolean bPreStr = true;// 前一个string是否构造成功
    		sDigit = "";// 总字符串
    		// 将字符串分为四组,每一组单独处理,都处理完后串接
    		for (int i = 0; i < 4; i++) {
    			sFour = toChinese(sDigit, sChinese.substring(i * 4, i * 4 + 4), i,
    					bPreStr);
    			if (sFour.length() == 0 || sFour.length() == 1) {
    				bPreStr = false;
    			} else if (sFour.charAt(sFour.length() - 2) < '0'
    					|| sFour.charAt(sFour.length() - 2) > '9') {
    				bPreStr = false;
    			} else {
    				bPreStr = true;
    			}
    			sDigit = sDigit + sFour;
    		}
    		// 去掉字符串最前面的‘0’
    		for (;;) {
    			if (sDigit.charAt(0) == '0') {
    				sDigit = sDigit.substring(1);
    			} else {
    				break;
    			}
    		}
    
    		sChinese = "";
    		for (int i = 0; i < sDigit.length(); i++) {
    			if (sDigit.charAt(i) >= '0' && sDigit.charAt(i) <= '9') {
    				switch (sDigit.charAt(i)) {
    				case '1': {
    					sChinese = sChinese + "壹";
    					break;
    				}
    				case '2': {
    					sChinese = sChinese + "贰";
    					break;
    				}
    				case '3': {
    					sChinese = sChinese + "叁";
    					break;
    				}
    				case '4': {
    					sChinese = sChinese + "肆";
    					break;
    				}
    				case '5': {
    					sChinese = sChinese + "伍";
    					break;
    				}
    				case '6': {
    					sChinese = sChinese + "陆";
    					break;
    				}
    				case '7': {
    					sChinese = sChinese + "柒";
    					break;
    				}
    				case '8': {
    					sChinese = sChinese + "捌";
    					break;
    				}
    				case '9': {
    					sChinese = sChinese + "玖";
    					break;
    				}
    				case '0': {
    					sChinese = sChinese + "零";
    					break;
    				}
    				}
    			} else {
    				sChinese = sChinese + sDigit.charAt(i);
    			}
    		}
    
    		if (!sDigit.endsWith("分"))// 有"分"不加"整"
    		{
    			sChinese = sChinese + "整";
    		}
    
    		return sChinese;
    	}
    
    	public static List splitByChinese(String value) {
    		List result = new ArrayList();
    		if (value == null) {
    			return result;
    		}
    		String buff = "";
    		for (int i = 0; i < value.length(); i++) {
    			if (value.substring(i, i + 1).getBytes().length == 1) {
    				buff = buff + value.substring(i, i + 1);
    			} else {
    				if (buff != "") {
    					result.add(buff);
    				}
    				result.add(value.substring(i, i + 1));
    				buff = "";
    			}
    		}
    		if (buff != "") {
    			result.add(buff);
    		}
    		return result;
    	}
    
    	public static String getScript(Object obj) {
    		return getScript(obj, "");
    	}
    
    	public static String getScript(Object obj, String prefix) {
    		List classFilter = new ArrayList();
    		classFilter.add(String.class);
    		classFilter.add(Integer.class);
    		classFilter.add(Double.class);
    		classFilter.add(Float.class);
    		classFilter.add(Boolean.class);
    		classFilter.add(java.sql.Timestamp.class);
    
    		if (obj == null)
    			return "";
    		// String ret = "";
    		StringBuffer ret = new StringBuffer("");
    		Class c = obj.getClass();
    		Method methods[] = c.getMethods();
    		for (int i = 0; i < methods.length; i++) {
    			if (methods[i].getParameterTypes().length > 0
    					|| !methods[i].getName().substring(0, 3).equals("get")) {
    				continue;
    			}
    			String propertyName = methods[i].getName().substring(3, 4)
    					.toLowerCase()
    					+ methods[i].getName().substring(4);
    			if (!propertyName.equals("script") && !propertyName.equals("class"))
    				try {
    					Object result = methods[i].invoke(obj, new Object[0]);
    					if (classFilter.contains(result.getClass()))
    						ret.append("try{setValue(document.all["" + prefix
    								+ propertyName + ""],"" + result.toString()
    								+ "");}catch(ex){}");
    					else if (result.getClass().equals(ArrayList.class))
    						for (int j = 0; j < ((List) result).size(); j++)
    							ret.append(getScript(((List) result).get(j),
    									propertyName + "[" + j + "]."));
    					else
    						ret.append(getScript(result, propertyName + "."));
    
    				} catch (Exception e) {
    				}
    		}
    		return ret.toString();
    
    	}
    
    	public static String getServletName(String url) {
    		if (url.indexOf("/") < 0)
    			return url;
    		else
    			return getServletName(url.substring(url.indexOf("/") + 1));
    	}
    
    	public static String getWebContentByURL(String urlString) {
    		try {
    			URL url = new URL(urlString);
    			InputStream is = url.openStream();
    			BufferedReader reader = new BufferedReader(
    					new InputStreamReader(is));
    			StringBuffer buff = new StringBuffer();
    			while (true) {
    				String line = reader.readLine();
    				if (line == null)
    					break;
    				buff.append(line);
    			}
    			reader.close();
    			is.close();
    			return buff.toString();
    		} catch (MalformedURLException ex) {
    			return null;
    		} catch (IOException ex) {
    			return null;
    		}
    	}
    
    	public static String getSubStr(String str1, String str2) {
    		String returnStr = null;
    		if (str1 == null || str1.length() == 0) {
    			returnStr = "";
    		} else if (str2 == null || str2.length() == 0) {
    			returnStr = str1;
    		} else if (str1.lastIndexOf(str2) == -1) {
    			returnStr = str1;
    		} else {
    			returnStr = str1.substring(0, str1.lastIndexOf(str2));
    		}
    		return returnStr;
    	}
    
    	/**
    	 * fuction:str1检查是否匹配字符串 param str2 匹配的字符串 return : 匹配到了 返回true 否则 false
    	 * 
    	 * @param str1
    	 * @param str2
    	 * @return
    	 */
    	public static boolean checkStr(String str1, String str2) {
    		boolean bl = false;
    		if (str1 == null)
    			return false;
    		if (str2 == null)
    			return false;
    		for (int i = 0; i < str1.length(); i++) {
    			String s = str1.substring(i, i + 1);
    			if (s.equals(str2)) {
    				bl = true;
    				break;
    			}
    		}
    		return bl;
    	}
    
    	public static Date convertStringToDate(String date, String formatPattern) {
    		SimpleDateFormat sdf = new SimpleDateFormat();
    		if (formatPattern == null || formatPattern.equals("")) {
    			formatPattern = "yyyy-MM-dd HH:mm:ss";
    		}
    		sdf.applyPattern(formatPattern);
    
    		try {
    			return sdf.parse(date);
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			return null;
    		}
    
    	}
    
    	public static final String QBchange(String QJstr) {
    		String outStr = "";
    		String Tstr = "";
    		byte[] b = null;
    
    		for (int i = 0; i < QJstr.length(); i++) {
    			try {
    				Tstr = QJstr.substring(i, i + 1);
    				b = Tstr.getBytes("unicode");
    			} catch (java.io.UnsupportedEncodingException e) {
    				e.printStackTrace();
    			}
    
    			if (b[3] == -1) {
    				b[2] = (byte) (b[2] + 32);
    				b[3] = 0;
    				try {
    					outStr = outStr + new String(b, "unicode");
    				} catch (java.io.UnsupportedEncodingException e) {
    					e.printStackTrace();
    				}
    			} else
    				outStr = outStr + Tstr;
    		}
    
    		return outStr;
    	}
    
    	/**
    	 * 去掉字符串内部的空格
    	 * 
    	 * @param targetValue
    	 *            需要去除空格的字符串
    	 * @return
    	 */
    	public static final String trimInnerSpace(String targetValue) {
    		if (null == targetValue || "".equals(targetValue)) {
    			return targetValue;
    		} else {
    			return targetValue.trim().replaceAll(" ", "");
    		}
    	}
    
    	/**
    	 * 将投保平台的证件类型转换成cif2标准证件类型
    	 * 
    	 * @param 投保平台的证件类型
    	 * @return 标准证件类型
    	 * @see 没有找到对应的类型就置为0(其他)
    	 */
    	public static final String convertCertificateType(String type) {
    		return type == null ? null
    				: (certificateTypeMap.get(type) == null ? "0"
    						: (String) certificateTypeMap.get(type));
    	}
    
    	/**
    	 * 判断是否境外旅行意外险产品
    	 * 
    	 * @param planCode
    	 * @param productCode
    	 * @return
    	 */
    	public static boolean isAbroadAccident(String planCode, String productCode) {
    		return (("Y009".equals(planCode)) && ("00033".equals(productCode)
    				|| "00034".equals(productCode) || "00035".equals(productCode)
    				|| "00036".equals(productCode) || "00037".equals(productCode) || "00038"
    					.equals(productCode)))
    				|| (("Y064".equals(planCode)) && ("00708".equals(productCode)
    						|| "00709".equals(productCode)
    						|| "00710".equals(productCode)
    						|| "00711".equals(productCode)
    						|| "00712".equals(productCode) || "00713"
    							.equals(productCode)));
    	}
    
    	private static final String[] EMAIL_APPENDIX = new String[] {
    			".paic.com.cn", ".pingan.com.cn", ".pingan.com" };
    
    	public static boolean isEmailEqual(String a, String b) {
    		if (StringUtils.hasText(a) && StringUtils.hasText(b)) {
    			a = a.toLowerCase();
    			b = b.toLowerCase();
    			for (int i = 0; i < EMAIL_APPENDIX.length; i++) {
    				if (a.endsWith(EMAIL_APPENDIX[i])) {
    					a = a.substring(0, a.indexOf(EMAIL_APPENDIX[i]));
    				}
    				if (b.endsWith(EMAIL_APPENDIX[i])) {
    					b = b.substring(0, b.indexOf(EMAIL_APPENDIX[i]));
    				}
    			}
    			return a.equals(b);
    		}
    		return false;
    	}
    
    	/**
    	 * 比较两个双精度浮点数是否相等
    	 * 
    	 * @param a
    	 * @param b
    	 * @return
    	 */
    	public static boolean isDoubleNumberEqual(double a, double b) {
    		if (Math.abs(a - b) < 0.00001) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	/**
    	 * 身份证18位转换为15位
    	 * 
    	 * @param icNo
    	 * @return
    	 */
    	public static String IdentityCardNo18to15(String icNo) {
    		if (icNo == null || "".equals(icNo.trim())) {
    			return "";
    		}
    		String newIcNo = icNo.trim();
    		if (newIcNo.length() != 18) {
    			return icNo;
    		} else {
    			return newIcNo.substring(0, 6) + newIcNo.substring(8, 17);
    		}
    	}
    
    	/**
    	 * 厦门结案区间
    	 * 
    	 * @param type
    	 * @return
    	 */
    	public static String getCaseName(String type) {
    		return type == null ? "" : (caseMap.get(type) == null ? ""
    				: (String) caseMap.get(type));
    	}
    
    	/**
    	 * <p>
    	 * 判断给定字符串是否为null或""
    	 * 
    	 * @param s
    	 * @return true或false
    	 */
    	public static boolean isEmptyStr(String s) {
    		if (s == null || s.trim().length() == 0) {
    			return true;
    		} else {
    			return false;
    		}
    	}
    
    	/**
    	 * <p>
    	 * 判断给定字符串是否为null或""
    	 * 
    	 * @param s
    	 * @return 不为空返回true,否则false
    	 */
    	public static boolean isNotEmptyStr(String s) {
    		return !isEmptyStr(s);
    	}
    
    	/**
    	 * 计算两个日期的间隔年数
    	 * 
    	 * @author zsx
    	 * @param smallDateStr
    	 *            ,bigDateStr
    	 * @return float year (小数部分没有四舍五入)
    	 */
    	public static double getYearBetweenTowDate(String smallDateStr,
    			String bigDateStr) {
    		double year = 0;
    		if (CommonFunctions.isNotEmptyStr(smallDateStr)
    				&& CommonFunctions.isNotEmptyStr(bigDateStr)) {
    			try {
    				java.util.Date smallDate = CommonFunctions
    						.parseTime(smallDateStr);
    				java.util.Date bigDate = CommonFunctions.parseTime(bigDateStr);
    
    				int smallYear = smallDate.getYear() + 1900;
    				int smallMonth = smallDate.getMonth() + 1;
    				int smallDay = smallDate.getDate();
    
    				int bigYear = bigDate.getYear() + 1900;
    				int bigMonth = bigDate.getMonth() + 1;
    				int bigDay = bigDate.getDate();
    
    				year = (bigYear - smallYear) + (bigMonth - smallMonth) / 12.0
    						+ (bigDay - smallDay) / 365.0;
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		return year;
    	}
    
    	/**
    	 * zxs 2008-05-07 比较两日期大小,日期1大于等于日期2 返回1,小于返回-1,等于返回0 精确到时分秒
    	 */
    	public static int compareDates(String dateStr1, String dateStr2) {
    		java.util.Date date1 = parseTime(dateStr1);
    		java.util.Date date2 = parseTime(dateStr2);
    		int result = date1.compareTo(date2);
    		return result;
    	}
    
    	/**
    	 * 将常用时间字符串转换为时间对象 zxs 2007-12-25 修改归并版本有两个parseTime方法问题
    	 * 
    	 * @param String
    	 * @return java.util.Date
    	 */
    	public static java.util.Date parseTime(String date) {
    		SimpleDateFormat df = new SimpleDateFormat();
    		java.util.Date rtnDate = null;
    		if (date == null || date.trim().equals("")
    				|| date.trim().equals("null"))
    			return rtnDate;
    		try {
    			date = date.trim();
    			int length = date.length();
    			if (date.indexOf("-") != -1) {
    				if (length == 5) {
    					if (date.indexOf("-") == length - 1) {// 2008-
    						df.applyPattern("yyyy");
    						date = date.substring(0, 4);
    						rtnDate = df.parse(date);
    					} else {
    						df.applyPattern("yyyy-MM");// 2008-01
    						rtnDate = df.parse(date);
    					}
    				} else if (length >= 6 && length <= 7) {// 2008-1 -- 2008-01
    					df.applyPattern("yyyy-MM");
    					rtnDate = df.parse(date);
    				} else if (length >= 8 && length <= 9) {
    					if (date.lastIndexOf("-") == length - 1) { // 2008-12-
    						df.applyPattern("yyyy-MM");
    						date = date.substring(0, length - 1);
    						rtnDate = df.parse(date);
    					} else {
    						df.applyPattern("yyyy-MM-dd");// 2008-1-1 -- 2008-01-01
    						rtnDate = df.parse(date);
    					}
    				} else if (length >= 10 && length <= 11) {
    					if (date.indexOf(" ") > -1
    							&& date.indexOf(" ") < length - 1) {
    						df.applyPattern("yyyy-MM-dd HH");// 2008-1-1 1 --
    															// 2008-1-1 11 中间有空格
    						rtnDate = df.parse(date);
    					} else {
    						df.applyPattern("yyyy-MM-dd");// "2008-01-01"中间无空格
    						rtnDate = df.parse(date);
    					}
    				} else if (length >= 12 && length <= 13) {
    					if (date.indexOf(":") > -1
    							&& date.indexOf(":") < length - 1) {
    						df.applyPattern("yyyy-MM-dd HH:mm");// 2008-1-1 1:1 --
    															// 2008-1-1 1:01
    															// 中间有冒号
    						rtnDate = df.parse(date);
    					} else {
    						df.applyPattern("yyyy-MM-dd HH");// 2008-01-01 01 中间有空格
    						rtnDate = df.parse(date);
    					}
    				} else if (length >= 14 && length <= 16) {
    					int lastIndex = date.lastIndexOf(":");
    					if (date.indexOf(":") > -1 && lastIndex < length - 1
    							&& date.indexOf(":") != lastIndex) {
    						df.applyPattern("yyyy-MM-dd HH:mm:ss");// 2008-1-1 1:1:1
    																// -- 2008-01-01
    																// 1:1:1 中间有两个冒号
    						if (lastIndex < length - 1 - 2) {
    							date = date.substring(0, lastIndex + 3);
    						}
    						rtnDate = df.parse(date);
    					} else if (date.indexOf(":") > -1 && lastIndex < length - 1
    							&& date.indexOf(":") == lastIndex) {
    						df.applyPattern("yyyy-MM-dd HH:mm");// 2008-01-01 1:1 --
    															// 2008-01-01
    															// 01:01中间只有一个冒号
    						rtnDate = df.parse(date);
    					} else if (date.indexOf(":") > -1
    							&& lastIndex == length - 1
    							&& date.indexOf(":") == lastIndex) {
    						df.applyPattern("yyyy-MM-dd HH");// 2008-01-01 01:
    															// 只有一个冒号在末尾
    						date = date.substring(0, length - 1);
    						rtnDate = df.parse(date);
    					}
    				} else if (length == 17) {
    					int lastIndex = date.lastIndexOf(":");
    					if (lastIndex < length - 1) {
    						df.applyPattern("yyyy-MM-dd HH:mm:ss");// 2008-1-1 1:1:1
    																// -- 2008-01-01
    																// 1:1:1 中间有两个冒号
    						if (lastIndex < length - 1 - 2) {
    							date = date.substring(0, lastIndex + 3);
    						}
    						rtnDate = df.parse(date);
    					} else if (lastIndex == length - 1) {
    						df.applyPattern("yyyy-MM-dd HH:mm");// 2008-01-01 1:1 --
    															// 2008-01-01
    															// 01:01中间只有一个冒号
    						date = date.substring(0, length - 1);
    						rtnDate = df.parse(date);
    					}
    				} else if (length >= 18) {
    					df.applyPattern("yyyy-MM-dd HH:mm:ss");// 2008-1-1 1:1:1 --
    															// 2008-01-01
    															// 01:01:01 有两个冒号
    					int lastIndex = date.lastIndexOf(":");
    					if (lastIndex < length - 1 - 2) {
    						date = date.substring(0, lastIndex + 3);
    					}
    					rtnDate = df.parse(date);
    				}
    			} else if (length == 4) {
    				df.applyPattern("yyyy");
    				rtnDate = df.parse(date);
    			} else if (length >= 5 && length <= 6) {
    				df.applyPattern("yyyyMM");
    				rtnDate = df.parse(date);
    			} else if (length >= 7 && length <= 8) {
    				df.applyPattern("yyyyMMdd");
    				rtnDate = df.parse(date);
    			} else if (length >= 9 && length <= 10) {
    				df.applyPattern("yyyyMMddHH");
    				rtnDate = df.parse(date);
    			} else if (length >= 11 && length <= 12) {
    				df.applyPattern("yyyyMMddHHmm");
    				rtnDate = df.parse(date);
    			} else if (length >= 13 && length <= 14) {
    				df.applyPattern("yyyyMMddHHmmss");
    				rtnDate = df.parse(date);
    			} else if (length >= 15) {
    				df.applyPattern("yyyyMMddHHmmss");
    				date = date.substring(0, 14);
    				rtnDate = df.parse(date);
    			}
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    		return rtnDate;
    	}
    
    	public static int parseInt(String str) {
    		int f = 0;
    		try {
    			if (str == null || str.trim().equals("")) {
    				f = 0;
    			} else {
    				f = Integer.parseInt(str);
    			}
    		} catch (Exception ex) {
    			f = 0;
    		}
    		return f;
    	}
    
    	/**
    	 * 去掉字符串中的中文字符
    	 * 
    	 * @param str
    	 * @return
    	 */
    	public static String deleteChainese(String str) {
    		if (str == null || "null".equals(str.trim()) || "".equals(str.trim())) {
    			return "";
    		}
    		String returnStr = str;
    		try {
    			String regEx = "[\u4e00-\u9fa5]";
    			Pattern p = Pattern.compile(regEx);
    			Matcher m = p.matcher(str);
    			while (m.find()) {
    				for (int i = 0; i <= m.groupCount(); i++) {
    					returnStr = returnStr.replaceAll(m.group(i), "");
    				}
    			}
    
    		} catch (Exception ex) {
    			returnStr = str;
    		}
    		return returnStr.trim();
    	}
    
    	/**
    	 * 去掉字符串中的[非]中文字符
    	 * 
    	 * @param str
    	 * @return
    	 */
    	public static String deleteNotChinese(String str) {
    		if (str == null || "null".equals(str.trim()) || "".equals(str.trim())) {
    			return "";
    		}
    		String returnStr = str;
    		try {
    			returnStr = returnStr.replaceAll("[^\u4e00-\u9fa5]", "");
    
    		} catch (Exception ex) {
    			returnStr = str;
    		}
    		return returnStr.trim();
    	}
    
    	/**
    	 * 返回单精度数值 added by wangxf 2005-12-20
    	 * 
    	 * @param str
    	 *            String
    	 * @return float
    	 */
    	public static float parseFloat(String str) {
    		float f = 0;
    		if (str != null && !"".equals(str)) {
    			str = str.trim();
    			try {
    				f = Float.parseFloat(str);
    			} catch (Exception ex) {
    				f = 0;
    			}
    		}
    		return f;
    	}
    
    	/**
    	 * 取保险止期优化 wuxiangrong001 yyyy-mm-dd converted to yyyy-mm-dd 23:59:59
    	 */
    	public static String convertContractEndDate(String contractEndDate) {
    		if (StringUtils.hasText(contractEndDate)) {
    			return formatDate(parseDate(contractEndDate, "yyyy-MM-dd"))
    					+ " 23:59:59";
    		} else {
    			return contractEndDate;
    		}
    	}
    
    	public static String[] convertCurrencyCode(String currencyCode) {
    		if ("01".equals(currencyCode)) {
    			return new String[] { "RMB", "元" };
    		} else if ("02".equals(currencyCode)) {
    			return new String[] { "HKD", "元" };
    		} else if ("03".equals(currencyCode)) {
    			return new String[] { "USD", "元" };
    		} else if ("04".equals(currencyCode)) {
    			return new String[] { "GBP", "元" };
    		} else if ("05".equals(currencyCode)) {
    			return new String[] { "JPY", "元" };
    		} else if ("06".equals(currencyCode)) {
    			return new String[] { "DM", "元" };
    		} else if ("07".equals(currencyCode)) {
    			return new String[] { "SF", "元" };
    		} else if ("08".equals(currencyCode)) {
    			return new String[] { "FF", "元" };
    		} else if ("09".equals(currencyCode)) {
    			return new String[] { "SGD", "元" };
    		} else if ("10".equals(currencyCode)) {
    			return new String[] { "CAD", "元" };
    		} else if ("11".equals(currencyCode)) {
    			return new String[] { "NTD", "元" };
    		} else if ("12".equals(currencyCode)) {
    			return new String[] { "EUR", "元" };
    		} else if ("13".equals(currencyCode)) {
    			return new String[] { "AUD", "元" };
    		} else if ("14".equals(currencyCode)) {
    			return new String[] { "ITL", "元" };
    		} else if ("15".equals(currencyCode)) {
    			return new String[] { "NLG", "元" };
    		} else if ("16".equals(currencyCode)) {
    			return new String[] { "ATS", "元" };
    		} else if ("17".equals(currencyCode)) {
    			return new String[] { "BEF", "元" };
    		} else if ("18".equals(currencyCode)) {
    			return new String[] { "MOP", "元" };
    		} else if ("19".equals(currencyCode)) {
    			return new String[] { "NLG", "克朗" };
    		} else if ("20".equals(currencyCode)) {
    			return new String[] { "NOK", "克朗" };
    		} else if ("21".equals(currencyCode)) {
    			return new String[] { "SEK", "克朗" };
    		} else if ("22".equals(currencyCode)) {
    			return new String[] { "NZD", "元" };
    		} else if ("23".equals(currencyCode)) {
    			return new String[] { "COREA", "元" };
    		} else {
    			return new String[] { "RMB", "元" };
    		}
    
    	}
    
    	// describe object
    	public static Map describe(Object obj) {
    		if (obj == null) {
    			return Collections.EMPTY_MAP;
    		} else {
    			try {
    				return BeanUtils.describe(obj);
    			} catch (Exception e) {
    				// ignore the exception;
    				return Collections.EMPTY_MAP;
    			}
    		}
    	}
    
    	// remove the map that the null or empty value;
    	public static void purifyMap(Map one) {
    		if (one != null && !one.isEmpty()) {
    			List uselessKeys = new ArrayList(one.size() / 2);
    			for (Iterator it = one.keySet().iterator(); it.hasNext();) {
    				Object key = it.next();
    				Object value = one.get(key);
    				// record useless keys;
    				if (value == null) {
    					uselessKeys.add(key);
    				} else if ((value instanceof String)
    						&& !StringUtils.hasText((String) value)) {
    					uselessKeys.add(key);
    				}
    			}
    			for (int i = 0; i < uselessKeys.size(); i++) {
    				Object key = uselessKeys.get(i);
    				one.remove(key);
    			}
    			// clear;
    			uselessKeys.clear();
    			uselessKeys = null;
    		}
    	}
    
    
    	public static void main(String[] args) {
    		int interval = 0;
    		try {
    			interval = getDays("2018-03-10", "2018-03-20");
    			System.out.println(interval);
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    

      

  • 相关阅读:
    iis里不能同时启动多个站点的原因总结:
    相机200万提升到300万的软件技术插值法
    nginx与PHP的安装配置
    IIS和apache都要同时使用80端口的解决办法
    nginx安装与配置
    只写一个表单,可以达到两个表单的效果
    nginx伪静态规则
    伪静态涉及到的重复页面之属性canonical
    ckeditor与ckfinder组合配置
    上传图片的美化
  • 原文地址:https://www.cnblogs.com/qqyong123/p/8550822.html
Copyright © 2011-2022 走看看