|
|
@ -93,7 +93,9 @@ import java.io.IOException; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.time.Duration; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
|
import java.util.concurrent.ExecutionException; |
|
|
|
import java.util.concurrent.Executors; |
|
|
|
import java.util.function.Function; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
import java.util.zip.ZipEntry; |
|
|
@ -271,6 +273,7 @@ public class BankServiceImpl implements BankService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@SneakyThrows |
|
|
|
@Override |
|
|
|
public List<BankStatement> getBSList(GetBSFieldValueCountReq req) { |
|
|
@ -291,10 +294,13 @@ public class BankServiceImpl implements BankService { |
|
|
|
while (true) { |
|
|
|
SearchHits hits = searchResponse.getHits(); |
|
|
|
for (SearchHit hit : hits) { |
|
|
|
JSONObject json = JSONUtil.parseObj(hit.getSourceAsString()); |
|
|
|
json.put("id", hit.getId()); |
|
|
|
dataList.add(JSONUtil.toBean(json,BankStatement.class)); |
|
|
|
threadPoolTaskExecutor.execute(() -> { |
|
|
|
JSONObject json = JSONUtil.parseObj(hit.getSourceAsString()); |
|
|
|
json.put("id", hit.getId()); |
|
|
|
dataList.add(JSONUtil.toBean(json, BankStatement.class)); |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
// 继续滚动获取下一页数据 |
|
|
|
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId); |
|
|
|
scrollRequest.scroll(TimeValue.timeValueMinutes(1L)); |
|
|
@ -1403,7 +1409,6 @@ public class BankServiceImpl implements BankService { |
|
|
|
|
|
|
|
int pageNum = req.getPageNum(); |
|
|
|
int pageSize = req.getPageSize(); |
|
|
|
|
|
|
|
SAPageInfo<BankStatement> pageInfo; |
|
|
|
if (pageNum == 1) { |
|
|
|
pageInfo = esBsMapper.searchAfterPage(wrapper, null, pageSize); |
|
|
@ -1711,7 +1716,7 @@ public class BankServiceImpl implements BankService { |
|
|
|
public void analysisFile(File file, String bankNo, String caseId, String bankName) { |
|
|
|
try { |
|
|
|
String completeKey = Constants.COMPLETE_BANK_COUNT +caseId; |
|
|
|
long start = System.currentTimeMillis(); |
|
|
|
|
|
|
|
// 导入数据 |
|
|
|
switch (bankNo) { |
|
|
|
case Constants.BANK_IMPORT_MODEL_BANK_FDB: // 富滇银行 |
|
|
@ -2187,6 +2192,99 @@ public class BankServiceImpl implements BankService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<BankStatement> getBSListByCardHolderName(GetBSFieldValueCountReq req) { |
|
|
|
LambdaEsQueryWrapper<BankStatement> queryWrapper = EsWrappers.lambdaQuery(BankStatement.class); |
|
|
|
queryWrapper.eq(BankStatement::getCaseId, req.getCaseId()); |
|
|
|
queryWrapper.eq(StrUtil.isNotEmpty(req.getCardHolderName()),BankStatement::getCardHolderName, req.getCardHolderName()); |
|
|
|
queryWrapper.in(CollectionUtil.isNotEmpty(req.getCardHolderNameSet()),BankStatement::getCardHolderName, req.getCardHolderNameSet()); |
|
|
|
return esBsMapper.selectList(queryWrapper); |
|
|
|
} |
|
|
|
|
|
|
|
@SneakyThrows |
|
|
|
@Override |
|
|
|
public void getTpBsCNameAndCardMap(GetBSFieldValueCountReq req, Map<String, |
|
|
|
Set<String>> tpBsCNameAndCardMap, Map<String, List<BankStatement>> tpBsCNameAndCounterpartMap) { |
|
|
|
SearchSourceBuilder searchSourceBuilder = buildSearchSourceBuilder(req); |
|
|
|
|
|
|
|
SearchRequest searchRequest = new SearchRequest("dc_bank_statement"); |
|
|
|
Scroll scroll = new Scroll(TimeValue.timeValueMinutes(3)); // 设置一次读取的最大连接时长 |
|
|
|
|
|
|
|
searchSourceBuilder.size(QueryCenterService.MAX_PAGE_SIZE); |
|
|
|
searchRequest.source(searchSourceBuilder); |
|
|
|
searchRequest.scroll(scroll); |
|
|
|
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); |
|
|
|
SearchHits responseHits = searchResponse.getHits(); |
|
|
|
String scrollId = searchResponse.getScrollId(); |
|
|
|
List<BankStatement> dataList = new ArrayList<>(); |
|
|
|
long total = responseHits.getTotalHits().value; |
|
|
|
if (total > QueryCenterService.MAX_PAGE_SIZE) { |
|
|
|
while (true) { |
|
|
|
SearchHits hits = searchResponse.getHits(); |
|
|
|
for (SearchHit hit : hits) { |
|
|
|
setTpBsCNameAndCounterpartMap(hit,tpBsCNameAndCardMap,tpBsCNameAndCounterpartMap); |
|
|
|
} |
|
|
|
|
|
|
|
// 继续滚动获取下一页数据 |
|
|
|
SearchScrollRequest scrollRequest = new SearchScrollRequest(scrollId); |
|
|
|
scrollRequest.scroll(TimeValue.timeValueMinutes(1L)); |
|
|
|
searchResponse = restHighLevelClient.scroll(scrollRequest, RequestOptions.DEFAULT); |
|
|
|
scrollId = searchResponse.getScrollId(); |
|
|
|
|
|
|
|
// 判断是否还有数据 |
|
|
|
if (searchResponse.getHits().getHits().length == 0) { |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
ClearScrollRequest clearScrollRequest = new ClearScrollRequest(); |
|
|
|
clearScrollRequest.addScrollId(scrollId); |
|
|
|
restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT); |
|
|
|
} else { |
|
|
|
SearchHit[] hits = responseHits.getHits(); |
|
|
|
for (SearchHit hit : hits) { |
|
|
|
setTpBsCNameAndCounterpartMap(hit,tpBsCNameAndCardMap,tpBsCNameAndCounterpartMap); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void setTpBsCNameAndCounterpartMap(SearchHit hit, Map<String, |
|
|
|
Set<String>> tpBsCNameAndCardMap, Map<String, List<BankStatement>> tpBsCNameAndCounterpartMap){ |
|
|
|
threadPoolTaskExecutor.execute(() -> { |
|
|
|
JSONObject json = JSONUtil.parseObj(hit.getSourceAsString()); |
|
|
|
json.put("id", hit.getId()); |
|
|
|
BankStatement item = JSONUtil.toBean(json, BankStatement.class); |
|
|
|
String cardHolderName = item.getCardHolderName(); |
|
|
|
if (StrUtil.isEmpty(cardHolderName)) { |
|
|
|
return; |
|
|
|
} |
|
|
|
String cardNumber = item.getCardNumber(); |
|
|
|
String counterpartyName = item.getCounterpartyName(); |
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(cardNumber)) { |
|
|
|
Set<String> cardSet; |
|
|
|
if (tpBsCNameAndCardMap.containsKey(cardHolderName)) { |
|
|
|
cardSet = tpBsCNameAndCardMap.get(cardHolderName); |
|
|
|
} else { |
|
|
|
cardSet = new HashSet<>(); |
|
|
|
} |
|
|
|
cardSet.add(cardNumber); |
|
|
|
tpBsCNameAndCardMap.put(cardHolderName, cardSet); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(counterpartyName)) { |
|
|
|
List<BankStatement> tempBsList; |
|
|
|
if (tpBsCNameAndCounterpartMap.containsKey(cardHolderName)) { |
|
|
|
tempBsList = tpBsCNameAndCounterpartMap.get(cardHolderName); |
|
|
|
} else { |
|
|
|
tempBsList = new ArrayList<>(); |
|
|
|
} |
|
|
|
tempBsList.add(item); |
|
|
|
tpBsCNameAndCounterpartMap.put(cardHolderName, tempBsList); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 复制出新的caseId为null的数,重新计算MD5 |
|
|
|
* @param dto |
|
|
|