Pu Zhibing
2024-10-15 eb7dee0f8a19f540bc9369fc0c72ea72887ec98a
修改bug
2个文件已修改
61 ■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -585,7 +585,7 @@
     */
    @PostMapping("/endChargeBillingCharge")
    public void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){
        log.error("-------------------停止充电返回账单后计算费用-------------------:" + vo);
        log.error("-------------------停止充电返回账单后计算费用及修改业务状态-------------------:" + vo);
        chargingOrderService.endChargeBillingCharge(vo);
    }
    
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1028,12 +1028,11 @@
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    continue;
                }else{
                    log.error(code1 + ":-------------------远程停止充电请求成功-------------------");
                    stop_status = true;
                }
                break;
                }
            }
            if(stop_status){
                chargingOrder.setStatus(5);
@@ -1211,17 +1210,8 @@
            }
            log.error(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
        }else{
            order.setEndTime(LocalDateTime.now());
            order.setStatus(5);
            order.setEndMode(1);
            this.updateById(order);
            //计算用户标签
            editUserTag(order);
            //用户推荐奖励
            referralReward(order);
            // 将枪状态重置为空闲
            chargingGun.setStatus(2);
            chargingGunClient.updateChargingGunById(chargingGun);
        }
    }
    
@@ -1744,13 +1734,21 @@
                if(chargingOrderAccountingStrategy.getAccountingStrategyDetailId().equals(strategyDetail.getId())){
                    //已充电总度数
                    BigDecimal charging_degree = query.getCharging_degree();
                    BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(charging_degree);
                    BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(charging_degree);
                    BigDecimal chargingCapacity = chargingOrderAccountingStrategy.getChargingCapacity();
                    //计算本阶段充电度数
                    BigDecimal subtract = charging_degree.subtract(chargingCapacity);
                    //计算本阶段费用
                    BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(subtract);
                    BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(subtract);
                    BigDecimal serviceCharge = originalServicePrice;
                    //计算优惠金额
                    if(null != chargingOrder.getVipDiscount()){
                        serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
                    }
                    //将本阶段的费用增加到总费用中
                    electrovalenc = electrovalenc.add(chargingOrderAccountingStrategy.getPeriodElectricPrice());
                    originalServicePrice = originalServicePrice.add(chargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
                    serviceCharge = serviceCharge.add(chargingOrderAccountingStrategy.getPeriodServicePrice());
                    chargingOrderAccountingStrategy.setChargingCapacity(charging_degree);
                    chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
                    chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
@@ -1809,23 +1807,8 @@
    @GlobalTransactional(rollbackFor = Exception.class)
    public void endCharge(String orderCode, Integer endMode) {
        TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, orderCode));
        Integer status = chargingOrder.getStatus();
        if(status == 4 || status == 5){
            return;
        }
        chargingOrder.setStatus(5);
        chargingOrder.setEndMode(endMode);
        chargingOrder.setEndTime(LocalDateTime.now());
        this.updateById(chargingOrder);
        // 将枪状态重置为空闲
        TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
        chargingGun.setStatus(2);
        chargingGunClient.updateChargingGunById(chargingGun);
        //计算用户标签
        editUserTag(chargingOrder);
        //用户推荐奖励
        referralReward(chargingOrder);
    }
    /**
@@ -1845,10 +1828,20 @@
    @Override
    @GlobalTransactional(rollbackFor = Exception.class)
    public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
        TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
        Integer status = chargingOrder.getStatus();
        if(status == 4 || status == 5){
            return;
        }
        //计算用户标签
        editUserTag(chargingOrder);
        //用户推荐奖励
        referralReward(chargingOrder);
        //如果使用优惠券需要判断优惠券是否满足使用条件
        //根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
        //退款金额=优惠券金额+剩余充电金额
        TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
        List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
        BigDecimal periodElectricPrice_total = BigDecimal.ZERO;
        BigDecimal periodServicePrice_total = BigDecimal.ZERO;
@@ -1900,9 +1893,12 @@
        if(chargingOrder.getEndMode() == 2){
            chargingOrder.setEndMode(refundAmount.compareTo(BigDecimal.ZERO) > 0 ? 2 : 3);
        }
        chargingOrder.setEndTime(LocalDateTime.now());
        chargingOrder.setStatus(5);
        chargingOrder.setOrderAmount(orderAmount);
        chargingOrder.setVipDiscountAmount(discountAmount);
        chargingOrder.setServiceCharge(periodServicePrice_total);
        chargingOrder.setElectrovalence(periodElectricPrice_total);
        
        //计算优惠券
        if(null != chargingOrder.getAppCouponId()){
@@ -1942,6 +1938,11 @@
        chargingOrder.setPaymentAmount(payAmount);
        this.updateById(chargingOrder);
        
        // 将枪状态重置为空闲
        TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
        chargingGun.setStatus(2);
        chargingGunClient.updateChargingGunById(chargingGun);
        //添加积分
        TIntegralRule integralRule = integralRuleClient.getSet().getData();
        if(null != integralRule){