From 0ce1f94a0f262a8831f8eb9fd5cf67422dd1d69b Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 27 九月 2024 12:07:38 +0800 Subject: [PATCH] 合併代碼 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 41 ++++++++++++++++++++++++++++------------- 1 files changed, 28 insertions(+), 13 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index 964eaa8..1660c2d 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -498,7 +498,7 @@ paymentOrder.setAmount(addChargingOrder.getPaymentAmount()); paymentOrder.setOpenId(appUser.getWxOpenid()); paymentOrder.setDescription("充电充值"); - paymentOrder.setNotifyUrl("/order/t-charging-order/chargingOrderWXCallback"); + paymentOrder.setNotifyUrl("/payment/wx/pay/notify"); Map<String, Object> data = wxPaymentClient.orderPay(paymentOrder).getData(); return AjaxResult.success(data); } @@ -511,7 +511,7 @@ req.setBody("充电充值"); AliPaymentResp data = aliPaymentClient.payment(req).getData(); if(null != data){ - data.setNotifyUrl(data.getNotifyUrl() + "/t-charging-order/chargingOrderALICallback"); + data.setNotifyUrl(data.getNotifyUrl() + "/order/t-charging-order/chargingOrderALICallback"); return AjaxResult.success(data); } } @@ -550,7 +550,9 @@ //根据当前充值的金额和计费模板算出充电的金额 BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); BigDecimal rechargeAmount1 = new BigDecimal(rechargeAmount.toString()); - Long now = System.currentTimeMillis(); + SimpleDateFormat sdf = new SimpleDateFormat("HHmm"); + Long now = Long.valueOf(sdf.format(new Date())); + Long nowTimeMillis = System.currentTimeMillis(); //根据支付金额,获取出使用的计费策略明细 //计算电费金额和服务费 BigDecimal serviceCharge = BigDecimal.ZERO; @@ -559,21 +561,27 @@ BigDecimal discount = chargingOrder.getVipDiscount(); //先根据额定功率计算出每秒充电度数,然后计算出支付金额能充多少度电 TChargingGun tChargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData(); - BigDecimal s_degrees = tChargingGun.getRatedPower().divide(new BigDecimal(3600)); - - + BigDecimal s_degrees = tChargingGun.getRatedPower().divide(new BigDecimal(3600), 6, RoundingMode.HALF_EVEN); + TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); List<AccountingStrategyDetailOrder> list = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData(); for (AccountingStrategyDetailOrder accountingStrategyDetailOrder : list) { - AccountingStrategyOrder accountingStrategyOrder = accountingStrategyOrderClient.getAccountingStrategyOrderById(accountingStrategyDetailOrder.getAccountingStrategyOrderId()).getData(); Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", "")); + Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", "")); String[] split = accountingStrategyDetailOrder.getEndTime().split(":"); - if(now >= start){ + if(now >= start && now < end){ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); calendar.set(Calendar.MINUTE, Integer.valueOf(split[1])); //到此策略结束的秒数 - long m = (calendar.getTimeInMillis() - now) / 1000; + if(null == nowTimeMillis){ + String[] split1 = accountingStrategyDetailOrder.getStartTime().split(":"); + Calendar calendar1 = Calendar.getInstance(); + calendar1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0])); + calendar1.set(Calendar.MINUTE, Integer.valueOf(split1[1])); + nowTimeMillis = calendar.getTimeInMillis(); + } + long m = (calendar.getTimeInMillis() - nowTimeMillis) / 1000; //每度电的单价 BigDecimal total_unit = accountingStrategyDetailOrder.getElectrovalence().add(accountingStrategyDetailOrder.getServiceCharge()); //每秒需要支付的金额 @@ -586,6 +594,7 @@ serviceCharge = accountingStrategyDetailOrder.getServiceCharge().multiply(s_degrees).multiply(new BigDecimal(m)); discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10)))); rechargeAmount1 = rechargeAmount1.subtract(multiply.multiply(new BigDecimal(m))); + nowTimeMillis = null; }else{ electrovalence = accountingStrategyDetailOrder.getElectrovalence().multiply(s_degrees).multiply(new BigDecimal(times)); serviceCharge = accountingStrategyDetailOrder.getServiceCharge().multiply(s_degrees).multiply(new BigDecimal(times)); @@ -631,6 +640,10 @@ //使用订单id作为逻辑卡号 platformStartCharging.setCard_number(chargingOrder.getId().toString()); platformStartCharging.setAccount_balance(electrovalence); + + System.err.println("-------------------远程调起开始充电请求-------------------"); + System.err.println(platformStartCharging.toString()); + sendMessageClient.platformStartCharging(platformStartCharging); //异步线程检测远程启动的应答结果。如果失败,则需要全额退款 String code = chargingOrder.getCode(); @@ -638,6 +651,8 @@ ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(()->{ List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData(); + System.err.println("-------------------开始检查调起充电结果-------------------"); + System.err.println(data.toString()); if(data.size() != 0){ PlatformStartChargingReply platformStartChargingReply = data.get(1); Integer startup_result = platformStartChargingReply.getStartup_result(); @@ -712,7 +727,7 @@ model.setOut_trade_no(chargingOrder.getCode()); model.setOut_refund_no(chargingOrderRefund.getRefundCode()); model.setReason("充电失败,取消充电订单"); - model.setNotify_url("/order/t-charging-order/chargingOrderStartupFailureWxRefund"); + model.setNotify_url("/payment/wx/refund/notify"); WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); amount.setRefund(rechargeAmount.multiply(new BigDecimal(100)).intValue()); amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue()); @@ -1116,7 +1131,7 @@ model.setOut_trade_no(chargingOrder.getCode()); model.setOut_refund_no(chargingOrderRefund.getRefundCode()); model.setReason("充电完成退款"); - model.setNotify_url("http://221.182.45.100:9000/order/t-charging-order/chargingOrderStartupFailureWxRefund"); + model.setNotify_url("/payment/wx/refund/notify"); WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue()); amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue()); @@ -1901,7 +1916,7 @@ model.setOut_refund_no(chargingOrderRefund.getRefundCode()); model.setTransaction_id(tChargingOrder.getRechargeSerialNumber()); model.setReason("取消订单"); - model.setNotify_url("http://221.182.45.100:9000/order/t-shopping-order/cancelShoppingOrderWxRefund"); + model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund"); WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue()); amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue()); @@ -1956,7 +1971,7 @@ model.setOut_refund_no(chargingOrderRefund.getRefundCode()); model.setTransaction_id(tChargingOrder.getSerialNumber()); model.setReason("取消订单"); - model.setNotify_url("http://221.182.45.100:9000/order/t-shopping-order/cancelShoppingOrderWxRefund"); + model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund"); WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue()); amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue()); -- Gitblit v1.7.1