123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- package ieven.server.webapp.service.datastatic;
- import com.mongodb.client.MongoCursor;
- import ieven.server.webapp.domain.alipay.AlipayHeaders;
- import ieven.server.webapp.domain.alipay.HeaderProperties;
- import ieven.server.webapp.domain.data.AccountVO;
- import ieven.server.webapp.domain.data.DataMap;
- 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.apache.commons.lang3.StringUtils;
- import org.bson.Document;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import org.springframework.data.mongodb.core.query.Criteria;
- import org.springframework.data.mongodb.core.query.Query;
- import java.math.BigDecimal;
- import java.util.*;
- import java.util.concurrent.CountDownLatch;
- @Slf4j
- public class DataStaticAnalysisTotal extends Ops implements Runnable {
- private HeaderProperties headerProperties;
- String modelId;
- MongoTemplate mongoTemplate;
- FileService fileService;
- CountDownLatch latch;
- public DataStaticAnalysisTotal(
- HeaderProperties headerProperties,
- String modelId,
- MongoTemplate mongoTemplate,
- FileService fileService,
- CountDownLatch latch) {
- this.headerProperties = headerProperties;
- this.modelId = modelId;
- this.mongoTemplate = mongoTemplate;
- this.fileService = fileService;
- this.latch = latch;
- }
- @Override
- public void run() {
- log.info("数据分析-主体信息汇总开始");
- // 直接删除并创建表
- String newFileId = "";
- String newFileIdAll = "";
- String dateFileId = getFileId("数据分析-主体信息汇总明细", modelId, mongoTemplate);
- // 插入记录用户后续查询明细
- if (StringUtils.isNotBlank(dateFileId)) {
- MongoCursor<Document> cursor = getCursor(dateFileId, mongoTemplate);
- if (cursor.hasNext()) {
- newFileId =createLogicAndDeleteOld("数据分析-主体信息汇总", modelId,headerProperties.getStaticUserOutput(),mongoTemplate, fileService);
- insertFromTo(dateFileId, newFileId, modelId, mongoTemplate);
- //维护一张人员信息基础表,用于模型计算
- newFileIdAll =createLogicAndDeleteOld("数据分析-所有主体信息汇总", modelId,headerProperties.getStaticUserAllOutput(),mongoTemplate, fileService);
- insertFromTo(dateFileId, newFileIdAll, modelId, mongoTemplate);
- }
- Set<String> alipayIds = new HashSet<>();
- Set<String> alipayIdsAll = new HashSet<>();
- Map<String, DataMap> idToData = new HashMap<>();
- Map<String, Set<String>> idToNames = new HashMap<>();
- Document origin;
- List<DataMap> needToSave = new ArrayList<>(1000);
- List<DataMap> needToSaveall = new ArrayList<>(1000);
- while (cursor.hasNext()) {
- try {
- origin = cursor.next();
- String alipayId = origin.getString("交易主体账号");
- DataMap dataMap;
- if (StringUtils.isNotBlank(alipayId)&&!"null".equals(alipayId)&&!alipayIds.contains(alipayId)) {
- alipayIds.add(alipayId);
- dataMap = new DataMap();
- dataMap.put("fileId", newFileId);
- dataMap.put("交易主体账号", alipayId);
- dataMap.put("交易主体户名", "");
- getData(dataMap,origin);
- idToData.put(alipayId, dataMap);
- }
- String alipayUsername = origin.getString("交易主体户名");
- if (StringUtils.isNotBlank(alipayUsername)&&!"null".equals(alipayUsername)) {
- Set<String> namesSet;
- if (idToNames.containsKey(alipayId)) {
- namesSet = idToNames.get(alipayId);
- } else {
- namesSet = new HashSet<>();
- idToNames.put(alipayId, namesSet);
- }
- namesSet.add(alipayUsername);
- }
- //组装用户基本信息
- getDataAll(needToSaveall,origin,alipayIdsAll,newFileIdAll);
- if (needToSaveall.size() >= 1000) {
- saveLines(new ArrayList<>(needToSaveall), mongoTemplate);
- needToSaveall.clear();
- }
- } catch (Exception exception) {
- log.error(exception.getMessage(), exception);
- }
- }
- if (CollectionUtils.isNotEmpty(idToData.values())) {
- for (Map.Entry<String, DataMap> entry : idToData.entrySet()) {
- DataMap dataMap = entry.getValue();
- String id = (String) dataMap.get("交易主体账号");
- Set<String> namesSet = idToNames.get(id);
- if (CollectionUtils.isNotEmpty(namesSet)) {
- dataMap.put("交易主体户名", StringUtils.join(namesSet, ";"));
- }
- needToSave.add(dataMap);
- if (needToSave.size() >= 1000) {
- saveLines(new ArrayList<>(needToSave), mongoTemplate);
- needToSave.clear();
- }
- //查询其他的基本信息
- }
- if (CollectionUtils.isNotEmpty(needToSave)) {
- saveLines(needToSave, mongoTemplate);
- }
- }
- }
- latch.countDown();
- log.info("数据分析-主体信息汇总开始");
- }
- public void getData(DataMap dataMap,Document origin){
- String type = origin.getString("类型");
- String account = origin.getString("交易主体账号");
- String zjha="";
- String bdyhkh="";
- String khyhmc="";
- String bdsjh="";
- String zcsj="";
- if("财付通".equals(type)){
- //账户状态", "账号", "注册姓名", "注册时间", "注册身份证号", "绑定手机", "绑定状态", "开户行信息", "银行账号"
- String dateFileId2 = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
- List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
- Criteria.where("modelId")
- .is(modelId)
- .and("fileId")
- .is(dateFileId2)
- .and("账号")
- .is(account)
- .and("generated")
- .is(Boolean.TRUE))), DataMap.class);
- if(CollectionUtils.isNotEmpty(dataMaps)){
- zjha=String.valueOf(dataMaps.get(0).get("注册身份证号"));
- bdyhkh=String.valueOf(dataMaps.get(0).get("银行账号"));
- khyhmc=String.valueOf(dataMaps.get(0).get("开户行信息"));
- bdsjh=String.valueOf(dataMaps.get(0).get("绑定手机"));
- zcsj=String.valueOf(dataMaps.get(0).get("注册时间"));
- }
- }else if("五联单".equals(type)){
- // "用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡", "对应的协查数据"));
- String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
- List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
- Criteria.where("modelId")
- .is(modelId)
- .and("fileId")
- .is(dateFileId2)
- .and("用户ID")
- .is(account)
- .and("generated")
- .is(Boolean.TRUE))), DataMap.class);
- if(CollectionUtils.isNotEmpty(dataMaps)){
- zjha=String.valueOf(dataMaps.get(0).get("证件号"));
- bdyhkh=String.valueOf(dataMaps.get(0).get("绑定银行卡"));
- khyhmc=String.valueOf(dataMaps.get(0).get("账户名称"));
- bdsjh=String.valueOf(dataMaps.get(0).get("登录手机"));
- zcsj=String.valueOf(dataMaps.get(0).get("注册时间"));
- }
- }
- dataMap.put("证件号码", zjha);
- dataMap.put("绑定银行卡号", bdyhkh);
- dataMap.put("开户银行名称", khyhmc);
- dataMap.put("绑定手机号", bdsjh);
- dataMap.put("注册时间", zcsj);
- }
- public void getDataAll(List<DataMap> needToSaveall,Document origin,Set<String> alipayIdsAll,String newFileIdAll){
- String type = origin.getString("类型");
- String account = origin.getString("交易主体账号");
- String accountds = origin.getString("交易对手账号");
- List<String>accountList=new ArrayList<>();
- if(StringUtils.isNotBlank(account)&&!"null".equals(account)){
- accountList.add(account);
- }
- if(StringUtils.isNotBlank(accountds)&&!"null".equals(accountds)){
- accountList.add(accountds);
- }
- if(CollectionUtils.isEmpty(accountList)){
- return;
- }
- if("财付通".equals(type)){
- //账户状态", "账号", "注册姓名", "注册时间", "注册身份证号", "绑定手机", "绑定状态", "开户行信息", "银行账号"
- String dateFileId2 = getFileId(TenpayHeaders.getGeneratedName(3), modelId, mongoTemplate);
- List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
- Criteria.where("modelId")
- .is(modelId)
- .and("fileId")
- .is(dateFileId2)
- .and("账号")
- .in(accountList)
- .and("generated")
- .is(Boolean.TRUE))), DataMap.class);
- if(CollectionUtils.isNotEmpty(dataMaps)){
- for (DataMap dataMap : dataMaps) {
- if(!alipayIdsAll.contains(String.valueOf(dataMap.get("账号")))){
- DataMap newDataMap=new DataMap();
- newDataMap.put("fileId", newFileIdAll);
- newDataMap.put("证件号",String.valueOf(dataMap.get("注册身份证号")));
- newDataMap.put("账户名称",String.valueOf(dataMap.get("注册姓名")));
- newDataMap.put("账号",String.valueOf(dataMap.get("账号")));
- needToSaveall.add(newDataMap);
- alipayIdsAll.add(String.valueOf(dataMap.get("账号")));
- }
- }
- }
- }
- else if("五联单".equals(type)){
- // "用户ID", "登录邮箱", "登录手机", "账户名称", "证件类型", "证件号", "可用余额", "注册时间", "绑定手机", "绑定银行卡", "对应的协查数据"));
- String dateFileId2 = getFileId(AlipayHeaders.getGeneratedName(2), modelId, mongoTemplate);
- List<DataMap> dataMaps = this.mongoTemplate.find((new Query(
- Criteria.where("modelId")
- .is(modelId)
- .and("fileId")
- .is(dateFileId2)
- .and("用户ID")
- .in(accountList)
- .and("generated")
- .is(Boolean.TRUE))), DataMap.class);
- if(CollectionUtils.isNotEmpty(dataMaps)){
- for (DataMap dataMap : dataMaps) {
- if(!alipayIdsAll.contains(String.valueOf(dataMap.get("用户ID")))){
- DataMap newDataMap=new DataMap();
- newDataMap.put("fileId", newFileIdAll);
- newDataMap.put("证件号",String.valueOf(dataMap.get("证件号")));
- newDataMap.put("账户名称",String.valueOf(dataMap.get("账户名称")));
- newDataMap.put("账号",String.valueOf(dataMap.get("用户ID")));
- needToSaveall.add(newDataMap);
- alipayIdsAll.add(String.valueOf(dataMap.get("用户ID")));
- }
- }
- }
- }
- }
- }
|