package com.jiuqi.grid.output; package .var.folders._j.vfbv187d0bb8b8w5spzgg8180000gn.T; import com.jiuqi.util.JqLib; import java.text.DecimalFormat; public class CurrencyBoxHTMLGenerator { private int decimal; private int precision; private int type; private String value; private String moneySign; public CurrencyBoxHTMLGenerator(int decimal, int precision, String value, int type, String moneySign) { this.decimal = decimal; this.precision = precision; this.type = type; this.value = value; this.moneySign = moneySign; } public String generate() { this.decimal = getDecimal(this.decimal); this.precision = getPrecision(this.decimal, this.precision); if (this.value.equals("|")) return getTitleHTML(this.decimal, this.precision); if (this.moneySign == null) this.moneySign = ""; return getDataHTML(this.decimal, this.precision, this.value, this.type, this.moneySign); } private int getDecimal(int dec) { if (dec == 0) return 0; return 2; } private int getPrecision(int dec, int pre) { if (dec == 0) { if (pre >= 2 && pre <= 13) return pre; return 13; } if (pre >= 4 && pre <= 15) return pre; return 15; } private char formatNumber(char c, int type) { if (type == 0) return c; if (type == 1) { switch (c) { case '1': return '一'; case '2': return '二'; case '3': return '三'; case '4': return '四'; case '5': return '五'; case '6': return '六'; case '7': return '七'; case '8': return '八'; case '9': return '九'; case '0': return 'O'; case '-': return '负'; } return '错'; } switch (c) { case '1': return '壹'; case '2': return '贰'; case '3': return '叁'; case '4': return '肆'; case '5': return '伍'; case '6': return '陆'; case '7': return '柒'; case '8': return '捌'; case '9': return '玖'; case '0': return '零'; case '-': return '负'; } return '错'; } private boolean isFlagNumber(int num, boolean bool) { switch (num) { case 1: if (bool) return true; return false; case 4: case 7: case 10: case 13: return true; } return false; } private String getDataHTML(int dec, int pre, String val, int ty, String mSigh) { DecimalFormat doublefmt = new DecimalFormat(); StringBuffer dataHTML = new StringBuffer(); int length = 0; double percent = 100.0D / pre; int b = (int)Math.round(percent * 100.0D); percent = b / 100.0D; String value = val; doublefmt.setMaximumFractionDigits(dec); doublefmt.setMinimumFractionDigits(dec); doublefmt.setGroupingSize(0); value = JqLib.strExclude(value, ','); value = doublefmt.format(Double.parseDouble(value)); length = value.length(); dataHTML.append("
\n"); } else { dataHTML.append(" | \n"); } flagNumber--; } if (isFlagNumber(flagNumber, false)) { dataHTML.append(" | " + mSigh + " | \n"); } else { dataHTML.append("" + mSigh + " | \n"); } flagNumber--; for (i = 0; i < length; i++) { if (isFlagNumber(flagNumber, false)) { dataHTML.append("" + formatNumber(value.charAt(i), ty) + " | \n"); } else { dataHTML.append("" + formatNumber(value.charAt(i), ty) + " | \n"); } flagNumber--; } } else { for (int i = 0; i < pre; i++) { if (isFlagNumber(flagNumber, false)) { dataHTML.append("" + formatNumber(value.charAt(length - pre + i), ty) + " | \n"); } else { dataHTML.append("" + formatNumber(value.charAt(length - pre + i), ty) + " | \n"); } flagNumber--; } } } else { int flagNumber = pre - 2; if (length - 1 < pre) { int i; for (i = 0; i < pre - length; i++) { if (isFlagNumber(flagNumber, true)) { dataHTML.append("\n"); } else { dataHTML.append(" | \n"); } flagNumber--; } if (isFlagNumber(flagNumber, true)) { dataHTML.append(" | " + mSigh + " | \n"); } else { dataHTML.append("" + mSigh + " | \n"); } flagNumber--; for (i = 0; i < length - 3; i++) { if (isFlagNumber(flagNumber, true)) { dataHTML.append("" + formatNumber(value.charAt(i), ty) + " | \n"); } else { dataHTML.append("" + formatNumber(value.charAt(i), ty) + " | \n"); } flagNumber--; } } else { for (int i = 0; i < pre - 2; i++) { if (isFlagNumber(flagNumber, true)) { dataHTML.append("" + formatNumber(value.charAt(length - 1 - pre + i), ty) + " | \n"); } else { dataHTML.append("" + formatNumber(value.charAt(length - 1 - pre + i), ty) + " | \n"); } flagNumber--; } } dataHTML.append("" + formatNumber(value.charAt(length - 2), ty) + " | \n"); dataHTML.append("" + formatNumber(value.charAt(length - 1), ty) + " | \n"); } dataHTML.append("
亿 | \n"); break; case 5: case 13: if (i == 13) { titleHTML.append("万 | \n"); break; } titleHTML.append("万 | \n"); break; case 4: case 8: case 12: if (i == 4) { titleHTML.append("千 | \n"); break; } titleHTML.append("千 | \n"); break; case 3: case 7: case 11: if (i == 7) { titleHTML.append("百 | \n"); break; } titleHTML.append("百 | \n"); break; case 2: case 6: case 10: if (i == 10) { titleHTML.append("十 | \n"); break; } titleHTML.append("十 | \n"); break; case 1: if (dec == 2) { titleHTML.append("元 | \n"); break; } titleHTML.append("元 | \n"); break; } } if (dec == 2) { titleHTML.append("角 | \n"); titleHTML.append("分 | \n"); } titleHTML.append("