123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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 TenpayMobile extends Ops implements Runnable {
- List<Fields> originFields;
- String modelId;
- MongoTemplate mongoTemplate;
- FileService fileService;
- CountDownLatch latch;
- public TenpayMobile(
- 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(4);
- // 直接删除旧表创建新表
- List<Fields> matched = matchHeaders(originFields, headers);
- if (CollectionUtils.isNotEmpty(matched)) {
- String 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);
- 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("财付通-手机明细结束");
- }
- }
|