ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
@@ -20,22 +20,6 @@ private String charging_gun_code;// 抢号 private String start_time;// 开始时间 private String end_time;// 结束时间 private BigDecimal sharp_peak_unit_price;// 尖单价 private BigDecimal sharp_peak_charge;// 尖电量 private BigDecimal loss_sharp_peak_charge;// 计损尖电量 private BigDecimal sharp_peak_amount;// 尖金额 private BigDecimal peak_unit_price;// 峰单价 private BigDecimal peak_charge;// 峰电量 private BigDecimal loss_peak_charge;// 计损峰电量 private BigDecimal peak_amount;// 峰金额 private BigDecimal flat_peak_unit_price;// 平单价 private BigDecimal flat_peak_charge;// 平电量 private BigDecimal loss_flat_peak_charge;// 计损平电量 private BigDecimal flat_peak_amount;// 平金额 private BigDecimal low_peak_unit_price;// 谷单价 private BigDecimal low_peak_charge;// 谷电量 private BigDecimal loss_low_peak_charge;// 计损谷电量 private BigDecimal low_peak_amount;// 谷金额 private BigDecimal total_initial_value;// 电表总起值 private BigDecimal total_stop_value;// 电表总止值 private BigDecimal total_electricity;// 总电量 @@ -46,6 +30,54 @@ private String trade_date;// 交易日期、时间 private Integer stop_reason;// 停止原因 private String physical_card_number;// 物理卡号 private String time1;// 计费时段 private BigDecimal sharp_peak_charge1;// 电量 private BigDecimal loss_sharp_peak_charge1;// 计损电量 private BigDecimal sharp_peak_amount1;// 金额 private String time2;// 计费时段 private BigDecimal sharp_peak_charge2;// 电量 private BigDecimal loss_sharp_peak_charge2;// 计损电量 private BigDecimal sharp_peak_amount2;// 金额 private String time3;// 计费时段 private BigDecimal sharp_peak_charge3;// 电量 private BigDecimal loss_sharp_peak_charge3;// 计损电量 private BigDecimal sharp_peak_amount3;// 金额 private String time4;// 计费时段 private BigDecimal sharp_peak_charge4;// 电量 private BigDecimal loss_sharp_peak_charge4;// 计损电量 private BigDecimal sharp_peak_amount4;// 金额 private String time5;// 计费时段 private BigDecimal sharp_peak_charge5;// 电量 private BigDecimal loss_sharp_peak_charge5;// 计损电量 private BigDecimal sharp_peak_amount5;// 金额 private String time6;// 计费时段 private BigDecimal sharp_peak_charge6;// 电量 private BigDecimal loss_sharp_peak_charge6;// 计损电量 private BigDecimal sharp_peak_amount6;// 金额 private String time7;// 计费时段 private BigDecimal sharp_peak_charge7;// 电量 private BigDecimal loss_sharp_peak_charge7;// 计损电量 private BigDecimal sharp_peak_amount7;// 金额 private String time8;// 计费时段 private BigDecimal sharp_peak_charge8;// 电量 private BigDecimal loss_sharp_peak_charge8;// 计损电量 private BigDecimal sharp_peak_amount8;// 金额 private String time9;// 计费时段 private BigDecimal sharp_peak_charge9;// 电量 private BigDecimal loss_sharp_peak_charge9;// 计损电量 private BigDecimal sharp_peak_amount9;// 金额 private String time10;// 计费时段 private BigDecimal sharp_peak_charge10;// 电量 private BigDecimal loss_sharp_peak_charge10;// 计损电量 private BigDecimal sharp_peak_amount10;// 金额 private String time11;// 计费时段 private BigDecimal sharp_peak_charge11;// 电量 private BigDecimal loss_sharp_peak_charge11;// 计损电量 private BigDecimal sharp_peak_amount11;// 金额 private String time12;// 计费时段 private BigDecimal sharp_peak_charge12;// 电量 private BigDecimal loss_sharp_peak_charge12;// 计损电量 private BigDecimal sharp_peak_amount12;// 金额 } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
@@ -16,22 +16,6 @@ private String charging_gun_code;// 抢号 private String start_time;// 开始时间 private String end_time;// 结束时间 private BigDecimal sharp_peak_unit_price;// 尖单价 private BigDecimal sharp_peak_charge;// 尖电量 private BigDecimal loss_sharp_peak_charge;// 计损尖电量 private BigDecimal sharp_peak_amount;// 尖金额 private BigDecimal peak_unit_price;// 峰单价 private BigDecimal peak_charge;// 峰电量 private BigDecimal loss_peak_charge;// 计损峰电量 private BigDecimal peak_amount;// 峰金额 private BigDecimal flat_peak_unit_price;// 平单价 private BigDecimal flat_peak_charge;// 平电量 private BigDecimal loss_flat_peak_charge;// 计损平电量 private BigDecimal flat_peak_amount;// 平金额 private BigDecimal low_peak_unit_price;// 谷单价 private BigDecimal low_peak_charge;// 谷电量 private BigDecimal loss_low_peak_charge;// 计损谷电量 private BigDecimal low_peak_amount;// 谷金额 private BigDecimal total_initial_value;// 电表总起值 private BigDecimal total_stop_value;// 电表总止值 private BigDecimal total_electricity;// 总电量 @@ -42,6 +26,54 @@ private String trade_date;// 交易日期、时间 private Integer stop_reason;// 停止原因 private String physical_card_number;// 物理卡号 private String time1;// 计费时段 private BigDecimal sharp_peak_charge1;// 电量 private BigDecimal loss_sharp_peak_charge1;// 计损电量 private BigDecimal sharp_peak_amount1;// 金额 private String time2;// 计费时段 private BigDecimal sharp_peak_charge2;// 电量 private BigDecimal loss_sharp_peak_charge2;// 计损电量 private BigDecimal sharp_peak_amount2;// 金额 private String time3;// 计费时段 private BigDecimal sharp_peak_charge3;// 电量 private BigDecimal loss_sharp_peak_charge3;// 计损电量 private BigDecimal sharp_peak_amount3;// 金额 private String time4;// 计费时段 private BigDecimal sharp_peak_charge4;// 电量 private BigDecimal loss_sharp_peak_charge4;// 计损电量 private BigDecimal sharp_peak_amount4;// 金额 private String time5;// 计费时段 private BigDecimal sharp_peak_charge5;// 电量 private BigDecimal loss_sharp_peak_charge5;// 计损电量 private BigDecimal sharp_peak_amount5;// 金额 private String time6;// 计费时段 private BigDecimal sharp_peak_charge6;// 电量 private BigDecimal loss_sharp_peak_charge6;// 计损电量 private BigDecimal sharp_peak_amount6;// 金额 private String time7;// 计费时段 private BigDecimal sharp_peak_charge7;// 电量 private BigDecimal loss_sharp_peak_charge7;// 计损电量 private BigDecimal sharp_peak_amount7;// 金额 private String time8;// 计费时段 private BigDecimal sharp_peak_charge8;// 电量 private BigDecimal loss_sharp_peak_charge8;// 计损电量 private BigDecimal sharp_peak_amount8;// 金额 private String time9;// 计费时段 private BigDecimal sharp_peak_charge9;// 电量 private BigDecimal loss_sharp_peak_charge9;// 计损电量 private BigDecimal sharp_peak_amount9;// 金额 private String time10;// 计费时段 private BigDecimal sharp_peak_charge10;// 电量 private BigDecimal loss_sharp_peak_charge10;// 计损电量 private BigDecimal sharp_peak_amount10;// 金额 private String time11;// 计费时段 private BigDecimal sharp_peak_charge11;// 电量 private BigDecimal loss_sharp_peak_charge11;// 计损电量 private BigDecimal sharp_peak_amount11;// 金额 private String time12;// 计费时段 private BigDecimal sharp_peak_charge12;// 电量 private BigDecimal loss_sharp_peak_charge12;// 计损电量 private BigDecimal sharp_peak_amount12;// 金额 } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/model/TransactionRecordMessage.java
@@ -19,22 +19,6 @@ private String charging_gun_code;// 抢号 private String start_time;// 开始时间 private String end_time;// 结束时间 private BigDecimal sharp_peak_unit_price;// 尖单价 private BigDecimal sharp_peak_charge;// 尖电量 private BigDecimal loss_sharp_peak_charge;// 计损尖电量 private BigDecimal sharp_peak_amount;// 尖金额 private BigDecimal peak_unit_price;// 峰单价 private BigDecimal peak_charge;// 峰电量 private BigDecimal loss_peak_charge;// 计损峰电量 private BigDecimal peak_amount;// 峰金额 private BigDecimal flat_peak_unit_price;// 平单价 private BigDecimal flat_peak_charge;// 平电量 private BigDecimal loss_flat_peak_charge;// 计损平电量 private BigDecimal flat_peak_amount;// 平金额 private BigDecimal low_peak_unit_price;// 谷单价 private BigDecimal low_peak_charge;// 谷电量 private BigDecimal loss_low_peak_charge;// 计损谷电量 private BigDecimal low_peak_amount;// 谷金额 private BigDecimal total_initial_value;// 电表总起值 private BigDecimal total_stop_value;// 电表总止值 private BigDecimal total_electricity;// 总电量 @@ -45,6 +29,54 @@ private String trade_date;// 交易日期、时间 private Integer stop_reason;// 停止原因 private String physical_card_number;// 物理卡号 private String time1;// 计费时段 private BigDecimal sharp_peak_charge1;// 电量 private BigDecimal loss_sharp_peak_charge1;// 计损电量 private BigDecimal sharp_peak_amount1;// 金额 private String time2;// 计费时段 private BigDecimal sharp_peak_charge2;// 电量 private BigDecimal loss_sharp_peak_charge2;// 计损电量 private BigDecimal sharp_peak_amount2;// 金额 private String time3;// 计费时段 private BigDecimal sharp_peak_charge3;// 电量 private BigDecimal loss_sharp_peak_charge3;// 计损电量 private BigDecimal sharp_peak_amount3;// 金额 private String time4;// 计费时段 private BigDecimal sharp_peak_charge4;// 电量 private BigDecimal loss_sharp_peak_charge4;// 计损电量 private BigDecimal sharp_peak_amount4;// 金额 private String time5;// 计费时段 private BigDecimal sharp_peak_charge5;// 电量 private BigDecimal loss_sharp_peak_charge5;// 计损电量 private BigDecimal sharp_peak_amount5;// 金额 private String time6;// 计费时段 private BigDecimal sharp_peak_charge6;// 电量 private BigDecimal loss_sharp_peak_charge6;// 计损电量 private BigDecimal sharp_peak_amount6;// 金额 private String time7;// 计费时段 private BigDecimal sharp_peak_charge7;// 电量 private BigDecimal loss_sharp_peak_charge7;// 计损电量 private BigDecimal sharp_peak_amount7;// 金额 private String time8;// 计费时段 private BigDecimal sharp_peak_charge8;// 电量 private BigDecimal loss_sharp_peak_charge8;// 计损电量 private BigDecimal sharp_peak_amount8;// 金额 private String time9;// 计费时段 private BigDecimal sharp_peak_charge9;// 电量 private BigDecimal loss_sharp_peak_charge9;// 计损电量 private BigDecimal sharp_peak_amount9;// 金额 private String time10;// 计费时段 private BigDecimal sharp_peak_charge10;// 电量 private BigDecimal loss_sharp_peak_charge10;// 计损电量 private BigDecimal sharp_peak_amount10;// 金额 private String time11;// 计费时段 private BigDecimal sharp_peak_charge11;// 电量 private BigDecimal loss_sharp_peak_charge11;// 计损电量 private BigDecimal sharp_peak_amount11;// 金额 private String time12;// 计费时段 private BigDecimal sharp_peak_charge12;// 电量 private BigDecimal loss_sharp_peak_charge12;// 计损电量 private BigDecimal sharp_peak_amount12;// 金额 } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -65,6 +65,7 @@ import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.lang.reflect.InvocationTargetException; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; @@ -146,9 +147,6 @@ @Resource private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient; @Resource private AccountingStrategyOrderClient accountingStrategyOrderClient; @Resource private AccountingStrategyClient accountingStrategyClient; @@ -1843,25 +1841,6 @@ return; } //先判断总的充电度数是否和总报文消息中的数据相同,不相同等待30s UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); if(null != uploadRealTimeMonitoringData){ for (int i = 0; i < 30; i++) { List<TChargingOrderAccountingStrategy> list1 = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())); BigDecimal reduce = list1.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal charging_degree = uploadRealTimeMonitoringData.getCharging_degree(); if(charging_degree.compareTo(reduce) != 0){ try { Thread.sleep(1000); } catch (InterruptedException e) { throw new RuntimeException(e); } }else{ break; } } } //计算用户标签 editUserTag(chargingOrder); //用户推荐奖励 @@ -1870,17 +1849,68 @@ //如果使用优惠券需要判断优惠券是否满足使用条件 //根据实际的充电金额计算退款金额 退回费用=(原金额/总金额)*(总金额-实际充电金额) //退款金额=优惠券金额+剩余充电金额 List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId())); BigDecimal periodElectricPrice_total = BigDecimal.ZERO; BigDecimal periodServicePrice_total = BigDecimal.ZERO; BigDecimal total = BigDecimal.ZERO; for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) { 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); //获取订单的计费策略 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++) { Class<? extends TransactionRecordMessageVO> clazz = vo.getClass(); try { String time = (String) clazz.getMethod("getTime" + (i + 1)).invoke(vo); if(StringUtils.hasLength(time)){ //充电度数 Object invoke = clazz.getMethod("getSharp_peak_charge" + (i + 1)).invoke(vo); BigDecimal Sharp_peak_charge = new BigDecimal(invoke.toString()); //充电金额 Object invoke1 = clazz.getMethod("getSharp_peak_amount" + (i + 1)).invoke(vo); BigDecimal sharp_peak_amount = new BigDecimal(invoke1.toString()); String[] split = time.split("~"); AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderList.stream().filter(s -> s.getStartTime().equals(split[1]) && s.getEndTime().equals(split[2])).findFirst().get(); 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) { throw new RuntimeException(e); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } } //原金额 BigDecimal rechargeAmount = chargingOrder.getRechargeAmount(); BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount(); @@ -1927,6 +1957,7 @@ if(null == chargingOrder.getEndMode()){ order.setEndMode(1); } order.setResidualAmount(rechargeAmount.subtract(total)); order.setEndTime(LocalDateTime.now()); order.setStatus(5); order.setOrderAmount(orderAmount); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -297,7 +297,7 @@ String keyword = jsonObject1.getString("keyword"); Integer prob = jsonObject1.getInteger("prob"); if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){ content = content.replaceAll(keyword, "***"); return AjaxResult.error("评价包含违规内容,请重新评价!"); } } }