无关风月
2024-11-05 7b6e35d1b1eae38af71687a970d1ae5ac342d5dd
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
1个文件已修改
47 ■■■■ 已修改文件
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1929,26 +1929,26 @@
            }
            
            //已充电总度数
            BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
            BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
            BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.HALF_EVEN);
            BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.HALF_EVEN);
            BigDecimal serviceCharge = originalServicePrice;
            BigDecimal vipDiscountAmount = BigDecimal.ZERO;
            //计算优惠金额
            if(null != chargingOrder.getVipDiscount()){
                vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.DOWN);
                serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
                vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.HALF_EVEN);
                serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.HALF_EVEN);
            }
            chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
            chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(2, RoundingMode.DOWN));
            chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(2, RoundingMode.DOWN));
            chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(2, RoundingMode.DOWN));
            chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(2, RoundingMode.DOWN));
            chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
            chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
            chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
            chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
            chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
            chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
            
            periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc.setScale(2, RoundingMode.DOWN));
            periodServicePrice_total = periodServicePrice_total.add(originalServicePrice.setScale(2, RoundingMode.DOWN));
            total = total.add(electrovalenc.add(originalServicePrice.setScale(2, RoundingMode.DOWN)));
            periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
            periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
            total = total.add(electrovalenc.add(originalServicePrice));
        }
        
        
@@ -1959,6 +1959,7 @@
        //总金额(充值金额+会员折扣金额)
        BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
        //退款金额(已经计算了折扣优惠部分)
        //如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
        BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
        BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
        BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
@@ -1977,8 +1978,6 @@
                
                //服务费折扣
                discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
                periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
                TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
                BigDecimal maximumDeduction = vip.getMaximumDeduction();
                //普通会员有最高优惠限制
@@ -1988,8 +1987,9 @@
            }
        }
        //会员折扣金额
        discountAmount = discountAmount.setScale(2, RoundingMode.DOWN);
        discountAmount = discountAmount.setScale(2, RoundingMode.HALF_EVEN);
        payAmount = payAmount.subtract(discountAmount);
        periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
        
        TChargingOrder order = new TChargingOrder();
        order.setId(chargingOrder.getId());
@@ -2001,13 +2001,13 @@
        }else{
            order.setEndMode(1);
        }
        order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.DOWN));
        order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN));
        order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
        order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
        order.setStatus(5);
        order.setOrderAmount(orderAmount.setScale(2, RoundingMode.DOWN));
        order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
        order.setVipDiscountAmount(discountAmount);
        order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN));
        order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
        order.setChargingCapacity(vo.getTotal_electricity());
        order.setElectricity(vo.getTotal_electricity());
        
@@ -2029,7 +2029,6 @@
                        periodServicePrice_total = BigDecimal.ZERO;
                    }else{
                        couponDiscount = couponDiscountAmount;
                        periodServicePrice_total = periodServicePrice_total.subtract(couponDiscountAmount);
                    }
                    appCoupon.setStatus(2);
                    appCouponClient.updateAppCoupon(appCoupon);
@@ -2051,7 +2050,6 @@
                        periodServicePrice_total = BigDecimal.ZERO;
                    }else{
                        couponDiscount = divide;
                        periodServicePrice_total = periodServicePrice_total.subtract(divide);
                    }
                    
                    appCoupon.setStatus(2);
@@ -2064,13 +2062,16 @@
            }
        }
        //优惠券优惠金额
        couponDiscount = couponDiscount.setScale(2, RoundingMode.DOWN);
        couponDiscount = couponDiscount.setScale(2, RoundingMode.HALF_EVEN);
        refundAmount = refundAmount.add(couponDiscount);
        payAmount = payAmount.subtract(couponDiscount);
        if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
            periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
        }
        order.setCouponDiscountAmount(couponDiscount);
        order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
        order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN));
        order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN));
        order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.HALF_EVEN));
        order.setPaymentAmount(payAmount.setScale(2, RoundingMode.HALF_EVEN));
        order.setRefundAmount(refundAmount.setScale(2, RoundingMode.HALF_EVEN));
        order.setRefundStatus(1);
        this.updateById(order);
        chargingOrder = this.getById(order.getId());