Pu Zhibing
2 天以前 4f9263aeee1c7e5a87a7ff58d008fb1c47ceed6b
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -797,6 +797,7 @@
      String key = "AQJC_" + chargingOrder.getChargingGunId();
      List<PlatformStartChargingReply> data = platformStartChargingReplyService.getPlatformStartChargingReply(code);
      log.info(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
      Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0);
      if (data.size() != 0) {
         PlatformStartChargingReply platformStartChargingReply = data.get(1);
         Integer startup_result = platformStartChargingReply.getStartup_result();
@@ -842,7 +843,7 @@
         
         redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
         //推送三方平台订单状态
         if (2 == chargingOrder.getOrderSource()) {
         if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
            tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
         }
         return true;
@@ -876,7 +877,7 @@
         this.updateById(order);
         redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
         //推送三方平台订单状态
         if (2 == chargingOrder.getOrderSource()) {
         if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
            tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
         }
         return true;
@@ -917,6 +918,7 @@
      if (order.getStatus() != 2) {
         return;
      }
      Site site = siteClient.getSiteByIds(Arrays.asList(order.getSiteId())).getData().get(0);
      String code = order.getCode();
      PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + order.getChargingGunId());
      if (null != preChargeCheck1) {
@@ -940,8 +942,10 @@
         TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
         chargingGun.setStatus(4);
         chargingGunClient.updateChargingGunById(chargingGun);
         //推送状态给三方平台
         tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 4);
         if(1 == site.getIsOpenSynchronization()){
            //推送状态给三方平台
            tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 4);
         }
      }
      redisService.setCacheObject("AQJC_" + order.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
      this.updateById(order);
@@ -963,9 +967,12 @@
         result.setStartTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
         Operator operator = operatorClient.getOperatorById(order.getOperatorId()).getData();
         result.setOperatorID(operator.getOperatorId());
         tcecClient.notificationStartChargeResult(result);
         if(1 == site.getIsOpenSynchronization()){
            tcecClient.notificationStartChargeResult(result);
            tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
         }
         
         tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
      }
   }
   
@@ -1291,8 +1298,9 @@
         log.info(code1 + ":-------------------远程停止充电请求-------------------");
         log.info(platformStopCharging.toString());
      });
      Site site = siteClient.getSiteByIds(Arrays.asList(order.getSiteId())).getData().get(0);
      //推送三方平台
      if (2 == order.getOrderSource()) {
      if (2 == order.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
         tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
      }
      
@@ -1532,6 +1540,7 @@
      if (siteIds.isEmpty()) siteIds.add(-1);
      dto.setSiteIds(siteIds);
      List<ChargingOrderVO> list = this.baseMapper.chargingOrder(pageInfo, dto, startTime1, startTime2, endTime1, endTime2);
      BigDecimal total = new BigDecimal("0");
      long time = 0L;
      BigDecimal electronicMoney = new BigDecimal("0");
@@ -2593,9 +2602,9 @@
         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);
         //推送三方平台
         if (2 == chargingOrder.getOrderSource()) {
         if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
            TChargingOrder finalChargingOrder = chargingOrder;
            new Thread(new Runnable() {
               @Override
@@ -2631,7 +2640,7 @@
         chargingGunClient.updateChargingGunById(chargingGun);
         chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
         //推送状态给三方平台
         if (2 == chargingOrder.getOrderSource()) {
         if (2 == chargingOrder.getOrderSource() && 1 == site.getIsOpenSynchronization()) {
            tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), 2);
         }
         
@@ -2885,7 +2894,6 @@
            tChargingOrder.setStatus(5);
         }
         
         TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
         chargingOrderRefund.setChargingOrderId(tChargingOrder.getId());
         chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2894,7 +2902,7 @@
         chargingOrderRefund.setRefundTime(LocalDateTime.now());
         chargingOrderRefund.setCode(tChargingOrder.getCode());
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
         chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
         chargingOrderRefund.setRefundTitle("后台退款");
         chargingOrderRefund.setRefundContent("后台退款");
         chargingOrderRefund.setRefundReason("后台退款");
@@ -2908,7 +2916,7 @@
            model.setOut_refund_no(chargingOrderRefund.getRefundCode());
            model.setTransaction_id(tChargingOrder.getRechargeSerialNumber());
            model.setReason("取消订单");
            model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
            model.setNotify_url("/payment/wx/refund/notify");
            WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
            amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
            amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue());
@@ -2961,69 +2969,69 @@
         }
      }
      if (payOrderQueryDto.getType() == 2) {
         TShoppingOrder tChargingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId());
         if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
         TShoppingOrder shoppingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId());
         if (shoppingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
            return R.fail("退款金额需小于支付金额");
         }
         if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) {
            tChargingOrder.setStatus(5);
         if ((shoppingOrder.getPaymentAmount().subtract(shoppingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount())) == 0) {
            shoppingOrder.setStatus(5);
         }
         
         TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
         chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
         chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
         chargingOrderRefund.setRefundStatus(1);
         chargingOrderRefund.setPayType(tChargingOrder.getPaymentType());
         chargingOrderRefund.setRefundTime(LocalDateTime.now());
         chargingOrderRefund.setCode(tChargingOrder.getCode());
         TShoppingOrderRefund shoppingOrderRefund = new TShoppingOrderRefund();
         shoppingOrderRefund.setShoppingOrderId(shoppingOrder.getId());
         shoppingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
         shoppingOrderRefund.setRefundStatus(1);
         shoppingOrderRefund.setPayType(shoppingOrder.getPaymentType());
         shoppingOrderRefund.setRefundTime(LocalDateTime.now());
         shoppingOrderRefund.setCode(shoppingOrder.getCode());
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
         chargingOrderRefund.setRefundTitle("后台退款");
         chargingOrderRefund.setRefundContent("后台退款");
         chargingOrderRefund.setRefundReason("后台退款");
         chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
         chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
         chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
         shoppingOrderRefund.setRefundCode("GWF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
         shoppingOrderRefund.setRefundTitle("后台退款");
         shoppingOrderRefund.setRefundContent("后台退款");
         shoppingOrderRefund.setRefundReason("后台退款");
         shoppingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
         shoppingOrderRefund.setRefundTotalAmount(shoppingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
         shoppingOrderRefund.setPayAmount(shoppingOrder.getPaymentAmount());
         
         if (1 == tChargingOrder.getPaymentType()) {
         if (1 == shoppingOrder.getPaymentType()) {
            WxPaymentRefundModel model = new WxPaymentRefundModel();
            model.setOut_trade_no(tChargingOrder.getCode());
            model.setOut_refund_no(chargingOrderRefund.getRefundCode());
            model.setTransaction_id(tChargingOrder.getSerialNumber());
            model.setOut_trade_no(shoppingOrder.getCode());
            model.setOut_refund_no(shoppingOrderRefund.getRefundCode());
            model.setTransaction_id(shoppingOrder.getSerialNumber());
            model.setReason("取消订单");
            model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
            model.setNotify_url("/payment/wx/refund/notify");
            WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
            amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
            amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
            amount.setTotal(shoppingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
            amount.setCurrency("CNY");
            model.setAmount(amount);
            R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
            if (200 == orderR.getCode()) {
               tChargingOrder.setRefundStatus(2);
               tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               shoppingOrderService.updateById(tChargingOrder);
               shoppingOrderRefundService.save(chargingOrderRefund);
               shoppingOrder.setRefundStatus(2);
               shoppingOrder.setRefundAmount((shoppingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : shoppingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               shoppingOrderService.updateById(shoppingOrder);
               shoppingOrderRefundService.save(shoppingOrderRefund);
               //手续费
               Map<String, Object> amount1 = (Map<String, Object>) orderR.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);
               shoppingOrderRefundService.updateById(chargingOrderRefund);
               shoppingOrderRefund.setRefundFee(refund_fee);
               shoppingOrderRefundService.updateById(shoppingOrderRefund);
            }
         }
         
         if (2 == tChargingOrder.getPaymentType()) {
         if (2 == shoppingOrder.getPaymentType()) {
            RefundReq dto = new RefundReq();
            dto.setOutTradeNo(tChargingOrder.getCode());
            dto.setOutRequestNo(tChargingOrder.getCode());
            dto.setOutTradeNo(shoppingOrder.getCode());
            dto.setOutRequestNo(shoppingOrder.getCode());
            dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
            dto.setRefundReason("取消订单");
            RefundResp resp = aliPaymentClient.refund(dto).getData();
            if (null != resp) {
               tChargingOrder.setRefundStatus(2);
               tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               shoppingOrderService.updateById(tChargingOrder);
               shoppingOrderRefundService.save(chargingOrderRefund);
               shoppingOrder.setRefundStatus(2);
               shoppingOrder.setRefundAmount((shoppingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : shoppingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               shoppingOrderService.updateById(shoppingOrder);
               shoppingOrderRefundService.save(shoppingOrderRefund);
            }
         }
//            if(3 == tChargingOrder.getPaymentType()){
@@ -3044,65 +3052,65 @@
      }
      
      if (payOrderQueryDto.getType() == 3) {
         TVipOrder tChargingOrder = vipOrderService.getById(payOrderQueryDto.getOrderId());
         if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
         TVipOrder vipOrder = vipOrderService.getById(payOrderQueryDto.getOrderId());
         if (vipOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount()) == -1) {
            return R.fail("退款金额需小于支付金额");
         }
         TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
         chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
         chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
         chargingOrderRefund.setRefundStatus(1);
         chargingOrderRefund.setPayType(tChargingOrder.getPaymentType());
         chargingOrderRefund.setRefundTime(LocalDateTime.now());
         chargingOrderRefund.setCode(tChargingOrder.getCode());
         TVipOrderRefund vipOrderRefund = new TVipOrderRefund();
         vipOrderRefund.setVipOrderId(vipOrder.getId());
         vipOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
         vipOrderRefund.setRefundStatus(1);
         vipOrderRefund.setPayType(vipOrder.getPaymentType());
         vipOrderRefund.setRefundTime(LocalDateTime.now());
         vipOrderRefund.setCode(vipOrder.getCode());
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         chargingOrderRefund.setRefundCode("GDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
         chargingOrderRefund.setRefundTitle("后台退款");
         chargingOrderRefund.setRefundContent("后台退款");
         chargingOrderRefund.setRefundReason("后台退款");
         chargingOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
         chargingOrderRefund.setRefundTotalAmount(tChargingOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
         chargingOrderRefund.setPayAmount(tChargingOrder.getPaymentAmount());
         vipOrderRefund.setRefundCode("HYF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
         vipOrderRefund.setRefundTitle("后台退款");
         vipOrderRefund.setRefundContent("后台退款");
         vipOrderRefund.setRefundReason("后台退款");
         vipOrderRefund.setRefundRemark(payOrderQueryDto.getRemark());
         vipOrderRefund.setRefundTotalAmount(vipOrder.getRefundAmount().add(payOrderQueryDto.getRefundAmount()));
         vipOrderRefund.setPayAmount(vipOrder.getPaymentAmount());
         
         if (1 == tChargingOrder.getPaymentType()) {
         if (1 == vipOrder.getPaymentType()) {
            WxPaymentRefundModel model = new WxPaymentRefundModel();
            model.setOut_trade_no(tChargingOrder.getCode());
            model.setOut_refund_no(chargingOrderRefund.getRefundCode());
            model.setTransaction_id(tChargingOrder.getSerialNumber());
            model.setOut_trade_no(vipOrder.getCode());
            model.setOut_refund_no(vipOrderRefund.getRefundCode());
            model.setTransaction_id(vipOrder.getSerialNumber());
            model.setReason("取消订单");
            model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
            model.setNotify_url("/payment/wx/refund/notify");
            WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
            amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
            amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
            amount.setTotal(vipOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
            amount.setCurrency("CNY");
            model.setAmount(amount);
            R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
            if (200 == orderR.getCode()) {
               tChargingOrder.setRefundStatus(2);
               tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               vipOrderService.updateById(tChargingOrder);
               vipOrderRefundService.save(chargingOrderRefund);
               vipOrder.setRefundStatus(2);
               vipOrder.setRefundAmount((vipOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : vipOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               vipOrderService.updateById(vipOrder);
               vipOrderRefundService.save(vipOrderRefund);
               //手续费
               Map<String, Object> amount1 = (Map<String, Object>) orderR.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);
               vipOrderRefundService.updateById(chargingOrderRefund);
               vipOrderRefund.setRefundFee(refund_fee);
               vipOrderRefundService.updateById(vipOrderRefund);
            }
         }
         
         if (2 == tChargingOrder.getPaymentType()) {
         if (2 == vipOrder.getPaymentType()) {
            RefundReq dto = new RefundReq();
            dto.setOutTradeNo(tChargingOrder.getCode());
            dto.setOutRequestNo(tChargingOrder.getCode());
            dto.setOutTradeNo(vipOrder.getCode());
            dto.setOutRequestNo(vipOrder.getCode());
            dto.setRefundAmount(payOrderQueryDto.getRefundAmount().toString());
            dto.setRefundReason("取消订单");
            RefundResp resp = aliPaymentClient.refund(dto).getData();
            if (null != resp) {
               tChargingOrder.setRefundStatus(2);
               tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               vipOrderService.updateById(tChargingOrder);
               vipOrderRefundService.save(chargingOrderRefund);
               vipOrder.setRefundStatus(2);
               vipOrder.setRefundAmount((vipOrder.getRefundAmount() == null ? BigDecimal.valueOf(0) : vipOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
               vipOrderService.updateById(vipOrder);
               vipOrderRefundService.save(vipOrderRefund);
            }
         }
//         if(3 == tChargingOrder.getPaymentType()){
@@ -4108,9 +4116,11 @@
//            scheduler.shutdown();
//         }
//      }, 5, 1, TimeUnit.SECONDS);
      //推送三方平台订单状态
      tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
      Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0);
      if(1 == site.getIsOpenSynchronization()){
         //推送三方平台订单状态
         tcecClient.notificationEquipChargeStatus(chargingOrder.getStartChargeSeq(), chargingOrder.getOperatorId());
      }
      return R.ok();
   }
   
@@ -4138,7 +4148,10 @@
      chargingOrder.setStatus(4);
      chargingOrder.setEndMode(1);
      this.updateById(chargingOrder);
      tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
      Site site = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData().get(0);
      if(1 == site.getIsOpenSynchronization()){
         tcecClient.notificationEquipChargeStatus(order.getStartChargeSeq(), order.getOperatorId());
      }
      
      String code1 = order.getCode();
      TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();