tom.xu@informa.com 2 vuotta sitten
vanhempi
sitoutus
a2918105bf

+ 0 - 1
src/main/java/ieven/server/webapp/api/FileController.java

@@ -153,7 +153,6 @@ public class FileController {
         this.gridFsOperations.findOne(new Query(Criteria.where("_id").is(new ObjectId(fileId))));
     if (gridFSFile != null) {
       String filename = gridFSFile.getFilename();
-
       try {
         response.setHeader("Content-Type", "multipart/form-data");
         response.addHeader(

+ 3 - 1
src/main/java/ieven/server/webapp/config/LoginInterceptor.java

@@ -17,7 +17,9 @@ import java.nio.charset.StandardCharsets;
 @Slf4j
 public class LoginInterceptor implements HandlerInterceptor {
 
-  String[] excludePaths = {"/index.html", "/file", "/group", "/model", "/login", "/user/login"};
+  String[] excludePaths = {
+    "/index.html", "/file", "/group", "/alipay", "/model", "/login", "/user/login"
+  };
 
   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

+ 106 - 44
src/main/java/ieven/server/webapp/domain/alipay/AlipayHeaders.java

@@ -11,52 +11,114 @@ import java.util.List;
 import java.util.Map;
 
 public class AlipayHeaders {
-    private static final Map<Integer, List<String>> mappedHeaders = new HashMap<>();
-    private static final Map<Integer, String> mappedNames = new HashMap<>();
-    public static final String REGISTER_1 = "卡类型";
-    public static final String REGISTER_2 = "银行简称";
-    public static final String REGISTER_3 = "绑定卡号";
-    public static final String LOGIN_1 = "日期";
-    public static final String LOGIN_2 = "时间";
-    public static final String TRADE_2 = "买家账号";
-    public static final String TRADE_3 = "买家昵称";
-    public static final String TRADE_5 = "卖家账号";
-    public static final String TRADE_6 = "卖家昵称";
-    public static final String TRADE_8 = "买家姓名";
-    public static final String TRADE_12 = "卖家姓名";
-    public static final String ACCOUNT_1 = "支付宝用户ID";
-    public static final String ACCOUNT_2 = "支付宝户名";
-    public static final String ACCOUNT_3 = "对手支付宝用户ID";
-    public static final String ACCOUNT_4 = "对手支付宝户名";
+  private static final Map<Integer, List<String>> mappedHeaders = new HashMap<>();
+  private static final Map<Integer, String> mappedNames = new HashMap<>();
+  public static final String REGISTER_1 = "卡类型";
+  public static final String REGISTER_2 = "银行简称";
+  public static final String REGISTER_3 = "绑定卡号";
+  public static final String LOGIN_1 = "日期";
+  public static final String LOGIN_2 = "时间";
+  public static final String TRADE_2 = "买家账号";
+  public static final String TRADE_3 = "买家昵称";
+  public static final String TRADE_5 = "卖家账号";
+  public static final String TRADE_6 = "卖家昵称";
+  public static final String TRADE_8 = "买家姓名";
+  public static final String TRADE_12 = "卖家姓名";
+  public static final String ACCOUNT_1 = "支付宝用户ID";
+  public static final String ACCOUNT_2 = "支付宝户名";
+  public static final String ACCOUNT_3 = "对手支付宝用户ID";
+  public static final String ACCOUNT_4 = "对手支付宝户名";
 
-    public AlipayHeaders() {
-    }
+  public AlipayHeaders() {}
 
-    public static List<String> getHeaders(int type) {
-        return mappedHeaders.get(type);
-    }
+  public static List<String> getHeaders(int type) {
+    return mappedHeaders.get(type);
+  }
 
-    public static String getGeneratedName(int type) {
-        return mappedNames.get(type);
-    }
+  public static String getGeneratedName(int type) {
+    return mappedNames.get(type);
+  }
 
-    static {
-        mappedHeaders.put(1, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定银行卡", "对应的协查数据"));
-        mappedHeaders.put(2, Arrays.asList("用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定卡号", "银行简称", "卡类型", "对应的协查数据"));
-        mappedHeaders.put(3, Arrays.asList("登陆账号", "支付宝用户ID", "账户名", "客户端ip", "操作发生时间", "对应的协查数据"));
-        mappedHeaders.put(4, Arrays.asList("登陆账号", "支付宝用户ID", "账户名", "客户端IP", "操作发生时间", "对应的协查数据"));
-        mappedHeaders.put(5, Arrays.asList("交易号", "外部交易号", "交易状态", "合作伙伴ID", "买家用户id", "买家信息", "卖家用户id", "卖家信息", "交易金额(元)", "收款时间", "最后修改时间", "创建时间", "交易类型", "来源地", "商品名称", "收货人地址", "对应的协查数据"));
-        mappedHeaders.put(6, Arrays.asList("交易号", "外部交易号", "交易状态", "合作伙伴ID", "买家用户ID", "买家姓名", "买家账号", "买家昵称", "卖家用户ID", "卖家姓名", "卖家账号", "卖家昵称", "交易金额(元)", "收款时间", "最后修改时间", "创建时间", "交易类型", "来源地", "商品名称", "收货人地址", "对应的协查数据"));
-        mappedHeaders.put(7, Arrays.asList("交易号", "商户订单号", "交易创建时间", "付款时间", "最近修改时间", "交易来源地", "类型", "用户信息", "交易对方信息", "消费名称", "金额(元)", "收/支", "交易状态", "备注", "对应的协查数据"));
-        mappedHeaders.put(8, Arrays.asList("交易号", "商户订单号", "交易创建时间", "付款时间", "最近修改时间", "交易来源地", "类型", "支付宝用户ID", "支付宝户名", "对手支付宝用户ID", "对手支付宝户名", "消费名称", "金额(元)", "收/支", "交易状态", "备注", "对应的协查数据"));
-        mappedHeaders.put(9, Arrays.asList("交易号", "付款方支付宝账号", "收款方支付宝账号", "收款机构信息", "到账时间", "转账金额(元)", "转账产品名称", "交易发生地", "提现流水号", "对应的协查数据"));
-        mappedHeaders.put(10, Arrays.asList("交易号", "付款方支付宝用户ID", "收款方支付宝用户ID", "收款机构信息", "到账时间", "转账金额(元)", "转账产品名称", "交易发生地", "提现流水号", "对应的协查数据"));
-        mappedHeaders.put(11, Arrays.asList("用户ID", "用户名", "额外字段1", "额外字段2", "额外字段3"));
-        mappedNames.put(2, "五联单-注册信息");
-        mappedNames.put(4, "五联单-登录日志");
-        mappedNames.put(6, "五联单-交易记录");
-        mappedNames.put(8, "五联单-账户明细");
-        mappedNames.put(10, "五联单-转账明细");
-        mappedNames.put(11, "五联单-用户汇总表");
-    }
+  static {
+    mappedHeaders.put(
+        1,
+        Arrays.asList(
+            "用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定银行卡", "对应的协查数据"));
+    mappedHeaders.put(
+        2,
+        Arrays.asList(
+            "用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "绑定手机", "绑定卡号", "银行简称", "卡类型",
+            "对应的协查数据"));
+    mappedHeaders.put(3, Arrays.asList("登陆账号", "支付宝用户ID", "账户名", "客户端ip", "操作发生时间", "对应的协查数据"));
+    mappedHeaders.put(4, Arrays.asList("登陆账号", "支付宝用户ID", "账户名", "客户端IP", "操作发生时间", "对应的协查数据"));
+    mappedHeaders.put(
+        5,
+        Arrays.asList(
+            "交易号", "外部交易号", "交易状态", "合作伙伴ID", "买家用户id", "买家信息", "卖家用户id", "卖家信息", "交易金额(元)", "收款时间",
+            "最后修改时间", "创建时间", "交易类型", "来源地", "商品名称", "收货人地址", "对应的协查数据"));
+    mappedHeaders.put(
+        6,
+        Arrays.asList(
+            "交易号", "外部交易号", "交易状态", "合作伙伴ID", "买家用户ID", "买家姓名", "买家账号", "买家昵称", "卖家用户ID", "卖家姓名",
+            "卖家账号", "卖家昵称", "交易金额(元)", "收款时间", "最后修改时间", "创建时间", "交易类型", "来源地", "商品名称", "收货人地址",
+            "对应的协查数据"));
+    mappedHeaders.put(
+        7,
+        Arrays.asList(
+            "交易号", "商户订单号", "交易创建时间", "付款时间", "最近修改时间", "交易来源地", "类型", "用户信息", "交易对方信息", "消费名称",
+            "金额(元)", "收/支", "交易状态", "备注", "对应的协查数据"));
+    mappedHeaders.put(
+        8,
+        Arrays.asList(
+            "交易号",
+            "商户订单号",
+            "交易创建时间",
+            "付款时间",
+            "最近修改时间",
+            "交易来源地",
+            "类型",
+            "支付宝用户ID",
+            "支付宝户名",
+            "对手支付宝用户ID",
+            "对手支付宝户名",
+            "消费名称",
+            "金额(元)",
+            "收/支",
+            "交易状态",
+            "备注",
+            "对应的协查数据"));
+    mappedHeaders.put(
+        9,
+        Arrays.asList(
+            "交易号",
+            "付款方支付宝账号",
+            "收款方支付宝账号",
+            "收款机构信息",
+            "到账时间",
+            "转账金额(元)",
+            "转账产品名称",
+            "交易发生地",
+            "提现流水号",
+            "对应的协查数据"));
+    mappedHeaders.put(
+        10,
+        Arrays.asList(
+            "交易号",
+            "付款方支付宝用户ID",
+            "收款方支付宝用户ID",
+            "收款机构信息",
+            "到账时间",
+            "转账金额(元)",
+            "转账产品名称",
+            "交易发生地",
+            "提现流水号",
+            "对应的协查数据"));
+    mappedHeaders.put(11, Arrays.asList("用户ID", "用户名", "额外字段1", "额外字段2", "额外字段3"));
+    mappedNames.put(2, "五联单-注册信息");
+    mappedNames.put(4, "五联单-登录日志");
+    mappedNames.put(6, "五联单-交易记录");
+    mappedNames.put(8, "五联单-账户明细");
+    mappedNames.put(10, "五联单-转账明细");
+    mappedNames.put(11, "五联单-用户汇总表");
+  }
 }

+ 97 - 90
src/main/java/ieven/server/webapp/domain/exporter/Exporter.java

@@ -1,20 +1,15 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
 package ieven.server.webapp.domain.exporter;
 
 import com.mongodb.client.MongoCursor;
 import ieven.server.webapp.domain.data.Fields;
+import ieven.server.webapp.domain.file.LogicalFile;
 import ieven.server.webapp.infrastructure.SpringContextUtil;
 import ieven.server.webapp.util.DataUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.bson.Document;
 import org.bson.types.ObjectId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
@@ -24,93 +19,105 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.Map;
 
+@Slf4j
 public class Exporter {
-    private static final Logger log = LoggerFactory.getLogger(Exporter.class);
-    private MongoTemplate mongoTemplate = SpringContextUtil.getBean(MongoTemplate.class);
-    private GridFsTemplate gridFsTemplate = SpringContextUtil.getBean(GridFsTemplate.class);
-
-    public Exporter() {
+  private String rootPath = "temp";
+  private MongoTemplate mongoTemplate;
+  private GridFsTemplate gridFsTemplate;
+
+  public Exporter() {
+    this.mongoTemplate = SpringContextUtil.getBean(MongoTemplate.class);
+    this.gridFsTemplate = SpringContextUtil.getBean(GridFsTemplate.class);
+  }
+
+  public String export(MongoCursor<Document> cursor, String fileId) {
+    Fields fields =
+        mongoTemplate.findOne(new Query(Criteria.where("fileId").is(fileId)), Fields.class);
+    LogicalFile logicalFile =
+        mongoTemplate.findOne(new Query(Criteria.where("id").is(fileId)), LogicalFile.class);
+
+    if (fields == null) {
+      return "";
     }
-
-    public String export(MongoCursor<Document> cursor, String fileId) {
-        Fields fields = this.mongoTemplate.findOne(new Query(Criteria.where("fileId").is(fileId)), Fields.class);
-        if (fields == null) {
-            return "";
-        } else {
-            LinkedHashMap<String, String> headers = fields.getFields();
-            LinkedHashMap<String, String> headersReverse = fields.getFieldsReverse();
-            int currentRowRead = 0;
-            int currentSheetNum = 1;
-            Workbook wb = new SXSSFWorkbook(1000);
-            Sheet sheet;
-            Row cRow;
-            sheet = wb.createSheet("sheet" + currentSheetNum);
-
-            cRow = sheet.createRow(0);
-            int hcIndex = 0;
-
-            String exportFileId;
-            for(String filePath : headersReverse.keySet()) {
-                Cell cell = cRow.createCell(hcIndex);
-                cell.setCellValue(filePath);
-            }
-
-            ++currentRowRead;
-
-            String alias;
-            while(cursor.hasNext()) {
-                Document doc = cursor.next();
-                cRow = sheet.createRow(currentRowRead);
-                int cInsert = 0;
-
-                for(Iterator<String> var28 = headers.keySet().iterator(); var28.hasNext(); ++cInsert) {
-                    alias = var28.next();
-                    Cell cell = cRow.createCell(cInsert);
-                    Object value = doc.get(alias);
-                    if (value instanceof String) {
-                        cell.setCellValue((String)value);
-                    } else if (value instanceof Number) {
-                        cell.setCellType(CellType.NUMERIC);
-                        cell.setCellValue(Double.parseDouble(String.valueOf(value)));
-                    }
-                }
-
-                ++currentRowRead;
-            }
-
-            exportFileId = "";
-
-            try {
-                alias = "temp";
-                File file = new File(alias);
-                if (!file.exists()) {
-                    boolean created = file.mkdirs();
-                    log.info(created ? "创建文件夹成功" : "创建文件夹失败");
-                }
-
-                String date = DataUtils.currentDate().replaceAll(":", "_");
-                String filename = "查询结果" + date + ".xlsx";
-                String filePath = file.getAbsolutePath() + File.separator + filename;
-                log.info("导出路径:" + filePath);
-                FileOutputStream fOut = new FileOutputStream(filePath);
-                wb.write(fOut);
-                fOut.close();
-                wb.close();
-                FileInputStream inputStream = new FileInputStream(filePath);
-                ObjectId objectId = this.gridFsTemplate.store(inputStream, filename);
-                inputStream.close();
-                File file1 = new File(filePath);
-                file1.delete();
-                exportFileId = objectId.toHexString();
-            } catch (IOException var25) {
-                log.info("导出文件失败");
-                var25.printStackTrace();
-            }
-
-            return exportFileId;
+    LinkedHashMap<String, String> headers = fields.getFields();
+    LinkedHashMap<String, String> headersReverse = fields.getFieldsReverse();
+    // 最大行数26万,然后分文件
+    int maxSingleRows = 262143;
+    int currentRowRead = 0;
+    int currentSheetNum = 1;
+    Workbook wb = new SXSSFWorkbook(1000); // 关键语句
+    CreationHelper createHelper = wb.getCreationHelper();
+    Sheet sheet = null; // 工作表对象
+    Row cRow = null; // 行对象
+    // 创建sheet
+    if (sheet == null) {
+      sheet = wb.createSheet("sheet" + currentSheetNum);
+    }
+    // 创建表头
+    cRow = sheet.createRow(0);
+    int hcIndex = 0;
+    for (Map.Entry<String, String> entry : headersReverse.entrySet()) {
+      String key = entry.getKey();
+      Cell cell = cRow.createCell(hcIndex);
+      cell.setCellValue(key);
+      hcIndex++;
+    }
+    currentRowRead++;
+    // 创建内容
+    Document doc;
+    while (cursor.hasNext()) {
+      doc = cursor.next();
+      cRow = sheet.createRow(currentRowRead);
+      int cInsert = 0;
+      // 遍历表头并且插入数据,默认全部为字符串
+      for (String alias : headers.keySet()) {
+        Cell cell = cRow.createCell(cInsert);
+        Object value = doc.get(alias);
+        if (value instanceof String) {
+          cell.setCellValue((String) value);
+        } else if (value instanceof Number) {
+          cell.setCellType(CellType.NUMERIC);
+          cell.setCellValue(Double.parseDouble(String.valueOf(value)));
         }
+        cInsert++;
+      }
+      currentRowRead++;
+    }
+    String filePath = null;
+    String exportFileId = "";
+    try {
+      String tempDir = rootPath;
+      // 创建文件夹防止报错
+      File file = new File(tempDir);
+      if (!file.exists()) {
+        boolean created = file.mkdirs();
+        log.info(created ? "创建文件夹成功" : "创建文件夹失败");
+      }
+      String date = DataUtils.currentDate().replaceAll(":", "_");
+      String filename = "查询结果" + date + ".xlsx";
+      if (logicalFile != null) {
+        filename = logicalFile.getFilename() + ".xlsx";
+      }
+      filePath = file.getAbsolutePath() + File.separator + filename;
+      log.info("导出路径:" + filePath);
+      FileOutputStream fOut = new FileOutputStream(filePath);
+      wb.write(fOut);
+      fOut.close();
+      wb.close();
+      FileInputStream inputStream = new FileInputStream(filePath);
+      ObjectId objectId = gridFsTemplate.store(inputStream, filename);
+      inputStream.close();
+      // 删除文件
+      File file1 = new File(filePath);
+      file1.delete();
+      exportFileId = objectId.toHexString();
+    } catch (IOException e) {
+      log.info("导出文件失败");
+      e.printStackTrace();
     }
+    return exportFileId;
+  }
 }

+ 55 - 9
src/main/java/ieven/server/webapp/domain/file/FileService.java

@@ -144,9 +144,9 @@ public class FileService {
       List<LogicalFile> resultList = this.mongoTemplate.find(query, LogicalFile.class);
       // 将文件 按照  反诈  财付通 五联单  进行分类
       List<GroupLogincalFile> groupLogincalFiles = new ArrayList<>();
-      groupLogicalFile("反诈平台数据分析", "反诈", resultList, groupLogincalFiles);
-      groupLogicalFile("支付宝数据分析", "五联单", resultList, groupLogincalFiles);
-      groupLogicalFile("财付通数据分析", "财付通", resultList, groupLogincalFiles);
+      groupLogicalFile("反诈治安数据分析", new String[] {"反诈", "治安"}, resultList, groupLogincalFiles);
+      groupLogicalFile("支付宝数据分析", new String[] {"五联单"}, resultList, groupLogincalFiles);
+      groupLogicalFile("财付通数据分析", new String[] {"财付通"}, resultList, groupLogincalFiles);
       Mapped res = Mapped.OK();
       res.put("code", 200);
       res.put("result", groupLogincalFiles);
@@ -156,22 +156,68 @@ public class FileService {
 
   public void groupLogicalFile(
       String groupName,
-      String group,
+      String[] group,
       List<LogicalFile> logicalFileList,
       List<GroupLogincalFile> groupLogincalFiles) {
-    List<LogicalFile> children =
-        logicalFileList.stream()
-            .filter(t -> t.getFilename().startsWith(group))
-            .collect(Collectors.toList());
+    List<LogicalFile> children = new ArrayList<>();
+    for (String s : group) {
+      children.addAll(
+          logicalFileList.stream()
+              .filter(t -> t.getFilename().startsWith(s))
+              .collect(Collectors.toList()));
+    }
     if (children != null && children.size() > 0) {
       GroupLogincalFile groupLogincalFile = new GroupLogincalFile();
       groupLogincalFile.setGroupName(groupName);
       groupLogincalFile.setId(IdUtil.randomUUID());
-      groupLogincalFile.setChildren(children);
+      groupLogincalFile.setChildren(orderGroupLogicalFile(groupName, children));
       groupLogincalFiles.add(groupLogincalFile);
     }
   }
 
+  String[] order1 = {"反诈数据-订单明细", "治安数据-订单明细", "反诈治安-交易明细", "反诈治安-账户透视", "反诈治安-对手透视"};
+  String[] order2 = {
+    "五联单-注册信息",
+    "五联单-登录日志",
+    "五联单-交易记录",
+    "五联单-账户明细",
+    "五联单-转账明细",
+    "五联单-转账分析",
+    "五联单-账户透视",
+    "五联单-对手透视",
+    "五联单-IP地址分析",
+    "五联单-收货地址分析"
+  };
+  String[] order3 = {"财付通-订单明细", "财付通-交易明细", "财付通-开户信息", "财付通-账户透视", "财付通-对手透视", "财付通-手机明细"};
+
+  public List<LogicalFile> orderGroupLogicalFile(String groupName, List<LogicalFile> list) {
+
+    if (groupName.equals("反诈治安数据分析")) {
+      return orderGroupLogicalFileChild(order1, list);
+    }
+    if (groupName.equals("支付宝数据分析")) {
+      return orderGroupLogicalFileChild(order2, list);
+    }
+    if (groupName.equals("财付通数据分析")) {
+      return orderGroupLogicalFileChild(order3, list);
+    }
+    return null;
+  }
+
+  public List<LogicalFile> orderGroupLogicalFileChild(String[] orders, List<LogicalFile> list) {
+    List<LogicalFile> child = new ArrayList<>();
+    for (String s : orders) {
+
+      for (LogicalFile logicalFile : list) {
+        if (logicalFile.getFilename().equals(s)) {
+          child.add(logicalFile);
+          break;
+        }
+      }
+    }
+    return child;
+  }
+
   public Mapped listUploaded(FileListInput fileListInput) {
     String modelId = fileListInput.getModelId();
     if (modelId == null) {

+ 40 - 13
src/main/java/ieven/server/webapp/service/MongoExcelService.java

@@ -25,7 +25,10 @@ public class MongoExcelService {
   }
 
   public void getRows(int sheetIndex, int curRow, List<String> valueList) {
-    if (sheetIndex == 0 && curRow == 0) {
+    if (sheetIndex == 0
+        && curRow == 0
+        && valueList.size() > 1
+        && !valueList.get(0).contains("微信支付")) {
       for (int i = 0; i < valueList.size(); i++) {
         String value = valueList.get(i);
         if (StringUtils.isNotBlank(value)) {
@@ -49,19 +52,43 @@ public class MongoExcelService {
       fields.setFields(headerTransfer);
       fields.setFieldsReverse(headerTransferReverse);
       mongoTemplate.insert(fields);
-    } else {
-      Map<String, String> data = new LinkedHashMap<>(headerDefined.size());
-      data.put("fileId", fileId);
-      for (Map.Entry<String, Integer> entry : headerDefined.entrySet()) {
-        String field = entry.getKey();
-        Integer index = entry.getValue();
-        String value = index < valueList.size() ? valueList.get(index) : "";
-        data.put(field, value);
+    } else if (sheetIndex == 0
+        && curRow == 16
+        && valueList.size() > 1
+        && valueList.get(0).equals("微信昵称")) {
+
+      for (int i = 0; i < valueList.size(); i++) {
+        String value = valueList.get(i);
+        if (StringUtils.isNotBlank(value)) {
+          // 存入数据库的字段名
+          // String aliasField = "f" + i;
+          String aliasField = value.replaceAll("\\.", "_");
+          headerDefined.put(aliasField, i);
+          headerTransfer.put(aliasField, value);
+          headerTransferReverse.put(value, aliasField);
+        }
       }
-      dataList.add(data);
-      if (dataList.size() == 1000) {
-        mongoTemplate.insert(dataList, collectionData);
-        dataList.clear();
+      Fields fields = new Fields();
+      fields.setFileId(fileId);
+      fields.setFields(headerTransfer);
+      fields.setFieldsReverse(headerTransferReverse);
+      mongoTemplate.insert(fields);
+    } else {
+      if (headerDefined.size() > 0) {
+
+        Map<String, String> data = new LinkedHashMap<>(headerDefined.size());
+        data.put("fileId", fileId);
+        for (Map.Entry<String, Integer> entry : headerDefined.entrySet()) {
+          String field = entry.getKey();
+          Integer index = entry.getValue();
+          String value = index < valueList.size() ? valueList.get(index) : "";
+          data.put(field, value);
+        }
+        dataList.add(data);
+        if (dataList.size() == 1000) {
+          mongoTemplate.insert(dataList, collectionData);
+          dataList.clear();
+        }
       }
     }
   }

+ 2 - 0
src/main/java/ieven/server/webapp/service/Ops.java

@@ -50,6 +50,7 @@ public class Ops {
     List<Fields> checked = new ArrayList<>();
     for (Fields fields : fieldsList) {
       List<String> headers = new ArrayList<>(fields.getFieldsReverse().keySet());
+      System.out.println(headers);
       // 字段完全一样就说明是需要查找的表
       if (headers.containsAll(requireHeaders) && requireHeaders.containsAll(headers)) {
         checked.add(fields);
@@ -229,6 +230,7 @@ public class Ops {
     List<Fields> matched = new ArrayList<>();
     for (Fields fields : needToMatch) {
       List<String> oriHeaders = new ArrayList<>(fields.getFieldsReverse().keySet());
+      System.out.println(oriHeaders);
       // 字段完全一样就说明是需要查找的表
       if (headers.containsAll(oriHeaders) && oriHeaders.containsAll(headers)) {
         matched.add(fields);

+ 1 - 1
src/main/java/ieven/server/webapp/service/alipay/AntiCheat.java

@@ -45,7 +45,7 @@ public class AntiCheat extends Ops implements Runnable {
     List<Fields> matched = matchHeaders(originFields, headers);
     if (CollectionUtils.isNotEmpty(matched)) {
       String newFileId =
-          createLogicAndDeleteOld("反诈数据-订单明细", modelId, outputHeaders, mongoTemplate, fileService);
+          createLogicAndDeleteOld("反诈治安-订单明细", modelId, outputHeaders, mongoTemplate, fileService);
       for (Fields fields : matched) {
         String fileId = fields.getFileId();
         MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);

+ 1 - 1
src/main/java/ieven/server/webapp/service/alipay/DeliveryAnalysis.java

@@ -81,7 +81,7 @@ public class DeliveryAnalysis extends Ops implements Runnable {
           dataMap.put("买家用户ID汇总", "");
           idToData.put(groupId, dataMap);
         }
-        String money = (String) origin.get("交易金额(元)");
+        String money = (String) origin.get("交易金额(元)");
         BigDecimal oMoney = (BigDecimal) dataMap.get("交易金额");
         oMoney = oMoney.add(new BigDecimal(money));
         dataMap.put("交易金额", oMoney);

+ 1 - 1
src/main/java/ieven/server/webapp/service/alipay/EndAnalysis.java

@@ -101,7 +101,7 @@ public class EndAnalysis extends Ops implements Runnable {
         }
         String flag = "收/支";
         String flagValue = origin.getString(flag);
-        String money = (String) origin.get("金额(元)");
+        String money = (String) origin.get("金额(元)");
         if ("收入".equals(flagValue)) {
           BigDecimal oMoney = (BigDecimal) dataMap.get("主用户ID收入金额");
           oMoney = oMoney.add(new BigDecimal(money));

+ 1 - 1
src/main/java/ieven/server/webapp/service/alipay/ScaleAnalysis.java

@@ -84,7 +84,7 @@ public class ScaleAnalysis extends Ops implements Runnable {
         }
         String flag = "收/支";
         String flagValue = origin.getString(flag);
-        String money = (String) origin.get("金额(元)");
+        String money = (String) origin.get("金额(元)");
         if ("收入".equals(flagValue)) {
           BigDecimal oMoney = (BigDecimal) dataMap.get("收入金额");
           oMoney = oMoney.add(new BigDecimal(money));

+ 1 - 1
src/main/java/ieven/server/webapp/service/alipay/TransferAnalysis.java

@@ -88,7 +88,7 @@ public class TransferAnalysis extends Ops implements Runnable {
         }
         String flag = "收/支";
         String flagValue = origin.getString(flag);
-        String money = (String) origin.get("金额(元)");
+        String money = (String) origin.get("金额(元)");
         if ("收入".equals(flagValue)) {
           BigDecimal oMoney = (BigDecimal) dataMap.get("转账收入");
           oMoney = oMoney.add(new BigDecimal(money));

+ 0 - 1
src/main/java/ieven/server/webapp/service/tenpay/TenpayMobile.java

@@ -42,7 +42,6 @@ public class TenpayMobile extends Ops implements Runnable {
     log.info("财付通-手机明细开始");
     List<String> headers = TenpayHeaders.getHeaders(4);
     // 直接删除旧表创建新表
-
     List<Fields> matched = matchHeaders(originFields, headers);
     if (CollectionUtils.isNotEmpty(matched)) {
       String newFileId =

+ 4 - 1
src/main/java/ieven/server/webapp/service/tenpay/TenpayTradesEndAnalysis.java

@@ -49,7 +49,7 @@ public class TenpayTradesEndAnalysis extends Ops implements Runnable {
     String dateFileId = getFileId("财付通-交易明细", modelId, mongoTemplate);
     // 插入记录用户后续查询明细
     MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-    if (cursor.hasNext()) {
+    if (cursor.hasNext() && StringUtils.isNotBlank(dateFileId)) {
       newFileId =
           createLogicAndDeleteOld(
               "财付通-对手透视",
@@ -102,6 +102,9 @@ public class TenpayTradesEndAnalysis extends Ops implements Runnable {
       String flag = "借贷类型";
       String flagValue = origin.getString(flag);
       String money = (String) origin.get("交易金额(元)");
+      if (StringUtils.isBlank(money)) {
+        money = "0";
+      }
       if ("入".equals(flagValue)) {
         BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
         oMoney = oMoney.add(new BigDecimal(money));

+ 401 - 388
src/main/java/ieven/server/webapp/util/excel/PublicStatic.java

@@ -1,4 +1,5 @@
 package ieven.server.webapp.util.excel;
+
 import org.apache.commons.lang3.StringUtils;
 
 import java.text.DecimalFormat;
@@ -9,434 +10,446 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 public class PublicStatic {
-    public static String PASSWORD = "42343243$wer1";
+  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 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))));
+  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])));
         }
-        return b.toString();
+      }
+    }
+    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<String, String> AML = new HashMap<String, String>() {
+  public static String patternCompile = matcherString();
+  // 反洗钱
+  public static Map<String, String> AML =
+      new HashMap<String, String>() {
         {
-            put("美元金额", "外币交易额(折合美元)");
-            put("人民币金额", "交易金额");
-            put("货币名称", "交易币种");
-//            put("付款方网点代码","交易网点名称");
-            put("代办人名称", "经办人姓名");
-            put("代办人证件号码", "经办人证件号码");
-            put("用途", "资金用途");
-//            put("交易卡号", "用途 ");
-            put("付款方账号", "交易账号");
-            put("付款方名称", "交易户名");
-            put("付款方证件号码", "交易证件号码");
-            put("付款方银行", "开户网点");
+          put("美元金额", "外币交易额(折合美元)");
+          put("人民币金额", "交易金额");
+          put("货币名称", "交易币种");
+          //            put("付款方网点代码","交易网点名称");
+          put("代办人名称", "经办人姓名");
+          put("代办人证件号码", "经办人证件号码");
+          put("用途", "资金用途");
+          //            put("交易卡号", "用途 ");
+          put("付款方账号", "交易账号");
+          put("付款方名称", "交易户名");
+          put("付款方证件号码", "交易证件号码");
+          put("付款方银行", "开户网点");
 
-            put("收款方账号", "对手账号");
-            put("收款方名称", "对手户名");
-            put("收款方证件号码", "对手身份证号");
-            put("收款方银行", "对手开户银行");
+          put("收款方账号", "对手账号");
+          put("收款方名称", "对手户名");
+          put("收款方证件号码", "对手身份证号");
+          put("收款方银行", "对手开户银行");
         }
-    };
-    public static Map<Integer, String> IDLABELMAP = new HashMap<Integer, String>() {
+      };
+  public static Map<Integer, String> IDLABELMAP =
+      new HashMap<Integer, String>() {
         {
-            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");
+          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<String, Integer> LABELIDMAP = new HashMap<String, Integer>() {
+      };
+  public static Map<String, Integer> LABELIDMAP =
+      new HashMap<String, Integer>() {
         {
-            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);
+          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<Integer, String> jurisdiction = new HashMap<Integer, String>() {
+  public static Map<Integer, String> jurisdiction =
+      new HashMap<Integer, String>() {
         {
-            put(1, "公开");
-            put(2, "私密");
-            put(3, "共享");
+          put(1, "公开");
+          put(2, "私密");
+          put(3, "共享");
         }
-    };
-    //0表示其他 1表示第三方,2表示现金,3表示理财,4表示有收有付,5只收不付,6表示只付不收'
+      };
+  // 0表示其他 1表示第三方,2表示现金,3表示理财,4表示有收有付,5只收不付,6表示只付不收'
 
-    public static Map<Integer, String> transactionType = new HashMap<Integer, String>() {
+  public static Map<Integer, String> transactionType =
+      new HashMap<Integer, String>() {
         {
-            put(0, "其他");
-            put(1, "第三方");
-            put(2, "现金");
-            put(3, "理财");
-            put(4, "有收有付");
-            put(5, "只收不付");
-            put(6, "只付不收");
+          put(0, "其他");
+          put(1, "第三方");
+          put(2, "现金");
+          put(3, "理财");
+          put(4, "有收有付");
+          put(5, "只收不付");
+          put(6, "只付不收");
         }
-    };
+      };
 
-    public static Map<Integer, String> status = new HashMap<Integer, String>() {
+  public static Map<Integer, String> status =
+      new HashMap<Integer, String>() {
         {
-            put(1, "在侦");
-            put(2, "完结");
+          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;
+  /**
+   * 去除字符串中所包含的空格(包括:空格(全角,半角)、制表符、换页符等)
+   *
+   * @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 percent(double y, double z) {
+    if (z < y) {
+      double baiy = y;
+      y = z;
+      z = baiy;
     }
-
-    /**
-     * 只保留数字,字母,中文与空格以及常用可见字符
-     */
-    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("");
+    //        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 removeAllSpace(String s) {
-        return StringUtils.deleteWhitespace(s);
-    }
+  /** 只保留数字,字母,中文与空格以及常用可见字符 */
+  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 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 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;
+  }
 
-    /**
-     * 包含数字
-     *
-     * @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 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;
+  /**
+   * 包含数字,字母
+   *
+   * @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;
+  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
+  // 转全角的函数(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);
+  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);
+  // 转半角的函数(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 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;
+    }
+  }
 }
-
-