TenpayAccount.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package ieven.server.webapp.service.tenpay;
  2. import com.mongodb.client.MongoCursor;
  3. import ieven.server.webapp.domain.data.DataMap;
  4. import ieven.server.webapp.domain.data.Fields;
  5. import ieven.server.webapp.domain.file.FileService;
  6. import ieven.server.webapp.domain.tenpay.TenpayHeaders;
  7. import ieven.server.webapp.service.Ops;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.apache.commons.collections4.CollectionUtils;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.bson.Document;
  12. import org.springframework.data.mongodb.core.MongoTemplate;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. import java.util.Map;
  16. import java.util.concurrent.CountDownLatch;
  17. @Slf4j
  18. public class TenpayAccount extends Ops implements Runnable {
  19. List<Fields> originFields;
  20. String modelId;
  21. MongoTemplate mongoTemplate;
  22. FileService fileService;
  23. Map<String, String> accountToName;
  24. CountDownLatch latch;
  25. public TenpayAccount(
  26. List<Fields> originFields,
  27. String modelId,
  28. MongoTemplate mongoTemplate,
  29. FileService fileService,
  30. Map<String, String> accountToName,
  31. CountDownLatch latch) {
  32. this.originFields = originFields;
  33. this.modelId = modelId;
  34. this.mongoTemplate = mongoTemplate;
  35. this.fileService = fileService;
  36. this.accountToName = accountToName;
  37. this.latch = latch;
  38. }
  39. @Override
  40. public void run() {
  41. log.info("财付通-开户信息开始");
  42. List<String> headers = TenpayHeaders.getHeaders(3);
  43. // 直接删除旧表创建新表
  44. List<Fields> matched = matchHeaders(originFields, headers);
  45. if (CollectionUtils.isNotEmpty(matched)) {
  46. String newFileId =
  47. createLogicAndDeleteOld("财付通-注册信息", modelId, headers, mongoTemplate, fileService);
  48. for (Fields fields : matched) {
  49. String fileId = fields.getFileId();
  50. MongoCursor<Document> cursor = getCursor(fileId, mongoTemplate);
  51. Document originDoc;
  52. List<DataMap> needToSave = new ArrayList<>(1000);
  53. String string1 = "";
  54. String string2 = "";
  55. String string3 = "";
  56. String string4 = "";
  57. String string5 = "";
  58. String string6 = "";
  59. while (cursor.hasNext()) {
  60. originDoc = cursor.next();
  61. // 拷贝到新的
  62. DataMap newDoc = initWithOrigin(originDoc, newFileId);
  63. deleteKey(newDoc, "FILEID");
  64. String s1 = (String) newDoc.get("账户状态");
  65. String s2 = (String) newDoc.get("账号");
  66. String s3 = (String) newDoc.get("注册姓名");
  67. String s4 = (String) newDoc.get("注册时间");
  68. String s5 = (String) newDoc.get("注册身份证号");
  69. String s6 = (String) newDoc.get("绑定手机");
  70. if (StringUtils.isNotBlank(s1) && StringUtils.isBlank(string1)) {
  71. string1 = s1;
  72. } else {
  73. newDoc.put("账户状态", string1);
  74. }
  75. if (StringUtils.isNotBlank(s2) && StringUtils.isBlank(string2)) {
  76. string2 = s2;
  77. } else {
  78. newDoc.put("账号", string2);
  79. }
  80. if (StringUtils.isNotBlank(s3) && StringUtils.isBlank(string3)) {
  81. string3 = s3;
  82. } else {
  83. newDoc.put("注册姓名", string3);
  84. }
  85. if (StringUtils.isNotBlank(s4) && StringUtils.isBlank(string4)) {
  86. string4 = s4;
  87. } else {
  88. newDoc.put("注册时间", string4);
  89. }
  90. if (StringUtils.isNotBlank(s5) && StringUtils.isBlank(string5)) {
  91. string5 = s5;
  92. } else {
  93. newDoc.put("注册身份证号", string5);
  94. }
  95. if (StringUtils.isNotBlank(s6) && StringUtils.isBlank(string6)) {
  96. string6 = s6;
  97. } else {
  98. newDoc.put("绑定手机", string6);
  99. }
  100. String name = originDoc.getString("注册姓名");
  101. String account = originDoc.getString("账号");
  102. this.accountToName.putIfAbsent(account, name);
  103. needToSave.add(newDoc);
  104. if (needToSave.size() >= 1000) {
  105. saveLines(new ArrayList<>(needToSave), mongoTemplate);
  106. needToSave.clear();
  107. }
  108. }
  109. if (CollectionUtils.isNotEmpty(needToSave)) {
  110. saveLines(needToSave, mongoTemplate);
  111. }
  112. }
  113. }
  114. latch.countDown();
  115. log.info("财付通-开户信息结束");
  116. }
  117. }