|
@@ -8,8 +8,11 @@ import ieven.server.webapp.domain.data.Fields;
|
|
|
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 org.springframework.data.mongodb.core.query.Criteria;
|
|
|
+import org.springframework.data.mongodb.core.query.Query;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
@@ -17,66 +20,104 @@ import java.util.concurrent.CountDownLatch;
|
|
|
|
|
|
@Slf4j
|
|
|
public class ALIPAY_GENERATED_TRADE extends Ops implements Runnable {
|
|
|
- List<Fields> originFields;
|
|
|
- String modelId;
|
|
|
- MongoTemplate mongoTemplate;
|
|
|
+ List<Fields> originFields;
|
|
|
+ String modelId;
|
|
|
+ MongoTemplate mongoTemplate;
|
|
|
|
|
|
- CountDownLatch latch;
|
|
|
+ CountDownLatch latch;
|
|
|
|
|
|
- public ALIPAY_GENERATED_TRADE(
|
|
|
- List<Fields> originFields,
|
|
|
- String modelId,
|
|
|
- MongoTemplate mongoTemplate,
|
|
|
- CountDownLatch latch) {
|
|
|
- this.originFields = originFields;
|
|
|
- this.modelId = modelId;
|
|
|
- this.mongoTemplate = mongoTemplate;
|
|
|
- this.latch = latch;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- // 交易记录
|
|
|
- List<Fields> tradeFieldsList = checkFields(originFields, AlipayType.ALIPAY_ORIGIN_TRADE);
|
|
|
- if (CollectionUtils.isNotEmpty(tradeFieldsList)) {
|
|
|
- Fields outputTrade = Ops.createFile(AlipayType.ALIPAY_GENERATED_TRADE, modelId);
|
|
|
- for (Fields origin : tradeFieldsList) {
|
|
|
- extractTrade(getCursor(origin.getFileId(), mongoTemplate), origin, outputTrade);
|
|
|
- }
|
|
|
+ public ALIPAY_GENERATED_TRADE(
|
|
|
+ List<Fields> originFields,
|
|
|
+ String modelId,
|
|
|
+ MongoTemplate mongoTemplate,
|
|
|
+ CountDownLatch latch) {
|
|
|
+ this.originFields = originFields;
|
|
|
+ this.modelId = modelId;
|
|
|
+ this.mongoTemplate = mongoTemplate;
|
|
|
+ this.latch = latch;
|
|
|
}
|
|
|
- latch.countDown();
|
|
|
- }
|
|
|
|
|
|
- public void extractTrade(MongoCursor<Document> cursor, Fields origin, Fields output) {
|
|
|
- Document originDoc;
|
|
|
- List<DataMap> needToSave = new ArrayList<>(1000);
|
|
|
- while (cursor.hasNext()) {
|
|
|
- // 写法1(建议)
|
|
|
- try {
|
|
|
- originDoc = cursor.next();
|
|
|
- DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
|
|
|
- // 绑定银行卡字段
|
|
|
- String v1 = Ops.getString(originDoc, origin, "买家信息");
|
|
|
- List<String> sp1 = Ops.extract_1(v1);
|
|
|
- Ops.setString(newDoc, AlipayHeaders.TRADE_8, output, sp1.size() >= 1 ? sp1.get(0) : "");
|
|
|
- Ops.setString(newDoc, AlipayHeaders.TRADE_2, output, sp1.size() >= 2 ? sp1.get(1) : "");
|
|
|
- Ops.setString(newDoc, AlipayHeaders.TRADE_3, output, sp1.size() >= 3 ? sp1.get(2) : "");
|
|
|
- String v2 = Ops.getString(originDoc, origin, "卖家信息");
|
|
|
- List<String> sp2 = Ops.extract_1(v2);
|
|
|
- Ops.setString(newDoc, AlipayHeaders.TRADE_12, output, sp2.size() >= 1 ? sp2.get(0) : "");
|
|
|
- Ops.setString(newDoc, AlipayHeaders.TRADE_5, output, sp2.size() >= 2 ? sp2.get(1) : "");
|
|
|
- Ops.setString(newDoc, AlipayHeaders.TRADE_6, output, sp2.size() >= 3 ? sp2.get(2) : "");
|
|
|
- needToSave.add(newDoc);
|
|
|
- if (needToSave.size() >= 1000) {
|
|
|
- saveLines(new ArrayList<>(needToSave), mongoTemplate);
|
|
|
- needToSave.clear();
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ // 交易记录
|
|
|
+ List<Fields> tradeFieldsList = checkFields(originFields, AlipayType.ALIPAY_ORIGIN_TRADE);
|
|
|
+ if (CollectionUtils.isNotEmpty(tradeFieldsList)) {
|
|
|
+ Fields outputTrade = Ops.createFile(AlipayType.ALIPAY_GENERATED_TRADE, modelId);
|
|
|
+ for (Fields origin : tradeFieldsList) {
|
|
|
+ extractTrade(getCursor(origin.getFileId(), mongoTemplate), origin, outputTrade);
|
|
|
+ }
|
|
|
}
|
|
|
- } catch (Exception ex) {
|
|
|
- log.error(ex.getMessage(), ex);
|
|
|
- }
|
|
|
+ latch.countDown();
|
|
|
}
|
|
|
- if (CollectionUtils.isNotEmpty(needToSave)) {
|
|
|
- saveLines(needToSave, mongoTemplate);
|
|
|
+
|
|
|
+ public void extractTrade(MongoCursor<Document> cursor, Fields origin, Fields output) {
|
|
|
+ Document originDoc;
|
|
|
+ List<DataMap> needToSave = new ArrayList<>(1000);
|
|
|
+ while (cursor.hasNext()) {
|
|
|
+ // 写法1(建议)
|
|
|
+ try {
|
|
|
+ originDoc = cursor.next();
|
|
|
+ DataMap newDoc = initWithOrigin(originDoc, output.getFileId());
|
|
|
+ // 绑定银行卡字段
|
|
|
+ String v1 = Ops.getString(originDoc, origin, "买家信息");
|
|
|
+ List<String> sp1 = Ops.extract_1(v1);
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.TRADE_8, output, sp1.size() >= 1 ? sp1.get(0) : "");
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.TRADE_2, output, sp1.size() >= 2 ? sp1.get(1) : "");
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.TRADE_3, output, sp1.size() >= 3 ? sp1.get(2) : "");
|
|
|
+ String v2 = Ops.getString(originDoc, origin, "卖家信息");
|
|
|
+ List<String> sp2 = Ops.extract_1(v2);
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.TRADE_12, output, sp2.size() >= 1 ? sp2.get(0) : "");
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.TRADE_5, output, sp2.size() >= 2 ? sp2.get(1) : "");
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.TRADE_6, output, sp2.size() >= 3 ? sp2.get(2) : "");
|
|
|
+
|
|
|
+ //获取支付宝名称
|
|
|
+ String zfbName = Ops.getString(originDoc, origin, AlipayHeaders.ACCOUNT_2);
|
|
|
+ if (StringUtils.isBlank(zfbName)) {
|
|
|
+ //去用户注册中进行数据补全
|
|
|
+ String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
|
|
|
+ List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
|
|
|
+ Criteria.where("modelId")
|
|
|
+ .is(modelId)
|
|
|
+ .and("fileId")
|
|
|
+ .is(dateFileId2)
|
|
|
+ .and(AlipayHeaders.ACCOUNT_1)
|
|
|
+ .is(zfbName)
|
|
|
+ .and("generated")
|
|
|
+ .is(Boolean.TRUE))), DataMap.class);
|
|
|
+ if(CollectionUtils.isNotEmpty(dataMaps)){
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.ACCOUNT_2, output, String.valueOf(dataMaps.get(0).get("支付宝户名")));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ String zfbNameds = Ops.getString(originDoc, origin, AlipayHeaders.ACCOUNT_3);
|
|
|
+ if (StringUtils.isBlank(zfbNameds)) {
|
|
|
+ //去用户注册中进行数据补全
|
|
|
+ String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
|
|
|
+ List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
|
|
|
+ Criteria.where("modelId")
|
|
|
+ .is(modelId)
|
|
|
+ .and("fileId")
|
|
|
+ .is(dateFileId2)
|
|
|
+ .and(AlipayHeaders.ACCOUNT_3)
|
|
|
+ .is(zfbNameds)
|
|
|
+ .and("generated")
|
|
|
+ .is(Boolean.TRUE))), DataMap.class);
|
|
|
+ if(CollectionUtils.isNotEmpty(dataMaps)){
|
|
|
+ Ops.setString(newDoc, AlipayHeaders.ACCOUNT_4, output, String.valueOf(dataMaps.get(0).get("对手支付宝户名")));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ needToSave.add(newDoc);
|
|
|
+ if (needToSave.size() >= 1000) {
|
|
|
+ saveLines(new ArrayList<>(needToSave), mongoTemplate);
|
|
|
+ needToSave.clear();
|
|
|
+ }
|
|
|
+ } catch (Exception ex) {
|
|
|
+ log.error(ex.getMessage(), ex);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(needToSave)) {
|
|
|
+ saveLines(needToSave, mongoTemplate);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
}
|