Pu Zhibing
2024-10-18 d21bfc76d4d185b0c882168104e6a60ef390a1fb
合并代码
2个文件已修改
124 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
@@ -23,7 +23,6 @@
    private String trade_date;// 交易日期、时间
    private Integer stop_reason;// 停止原因
    private String physical_card_number;// 物理卡号
    private String billing_model_code1;// 计费模型编号
    private BigDecimal spike_charge1;// 尖电量
    private BigDecimal loss_spike_charge1;// 计损尖电量
    private BigDecimal spike_amount1;// 尖金额
@@ -36,7 +35,6 @@
    private BigDecimal valley_charge1;// 谷电量
    private BigDecimal loss_valley_charge1;// 计损谷电量
    private BigDecimal valley_amount1;// 谷金额
    private String billing_model_code2;// 计费模型编号
    private BigDecimal spike_charge2;// 尖电量
    private BigDecimal loss_spike_charge2;// 计损尖电量
    private BigDecimal spike_amount2;// 尖金额
@@ -49,7 +47,6 @@
    private BigDecimal valley_charge2;// 谷电量
    private BigDecimal loss_valley_charge2;// 计损谷电量
    private BigDecimal valley_amount2;// 谷金额
    private String billing_model_code3;// 计费模型编号
    private BigDecimal spike_charge3;// 尖电量
    private BigDecimal loss_spike_charge3;// 计损尖电量
    private BigDecimal spike_amount3;// 尖金额
@@ -62,7 +59,6 @@
    private BigDecimal valley_charge3;// 谷电量
    private BigDecimal loss_valley_charge3;// 计损谷电量
    private BigDecimal valley_amount3;// 谷金额
    private String billing_model_code4;// 计费模型编号
    private BigDecimal spike_charge4;// 尖电量
    private BigDecimal loss_spike_charge4;// 计损尖电量
    private BigDecimal spike_amount4;// 尖金额
@@ -75,7 +71,6 @@
    private BigDecimal valley_charge4;// 谷电量
    private BigDecimal loss_valley_charge4;// 计损谷电量
    private BigDecimal valley_amount4;// 谷金额
    private String billing_model_code5;// 计费模型编号
    private BigDecimal spike_charge5;// 尖电量
    private BigDecimal loss_spike_charge5;// 计损尖电量
    private BigDecimal spike_amount5;// 尖金额
@@ -88,7 +83,6 @@
    private BigDecimal valley_charge5;// 谷电量
    private BigDecimal loss_valley_charge5;// 计损谷电量
    private BigDecimal valley_amount5;// 谷金额
    private String billing_model_code6;// 计费模型编号
    private BigDecimal spike_charge6;// 尖电量
    private BigDecimal loss_spike_charge6;// 计损尖电量
    private BigDecimal spike_amount6;// 尖金额
@@ -101,7 +95,6 @@
    private BigDecimal valley_charge6;// 谷电量
    private BigDecimal loss_valley_charge6;// 计损谷电量
    private BigDecimal valley_amount6;// 谷金额
    private String billing_model_code7;// 计费模型编号
    private BigDecimal spike_charge7;// 尖电量
    private BigDecimal loss_spike_charge7;// 计损尖电量
    private BigDecimal spike_amount7;// 尖金额
@@ -114,7 +107,6 @@
    private BigDecimal valley_charge7;// 谷电量
    private BigDecimal loss_valley_charge7;// 计损谷电量
    private BigDecimal valley_amount7;// 谷金额
    private String billing_model_code8;// 计费模型编号
    private BigDecimal spike_charge8;// 尖电量
    private BigDecimal loss_spike_charge8;// 计损尖电量
    private BigDecimal spike_amount8;// 尖金额
@@ -127,7 +119,6 @@
    private BigDecimal valley_charge8;// 谷电量
    private BigDecimal loss_valley_charge8;// 计损谷电量
    private BigDecimal valley_amount8;// 谷金额
    private String billing_model_code9;// 计费模型编号
    private BigDecimal spike_charge9;// 尖电量
    private BigDecimal loss_spike_charge9;// 计损尖电量
    private BigDecimal spike_amount9;// 尖金额
@@ -140,7 +131,6 @@
    private BigDecimal valley_charge9;// 谷电量
    private BigDecimal loss_valley_charge9;// 计损谷电量
    private BigDecimal valley_amount9;// 谷金额
    private String billing_model_code10;// 计费模型编号
    private BigDecimal spike_charge10;// 尖电量
    private BigDecimal loss_spike_charge10;// 计损尖电量
    private BigDecimal spike_amount10;// 尖金额
@@ -153,7 +143,6 @@
    private BigDecimal valley_charge10;// 谷电量
    private BigDecimal loss_valley_charge10;// 计损谷电量
    private BigDecimal valley_amount10;// 谷金额
    private String billing_model_code11;// 计费模型编号
    private BigDecimal spike_charge11;// 尖电量
    private BigDecimal loss_spike_charge11;// 计损尖电量
    private BigDecimal spike_amount11;// 尖金额
@@ -166,7 +155,6 @@
    private BigDecimal valley_charge11;// 谷电量
    private BigDecimal loss_valley_charge11;// 计损谷电量
    private BigDecimal valley_amount11;// 谷金额
    private String billing_model_code12;// 计费模型编号
    private BigDecimal spike_charge12;// 尖电量
    private BigDecimal loss_spike_charge12;// 计损尖电量
    private BigDecimal spike_amount12;// 尖金额
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1781,67 +1781,63 @@
        //获取订单的计费策略
        List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
        chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
        for (int i = 0; i < 12; i++) {
        for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
            Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
            try {
                Object invoke1 = clazz.getMethod("getBilling_model_code" + (i + 1)).invoke(vo);
                if(null != invoke1){
                    Integer id = Integer.valueOf(invoke1.toString());
                    AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getId().equals(id)).findFirst().get();
                    //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
                    Object invoke = null;
                    switch (strategyDetail.getType()){
                        case 1:
                            //充电度数
                            invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
                            break;
                        case 2:
                            //充电度数
                            invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
                            break;
                        case 3:
                            //充电度数
                            invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo);
                            break;
                        case 4:
                            //充电度数
                            invoke = clazz.getMethod("getValley_amount" + (i + 1)).invoke(vo);
                            break;
                    }
                    if(null == invoke || invoke.toString().equals("0")){
                        continue;
                    }
                    BigDecimal Sharp_peak_charge = new BigDecimal(invoke.toString());
                    TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
                    chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
                    chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
                    chargingOrderAccountingStrategy.setType(strategyDetail.getType());
                    chargingOrderAccountingStrategy.setStartTime(chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm")));
                    chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
                    chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
                    chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
                    chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
                    //已充电总度数
                    BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(Sharp_peak_charge);
                    BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(Sharp_peak_charge);
                    BigDecimal serviceCharge = originalServicePrice;
                    //计算优惠金额
                    if(null != chargingOrder.getVipDiscount()){
                        serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
                    }
                    chargingOrderAccountingStrategy.setChargingCapacity(Sharp_peak_charge);
                    chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
                    chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
                    chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
                    chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
                    chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
                    BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
                    BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
                    periodElectricPrice_total = periodElectricPrice_total.add(periodElectricPrice);
                    periodServicePrice_total = periodServicePrice_total.add(periodServicePrice);
                    total = total.add(periodElectricPrice).add(periodServicePrice);
                AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.get(i);
                //阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)
                Object invoke = null;
                switch (strategyDetail.getType()){
                    case 1:
                        //充电度数
                        invoke = clazz.getMethod("getSpike_charge" + (i + 1)).invoke(vo);
                        break;
                    case 2:
                        //充电度数
                        invoke = clazz.getMethod("getPeak_charge" + (i + 1)).invoke(vo);
                        break;
                    case 3:
                        //充电度数
                        invoke = clazz.getMethod("getFlat_charge" + (i + 1)).invoke(vo);
                        break;
                    case 4:
                        //充电度数
                        invoke = clazz.getMethod("getValley_amount" + (i + 1)).invoke(vo);
                        break;
                }
                if(null == invoke || invoke.toString().equals("0")){
                    continue;
                }
                BigDecimal Sharp_peak_charge = new BigDecimal(invoke.toString());
                TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
                chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
                chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
                chargingOrderAccountingStrategy.setType(strategyDetail.getType());
                chargingOrderAccountingStrategy.setStartTime(chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm")));
                chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
                chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
                chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
                chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
                //已充电总度数
                BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(Sharp_peak_charge);
                BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(Sharp_peak_charge);
                BigDecimal serviceCharge = originalServicePrice;
                //计算优惠金额
                if(null != chargingOrder.getVipDiscount()){
                    serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
                }
                chargingOrderAccountingStrategy.setChargingCapacity(Sharp_peak_charge);
                chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
                chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
                chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
                chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
                chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
                BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
                BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
                periodElectricPrice_total = periodElectricPrice_total.add(periodElectricPrice);
                periodServicePrice_total = periodServicePrice_total.add(periodServicePrice);
                total = total.add(periodElectricPrice).add(periodServicePrice);
            } catch (IllegalAccessException e) {
                throw new RuntimeException(e);
            } catch (InvocationTargetException e) {