tom.xu@informa.com před 1 rokem
rodič
revize
1798bdc39a

+ 1 - 3
src/main/java/ieven/server/webapp/api/AlipayController.java

@@ -105,9 +105,7 @@ public class AlipayController {
                 return Mapped.ERROR("未发现明细!");
             } else {
                 String fromFileId = oldFile.getFromFileId();
-                Fields fields =
-                        this.mongoTemplate.findOne(
-                                new Query(Criteria.where("fileId").is(fromFileId)), Fields.class);
+                Fields fields = this.mongoTemplate.findOne( new Query(Criteria.where("fileId").is(fromFileId)), Fields.class);
                 Mapped mapped = Mapped.OK();
                 mapped.put("result", fields);
                 return mapped;

+ 4 - 3
src/main/java/ieven/server/webapp/domain/tenpay/TenpayHeaders.java

@@ -11,8 +11,7 @@ public class TenpayHeaders {
 
     static {
         mappedHeaders.put(1, Arrays.asList(
-                "用户ID", "交易单号", "借贷类型", "交易类型", "交易金额(分)", "账户余额(分)", "交易时间", "银行类型", "交易说明", "商户名称",
-                "发送方", "发送金额(分)", "接收方", "接收时间", "接收金额(分)", "银行卡号", "网银联单号1", "网银联单号2"));
+                "用户ID", "交易单号", "借贷类型", "交易类型", "交易金额(分)", "账户余额(分)", "交易时间", "银行类型", "交易说明", "商户名称", "发送方", "发送金额(分)", "接收方", "接收时间", "接收金额(分)", "银行卡号", "网银联单号1", "网银联单号2"));
 
         mappedHeaders.put(2, Arrays.asList(
                 "用户ID",
@@ -64,7 +63,9 @@ public class TenpayHeaders {
         mappedHeaders.put(7, Arrays.asList(
                 "用户ID", "交易单号", "大单号", "用户侧账号名称", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "用户银行卡号", "用户侧银行名称", "用户侧网银联单号", "网联/银联", "第三方账户名称", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号", "网联/银联", "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "备注1"
         ));
-
+        mappedHeaders.put(8, Arrays.asList(
+                "用户ID", "交易单号", "大单号", "用户侧账号名称", "借贷类型", "交易业务类型", "交易用途类型", "交易时间", "交易金额(分)", "账户余额(分)", "用户银行卡号", "用户侧银行名称", "用户侧网银联单号", "网联/银联", "第三方账户名称", "对手方ID", "对手侧账户名称", "对手方银行卡号", "对手侧银行名称", "对手侧网银联单号", "网联/银联", "第三方账户名称", "对手方接收时间", "对手方接收金额(分)", "备注1","备注2"
+        ));
         mappedNames.put(1, "财付通-订单明细");
 
 

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

@@ -67,6 +67,8 @@ public class FieldsService extends Ops {
     this.updateLogicalFile(fields, "财付通-订单明细");
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(7));
     this.updateLogicalFile(fields, "财付通-订单明细");
+    fields = matchHeaders(originFields, TenpayHeaders.getHeaders(8));
+    this.updateLogicalFile(fields, "财付通-订单明细");
     // 财付通-手机明细
     fields = matchHeaders(originFields, TenpayHeaders.getHeaders(4));
     this.updateLogicalFile(fields, "财付通-手机明细");

+ 8 - 6
src/main/java/ieven/server/webapp/service/alipay/AlipayService.java

@@ -156,19 +156,21 @@ public class AlipayService {
         exec.execute(new TenpayOrders(originFields, modelId, mongoTemplate, fileService, latch6));
         latch6.await();
         log.info("latch6");
-        log.info("latch7");
-        CountDownLatch latch9 = new CountDownLatch(1);
-        // 财付通-交易明细
-        exec.execute(new TenpayTrades(modelId, mongoTemplate, accountToName, fileService, latch9));
-        latch9.await();
 
         log.info("latch8");
         CountDownLatch latch8 = new CountDownLatch(1);
         // 财付通-订单明细
-        exec.execute(new TenpayTrades0422(originFields,modelId, mongoTemplate, accountToName, fileService, latch8));
+        exec.execute(new TenpayOrders0422(originFields, modelId, mongoTemplate, fileService, latch8));
         latch8.await();
         log.info("latch8");
 
+
+        log.info("latch7");
+        CountDownLatch latch9 = new CountDownLatch(1);
+        // 财付通-交易明细
+        exec.execute(new TenpayTrades(modelId, mongoTemplate, accountToName, fileService, latch9));
+        latch9.await();
+
         CountDownLatch latch7 = new CountDownLatch(3);
         // 财付通-手机明细
         exec.execute(new TenpayMobile(originFields, modelId, mongoTemplate, fileService, latch7));

+ 112 - 0
src/main/java/ieven/server/webapp/service/tenpay/TenpayOrders0422.java

@@ -0,0 +1,112 @@
+package ieven.server.webapp.service.tenpay;
+
+import com.mongodb.client.MongoCursor;
+import ieven.server.webapp.domain.data.DataMap;
+import ieven.server.webapp.domain.data.Fields;
+import ieven.server.webapp.domain.file.FileService;
+import ieven.server.webapp.domain.tenpay.TenpayHeaders;
+import ieven.server.webapp.service.Ops;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.bson.Document;
+import org.springframework.data.mongodb.core.MongoTemplate;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+
+@Slf4j
+public class TenpayOrders0422 extends Ops implements Runnable {
+
+    List<Fields> originFields;
+    String modelId;
+    MongoTemplate mongoTemplate;
+    FileService fileService;
+
+    CountDownLatch latch;
+
+    public TenpayOrders0422(
+            List<Fields> originFields,
+            String modelId,
+            MongoTemplate mongoTemplate,
+            FileService fileService,
+            CountDownLatch latch) {
+        this.originFields = originFields;
+        this.modelId = modelId;
+        this.mongoTemplate = mongoTemplate;
+        this.fileService = fileService;
+        this.latch = latch;
+    }
+
+    @Override
+    public void run() {
+        log.info("财付通-订单明细开始");
+
+        List<String> headers = TenpayHeaders.getHeaders(7);
+        for (Fields originField : originFields) {
+            for (String key : originField.getFields().keySet()) {
+                String value = originField.getFields().get(key);
+                if (value.contains("备注2")) {
+                    headers = TenpayHeaders.getHeaders(8);
+                    break;
+                }
+            }
+        }
+        List<Fields> matched = matchHeaders(originFields, headers);
+        // 以下为处理另一种格式的财付通数据
+        if (CollectionUtils.isNotEmpty(matched)) {
+            String newFileId = createLogicAndDeleteOld("财付通-订单明细", modelId, TenpayHeaders.getHeaders(6), 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("交易说明", originDoc.getString("备注1") + originDoc.getString("备注2"));
+                    if (f1.equals("出")) {
+                        newDoc.put("发送金额(分)", originDoc.getString("交易金额(元)"));
+                        newDoc.put("银行卡号", originDoc.getString("用户银行卡号"));
+                        newDoc.put("发送方", originDoc.getString("用户ID"));
+                        newDoc.put("接收方", originDoc.getString("对手方ID"));
+                        newDoc.put("对手银行卡号", originDoc.getString("对手方银行卡号"));
+                    }
+                    if (f1.equals("入")) {
+                        newDoc.put("接收金额(分)", originDoc.getString("交易金额(元)"));
+                        newDoc.put("银行卡号", originDoc.getString("对手方银行卡号"));
+                        newDoc.put("发送方", originDoc.getString("对手方ID"));
+                        newDoc.put("接收方", originDoc.getString("用户ID"));
+                        newDoc.put("对手银行卡号", originDoc.getString("用户银行卡号"));
+                    }
+                    newDoc.put("网银联单号1", originDoc.getString("用户侧网银联单号"));
+                    newDoc.put("网银联单号2", originDoc.getString("对手侧网银联单号"));
+                    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("财付通-订单明细结束");
+    }
+}

+ 2 - 8
src/main/java/ieven/server/webapp/service/tenpay/TenpayTrades.java

@@ -86,18 +86,12 @@ public class TenpayTrades extends Ops implements Runnable {
                     }
                     dataMap.put("交易主体银行卡号", origin.getString("对手银行卡号"));
                     dataMap.put("交易主体银行名称", "");
-                    dataMap.put(
-                            "交易主体户名",
-                            accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("接收方")), ""));
-
+                    dataMap.put("交易主体户名", accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("接收方")), ""));
                     dataMap.put("交易对手账号", StringUtils.trimToEmpty(origin.getString("发送方")));
                     dataMap.put("交易对手银行卡号", origin.getString("银行卡号"));
                     dataMap.put("交易对手银行名称", "");
-                    dataMap.put(
-                            "交易对手户名",
-                            accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("发送方")), ""));
+                    dataMap.put("交易对手户名", accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("发送方")), ""));
                 }
-
                 dataMap.put("借贷类型", flag);
                 dataMap.put("交易类型", origin.getString("交易类型"));
                 dataMap.put("交易时间", origin.getString("交易时间"));

+ 0 - 183
src/main/java/ieven/server/webapp/service/tenpay/TenpayTrades0422.java

@@ -1,183 +0,0 @@
-package ieven.server.webapp.service.tenpay;
-
-import cn.hutool.core.util.NumberUtil;
-import com.mongodb.client.MongoCursor;
-import ieven.server.webapp.domain.data.DataMap;
-import ieven.server.webapp.domain.data.Fields;
-import ieven.server.webapp.domain.file.FileService;
-import ieven.server.webapp.domain.tenpay.TenpayHeaders;
-import ieven.server.webapp.service.Ops;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.bson.Document;
-import org.springframework.data.mongodb.core.MongoTemplate;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-
-@Slf4j
-public class TenpayTrades0422 extends Ops implements Runnable {
-    MongoTemplate mongoTemplate;
-    String modelId;
-
-    Map<String, String> accountToName;
-    FileService fileService;
-
-    CountDownLatch latch;
-    List<Fields> originFields;
-
-
-    public TenpayTrades0422(
-            List<Fields> originFields,
-            String modelId,
-            MongoTemplate mongoTemplate,
-            Map<String, String> accountToName,
-            FileService fileService,
-            CountDownLatch latch) {
-        this.accountToName = accountToName;
-        this.modelId = modelId;
-        this.mongoTemplate = mongoTemplate;
-        this.fileService = fileService;
-        this.latch = latch;
-        this.originFields = originFields;
-    }
-
-    @Override
-    public void run() {
-        log.info("财付通-交易明细开始");
-        String antiSecurityFileId = "";
-
-        List<String> headers = TenpayHeaders.getHeaders(7);
-        List<Fields> matched = matchHeaders(originFields, headers);
-        String newFileId = "";
-        if (CollectionUtils.isNotEmpty(matched)) {
-            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();
-                    // 拷贝到新的
-                    DataMap newDoc = initWithOrigin(originDoc, newFileId);
-                    String s = (String) newDoc.get("用户ID");
-                    if (StringUtils.isNotBlank(s) && s.contains("[")) {
-                        s = s.replace("[", "").replace("]", "");
-                        newDoc.put("用户ID", s);
-                    }
-                    String s2 = (String) newDoc.get("交易单号");
-                    if (StringUtils.isNotBlank(s2) && s2.contains("[")) {
-                        s2 = s2.replace("[", "").replace("]", "");
-                        newDoc.put("交易单号", s2);
-                    }
-                    needToSave.add(newDoc);
-                    if (needToSave.size() >= 1000) {
-                        saveLines(new ArrayList<>(needToSave), mongoTemplate);
-                        needToSave.clear();
-                    }
-                }
-                if (CollectionUtils.isNotEmpty(needToSave)) {
-                    saveLines(needToSave, mongoTemplate);
-                }
-            }
-        }
-        String dateFileId = getLogicalFileId("财付通-订单明细", modelId, mongoTemplate);
-        // 遍历登录日志全表
-        if (StringUtils.isNotBlank(dateFileId)) {
-            MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
-            if (cursor.hasNext()) {
-                antiSecurityFileId = createLogicAndDeleteOld("财付通-交易明细", modelId, TenpayHeaders.getHeaders(7), mongoTemplate, fileService);
-            }
-            Document origin;
-            List<DataMap> needToSave = new ArrayList<>(1000);
-            while (cursor.hasNext()) {
-                origin = cursor.next();
-                DataMap dataMap = new DataMap();
-                dataMap.put("fileId", antiSecurityFileId);
-                String userId = origin.getString("用户ID").replace("[", "").replace("]", "");
-                dataMap.put("用户ID", userId);
-                String lognumber = origin.getString("交易单号");
-                if (StringUtils.isBlank(lognumber)) {
-                    continue;
-                }
-                dataMap.put("交易单号", lognumber.replace("[", "").replace("]", ""));
-                String flag = origin.getString("借贷类型");
-                if ("出".equals(flag)) {
-                    dataMap.put("交易主体账号", origin.getString("用户ID"));
-                    dataMap.put("交易主体银行卡号", origin.getString("用户银行卡号"));
-                    dataMap.put("交易主体银行名称", origin.getString("用户侧银行名称"));
-                    //dataMap.put("交易主体户名", accountToName.getOrDefault(origin.getString("用户银行卡号"), ""));
-                    dataMap.put("交易主体户名", origin.getString("用户侧账号名称"));
-                    dataMap.put("交易对手账号", origin.getString("对手方ID"));
-                    dataMap.put("交易对手银行卡号", origin.getString("对手方银行卡号"));
-                    dataMap.put("交易对手银行名称", origin.getString("对手侧银行名称"));
-                    //dataMap.put("交易对手户名", accountToName.getOrDefault(StringUtils.trimToEmpty(origin.getString("对手侧账户名称")), ""));
-                    dataMap.put("交易对手户名", origin.getString("对手侧账户名称"));
-                }
-                if ("入".equals(flag)) {
-                    dataMap.put("交易主体账号", StringUtils.trimToEmpty(origin.getString("对手方ID")));
-                    dataMap.put("交易主体银行卡号", origin.getString("对手方银行卡号"));
-                    dataMap.put("交易主体银行名称", origin.getString("对手侧银行名称"));
-                    dataMap.put("交易主体户名", origin.getString("对手侧账户名称"));
-                    dataMap.put("交易对手账号", StringUtils.trimToEmpty(origin.getString("用户ID")));
-                    dataMap.put("交易对手银行卡号", origin.getString("用户银行卡号"));
-                    dataMap.put("交易对手银行名称", origin.getString("用户侧银行名称"));
-                    dataMap.put("交易对手户名",  origin.getString("用户侧账号名称"));
-                }
-                dataMap.put("借贷类型", flag);
-                dataMap.put("交易类型", origin.getString("交易用途类型"));
-                dataMap.put("交易时间", origin.getString("交易时间"));
-                String string5 = origin.getString("交易金额(分)");
-                if (!NumberUtil.isNumber(string5)) {
-                    continue;
-                }
-                dataMap.put("交易金额(元)", NumberUtil.roundStr(NumberUtil.div(string5 == null ? "0" : string5, "100").doubleValue(), 2));
-                String string6 = origin.getString("账户余额(分)");
-                if (!NumberUtil.isNumber(string6)) {
-                    continue;
-                }
-                dataMap.put("账户余额(元)", NumberUtil.roundStr(NumberUtil.div(string6 == null ? "0" : string6, "100").doubleValue(), 2));
-                dataMap.put("银行类型", origin.getString("交易业务类型"));
-                dataMap.put("交易说明", origin.getString("备注1"));
-                dataMap.put("网银联单号1", origin.getString("用户侧网银联单号"));
-                dataMap.put("网银联单号2", origin.getString("对手侧网银联单号"));
-                dataMap.put("交易主体第三方账号名", origin.getString("第三方账户名称"));
-                dataMap.put("对手第三方账号名", origin.getString("第三方账户名称"));
-                if ("".equals(dataMap.get("交易主体户名"))) {
-                    String account = (String) dataMap.getOrDefault("交易主体账号", "");
-                    if (StringUtils.isBlank(account) || "-".equals(account)) {
-                    } else {
-                        String newName = accountToName.getOrDefault(account, "");
-                        if (StringUtils.isNotBlank(newName)) {
-                            dataMap.put("交易主体户名", newName);
-                        }
-                    }
-                }
-                if ("".equals(dataMap.get("交易对手户名"))) {
-                    String account = (String) dataMap.getOrDefault("交易对手账号", "");
-                    if (StringUtils.isBlank(account) || "-".equals(account)) {
-                    } else {
-                        String newName = accountToName.getOrDefault(account, "");
-                        if (StringUtils.isNotBlank(newName)) {
-                            dataMap.put("交易对手户名", newName);
-                        }
-                    }
-                }
-                needToSave.add(dataMap);
-                if (needToSave.size() >= 1000) {
-                    saveLines(new ArrayList<>(needToSave), mongoTemplate);
-                    needToSave.clear();
-                }
-            }
-            if (CollectionUtils.isNotEmpty(needToSave)) {
-                saveLines(needToSave, mongoTemplate);
-            }
-        }
-        this.latch.countDown();
-        log.info("财付通-交易明细结束");
-    }
-}