|
|
@ -39,12 +39,14 @@ import com.inscloudtech.datacenter.domain.BankStatement; |
|
|
|
import com.inscloudtech.datacenter.domain.OpeningAccountInfo; |
|
|
|
|
|
|
|
import com.inscloudtech.bankStatementAnalysis.util.AsposeUtil; |
|
|
|
import com.sun.deploy.util.SystemUtils; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.SneakyThrows; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.elasticsearch.index.query.BoolQueryBuilder; |
|
|
|
import org.elasticsearch.index.query.QueryBuilders; |
|
|
|
import org.springframework.http.MediaType; |
|
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
@ -828,10 +830,14 @@ public class AnalysisReportServiceImpl implements IAnalysisReportService { |
|
|
|
if(StrUtil.isNotEmpty(cardHolderName)){ |
|
|
|
req.setCardHolderName(cardHolderName); |
|
|
|
} |
|
|
|
|
|
|
|
List<BankStatement> bsList = new ArrayList<>(); |
|
|
|
try { |
|
|
|
bsList = bankService.getBSList(req); |
|
|
|
long start1 = System.currentTimeMillis(); |
|
|
|
// bsList = bankService.getBSList(req); |
|
|
|
// long start2 = System.currentTimeMillis(); |
|
|
|
// System.out.println((start2 -start1)/1000 ); |
|
|
|
bsList = bankService.getBSListByCardHolderName(req); |
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
@ -962,7 +968,7 @@ public class AnalysisReportServiceImpl implements IAnalysisReportService { |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
private final ThreadPoolTaskExecutor threadPoolTaskExecutor; |
|
|
|
|
|
|
|
/** |
|
|
|
* 内部人员涉嫌关联交易 |
|
|
@ -974,6 +980,7 @@ public class AnalysisReportServiceImpl implements IAnalysisReportService { |
|
|
|
|
|
|
|
//用于-内部人员间接关系:A流水中出现的名字C,在所有的B的流水中也出现了,则是间接关系 |
|
|
|
Map<String, List<BankStatement>> tpBsCNameAndCounterpartMap = new HashMap<>(); |
|
|
|
|
|
|
|
List<AnalysisReportVo.ConnectedTransItem> rst = new ArrayList<>(); |
|
|
|
//交易对象 以所有名称字段拼接key,对象为value |
|
|
|
Map<String, TransactionPartner> tpMap = getTransactionPartnerMap(caseId); |
|
|
@ -1054,10 +1061,10 @@ public class AnalysisReportServiceImpl implements IAnalysisReportService { |
|
|
|
if(tpCardHolderNameSet.contains(name)){ |
|
|
|
tpCardHolderNameSet.remove(name); |
|
|
|
} |
|
|
|
List<BankStatement> tpBsList = getBankStatementByCardHolderNameSet(tpCardHolderNameSet, caseId); |
|
|
|
if (CollectionUtil.isEmpty(tpBsList)) { |
|
|
|
return rst; |
|
|
|
} |
|
|
|
|
|
|
|
// 根据交易对象流水获取 1交易对象名字为key,交易对象的卡号为value的Map 2交易对象名字为key,交易对象的交易对手的名字为value的Map |
|
|
|
getTpBsCNameAndCardMap(tpCardHolderNameSet, caseId,tpBsCNameAndCardMap,tpBsCNameAndCounterpartMap); |
|
|
|
|
|
|
|
GetPersonReq req = new GetPersonReq(); |
|
|
|
req.setCaseId(caseId); |
|
|
|
List<AnalysisPerson> personInfo = bankService.getPersonInfo(req); |
|
|
@ -1066,38 +1073,8 @@ public class AnalysisReportServiceImpl implements IAnalysisReportService { |
|
|
|
.collect(Collectors.toMap(AnalysisPerson::getLabel, AnalysisPerson::getType)); |
|
|
|
|
|
|
|
|
|
|
|
// 根据交易对象流水获取 1交易对象名字为key,交易对象的卡号为value的Map 2交易对象名字为key,交易对象的交易对手的名字为value的Map |
|
|
|
for (BankStatement item : tpBsList) { |
|
|
|
String cardHolderName = item.getCardHolderName(); |
|
|
|
if (StrUtil.isEmpty(cardHolderName)) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 根据分析对象的流水,以分析对象的交易对手名字为key分组的流水Map |
|
|
@ -1164,6 +1141,13 @@ public class AnalysisReportServiceImpl implements IAnalysisReportService { |
|
|
|
return rst; |
|
|
|
} |
|
|
|
|
|
|
|
private void getTpBsCNameAndCardMap(Set<String> cardHolderNameSet, String caseId, Map<String, Set<String>> tpBsCNameAndCardMap, Map<String, List<BankStatement>> tpBsCNameAndCounterpartMap) { |
|
|
|
GetBSFieldValueCountReq req = new GetBSFieldValueCountReq(); |
|
|
|
req.setCaseId(caseId); |
|
|
|
req.setCardHolderNameSet(cardHolderNameSet); |
|
|
|
bankService.getTpBsCNameAndCardMap(req,tpBsCNameAndCardMap,tpBsCNameAndCounterpartMap); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* 外部人员涉嫌关联交易 |
|
|
@ -1214,43 +1198,9 @@ public class AnalysisReportServiceImpl implements IAnalysisReportService { |
|
|
|
if(cardHolderNameSet.contains(name)){ |
|
|
|
cardHolderNameSet.remove(name); |
|
|
|
} |
|
|
|
List<BankStatement> familyBsList = getBankStatementByCardHolderNameSet(cardHolderNameSet, caseId); |
|
|
|
if (CollectionUtil.isEmpty(familyBsList)) { |
|
|
|
return rst; |
|
|
|
} |
|
|
|
|
|
|
|
// 根据交易对象流水获取 1交易对象名字为key,交易对象的卡号为value的Map 2交易对象名字为key,交易对象的交易对手的名字为value的Map |
|
|
|
for (BankStatement item : familyBsList) { |
|
|
|
String cardHolderName = item.getCardHolderName(); |
|
|
|
if (StrUtil.isEmpty(cardHolderName)) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
String cardNumber = item.getCardNumber(); |
|
|
|
String counterpartyName = item.getCounterpartyName(); |
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(cardNumber)) { |
|
|
|
Set<String> cardSet; |
|
|
|
if (familyBsCNameAndCardMap.containsKey(cardHolderName)) { |
|
|
|
cardSet = familyBsCNameAndCardMap.get(cardHolderName); |
|
|
|
} else { |
|
|
|
cardSet = new HashSet<>(); |
|
|
|
} |
|
|
|
cardSet.add(cardNumber); |
|
|
|
familyBsCNameAndCardMap.put(cardHolderName, cardSet); |
|
|
|
} |
|
|
|
|
|
|
|
if (StrUtil.isNotEmpty(counterpartyName)) { |
|
|
|
List<BankStatement> tempBsList; |
|
|
|
if (familyBsCNameAndCounterpartMap.containsKey(cardHolderName)) { |
|
|
|
tempBsList = familyBsCNameAndCounterpartMap.get(cardHolderName); |
|
|
|
} else { |
|
|
|
tempBsList = new ArrayList<>(); |
|
|
|
} |
|
|
|
tempBsList.add(item); |
|
|
|
familyBsCNameAndCounterpartMap.put(cardHolderName, tempBsList); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
getTpBsCNameAndCardMap(cardHolderNameSet, caseId,familyBsCNameAndCardMap,familyBsCNameAndCounterpartMap); |
|
|
|
|
|
|
|
|
|
|
|
// 根据分析对象的流水,以分析对象的交易对手名字为key分组的流水Map |
|
|
|