123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- package ieven.server.webapp.service.datastatic;
- import com.mongodb.client.MongoCursor;
- 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.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 java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.CountDownLatch;
- @Slf4j
- public class DataStaticAnalysis extends Ops implements Runnable {
- private HeaderProperties headerProperties;
- String modelId;
- MongoTemplate mongoTemplate;
- FileService fileService;
- CountDownLatch latch;
- public DataStaticAnalysis(
- 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 dateFileIdcft = getFileId("财付通-交易明细", modelId, mongoTemplate);
- String dateFileIdfzza = getFileId("反诈治安-交易明细", modelId, mongoTemplate);
- String dateFileIdwld = getFileId("五联单-账户明细", modelId, mongoTemplate);
- if (StringUtils.isNotBlank(dateFileIdcft) || StringUtils.isNotBlank(dateFileIdfzza)) {
- newFileId = createLogicAndDeleteOld("数据分析-主体信息汇总明细", modelId, headerProperties.getUserAccountOutput(), mongoTemplate, fileService);
- }
- // 插入记录用户后续查询明细
- //财付通
- if (StringUtils.isNotBlank(dateFileIdcft)) {
- MongoCursor<Document> cursor = getCursor(dateFileIdcft, mongoTemplate);
- Document origin;
- List<DataMap> needToSave = new ArrayList<>(1000);
- while (cursor.hasNext()) {
- origin = cursor.next();
- DataMap dataMap = new DataMap();
- dataMap.put("fileId", newFileId);
- AccountVO accountVO = new AccountVO();
- assembleDataCft(origin, accountVO);
- insertDataWld(accountVO, dataMap);
- needToSave.add(dataMap);
- if (needToSave.size() >= 1000) {
- saveLines(new ArrayList<>(needToSave), mongoTemplate);
- needToSave.clear();
- }
- }
- if (CollectionUtils.isNotEmpty(needToSave)) {
- saveLines(needToSave, mongoTemplate);
- }
- }
- //反诈
- if (StringUtils.isNotBlank(dateFileIdfzza)) {
- MongoCursor<Document> cursor = getCursor(dateFileIdfzza, mongoTemplate);
- Document origin;
- List<DataMap> needToSave = new ArrayList<>(1000);
- while (cursor.hasNext()) {
- origin = cursor.next();
- DataMap dataMap = new DataMap();
- dataMap.put("fileId", newFileId);
- AccountVO accountVO = new AccountVO();
- assembleDatafzza(origin, accountVO);
- insertDataWld(accountVO, dataMap);
- needToSave.add(dataMap);
- if (needToSave.size() >= 1000) {
- saveLines(new ArrayList<>(needToSave), mongoTemplate);
- needToSave.clear();
- }
- }
- if (CollectionUtils.isNotEmpty(needToSave)) {
- saveLines(needToSave, mongoTemplate);
- }
- }
- //五联单
- if (StringUtils.isNotBlank(dateFileIdwld)) {
- MongoCursor<Document> cursor = getCursor(dateFileIdwld, mongoTemplate);
- Document origin;
- List<DataMap> needToSave = new ArrayList<>(1000);
- while (cursor.hasNext()) {
- origin = cursor.next();
- DataMap dataMap = new DataMap();
- dataMap.put("fileId", newFileId);
- AccountVO accountVO = new AccountVO();
- assembleDatawld(origin, accountVO);
- insertDataWld(accountVO, dataMap);
- 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 assembleDataCft(Document origin, AccountVO accountVO) {
- accountVO.setZfddh(origin.getString("交易单号"));
- accountVO.setJyztzh(origin.getString("交易主体账号"));
- accountVO.setJyztyhkh(origin.getString("交易主体银行卡号"));
- accountVO.setJyztyhmc(origin.getString("交易主体银行名称"));
- accountVO.setJyzthm(origin.getString("交易主体户名"));
- accountVO.setJylx(origin.getString("交易类型"));
- accountVO.setJysj(origin.getString("交易时间"));
- accountVO.setJyje(origin.getString("交易金额(元)"));
- accountVO.setJyye(origin.getString("账户余额(元)"));
- accountVO.setJydszh(origin.getString("交易对手账号"));
- accountVO.setJydsyhkh(origin.getString("交易对手银行卡号"));
- accountVO.setJydsyhkhmc(origin.getString("交易对手银行名称"));
- accountVO.setJydshm(origin.getString("交易对手户名"));
- accountVO.setJyztdcrzbz(origin.getString("借贷类型"));
- accountVO.setType("财付通");
- }
- public void assembleDatafzza(Document origin, AccountVO accountVO) {
- accountVO.setZfddh(origin.getString("支付订单号"));
- accountVO.setJylsh(origin.getString("交易流水号"));
- accountVO.setJyztzh(origin.getString("交易主体账号"));
- accountVO.setJyztdcrzbz(origin.getString("交易主体的出入账标识"));
- accountVO.setJylx(origin.getString("交易类型"));
- accountVO.setZflx(origin.getString("支付类型"));
- accountVO.setBz(origin.getString("币种"));
- accountVO.setJyje(origin.getString("交易金额"));
- accountVO.setJyye(origin.getString("账户余额"));
- accountVO.setXfposjbh(origin.getString("消费POS机编号"));
- accountVO.setJysblx(origin.getString("交易设备类型"));
- accountVO.setJyzfsbip(origin.getString("交易支付设备IP"));
- accountVO.setMacdz(origin.getString("交易支付设备IP"));
- accountVO.setJyddjd(origin.getString("交易地点经度"));
- accountVO.setJyddwd(origin.getString("交易地点纬度"));
- accountVO.setRemark(origin.getString("备注"));
- accountVO.setJyztyhkh(origin.getString("交易主体银行卡号"));
- accountVO.setJyztyhmc(origin.getString("交易主体银行名称"));
- accountVO.setJyzthm(origin.getString("交易主体户名"));
- accountVO.setJysj(origin.getString("交易时间"));
- accountVO.setJydszh(origin.getString("交易对手账号"));
- accountVO.setJydsyhkh(origin.getString("交易对手银行卡号"));
- accountVO.setJydsyhkhmc(origin.getString("交易对手银行名称"));
- accountVO.setJydshm(origin.getString("交易对手户名"));
- accountVO.setType("反诈");
- }
- public void assembleDatawld(Document origin, AccountVO accountVO) {
- accountVO.setZfddh(origin.getString("商户订单号"));
- accountVO.setJylx(origin.getString("类型"));
- accountVO.setJylsh(origin.getString("交易号"));
- accountVO.setJyztzh(origin.getString("支付宝用户ID"));
- accountVO.setJyzthm(origin.getString("支付宝户名"));
- accountVO.setJyztdcrzbz(origin.getString("收/支"));
- accountVO.setJysj(origin.getString("交易创建时间"));
- accountVO.setJyje(origin.getString("金额(元)"));
- accountVO.setJydszh(origin.getString("对手支付宝用户ID"));
- accountVO.setJydshm(origin.getString("对手支付宝户名"));
- accountVO.setXfmc(origin.getString("消费名称"));
- accountVO.setJylyd(origin.getString("交易来源地"));
- accountVO.setJyzt(origin.getString("交易状态"));
- accountVO.setRemark(origin.getString("备注"));
- accountVO.setType("五联单");
- }
- public void insertDataWld(AccountVO accountVO, DataMap dataMap) {
- dataMap.put("支付订单号", accountVO.getZfddh());
- dataMap.put("交易流水号", accountVO.getJylsh());
- dataMap.put("交易主体银行名称", accountVO.getJyztyhmc());
- dataMap.put("交易主体账号", accountVO.getJyztzh());
- dataMap.put("交易主体银行卡号", accountVO.getJyztyhkh());
- dataMap.put("交易主体户名", accountVO.getJyzthm());
- dataMap.put("交易类型", accountVO.getJylx());
- dataMap.put("支付类型", accountVO.getZflx());
- dataMap.put("借贷类型", getJtType(accountVO.getJyztdcrzbz()));
- dataMap.put("交易时间", accountVO.getJysj());
- dataMap.put("币种", accountVO.getBz());
- dataMap.put("交易金额", accountVO.getJyje());
- dataMap.put("交易余额", accountVO.getJyye());
- dataMap.put("交易对手账号", accountVO.getJydszh());
- dataMap.put("交易对手银行卡号", accountVO.getJydsyhkh());
- dataMap.put("交易对手银行名称", accountVO.getJydsyhkhmc());
- dataMap.put("交易对手户名", accountVO.getJydshm());
- dataMap.put("消费POS机编号", accountVO.getXfposjbh());
- dataMap.put("交易设备类型", accountVO.getJysblx());
- dataMap.put("交易支付设备IP", accountVO.getJyzfsbip());
- dataMap.put("MAC地址", accountVO.getMacdz());
- dataMap.put("交易地点经度", accountVO.getJyddjd());
- dataMap.put("交易地点纬度", accountVO.getJyddwd());
- dataMap.put("消费名称", accountVO.getXfmc());
- dataMap.put("交易来源地", accountVO.getJylyd());
- dataMap.put("交易状态", accountVO.getJyzt());
- dataMap.put("备注", accountVO.getRemark());
- dataMap.put("类型", accountVO.getType());
- }
- public String getJtType(String type){
- if(type.equals("借")||type.equals("出")||type.equals("支")||type.equals("出账")){
- return "借";
- }else if(type.equals("贷")||type.equals("入")||type.equals("支")||type.equals("入账")){
- return "贷";
- }
- return type;
- }
- }
|