|
@@ -21,149 +21,167 @@ import java.util.concurrent.CountDownLatch;
|
|
|
@Slf4j
|
|
|
public class AntiSecurityTradeEndAnalysis extends Ops implements Runnable {
|
|
|
|
|
|
- String modelId;
|
|
|
- MongoTemplate mongoTemplate;
|
|
|
- FileService fileService;
|
|
|
- CountDownLatch latch;
|
|
|
- private HeaderProperties headerProperties;
|
|
|
+ String modelId;
|
|
|
+ MongoTemplate mongoTemplate;
|
|
|
+ FileService fileService;
|
|
|
+ CountDownLatch latch;
|
|
|
+ private HeaderProperties headerProperties;
|
|
|
|
|
|
- public AntiSecurityTradeEndAnalysis(
|
|
|
- HeaderProperties headerProperties,
|
|
|
- String modelId,
|
|
|
- MongoTemplate mongoTemplate,
|
|
|
- FileService fileService,
|
|
|
- CountDownLatch latch4) {
|
|
|
- this.headerProperties = headerProperties;
|
|
|
- this.modelId = modelId;
|
|
|
- this.mongoTemplate = mongoTemplate;
|
|
|
- this.fileService = fileService;
|
|
|
- this.latch = latch4;
|
|
|
- }
|
|
|
+ public AntiSecurityTradeEndAnalysis(
|
|
|
+ HeaderProperties headerProperties,
|
|
|
+ String modelId,
|
|
|
+ MongoTemplate mongoTemplate,
|
|
|
+ FileService fileService,
|
|
|
+ CountDownLatch latch4) {
|
|
|
+ this.headerProperties = headerProperties;
|
|
|
+ this.modelId = modelId;
|
|
|
+ this.mongoTemplate = mongoTemplate;
|
|
|
+ this.fileService = fileService;
|
|
|
+ this.latch = latch4;
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- // 直接删除并创建表
|
|
|
- String newFileId = "";
|
|
|
- String dateFileId = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
|
|
|
- if (StringUtils.isNotBlank(dateFileId)) {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ // 直接删除并创建表
|
|
|
+ String newFileId = "";
|
|
|
+ String dateFileId = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
|
|
|
+ if (StringUtils.isNotBlank(dateFileId)) {
|
|
|
|
|
|
- MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
|
|
|
- if (cursor.hasNext()) {
|
|
|
- newFileId =
|
|
|
- createLogicAndDeleteOld(
|
|
|
- "反诈治安-对手透视",
|
|
|
- modelId,
|
|
|
- headerProperties.getAntiSecurityTradeEndAnalysisOutput(),
|
|
|
- mongoTemplate,
|
|
|
- fileService);
|
|
|
- // 插入记录用户后续查询明细
|
|
|
- insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
|
|
|
- }
|
|
|
- Set<String> alipayIds = new HashSet<>();
|
|
|
- Map<String, DataMap> idToData = new HashMap<>();
|
|
|
- Map<String, Set<String>> idToMainIds = new HashMap<>();
|
|
|
- Map<String, Set<String>> idToNames = new HashMap<>();
|
|
|
- Document origin;
|
|
|
- while (cursor.hasNext()) {
|
|
|
- try {
|
|
|
+ MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
|
|
|
+ if (cursor.hasNext()) {
|
|
|
+ newFileId =
|
|
|
+ createLogicAndDeleteOld(
|
|
|
+ "反诈治安-对手透视",
|
|
|
+ modelId,
|
|
|
+ headerProperties.getAntiSecurityTradeEndAnalysisOutput(),
|
|
|
+ mongoTemplate,
|
|
|
+ fileService
|
|
|
+ );
|
|
|
+ // 插入记录用户后续查询明细
|
|
|
+ insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
|
|
|
+ }
|
|
|
+ Set<String> alipayIds = new HashSet<>();
|
|
|
+ Map<String, DataMap> idToData = new HashMap<>();
|
|
|
+ Map<String, Set<String>> idToMainIds = new HashMap<>();
|
|
|
+ Map<String, Set<String>> idToNames = new HashMap<>();
|
|
|
+ Map<String, Set<String>> hm = new HashMap<>();
|
|
|
+ Document origin;
|
|
|
+ while (cursor.hasNext()) {
|
|
|
+ try {
|
|
|
|
|
|
- origin = cursor.next();
|
|
|
- String alipayId = origin.getString("交易对手账号");
|
|
|
- DataMap dataMap;
|
|
|
- if (alipayIds.contains(alipayId)) {
|
|
|
- dataMap = idToData.get(alipayId);
|
|
|
- } else {
|
|
|
- alipayIds.add(alipayId);
|
|
|
- dataMap = new DataMap();
|
|
|
- dataMap.put("fileId", newFileId);
|
|
|
- dataMap.put("交易对手账号", alipayId);
|
|
|
- dataMap.put("交易对手户名", "");
|
|
|
- dataMap.put("交易总额", new BigDecimal("0.00"));
|
|
|
- dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
|
|
|
- dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
|
|
|
- dataMap.put("交易主体收入笔数", 0);
|
|
|
- dataMap.put("交易主体支出笔数", 0);
|
|
|
- dataMap.put("总笔数", 0);
|
|
|
- dataMap.put("共同交易主体数", 0);
|
|
|
- dataMap.put("共同交易主体账号汇总", "");
|
|
|
- idToData.put(alipayId, dataMap);
|
|
|
- }
|
|
|
- String alipayUsername = origin.getString("交易对手户名");
|
|
|
- if (StringUtils.isNotBlank(alipayUsername)
|
|
|
- && !"_".equals(alipayUsername)
|
|
|
- && !"-".equals(alipayUsername)&& !"null".equals(alipayUsername)) {
|
|
|
- if (idToNames.containsKey(alipayId)) {
|
|
|
- Set<String> names = idToNames.get(alipayId);
|
|
|
- names.add(alipayUsername);
|
|
|
- } else {
|
|
|
- Set<String> names = new HashSet<>();
|
|
|
- names.add(alipayUsername);
|
|
|
- idToNames.put(alipayId, names);
|
|
|
+ origin = cursor.next();
|
|
|
+ String alipayId = origin.getString("交易对手账号");
|
|
|
+ DataMap dataMap;
|
|
|
+ if (alipayIds.contains(alipayId)) {
|
|
|
+ dataMap = idToData.get(alipayId);
|
|
|
+ } else {
|
|
|
+ alipayIds.add(alipayId);
|
|
|
+ dataMap = new DataMap();
|
|
|
+ dataMap.put("fileId", newFileId);
|
|
|
+ dataMap.put("交易对手账号", alipayId);
|
|
|
+ dataMap.put("交易对手户名", "");
|
|
|
+ dataMap.put("交易总额", new BigDecimal("0.00"));
|
|
|
+ dataMap.put("交易主体收入金额", new BigDecimal("0.00"));
|
|
|
+ dataMap.put("交易主体支出金额", new BigDecimal("0.00"));
|
|
|
+ dataMap.put("交易主体收入笔数", 0);
|
|
|
+ dataMap.put("交易主体支出笔数", 0);
|
|
|
+ dataMap.put("总笔数", 0);
|
|
|
+ dataMap.put("共同交易主体数", 0);
|
|
|
+ dataMap.put("共同交易主体账号汇总", "");
|
|
|
+ idToData.put(alipayId, dataMap);
|
|
|
+ }
|
|
|
+ String alipayUsername = origin.getString("交易对手户名");
|
|
|
+ if (StringUtils.isNotBlank(alipayUsername)
|
|
|
+ && !"_".equals(alipayUsername)
|
|
|
+ && !"-".equals(alipayUsername) && !"null".equals(alipayUsername)) {
|
|
|
+ if (idToNames.containsKey(alipayId)) {
|
|
|
+ Set<String> names = idToNames.get(alipayId);
|
|
|
+ names.add(alipayUsername);
|
|
|
+ } else {
|
|
|
+ Set<String> names = new HashSet<>();
|
|
|
+ names.add(alipayUsername);
|
|
|
+ idToNames.put(alipayId, names);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String flag = "交易主体的出入账标识";
|
|
|
+ String flagValue = origin.getString(flag);
|
|
|
+ String money = (String) origin.get("交易金额");
|
|
|
+ if ("入账".equals(flagValue)) {
|
|
|
+ BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
|
|
|
+ oMoney = oMoney.add(new BigDecimal(money));
|
|
|
+ dataMap.put("交易主体收入金额", oMoney);
|
|
|
+ int oCount = (int) dataMap.get("交易主体收入笔数");
|
|
|
+ oCount++;
|
|
|
+ dataMap.put("交易主体收入笔数", oCount);
|
|
|
+ } else if ("出账".equals(flagValue)) {
|
|
|
+ BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
|
|
|
+ oMoney = oMoney.add(new BigDecimal(money));
|
|
|
+ dataMap.put("交易主体支出金额", oMoney);
|
|
|
+ int oCount = (int) dataMap.get("交易主体支出笔数");
|
|
|
+ oCount++;
|
|
|
+ dataMap.put("交易主体支出笔数", oCount);
|
|
|
+ }
|
|
|
+ BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
|
|
|
+ oMoney = oMoney.add(new BigDecimal(money));
|
|
|
+ dataMap.put("交易总额", oMoney);
|
|
|
+ int oCount = (int) dataMap.get("总笔数");
|
|
|
+ oCount++;
|
|
|
+ dataMap.put("总笔数", oCount);
|
|
|
+ String mainId = (String) origin.get("交易主体账号");
|
|
|
+ String mainIdhm = (String) origin.get("交易主体户名");
|
|
|
+ if(StringUtils.isNotBlank(mainId)&&StringUtils.isNotBlank(mainIdhm)){
|
|
|
+ if (hm.containsKey(mainId)) {
|
|
|
+ Set<String> hmnew = hm.get(mainId);
|
|
|
+ hmnew.add(mainIdhm);
|
|
|
+ hm.put(mainId,hmnew);
|
|
|
+ } else {
|
|
|
+ Set<String> mainIds = new HashSet<>();
|
|
|
+ mainIds.add(mainIdhm);
|
|
|
+ hm.put(alipayId, mainIds);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (idToMainIds.containsKey(alipayId)) {
|
|
|
+ Set<String> mainIds = idToMainIds.get(alipayId);
|
|
|
+ mainIds.add(mainId);
|
|
|
+ } else {
|
|
|
+ Set<String> mainIds = new HashSet<>();
|
|
|
+ mainIds.add(mainId);
|
|
|
+ //mainIds.add(mainId+(StringUtils.isBlank(mainName)||"null".equals(mainName)?"":"("+mainName+")"));
|
|
|
+ idToMainIds.put(alipayId, mainIds);
|
|
|
+ }
|
|
|
+ } catch (Exception exception) {
|
|
|
+ log.error(exception.getMessage(), exception);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(idToData.values())) {
|
|
|
+ for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
|
|
|
+ String key = entry.getKey();
|
|
|
+ DataMap value = entry.getValue();
|
|
|
+ Set<String> mainIds = idToMainIds.get(key);
|
|
|
+ Set<String> names = idToNames.get(key);
|
|
|
+ if (CollectionUtils.isNotEmpty(names)) {
|
|
|
+ value.put("交易对手户名", StringUtils.join(names, ";"));
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(mainIds)) {
|
|
|
+ value.put("共同交易主体数", mainIds.size());
|
|
|
+ String str="";
|
|
|
+ for (String mainId : mainIds) {
|
|
|
+ Set<String> strings = hm.get(mainId);
|
|
|
+ str+=CollectionUtils.isEmpty(strings)?mainId+";":mainId+"("+StringUtils.join(strings, ",")+");";
|
|
|
+ }
|
|
|
+ value.put("共同交易主体账号汇总", str);
|
|
|
+ }
|
|
|
+ DataMap dataMap = entry.getValue();
|
|
|
+ BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
|
|
|
+ dataMap.put("交易总额", money1.doubleValue());
|
|
|
+ BigDecimal money2 = (BigDecimal) dataMap.get("交易主体收入金额");
|
|
|
+ dataMap.put("交易主体收入金额", money2.doubleValue());
|
|
|
+ BigDecimal money3 = (BigDecimal) dataMap.get("交易主体支出金额");
|
|
|
+ dataMap.put("交易主体支出金额", money3.doubleValue());
|
|
|
+ }
|
|
|
+ saveLines(idToData.values(), "交易总额", mongoTemplate);
|
|
|
}
|
|
|
- }
|
|
|
- String flag = "交易主体的出入账标识";
|
|
|
- String flagValue = origin.getString(flag);
|
|
|
- String money = (String) origin.get("交易金额");
|
|
|
- if ("入账".equals(flagValue)) {
|
|
|
- BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体收入金额");
|
|
|
- oMoney = oMoney.add(new BigDecimal(money));
|
|
|
- dataMap.put("交易主体收入金额", oMoney);
|
|
|
- int oCount = (int) dataMap.get("交易主体收入笔数");
|
|
|
- oCount++;
|
|
|
- dataMap.put("交易主体收入笔数", oCount);
|
|
|
- } else if ("出账".equals(flagValue)) {
|
|
|
- BigDecimal oMoney = (BigDecimal) dataMap.get("交易主体支出金额");
|
|
|
- oMoney = oMoney.add(new BigDecimal(money));
|
|
|
- dataMap.put("交易主体支出金额", oMoney);
|
|
|
- int oCount = (int) dataMap.get("交易主体支出笔数");
|
|
|
- oCount++;
|
|
|
- dataMap.put("交易主体支出笔数", oCount);
|
|
|
- }
|
|
|
- BigDecimal oMoney = (BigDecimal) dataMap.get("交易总额");
|
|
|
- oMoney = oMoney.add(new BigDecimal(money));
|
|
|
- dataMap.put("交易总额", oMoney);
|
|
|
- int oCount = (int) dataMap.get("总笔数");
|
|
|
- oCount++;
|
|
|
- dataMap.put("总笔数", oCount);
|
|
|
- String mainId = (String) origin.get("交易主体账号");
|
|
|
- String mainName = (String) origin.get("交易主体户名");
|
|
|
- if (idToMainIds.containsKey(alipayId)) {
|
|
|
- Set<String> mainIds = idToMainIds.get(alipayId);
|
|
|
- mainIds.add(mainId);
|
|
|
- } else {
|
|
|
- Set<String> mainIds = new HashSet<>();
|
|
|
- mainIds.add(mainId);
|
|
|
- //mainIds.add(mainId+(StringUtils.isBlank(mainName)||"null".equals(mainName)?"":"("+mainName+")"));
|
|
|
- idToMainIds.put(alipayId, mainIds);
|
|
|
- }
|
|
|
- } catch (Exception exception) {
|
|
|
- log.error(exception.getMessage(), exception);
|
|
|
- }
|
|
|
- }
|
|
|
- if (CollectionUtils.isNotEmpty(idToData.values())) {
|
|
|
- for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
|
|
|
- String key = entry.getKey();
|
|
|
- DataMap value = entry.getValue();
|
|
|
- Set<String> mainIds = idToMainIds.get(key);
|
|
|
- if (CollectionUtils.isNotEmpty(mainIds)) {
|
|
|
- value.put("共同交易主体数", mainIds.size());
|
|
|
- value.put("共同交易主体账号汇总", StringUtils.join(mainIds, ";"));
|
|
|
- }
|
|
|
- Set<String> names = idToNames.get(key);
|
|
|
- if (CollectionUtils.isNotEmpty(names)) {
|
|
|
- value.put("交易对手户名", StringUtils.join(names, ";"));
|
|
|
- }
|
|
|
- DataMap dataMap = entry.getValue();
|
|
|
- BigDecimal money1 = (BigDecimal) dataMap.get("交易总额");
|
|
|
- dataMap.put("交易总额", money1.doubleValue());
|
|
|
- BigDecimal money2 = (BigDecimal) dataMap.get("交易主体收入金额");
|
|
|
- dataMap.put("交易主体收入金额", money2.doubleValue());
|
|
|
- BigDecimal money3 = (BigDecimal) dataMap.get("交易主体支出金额");
|
|
|
- dataMap.put("交易主体支出金额", money3.doubleValue());
|
|
|
}
|
|
|
- saveLines(idToData.values(), "交易总额", mongoTemplate);
|
|
|
- }
|
|
|
+ this.latch.countDown();
|
|
|
}
|
|
|
- this.latch.countDown();
|
|
|
- }
|
|
|
}
|