java 表数据同步示例

private Map<String,Object> syncTran(Map<String,Object> param, CacheSession session) {
		Map<String,Object> paramMap = new HashMap<String,Object>();
		paramMap.put("txnStatus", CommonContant.TXN_STATUS_SUCCEED);
		paramMap.put("isSynchronized",BmpBlockChainConstant.IS_SYNCHRONIZED_N);
		List<ZBcmBlockTranLog> blockTranLogs= zBcmBlockTranLogMapper.selectTranLogHash(paramMap);

		List<ZBcmBlockTran> blockTrans = zBcmBlockTranMapper.selectByExample(new ZBcmBlockTranExample());
		List<String> bizHashList = new ArrayList<String>();
		if(blockTranLogs != null && blockTranLogs.size()>0){
			if(blockTrans != null){
				for(ZBcmBlockTranLog blockTranLog:blockTranLogs){
					boolean isEuqalFlag = false;
					for(ZBcmBlockTran tran: blockTrans){
						if(tran.getBizHashCode().equals(blockTranLog.getBizHash())){
							isEuqalFlag = true;
							break;
						}
					}
					if(!isEuqalFlag){
						bizHashList.add(blockTranLog.getBizHash());
					}
				}
			}else {
				for (ZBcmBlockTranLog blockTranLog:blockTranLogs){
					bizHashList.add(blockTranLog.getBizHash());
				}
			}
		}

		List<ZBcmBlockTran> addTranList = new ArrayList<ZBcmBlockTran>();
		if(bizHashList != null){
			for(String bizHash:bizHashList){
				Transaction transaction = bmpBlockChainService.getTransactionByTradeHash(bizHash);
				if(transaction != null){
					ZBcmBlockTran tranBlock = new ZBcmBlockTran();
					String blockNum = String.valueOf(transaction.getBlockNumber());
					tranBlock.setId(UUIDGeneratorUtil.get32UUID());
					tranBlock.setBizHashCode(transaction.getHash());
					tranBlock.setBlockNumber(blockNum);
					tranBlock.setFromAcc(transaction.getFrom());
					tranBlock.setGas(new BigDecimal(transaction.getGas()));
					tranBlock.setGasPrice(new BigDecimal(transaction.getGasPrice()));
					tranBlock.setBlkHash(transaction.getBlockHash());
					tranBlock.setInputInfo(transaction.getInput());
					tranBlock.setNonce(String.valueOf(transaction.getNonce()));
					tranBlock.setTranR(transaction.getR());
					tranBlock.setTranS(transaction.getS());
					tranBlock.setToAcc(transaction.getTo());
					tranBlock.setTransactionIndex(String.valueOf(transaction.getTransactionIndex()));
					tranBlock.setTranV(String.valueOf(transaction.getV()));
					tranBlock.setTranValue(new BigDecimal(transaction.getValue()));
					HpbBlock.Block hpbBlock = bmpBlockChainService.queryBlockByBlockNum(blockNum);
					tranBlock.setTranTimestamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(hpbBlock.getTimestamp().multiply(new BigInteger("1000")).longValue()).getTime()));
					tranBlock.setInputPlainText(bmpBlockChainService.decryptTransInputMsg(transaction.getInput()));
					tranBlock.setIsSynchronized(BmpBlockChainConstant.IS_SYNCHRONIZED_N);
					addTranList.add(tranBlock);
				}
			}
			if(addTranList !=null && addTranList.size()>0){
				if(zBcmBlockTranMapper.insertList(addTranList)>0){
					addTranList.forEach(tranLog ->{
						Map<String, Object> mapUpdate = new HashMap<>();
						mapUpdate.put("isSynchronized",BmpBlockChainConstant.IS_SYNCHRONIZED_Y);
						mapUpdate.put("bizHash",tranLog.getBizHashCode());
						zBcmBlockTranLogMapper.updateIsSynchronizedToY(mapUpdate);
					});
				}
			}
		}

		param.putAll(MapUtils.getMap(param,"param"));
		Integer pageNum=MapUtils.getInteger(param, "page");
		Integer pageSize=MapUtils.getInteger(param, "rows");
		pageNum = (pageNum==null? 1:pageNum);
		pageSize= (pageSize==null? 10:pageSize);
		PageHelper.startPage(pageNum,pageSize);
		List<ZBcmBlockTran> list = zBcmBlockTranMapper.selectByCondition(param);
		list.forEach(reTran -> {
			reTran.setTranValue(reTran.getTranValue().divide(new BigDecimal(CommonContant.AMT_MULTIPLE),2));
		});
		PageInfo pageInfo = new PageInfo(list);
		param.clear();
		param.put(BcConstant.TOTAL_SIZE,pageInfo.getTotal());
		param.put(BcConstant.PAGENUM,pageInfo.getPageNum());
		param.put(BcConstant.PAGESIZE,pageInfo.getPageSize());
		param.put("rows",list);
		return param;
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值