tom.xu@informa.com 2 éve
szülő
commit
71c591fd62

+ 30 - 1
src/main/java/ieven/server/webapp/domain/file/FileService.java

@@ -107,11 +107,40 @@ public class FileService {
             mongoExcelService = new MongoExcelService(this.mongoTemplate, uploaded.getId());
             CSVParser csvParser = CSVFormat.EXCEL.parse(new InputStreamReader(inputStream, "gbk"));
             int curRow = 0;
+            int curRowWxFile = 0;
+            boolean wxFile = false;
+            String nickname = ""; // 微信手机账单文件  添加一列 微信昵称  需要单独处理
             for (CSVRecord record : csvParser) {
+              List<String> strings = record.toList();
+              /*************      此处内容一下均为处理微信账单表头             ****************/
+              if (strings.size() == 1 && strings.get(0).equals("微信支付账单明细")) {
+                wxFile = true;
+              }
+              if (wxFile && curRowWxFile < 16) {
+                if (curRowWxFile == 1) {
+                  String temp = strings.get(0);
+                  if (StringUtils.isNotBlank(temp)) {
+                    nickname = temp.replace("微信昵称:[", "").replace("]", "");
+                  }
+                }
+                curRowWxFile++;
+                continue;
+              }
+              if (wxFile && curRowWxFile == 16) {
+                strings.add(0, "微信昵称");
+                curRowWxFile++;
+              }
+              if (wxFile && curRowWxFile > 16) {
+                strings.add(0, nickname);
+                curRowWxFile++;
+              }
+              /*************      此处内容以上均为处理微信账单表头             ****************/
               mongoExcelService.getRows(
                   0,
                   curRow,
-                  record.stream().map(PublicStatic::removeAllSpecial).collect(Collectors.toList()));
+                  strings.stream()
+                      .map(PublicStatic::removeAllSpecial)
+                      .collect(Collectors.toList()));
               curRow++;
             }
             mongoExcelService.insertRest();

+ 25 - 0
src/main/java/ieven/server/webapp/domain/tenpay/TenpayHeaders.java

@@ -55,6 +55,31 @@ public class TenpayHeaders {
         Arrays.asList(
             "微信昵称", "交易时间", "交易类型", "交易对方", "商品", "收/支", "金额(元)", "支付方式", "当前状态", "交易单号", "商户单号",
             "备注"));
+    mappedHeaders.put(
+        5,
+        Arrays.asList(
+            "用户ID",
+            "交易单号",
+            "借贷类型",
+            "交易业务类型",
+            "交易用途类型",
+            "交易时间",
+            "交易金额(分)",
+            "账户余额(分)",
+            "用户银行卡号",
+            "用户侧网银联单号",
+            "网联/银联",
+            "第三方账户名称",
+            "对手方ID",
+            "对手方银行卡号",
+            "对手侧网银联单号",
+            "网联/银联",
+            "第三方账户名称",
+            "对手方接收时间",
+            "对手方接收金额(分)",
+            "备注1",
+            "备注2"));
+
     mappedNames.put(1, "财付通-订单明细");
   }
 }

+ 1 - 27
src/main/java/ieven/server/webapp/service/MongoExcelService.java

@@ -32,10 +32,7 @@ public class MongoExcelService {
   }
 
   public void getRows(int sheetIndex, int curRow, List<String> valueList) {
-    if (sheetIndex == 0
-        && curRow == 0
-        && valueList.size() > 1
-        && !valueList.get(0).contains("微信支付")) {
+    if (sheetIndex == 0 && curRow == 0) {
       for (int i = 0; i < valueList.size(); i++) {
         String value = valueList.get(i);
         if (StringUtils.isNotBlank(value)) {
@@ -61,29 +58,6 @@ public class MongoExcelService {
       fields.setFields(headerTransfer);
       fields.setFieldsReverse(headerTransferReverse);
       mongoTemplate.insert(fields);
-    } 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("\\.", "_");
-          aliasField = aliasField.replace("(", "(");
-          aliasField = aliasField.replace(")", ")");
-          headerDefined.put(aliasField, i);
-          headerTransfer.put(aliasField, StringUtils.trimToEmpty(value));
-          headerTransferReverse.put(StringUtils.trimToEmpty(value), aliasField);
-        }
-      }
-      Fields fields = new Fields();
-      fields.setFileId(fileId);
-      fields.setFields(headerTransfer);
-      fields.setFieldsReverse(headerTransferReverse);
-      mongoTemplate.insert(fields);
     } else {
       if (headerDefined.size() > 0 && curRow > 0) {
         Map<String, String> data = new LinkedHashMap<>(headerDefined.size());

+ 59 - 4
src/main/java/ieven/server/webapp/service/tenpay/TenpayOrders.java

@@ -42,13 +42,12 @@ public class TenpayOrders extends Ops implements Runnable {
   @Override
   public void run() {
     log.info("财付通-订单明细开始");
-    List<String> headers = TenpayHeaders.getHeaders(1);
-    // 直接删除旧表创建新表
 
+    List<String> headers = TenpayHeaders.getHeaders(1);
     List<Fields> matched = matchHeaders(originFields, headers);
+    String newFileId = "";
     if (CollectionUtils.isNotEmpty(matched)) {
-      String newFileId =
-          createLogicAndDeleteOld("财付通-订单明细", modelId, headers, mongoTemplate, fileService);
+      newFileId = createLogicAndDeleteOld("财付通-订单明细", modelId, headers, mongoTemplate, fileService);
       for (Fields fields : matched) {
         String fileId = fields.getFileId();
         MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
@@ -79,6 +78,62 @@ public class TenpayOrders extends Ops implements Runnable {
         }
       }
     }
+    headers = TenpayHeaders.getHeaders(5);
+    matched = matchHeaders(originFields, headers);
+
+    // 以下为处理另一种格式的财付通数据
+    if (CollectionUtils.isNotEmpty(matched)) {
+      if (StringUtils.isBlank(newFileId)) {
+        newFileId =
+            createLogicAndDeleteOld("财付通-订单明细", modelId, headers, mongoTemplate, fileService);
+      }
+      for (Fields fields : matched) {
+        String fileId = fields.getFileId();
+        MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
+        Document originDoc;
+        List<DataMap> needToSave = new ArrayList<>(1000);
+        while (cursor.hasNext()) {
+          originDoc = cursor.next();
+          // 拷贝到新的
+          // 用户ID 交易单号 借贷类型 交易类型 交易金额(分) 账户余额(分) 交易时间 银行类型 交易说明 商户名称 发送方 发送金额(分) 接收方 接收时间 接收金额(分)
+          // 银行卡号 网银联单号1 网银联单号2
+          // DataMap newDoc = initWithOrigin(originDoc, newFileId);
+          DataMap newDoc = new DataMap();
+          newDoc.put("fileId", newFileId);
+          newDoc.put("用户ID", originDoc.getString("用户ID"));
+          newDoc.put("交易单号", originDoc.getString("交易单号"));
+          String f1 = originDoc.getString("借贷类型");
+          newDoc.put("借贷类型", originDoc.getString("借贷类型"));
+          newDoc.put("交易类型", originDoc.getString("交易业务类型"));
+          newDoc.put("交易金额(分)", originDoc.getString("交易金额(分)"));
+          newDoc.put("账户余额(分)", originDoc.getString("账户余额(分)"));
+          newDoc.put("交易时间", originDoc.getString("交易时间"));
+          newDoc.put("银行类型", originDoc.getString("交易用途类型"));
+          newDoc.put("交易说明", newFileId);
+          newDoc.put("商户名称", newFileId);
+          newDoc.put("发送方", originDoc.getString("用户ID"));
+          if (f1.equals("出")) {
+            newDoc.put("发送金额(分)", originDoc.getString("交易金额(分)"));
+            newDoc.put("银行卡号", originDoc.getString("用户银行卡号"));
+          }
+          newDoc.put("接收方", originDoc.getString("对手方ID"));
+          if (f1.equals("入")) {
+            newDoc.put("接收金额(分)", originDoc.getString("交易金额(分)"));
+            newDoc.put("银行卡号", originDoc.getString("对手方银行卡号"));
+          }
+          newDoc.put("网银联单号1", originDoc.getString("备注1"));
+          newDoc.put("网银联单号2", originDoc.getString("备注2"));
+          needToSave.add(newDoc);
+          if (needToSave.size() >= 1000) {
+            saveLines(new ArrayList<>(needToSave), mongoTemplate);
+            needToSave.clear();
+          }
+        }
+        if (CollectionUtils.isNotEmpty(needToSave)) {
+          saveLines(needToSave, mongoTemplate);
+        }
+      }
+    }
     latch.countDown();
     log.info("财付通-订单明细结束");
   }

+ 1 - 1
src/main/resources/static/index.html

@@ -1 +1 @@
-<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"><meta http-equiv=X-UA-Compatible content="IE=edge"><title>追迹者-三方支付数据分析</title><link href=/static/css/app.cebd9798414b29c56244a88705a4294b.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.3d8feedd4eede4a5ed56.js></script><script type=text/javascript src=/static/js/vendor.4a30d08b867d4749cfcc.js></script><script type=text/javascript src=/static/js/app.afd967708c4346a9dad8.js></script></body></html>
+<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"><meta http-equiv=X-UA-Compatible content="IE=edge"><title>追迹者-三方支付数据分析</title><link href=/static/css/app.cebd9798414b29c56244a88705a4294b.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=/static/js/manifest.b2286840eeb80b23fe91.js></script><script type=text/javascript src=/static/js/vendor.4a30d08b867d4749cfcc.js></script><script type=text/javascript src=/static/js/app.afd967708c4346a9dad8.js></script></body></html>

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
src/main/resources/static/static/js/1.6df3a9406280b8384aa8.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
src/main/resources/static/static/js/1.b5b27eccfd2cb15e6c90.js


+ 1 - 1
src/main/resources/static/static/js/manifest.3d8feedd4eede4a5ed56.js → src/main/resources/static/static/js/manifest.b2286840eeb80b23fe91.js

@@ -1 +1 @@
-!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var i,u,d,f=0,s=[];f<t.length;f++)u=t[f],o[u]&&s.push(o[u][0]),o[u]=0;for(i in c)Object.prototype.hasOwnProperty.call(c,i)&&(e[i]=c[i]);for(r&&r(t,c,a);s.length;)s.shift()();if(a)for(f=0;f<a.length;f++)d=n(n.s=a[f]);return d};var t={},o={11:0};n.e=function(e){function r(){i.onerror=i.onload=null,clearTimeout(u);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var c=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=c;var a=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.charset="utf-8",i.async=!0,i.timeout=12e4,n.nc&&i.setAttribute("nonce",n.nc),i.src=n.p+"static/js/"+({0:"vendor-async"}[e]||e)+"."+{0:"72eb6ae5680eb2d7387d",1:"b5b27eccfd2cb15e6c90",2:"ad7a761451943786529d",3:"2b271404d8cdc5a728d5",4:"01906a9753e03c925c75",5:"20c1acbcca06578459c6",6:"8affe04057bd90e7eb81",7:"33e0cd2b00cdded0a5a7",8:"4dd322f4e22f0f584df6"}[e]+".js";var u=setTimeout(r,12e4);return i.onerror=i.onload=r,a.appendChild(i),c},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="/",n.oe=function(e){throw console.error(e),e}}([]);
+!function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,a,c){for(var i,u,d,f=0,s=[];f<t.length;f++)u=t[f],o[u]&&s.push(o[u][0]),o[u]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);for(r&&r(t,a,c);s.length;)s.shift()();if(c)for(f=0;f<c.length;f++)d=n(n.s=c[f]);return d};var t={},o={11:0};n.e=function(e){function r(){i.onerror=i.onload=null,clearTimeout(u);var n=o[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),o[e]=void 0)}var t=o[e];if(0===t)return new Promise(function(e){e()});if(t)return t[2];var a=new Promise(function(n,r){t=o[e]=[n,r]});t[2]=a;var c=document.getElementsByTagName("head")[0],i=document.createElement("script");i.type="text/javascript",i.charset="utf-8",i.async=!0,i.timeout=12e4,n.nc&&i.setAttribute("nonce",n.nc),i.src=n.p+"static/js/"+({0:"vendor-async"}[e]||e)+"."+{0:"72eb6ae5680eb2d7387d",1:"6df3a9406280b8384aa8",2:"ad7a761451943786529d",3:"2b271404d8cdc5a728d5",4:"01906a9753e03c925c75",5:"20c1acbcca06578459c6",6:"8affe04057bd90e7eb81",7:"33e0cd2b00cdded0a5a7",8:"4dd322f4e22f0f584df6"}[e]+".js";var u=setTimeout(r,12e4);return i.onerror=i.onload=r,c.appendChild(i),a},n.m=e,n.c=t,n.d=function(e,r,t){n.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:t})},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="/",n.oe=function(e){throw console.error(e),e}}([]);

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott