| | |
| | | * |
| | | * @param vo |
| | | */ |
| | | @Transactional |
| | | @Override |
| | | @Transactional |
| | | public R endChargeBillingCharge(TransactionRecordMessageVO vo) { |
| | | RLock lock = redissonClient.getLock("endOrder:" + vo.getTransaction_serial_number()); |
| | | try { |
| | | boolean tryLock = lock.tryLock(60, 60, TimeUnit.SECONDS); |
| | | if(tryLock){ |
| | | Object cacheObject = redisService.getCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number()); |
| | | if(null != cacheObject && 5 == (int)cacheObject){ |
| | | return R.ok(); |
| | | } |
| | | TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number())); |
| | | if (null == chargingOrder) { |
| | | return R.ok(); |
| | | log.error("订单不存在,订单号:{}", vo.getTransaction_serial_number()); |
| | | return R.fail("订单不存在,订单号:" + vo.getTransaction_serial_number()); |
| | | } |
| | | Integer status = chargingOrder.getStatus(); |
| | | if (status == 5) { |
| | | return R.ok(); |
| | | log.info("订单已结算,订单号:{}", vo.getTransaction_serial_number()); |
| | | return R.fail("订单已结算,订单号:" + vo.getTransaction_serial_number()); |
| | | } |
| | | |
| | | //如果使用优惠券需要判断优惠券是否满足使用条件 |
| | |
| | | chargingOrder.setEndSoc(new BigDecimal(desc.getSoc())); |
| | | } |
| | | this.updateById(chargingOrder); |
| | | redisService.setCacheObject("chargingOrderStatus:" + vo.getTransaction_serial_number(), 5, 100L, TimeUnit.SECONDS); |
| | | |
| | | chargingOrder = this.getById(chargingOrder.getId()); |
| | | Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0); |
| | |
| | | model.setAmount(amount); |
| | | R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model); |
| | | if (200 == result.getCode()) { |
| | | chargingOrderRefundService.save(chargingOrderRefund); |
| | | //手续费 |
| | | Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount"); |
| | | Object refund_fee1 = amount1.get("refund_fee"); |
| | | BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); |
| | | chargingOrderRefund.setRefundFee(refund_fee); |
| | | chargingOrderRefundService.updateById(chargingOrderRefund); |
| | | chargingOrderRefundService.save(chargingOrderRefund); |
| | | } |
| | | } |
| | | if (2 == rechargePaymentType) { |
| | |
| | | } |
| | | TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData(); |
| | | summaryData.setChargingOrderId(chargingOrder.getId()); |
| | | summaryData.setChargingCapacity(chargingCapacity); |
| | | summaryData.setChargingCapacity(chargingCapacity.setScale(6, RoundingMode.HALF_EVEN)); |
| | | summaryData.setChargingDuration(time); |
| | | summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); |
| | | summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN)); |
| | |
| | | |
| | | TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData(); |
| | | summaryData.setChargingOrderId(chargingOrderVO.getId()); |
| | | summaryData.setChargingCapacity(chargingCapacity); |
| | | summaryData.setChargingCapacity(chargingCapacity.setScale(6, RoundingMode.HALF_EVEN)); |
| | | summaryData.setChargingDuration(time); |
| | | summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); |
| | | summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN)); |