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 | 20 +++++++++++++++----- 1 files changed, 15 insertions(+), 5 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 d656ae9..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 @@ -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,20 +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()); //每秒需要支付的金额 @@ -585,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)); -- Gitblit v1.7.1