package ieven.server.webapp.util.excel; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.data.mongodb.core.query.Criteria; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PublicStatic { public static String PASSWORD = "42343243$wer1"; // 单机 public static String NODE = "node"; // 服务器 public static String MULTI = "multi"; // 版本,0表示试用,1表示正式,-1表示只限制单案件2万,-2表示限制一个案件,数据量20万 public static Integer EDITION = 1; // 最大累计导入数 public static Long MAXUPLOAD = 200000L; // 最大累加单案导入数 public static Long MAXCASESUPLOAD = 20000L; // 最大累计试用导入数 public static Long MAXUPLOADPROBATION = 20000L; public static String matcherString() { int[] input = new int[]{0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xad, 0x483, 0x484, 0x485, 0x486, 0x487, 0x488, 0x489, 0x559, 0x55a, 0x58a, 0x591, 0x592, 0x593, 0x594, 0x595, 0x596, 0x597, 0x598, 0x599, 0x59a, 0x59b, 0x59c, 0x59d, 0x59e, 0x59f, 0x5a0, 0x5a1, 0x5a2, 0x5a3, 0x5a4, 0x5a5, 0x5a6, 0x5a7, 0x5a8, 0x5a9, 0x5aa, 0x5ab, 0x5ac, 0x5ad, 0x5ae, 0x5af, 0x5b0, 0x5b1, 0x5b2, 0x5b3, 0x5b4, 0x5b5, 0x5b6, 0x5b7, 0x5b8, 0x5b9, 0x5ba, 0x5bb, 0x5bc, 0x5bd, 0x5bf, 0x5c1, 0x5c2, 0x5c4, 0x5c5, 0x5c6, 0x5c7, 0x606, 0x607, 0x608, 0x609, 0x60a, 0x63b, 0x63c, 0x63d, 0x63e, 0x63f, 0x674, 0x6e5, 0x6e6, 0x70f, 0x76e, 0x76f, 0x770, 0x771, 0x772, 0x773, 0x774, 0x775, 0x776, 0x777, 0x778, 0x779, 0x77a, 0x77b, 0x77c, 0x77d, 0x77e, 0x77f, 0xa51, 0xa75, 0xb44, 0xb62, 0xb63, 0xc62, 0xc63, 0xce2, 0xce3, 0xd62, 0xd63, 0x135f, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, 0x2028, 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x2044, 0x2071, 0xf701, 0xf702, 0xf703, 0xf704, 0xf705, 0xf706, 0xf707, 0xf708, 0xf709, 0xf70a, 0xf70b, 0xf70c, 0xf70d, 0xf70e, 0xf710, 0xf711, 0xf712, 0xf713, 0xf714, 0xf715, 0xf716, 0xf717, 0xf718, 0xf719, 0xf71a, 0xfb1e, 0xfc5e, 0xfc5f, 0xfc60, 0xfc61, 0xfc62, 0xfeff, 0xfffc}; StringBuilder b = new StringBuilder(); int lastContinuous = -1; int span = 0; for (int i = 0; i < input.length; i++) { if (lastContinuous == -1 && i < input.length - 1 && input[i] + 1 == input[i + 1]) { lastContinuous = input[i]; span = 1; } else { if (input[i] == lastContinuous + span) { span++; } else if (lastContinuous != -1) { if (b.length() > 0) { b.append("|"); } b.append(String.format("[\\u%s-\\u%s]", zerolize(Integer.toHexString(lastContinuous)), zerolize(Integer.toHexString(lastContinuous + span - 1)))); span = 0; lastContinuous = -1; i--; } else { b.append("|\\u" + zerolize(Integer.toHexString(input[i]))); } } } if (lastContinuous != -1) { if (b.length() > 0) { b.append("|"); } b.append(String.format("[\\u%s-\\u%s]", zerolize(Integer.toHexString(lastContinuous)), zerolize(Integer.toHexString(lastContinuous + span - 1)))); } return b.toString(); } public static String patternCompile = matcherString(); // 反洗钱 public static Map AML = new HashMap() { { put("美元金额", "外币交易额(折合美元)"); put("人民币金额", "交易金额"); put("货币名称", "交易币种"); // put("付款方网点代码","交易网点名称"); put("代办人名称", "经办人姓名"); put("代办人证件号码", "经办人证件号码"); put("用途", "资金用途"); // put("交易卡号", "用途 "); put("付款方账号", "交易账号"); put("付款方名称", "交易户名"); put("付款方证件号码", "交易证件号码"); put("付款方银行", "开户网点"); put("收款方账号", "对手账号"); put("收款方名称", "对手户名"); put("收款方证件号码", "对手身份证号"); put("收款方银行", "对手开户银行"); } }; public static Map IDLABELMAP = new HashMap() { { put(0, "number"); put(1, "openAccountSite"); put(2, "tradeCardNumber"); put(3, "tradeAccount"); put(4, "tradeUserName"); put(5, "tradeIdNumber"); put(6, "tradeDate"); put(7, "tradeTime"); put(8, "paymentMark"); put(9, "tradeSum"); put(10, "incomeSum"); put(11, "outPaySum"); put(12, "tradeRemainder"); put(13, "opponentAccount"); put(14, "opponentCardNumber"); put(15, "cashMark"); put(16, "opponentUserName"); put(17, "opponentIdentify"); put(18, "opponentAccountBank"); put(19, "summary"); put(20, "tradeCurrency"); put(21, "tradeSiteName"); put(22, "tradePlace"); put(23, "tradeHappenPlace"); put(24, "isTradeSuccess"); put(25, "summons"); put(26, "IPAddress"); put(27, "MACAddress"); put(28, "opponentTradeSum"); put(29, "tradeSerialNumber"); put(30, "channel"); put(31, "logNumber"); put(32, "voucherType"); put(33, "voucherNumber"); put(34, "tradeCounterNumber"); put(35, "foreignCurrencyTradeSum"); put(36, "operatorName"); put(37, "operatorIdentify"); put(38, "operatorRelationWithOwner"); put(39, "capitalUse"); put(40, "settlementWay"); put(41, "statement"); put(42, "opponentLabel"); put(43, "remarks"); put(44, "standbyOne"); put(45, "standbyTwo"); put(46, "standbyThree"); put(47, "standbyFour"); put(48, "standbyFive"); put(49, "searchFeedBackResultReason"); } }; public static Map LABELIDMAP = new HashMap() { { put("number", 0); put("openAccountSite", 1); put("tradeCardNumber", 2); put("tradeAccount", 3); put("tradeUserName", 4); put("tradeIdNumber", 5); put("tradeDate", 6); put("tradeTime", 7); put("paymentMark", 8); put("tradeSum", 9); put("incomeSum", 10); put("outPaySum", 11); put("tradeRemainder", 12); put("opponentAccount", 13); put("opponentCardNumber", 14); put("cashMark", 15); put("opponentUserName", 16); put("opponentIdentify", 17); put("opponentAccountBank", 18); put("summary", 19); put("tradeCurrency", 20); put("tradeSiteName", 21); put("tradePlace", 22); put("tradeHappenPlace", 23); put("isTradeSuccess", 24); put("summons", 25); put("IPAddress", 26); put("MACAddress", 27); put("opponentTradeSum", 28); put("tradeSerialNumber", 29); put("channel", 30); put("logNumber", 31); put("voucherType", 32); put("voucherNumber", 33); put("tradeCounterNumber", 34); put("foreignCurrencyTradeSum", 35); put("operatorName", 36); put("operatorIdentify", 37); put("operatorRelationWithOwner", 38); put("capitalUse", 39); put("settlementWay", 40); put("statement", 41); put("opponentLabel", 42); put("remarks", 43); put("standbyOne", 44); put("standbyTwo", 45); put("standbyThree", 46); put("standbyFour", 47); put("standbyFive", 48); put("searchFeedBackResultReason", 49); } }; public static Map jurisdiction = new HashMap() { { put(1, "公开"); put(2, "私密"); put(3, "共享"); } }; // 0表示其他 1表示第三方,2表示现金,3表示理财,4表示有收有付,5只收不付,6表示只付不收' public static Map transactionType = new HashMap() { { put(0, "其他"); put(1, "第三方"); put(2, "现金"); put(3, "理财"); put(4, "有收有付"); put(5, "只收不付"); put(6, "只付不收"); } }; public static Map status = new HashMap() { { put(1, "在侦"); put(2, "完结"); } }; /** * 去除字符串中所包含的空格(包括:空格(全角,半角)、制表符、换页符等) * * @param s * @return */ public static String removeAllBlank(String s) { String result = ""; if (null != s && !"".equals(s)) { result = s.replaceAll("[ *| *| *|//s*]*", ""); } return result; } /** * 计算百分比 */ public static String percent(double y, double z) { if (z < y) { double baiy = y; y = z; z = baiy; } // String baifenbi = "";// 接受百分比的值 // double baiy = y * 1.0; // double baiz = z * 1.0; if (z != 0.00) { double fen = y / z; NumberFormat nf = NumberFormat.getPercentInstance(); // 注释掉的也是一种方法 nf.setMinimumFractionDigits(2); // 保留到小数点后几位 DecimalFormat df1 = new DecimalFormat("##0.00%"); // ##.00% // 百分比格式,后面不足2位的用0补齐 // String baifenbi = nf.format(fen); String baifenbi = df1.format(fen); return baifenbi; } else { return "0.00%"; } } /** * 只保留数字,字母,中文与空格以及常用可见字符 */ public static String removeAllSpecial(String s) { s = ToDBC(s); Pattern p1 = Pattern.compile("[^\\w\\u4e00-\\u9fa5 |,.:;\\u005C\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\_\\+\\=\\{\\}\\[\\]\\|\\<\\>\\?\\/]"); Matcher m1 = p1.matcher(s); return m1.replaceAll(""); } /** * 去掉所有的空格 */ public static String removeAllSpace(String s) { return StringUtils.deleteWhitespace(s); } public static String specialFormat(String s) { // 全角转半角 String result = ""; if (null != s && !"".equals(s)) { result = s; result = result.replace("-", "-"); result = result.replace("/", "/"); result = result.replace("(", "("); result = result.replace(")", ")"); } return result; } public static String specialFormatStr(String s) { // 全角转半角 String result = ""; if (StringUtils.isNotBlank(s) && !"null".equals(s)) { result = s; result = result.replace("-", "-"); result = result.replace("/", "/"); result = result.replace("(", "("); result = result.replace(")", ")"); result = result.replaceAll("(", "").replaceAll(")", "").replaceAll("个人", ""). replaceAll("-", "").replaceAll("个体工商户", "").replaceAll("商户", ""); } return result; } /** * 包含数字 * * @param company * @return */ public static boolean isContainNumber(String company) { Pattern p = Pattern.compile("[0-9]"); Matcher m = p.matcher(company); if (m.find()) { return true; } return false; } /** * 包含数字,字母 * * @param company * @return */ public static boolean isContain(String company) { Pattern p = Pattern.compile("[0-9A-Za-z\\u3007\\u3400-\\u4DB5\\u4E00-\\u9FCB\\uE815-\\uE864]"); Matcher m = p.matcher(company); if (m.find()) { return true; } return false; // return true; } private static String zerolize(String s) { if (s.length() < 4) { s = "000".substring(0, 4 - s.length()) + s; } return s; } // 转全角的函数(SBC case) // 任意字符串 // 全角字符串 // 全角空格为12288,半角空格为32 // 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 public static String ToSBC(String input) { // 半角转全角: char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 32) { c[i] = (char) 12288; continue; } if (c[i] < 127) { c[i] = (char) (c[i] + 65248); } } return new String(c); } // 转半角的函数(DBC case) // 任意字符串 // 半角字符串 // 全角空格为12288,半角空格为32 // 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 public static String ToDBC(String input) { char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 12288) { c[i] = (char) 32; continue; } if (c[i] > 65280 && c[i] < 65375) { c[i] = (char) (c[i] - 65248); } } return new String(c); } public static String repetitionSetNull(String str) { char[] chars = str.toCharArray(); int v0 = 0; int v1 = 0; int v2 = 0; int v3 = 0; int v4 = 0; int v5 = 0; int v6 = 0; int v7 = 0; int v8 = 0; int v9 = 0; int count = 0; for (int i = 0; i < chars.length; i++) { switch (chars[i]) { case '0': v0 = 1; break; case '1': v1 = 1; break; case '2': v2 = 1; break; case '3': v3 = 1; break; case '4': v4 = 1; break; case '5': v5 = 1; break; case '6': v6 = 1; break; case '7': v7 = 1; break; case '8': v8 = 1; break; case '9': v9 = 1; break; default: count = 2; } if (count > 0) { break; } } count = count + v0 + v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9; if (count == 1) { return ""; } else { return str; } } public static boolean checkStr(String str) { if (StringUtils.isBlank(str) || "null".equals(str)) { return true; } return false; } public static String removeStr(String str) { if (StringUtils.isBlank(str) || "null".equals(str) || "-".equals("str")) { return ""; } return str; } public static String checkStrJe(String str) { if (StringUtils.isBlank(str) || "null".equals(str) || "-".equals(str)||"-".equals(str)) { return "0.00"; } return str; } public static List noQueryData = Lists.newArrayList("公司", "慈善", "红十字", "店", "工作室", "商行", "中心", "经营部", "水果行", "餐厅", "超市", "市场", "商贸", "西饼屋", "科技", "酒楼", "停车场", "ETC", "etc", "服务", "批发", "渔场", "浴场", "设计", "物业", "咨询", "批发", "合作社", "工厂", "鞋厂", "动物园", "植物园", "土黑猪", "猫狗", "学校", "学院", "大学", "棋牌", "娱乐", "袜厂", "制品厂", "加油站", "体育馆", "研究所", "保健院", "龙虾", "羊蝎子", "足道", "公安局", "税务局", "法院", "菜馆", "棋牌", "水产行", "海鲜行", "公司", "服饰", "服装", "基金", "宠物", "车行", "保险", "理财", "支付宝", "财付通", "apple", "烟酒", "经营者", "装配厂", "商户", "null", "借呗", "花呗", "网商银行", "LIMITED", "INC.", "幼儿园", "备用金", "淘宝现金红包", "蚂蚁", "耐克", "航空", "滴滴出行", "果格", "拉扎斯", "网络科技", "字节跳动", "Incorporated", "Limited", "道达尔", "欧莱雅", "星巴克", "咖啡", "实业", "百胜餐饮", "优酷", "爱奇艺", "挚享科技", "云账户", "吱信", "广场", "中国", "移动", "联通", "电信", "门市", "经营", "工作", "教育", "财政", "税务", "公安", "Inc.", "LTD", "Ltd", "协会", "天猫", "经销", "管理", "交通", "百货", "个体", "食品", "旅行", "携程", "同程", "淘宝", "科技珠宝", "农场", "公证", "包装", "到家", "京东", "委员", "管委会", "B.V.", "财付通", "微商", "支付", "美团", "饿了么", "运营", "中学", "小学", "ETC", "etc", "银行", "长盛基金管理有限公司", "联合社","中间账户","余额宝","会所","招待所","火锅","炸鸡","副食","索道","酒急送","电脑","牛肉","销售部","微信提现手续费收款中转专用帐号","医院","面馆","装饰","窗帘庄","没心没肺好过撕心裂肺"); public static List getQuery() { List dataList = new ArrayList<>(); List filedsList = Lists.newArrayList("交易对手账号", "交易对手户名"); for (String s : filedsList) { for (String noQueryDatum : noQueryData) { Criteria newCri = new Criteria(s); Pattern compile = Pattern.compile("^((?!" + noQueryDatum + ").)*$", Pattern.CASE_INSENSITIVE); newCri.regex(compile); dataList.add(newCri); } if(s.equals("交易对手账号")){ Criteria newFile = new Criteria(s); newFile.ne(null).ne(""); dataList.add(newFile); } } return dataList; } }