From 9bc378e6bb9b4563a0dec222e1c2d5d3278632cb Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 17 九月 2025 17:41:54 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java | 693 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 511 insertions(+), 182 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java index 180b53b..7ff9bac 100644 --- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java +++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java @@ -1,182 +1,511 @@ -package com.ruoyi.order; - -import com.alibaba.fastjson2.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.ruoyi.account.api.feignClient.*; -import com.ruoyi.account.api.model.TAppUserCar; -import com.ruoyi.chargingPile.api.feignClient.*; -import com.ruoyi.chargingPile.api.model.Site; -import com.ruoyi.chargingPile.api.model.TChargingGun; -import com.ruoyi.chargingPile.api.model.TChargingPile; -import com.ruoyi.common.core.web.domain.AjaxResult; -import com.ruoyi.common.redis.service.RedisService; -import com.ruoyi.common.security.service.TokenService; -import com.ruoyi.integration.api.feignClient.*; -import com.ruoyi.integration.api.model.ChargingHandshake; -import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; -import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient; -import com.ruoyi.order.api.model.TChargingOrder; -import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; -import com.ruoyi.order.api.vo.AccountingStrategyDetailOrderVo; -import com.ruoyi.order.api.vo.ChargingOrderInfoVO; -import com.ruoyi.order.api.vo.TransactionRecordMessageVO; -import com.ruoyi.order.dto.ChargingDetails; -import com.ruoyi.order.dto.MyChargingOrderInfo; -import com.ruoyi.order.mapper.TSettlementConfirmMapper; -import com.ruoyi.order.service.*; -import com.ruoyi.order.vo.EndOfChargePageInfo; -import com.ruoyi.other.api.feignClient.IntegralRuleClient; -import com.ruoyi.other.api.feignClient.UserTagClient; -import com.ruoyi.other.api.feignClient.VipClient; -import com.ruoyi.payment.api.feignClient.AliPaymentClient; -import com.ruoyi.payment.api.feignClient.WxPaymentClient; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -import javax.annotation.Resource; -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class) -public class RuoYiOrderApplicationTests { - - @Resource - private TChargingOrderService chargingOrderService; - - @Resource - private ChargingGunClient chargingGunClient; - @Resource - private TSettlementConfirmMapper tSettlementConfirmMapper; - - @Resource - private SiteClient siteClient; - - @Resource - private AppUserCarClient appUserCarClient; - @Resource - private AppUserClient appUserClient; - - @Resource - private ChargingPileClient chargingPileClient; - - @Resource - private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; - - @Resource - private TokenService tokenService; - - @Resource - private WxPaymentClient wxPaymentClient; - - @Resource - private AliPaymentClient aliPaymentClient; - - @Resource - private AppCouponClient appCouponClient; - - @Resource - private AppUserVipDetailClient appUserVipDetailClient; - - @Resource - private RedisService redisService; - - @Resource - private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; - - @Resource - private ChargingHandshakeClient chargingHandshakeClient; - - @Resource - private SendMessageClient sendMessageClient; - - @Resource - private TOrderEvaluateService orderEvaluateService; - - @Resource - private AccountingStrategyDetailClient accountingStrategyDetailClient; - - @Resource - private AccountingStrategyDetailOrderClient accountingStrategyDetailOrderClient; - - @Resource - private AccountingStrategyClient accountingStrategyClient; - - @Resource - private PlatformStartChargingReplyClient platformStartChargingReplyClient; - - @Resource - private TChargingOrderRefundService chargingOrderRefundService; - - @Resource - private PlatformStopChargingReplyClient platformStopChargingReplyClient; - - @Resource - private AccountingStrategyOrderService accountingStrategyOrderService; - - @Resource - private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService; - - @Resource - private InviteUserClient inviteUserClient; - - @Resource - private AppUserIntegralChangeClient appUserIntegralChangeClient; - - @Resource - private IntegralRuleClient integralRuleClient; - - @Resource - private VipClient vipClient; - - @Resource - private UserTagClient userTagClient; - - @Resource - private AppUserTagClient appUserTagClient; - - @Resource - private SecurityDetectionClient securityDetectionClient; - - - @Test - public void test(){ -// TransactionRecordMessageVO vo = JSON.parseObject("{\n" + -// "\t\"charging_gun_code\": \"02\",\n" + -// "\t\"charging_pile_code\": \"2024123100001003\",\n" + -// "\t\"end_time\": \"2025-02-12 00:32:18.00\",\n" + -// "\t\"flat_amount2\": 0.000000,\n" + -// "\t\"flat_amount4\": 0.000000,\n" + -// "\t\"flat_amount6\": 0.000000,\n" + -// "\t\"flat_charge2\": 0.000000,\n" + -// "\t\"flat_charge4\": 0.000000,\n" + -// "\t\"flat_charge6\": 0.000000,\n" + -// "\t\"loss_peak_charge3\": 0,\n" + -// "\t\"loss_peak_charge5\": 0,\n" + -// "\t\"loss_total_electricity\": 0,\n" + -// "\t\"loss_valley_charge1\": 0,\n" + -// "\t\"loss_valley_charge7\": 0,\n" + -// "\t\"payment_amount\": 41.650000,\n" + -// "\t\"peak_amount3\": 0.000000,\n" + -// "\t\"peak_amount5\": 0.000000,\n" + -// "\t\"peak_charge3\": 0.000000,\n" + -// "\t\"peak_charge5\": 0.000000,\n" + -// "\t\"physical_card_number\": \"1234567812345678\",\n" + -// "\t\"result\": \"{\\\"service_id\\\":\\\"transaction_record\\\",\\\"transaction_serial_number\\\":\\\"CD69120250211231439794\\\",\\\"charging_pile_code\\\":\\\"2024123100001003\\\",\\\"charging_gun_code\\\":\\\"02\\\",\\\"start_time\\\":\\\"2025-02-11 23:14:46.00\\\",\\\"end_time\\\":\\\"2025-02-12 00:32:18.00\\\",\\\"valley_charge1\\\":\\\"16.516000\\\",\\\"loss_valley_charge1\\\":\\\"0\\\",\\\"valley_amount1\\\":\\\"12.380000\\\",\\\"flat_charge2\\\":\\\"0.000000\\\",\\\"loss_flat_charg2\\\":\\\"0\\\",\\\"flat_amount2\\\":\\\"0.000000\\\",\\\"peak_charge3\\\":\\\"0.000000\\\",\\\"loss_peak_charge3\\\":\\\"0\\\",\\\"peak_amount3\\\":\\\"0.000000\\\",\\\"flat_charge4\\\":\\\"0.000000\\\",\\\"loss_flat_charg4\\\":\\\"0\\\",\\\"flat_amount4\\\":\\\"0.000000\\\",\\\"peak_charge5\\\":\\\"0.000000\\\",\\\"loss_peak_charge5\\\":\\\"0\\\",\\\"peak_amount5\\\":\\\"0.000000\\\",\\\"flat_charge6\\\":\\\"0.000000\\\",\\\"loss_flat_charg6\\\":\\\"0\\\",\\\"flat_amount6\\\":\\\"0.000000\\\",\\\"valley_charge7\\\":\\\"39.045000\\\",\\\"loss_valley_charge7\\\":\\\"0\\\",\\\"valley_amount7\\\":\\\"29.270000\\\",\\\"total_electricity\\\":\\\"55.561001\\\",\\\"loss_total_electricity\\\":\\\"0\\\",\\\"payment_amount\\\":\\\"41.650000\\\",\\\"trade_date\\\":\\\"0\\\",\\\"stop_reason\\\":\\\"1\\\",\\\"physical_card_number\\\":\\\"1234567812345678\\\"}\",\n" + -// "\t\"retryTimes\": 0,\n" + -// "\t\"sendTime\": 1739291543546,\n" + -// "\t\"serviceId\": \"transaction_record\",\n" + -// "\t\"source\": \"\",\n" + -// "\t\"start_time\": \"2025-02-11 23:14:46.00\",\n" + -// "\t\"stop_reason\": 1,\n" + -// "\t\"total_electricity\": 55.561001,\n" + -// "\t\"trade_date\": \"0\",\n" + -// "\t\"transaction_serial_number\": \"CD69120250211231439794\",\n" + -// "\t\"valley_amount1\": 12.380000,\n" + -// "\t\"valley_amount7\": 29.270000,\n" + -// "\t\"valley_charge1\": 16.516000,\n" + -// "\t\"valley_charge7\": 39.045000\n" + -// "}", TransactionRecordMessageVO.class); -// chargingOrderService.endChargeBillingCharge(vo); - } -} +//package com.ruoyi.order; +// +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.ruoyi.account.api.feignClient.AppCouponClient; +//import com.ruoyi.account.api.feignClient.AppUserClient; +//import com.ruoyi.account.api.feignClient.AppUserIntegralChangeClient; +//import com.ruoyi.account.api.model.TAppCoupon; +//import com.ruoyi.account.api.model.TAppUser; +//import com.ruoyi.account.api.model.TAppUserIntegralChange; +//import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; +//import com.ruoyi.chargingPile.api.feignClient.SiteClient; +//import com.ruoyi.chargingPile.api.model.TChargingGun; +//import com.ruoyi.common.core.domain.R; +//import com.ruoyi.integration.api.feignClient.ChargingMessageClient; +//import com.ruoyi.integration.api.feignClient.TCECClient; +//import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; +//import com.ruoyi.integration.api.vo.ChargingOrderVo; +//import com.ruoyi.order.api.model.*; +//import com.ruoyi.order.service.*; +//import com.ruoyi.order.util.mongodb.service.TransactionRecordService; +//import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService; +//import com.ruoyi.order.util.task.TaskUtil; +//import com.ruoyi.other.api.domain.TCoupon; +//import com.ruoyi.other.api.domain.TIntegralRule; +//import com.ruoyi.other.api.domain.TVip; +//import com.ruoyi.other.api.feignClient.IntegralRuleClient; +//import com.ruoyi.other.api.feignClient.VipClient; +//import com.ruoyi.payment.api.feignClient.AliPaymentClient; +//import com.ruoyi.payment.api.feignClient.H5AliPaymentClient; +//import com.ruoyi.payment.api.feignClient.WxPaymentClient; +//import com.ruoyi.payment.api.model.RefundReq; +//import com.ruoyi.payment.api.model.RefundResp; +//import com.ruoyi.payment.api.model.WxPaymentRefundModel; +//import org.junit.jupiter.api.Test; +//import org.springframework.beans.BeanUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.test.context.SpringBootTest; +// +//import javax.annotation.Resource; +//import java.math.BigDecimal; +//import java.math.MathContext; +//import java.math.RoundingMode; +//import java.text.SimpleDateFormat; +//import java.time.LocalDateTime; +//import java.time.format.DateTimeFormatter; +//import java.time.temporal.ChronoUnit; +//import java.util.*; +//import java.util.stream.Collectors; +// +//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class) +//public class RuoYiOrderApplicationTests { +// +// @Resource +// private TChargingBillService chargingBillService; +// @Resource +// private SiteClient siteClient; +// @Resource +// private TChargingOrderService chargingOrderService; +// +// @Resource +// private TChargingOrderRefundService chargingOrderRefundService; +// +// @Resource +// private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService; +// +// @Resource +// private TransactionRecordService transactionRecordService; +// +// @Resource +// private ChargingMessageClient chargingMessageClient; +// +// @Resource +// private AccountingStrategyDetailOrderService accountingStrategyDetailOrderService; +// +// @Resource +// private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; +// +// @Resource +// private AppCouponClient appCouponClient; +// +// @Resource +// private TCECClient tcecClient; +// +// @Resource +// private VipClient vipClient; +// +// @Resource +// private ChargingGunClient chargingGunClient; +// +// @Resource +// private IntegralRuleClient integralRuleClient; +// @Resource +// private AppUserClient appUserClient; +// +// @Resource +// private AppUserIntegralChangeClient appUserIntegralChangeClient; +// +// @Resource +// private WxPaymentClient wxPaymentClient; +// +// @Resource +// private AliPaymentClient aliPaymentClient; +// @Resource +// private H5AliPaymentClient h5AliPaymentClient; +// +// @Resource +// private ITChargingOrderSummaryDataService chargingOrderSummaryDataService; +// +// +// @Test +// public void test(){ +// TChargingOrder order = chargingOrderService.getOne(new QueryWrapper<TChargingOrder>().eq("code", "CD61220250714235257688")); +// List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataService.getDataByOrderCode(order.getCode()); +// if(!dataList.isEmpty()){ +// //获取当前订单的计费规则,然后分段计算总的度数和充电金额 +// List<AccountingStrategyDetailOrder> detailOrders = accountingStrategyDetailOrderService.list(new LambdaQueryWrapper<AccountingStrategyDetailOrder>() +// .eq(AccountingStrategyDetailOrder::getChargingOrderId, order.getId()).last(" order by start_time")); +// detailOrders.get(detailOrders.size() - 1).setEndTime("23:59"); +// SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); +// //开始解析每个时段的充电度数 +// BigDecimal decimal = BigDecimal.ZERO; +// //如果使用优惠券需要判断优惠券是否满足使用条件 +// //退款金额=优惠券金额+剩余充电金额 +// BigDecimal periodElectricPrice_total = BigDecimal.ZERO; +// BigDecimal periodServicePrice_total = BigDecimal.ZERO; +// BigDecimal vipDiscountAmount_total = BigDecimal.ZERO; +// BigDecimal serviceCharge_total = BigDecimal.ZERO; +// BigDecimal total = BigDecimal.ZERO; +// //判断实时数据是否跨天 +// SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); +// Date end_time = dataList.get(0).getCreate_time(); +// String end = sdf2.format(end_time); +// Date start_time = dataList.get(dataList.size() - 1).getCreate_time(); +// String start = sdf2.format(start_time); +// if(!end.equals(start)){ +// List<AccountingStrategyDetailOrder> list = detailOrders.stream().map(s->{ +// AccountingStrategyDetailOrder accountingStrategyDetailOrder = new AccountingStrategyDetailOrder(); +// BeanUtils.copyProperties(s, accountingStrategyDetailOrder); +// return accountingStrategyDetailOrder; +// }).collect(Collectors.toList()); +// for (AccountingStrategyDetailOrder detailOrder : detailOrders) { +// detailOrder.setStartTime(start + " " + detailOrder.getStartTime()); +// detailOrder.setEndTime(start + " " + detailOrder.getEndTime()); +// } +// for (AccountingStrategyDetailOrder detailOrder : list) { +// detailOrder.setStartTime(end + " " + detailOrder.getStartTime()); +// detailOrder.setEndTime(end + " " + detailOrder.getEndTime()); +// } +// detailOrders.addAll(list); +// }else{ +// for (AccountingStrategyDetailOrder detailOrder : detailOrders) { +// detailOrder.setStartTime(start + " " + detailOrder.getStartTime()); +// detailOrder.setEndTime(start + " " + detailOrder.getEndTime()); +// } +// } +// +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmm"); +// List<TChargingOrderAccountingStrategy> list = new ArrayList<>(); +// for (AccountingStrategyDetailOrder detailOrder : detailOrders) { +// long startTime = Long.parseLong(detailOrder.getStartTime().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")); +// long endTime = Long.parseLong(detailOrder.getEndTime().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")); +// List<UploadRealTimeMonitoringData> collect = dataList.stream().filter(s -> Long.parseLong(sdf1.format(s.getCreate_time())) > startTime && Long.parseLong(sdf1.format(s.getCreate_time())) <= endTime).collect(Collectors.toList()); +// +// if(!collect.isEmpty()){ +// //升序排序 +// collect.sort(new Comparator<UploadRealTimeMonitoringData>(){ +// @Override +// public int compare(UploadRealTimeMonitoringData o1, UploadRealTimeMonitoringData o2) { +// return o1.getCharging_degree().compareTo(o2.getCharging_degree()); +// } +// }); +// UploadRealTimeMonitoringData uploadRealTimeMonitoringData = collect.get(collect.size() - 1); +// BigDecimal chargingDegree = uploadRealTimeMonitoringData.getCharging_degree(); +// BigDecimal subtract = chargingDegree.subtract(decimal); +// decimal = chargingDegree; +// if(subtract.compareTo(BigDecimal.ZERO) > 0){ +// //组装充电明细数据 +// TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy(); +// chargingOrderAccountingStrategy.setChargingOrderId(order.getId()); +// chargingOrderAccountingStrategy.setAccountingStrategyDetailId(detailOrder.getId()); +// chargingOrderAccountingStrategy.setType(detailOrder.getType()); +// chargingOrderAccountingStrategy.setElectrovalence(detailOrder.getElectrovalence()); +// chargingOrderAccountingStrategy.setServiceCharge(detailOrder.getServiceCharge()); +// chargingOrderAccountingStrategy.setCostServiceCharge(detailOrder.getCostServiceCharge()); +// chargingOrderAccountingStrategy.setChargingCapacity(subtract); +// chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); +// +// if (list.size() == 0) { +// String time = sdf.format(collect.get(0).getCreate_time()); +// chargingOrderAccountingStrategy.setStartTime(time); +// } else { +// chargingOrderAccountingStrategy.setStartTime(detailOrder.getStartTime().split(" ")[1]); +// } +// chargingOrderAccountingStrategy.setEndTime(detailOrder.getEndTime().split(" ")[1]); +// +// //已充电总度数 +// BigDecimal electrovalenc = detailOrder.getElectrovalence().multiply(subtract); +// BigDecimal originalServicePrice = detailOrder.getServiceCharge().multiply(subtract); +// BigDecimal serviceCharge = originalServicePrice; +// BigDecimal vipDiscountAmount = BigDecimal.ZERO; +// //计算优惠金额 +// if (null != order.getVipDiscount()) { +// //0.58折 +// vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(order.getVipDiscount())); +// serviceCharge = serviceCharge.multiply(order.getVipDiscount()); +// } +// chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(4, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now()); +// list.add(chargingOrderAccountingStrategy); +// //电费 +// periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc); +// //服务费(含折扣) +// serviceCharge_total = serviceCharge_total.add(serviceCharge); +// //服务费(不含折扣) +// periodServicePrice_total = periodServicePrice_total.add(originalServicePrice); +// //会员折扣优惠金额 +// vipDiscountAmount_total = vipDiscountAmount_total.add(vipDiscountAmount); +// //原始总金额(不含折扣) +// total = total.add(electrovalenc.add(originalServicePrice)); +// } +// } +// +// } +// list.get(list.size() - 1).setEndTime(sdf.format(dataList.get(0).getCreate_time())); +// chargingOrderAccountingStrategyService.saveBatch(list); +// +// BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue()); +// //原金额 +// BigDecimal rechargeAmount = order.getRechargeAmount(); +// //支付金额 +// BigDecimal payAmount = periodElectricPrice_total.add(serviceCharge_total); +// //退款金额=充值金额-实际支付金额 +// BigDecimal refundAmount = rechargeAmount.subtract(payAmount); +// +// UploadRealTimeMonitoringData uploadRealTimeMonitoringData = uploadRealTimeMonitoringDataService.getLastDataById(order.getCode()); +// if (null != uploadRealTimeMonitoringData && null == order.getEndMode()) { +// Integer soc = uploadRealTimeMonitoringData.getSoc(); +// if (soc >= 98) { +// order.setEndMode(2); +// } else if (null != order.getResidualAmount() && order.getResidualAmount().compareTo(new BigDecimal(1)) <= 0) { +// order.setEndMode(3); +// } else { +// order.setEndMode(1); +// } +// } +// +// order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.HALF_EVEN)); +// order.setStartTime(list.get(0).getCreateTime()); +// order.setEndTime(list.get(list.size() - 1).getCreateTime()); +// order.setStatus(5); +// order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN)); +// order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN)); +// order.setChargingCapacity(list.get(list.size() - 1).getChargingCapacity()); +// order.setElectricity(list.get(list.size() - 1).getChargingCapacity()); +// order.setVipDiscountAmount(vipDiscountAmount_total); +// if (vipDiscountAmount_total.compareTo(BigDecimal.ZERO) == 0) { +// order.setVipDiscount(BigDecimal.valueOf(1)); +// } +// +// //计算优惠券 +// BigDecimal couponDiscount = BigDecimal.ZERO; +// if (null != order.getAppCouponId()) { +// //判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。 +// TAppCoupon appCoupon = appCouponClient.getAppCouponById(order.getAppCouponId()).getData(); +// String couponJson = appCoupon.getCouponJson(); +// TCoupon tCoupon = com.alibaba.fastjson2.JSON.parseObject(couponJson, TCoupon.class); +// Integer preferentialMode = tCoupon.getPreferentialMode(); +// if (1 == preferentialMode) { +// //满减 +// if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { +// BigDecimal couponDiscountAmount = tCoupon.getDiscountAmount(); +// //如果优惠金额大于服务费金额,以服务费作为最大限制 +// if (serviceCharge_total.compareTo(couponDiscountAmount) < 0) { +// couponDiscount = serviceCharge_total; +// serviceCharge_total = BigDecimal.ZERO; +// } else { +// couponDiscount = couponDiscountAmount; +// } +// appCoupon.setStatus(2); +// appCouponClient.updateAppCoupon(appCoupon); +// } else { +// appCouponClient.refund(order.getAppCouponId().toString()); +// order.setAppCouponId(null); +// order.setCouponDiscountAmount(BigDecimal.ZERO); +// } +// } +// if (2 == preferentialMode) { +// //抵扣 +// if (payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0) { +// //折扣金额 +// BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10)); +// divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide; +// //如果优惠金额大于服务费金额,以服务费作为最大限制 +// if (serviceCharge_total.compareTo(divide) < 0) { +// couponDiscount = serviceCharge_total; +// serviceCharge_total = BigDecimal.ZERO; +// } else { +// couponDiscount = divide; +// } +// +// appCoupon.setStatus(2); +// appCouponClient.updateAppCoupon(appCoupon); +// } else { +// order.setAppCouponId(null); +// order.setCouponDiscountAmount(BigDecimal.ZERO); +// appCouponClient.refund(order.getAppCouponId().toString()); +// } +// } +// } +// //优惠券优惠金额 +// couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN); +// //退款金额+优惠券 +// refundAmount = refundAmount.add(couponDiscount); +// //实际支付金额-优惠券 +// payAmount = payAmount.subtract(couponDiscount); +// if (serviceCharge_total.compareTo(BigDecimal.ZERO) > 0) { +// serviceCharge_total = serviceCharge_total.subtract(couponDiscount); +// } +// order.setCouponDiscountAmount(couponDiscount.setScale(2, RoundingMode.HALF_EVEN)); +// order.setServiceCharge(serviceCharge_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); +// chargingOrderService.updateById(order); +// +// order = chargingOrderService.getById(order.getId()); +// +// //推送三方平台 +// if (2 == order.getOrderSource()) { +// TChargingOrder finalChargingOrder = order; +// new Thread(new Runnable() { +// @Override +// public void run() { +// tcecClient.notificationEquipChargeStatus(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId()); +// tcecClient.notificationStopChargeResult(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getChargingGunId().toString(), +// finalChargingOrder.getOperatorId()); +// tcecClient.notificationChargeOrderInfo(finalChargingOrder.getStartChargeSeq(), finalChargingOrder.getOperatorId()); +// } +// }).start(); +// } +// +// //开始将优惠券优惠的金额添加到明细中 +// BigDecimal couponDiscountAmount = order.getCouponDiscountAmount(); +// if (null != couponDiscountAmount && couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0) { +// List<TChargingOrderAccountingStrategy> list1 = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId())); +// BigDecimal reduce = list1.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); +// for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list1) { +// BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice(); +// BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN))); +// periodServicePrice = periodServicePrice.subtract(multiply); +// chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.HALF_EVEN)); +// chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.HALF_EVEN)); +// } +// chargingOrderAccountingStrategyService.updateBatchById(list1); +// } +// +// // 将枪状态重置为空闲 +// TChargingGun chargingGun = new TChargingGun(); +// chargingGun.setId(order.getChargingGunId()); +// chargingGun.setStatus(2); +// chargingGun.setChargingPower(BigDecimal.ZERO); +// chargingGunClient.updateChargingGunById(chargingGun); +// //推送状态给三方平台 +// if (2 == order.getOrderSource()) { +// tcecClient.pushChargingGunStatus(chargingGun.getFullNumber(), chargingGun.getStatus()); +// } +// +// //添加积分 +// if (1 == order.getOrderSource()) { +// TIntegralRule integralRule = integralRuleClient.getSet().getData(); +// if (null != integralRule) { +// TAppUser appUser = appUserClient.getUserById(order.getAppUserId()).getData(); +// Integer num1 = com.alibaba.fastjson2.JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1"); +// Integer integral = order.getServiceCharge().intValue() * num1; +// if (null != appUser.getVipId()) { +// TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); +// Integer doubleIntegration = vip.getDoubleIntegration(); +// //双倍积分 +// if (1 == doubleIntegration) { +// integral *= 2; +// } +// } +// +// if (integral > 0) { +// TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange(); +// appUserIntegralChange.setAppUserId(appUser.getId()); +// appUserIntegralChange.setChangeType(2); +// appUserIntegralChange.setHistoricalIntegral(appUser.getPoints()); +// appUser.setPoints(appUser.getPoints() + integral); +// appUserIntegralChange.setCurrentIntegral(appUser.getPoints()); +// appUserIntegralChange.setCreateTime(LocalDateTime.now()); +// appUserIntegralChange.setOrderCode(order.getCode()); +// appUserIntegralChange.setExtension(order.getId().toString()); +// appUserClient.updateAppUser(appUser); +// appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange); +// } +// } +// +// //计算用户标签 +// chargingOrderService.editUserTag(order); +// //用户推荐奖励 +// chargingOrderService.referralReward(order); +// +// //开始构建退款费用 +// refundAmount = refundAmount.setScale(2, RoundingMode.HALF_EVEN); +// if (refundAmount.compareTo(BigDecimal.ZERO) > 0) { +// Integer rechargePaymentType = order.getRechargePaymentType(); +// //构建退款明细 +// TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); +// chargingOrderRefund.setChargingOrderId(order.getId()); +// SimpleDateFormat sdfaa = new SimpleDateFormat("yyyyMMddHHmmssSSS"); +// chargingOrderRefund.setRefundCode("CDF" + sdfaa.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue())); +// chargingOrderRefund.setRefundAmount(refundAmount); +// chargingOrderRefund.setRefundStatus(1); +// chargingOrderRefund.setPayType(rechargePaymentType); +// chargingOrderRefund.setRefundStatus(1); +// chargingOrderRefund.setCode(order.getCode()); +// chargingOrderRefund.setRefundTitle("充电完成退款"); +// chargingOrderRefund.setRefundContent("充电完成退款"); +// chargingOrderRefund.setRefundReason("充电完成退款"); +// chargingOrderRefund.setRefundRemark("实际充电消费金额:" + order.getPaymentAmount()); +// chargingOrderRefund.setRefundTotalAmount(refundAmount); +// chargingOrderRefund.setPayAmount(rechargeAmount); +// if (1 == rechargePaymentType) { +// WxPaymentRefundModel model = new WxPaymentRefundModel(); +// model.setOut_trade_no(order.getCode()); +// model.setOut_refund_no(chargingOrderRefund.getRefundCode()); +// model.setReason("充电完成退款"); +// model.setNotify_url("/payment/wx/refund/notify"); +// WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount(); +// amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue()); +// amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue()); +// amount.setCurrency("CNY"); +// model.setAmount(amount); +// R<Map<String, Object>> result = wxPaymentClient.refundOrderR(model); +// if (200 == result.getCode()) { +// chargingOrderRefundService.save(chargingOrderRefund); +// //手续费 +// Map<String, Object> amount1 = (Map<String, Object>) result.getData().get("amount"); +// Object refund_fee1 = amount1.get("refund_fee"); +// BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100)); +// chargingOrderRefund.setRefundFee(refund_fee); +// chargingOrderRefundService.updateById(chargingOrderRefund); +// } +// } +// if (2 == rechargePaymentType) { +// RefundReq dto = new RefundReq(); +// dto.setOutTradeNo(order.getCode()); +// dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); +// dto.setRefundAmount(refundAmount.toString()); +// dto.setRefundReason("充电完成退款"); +// RefundResp resp = aliPaymentClient.refund(dto).getData(); +// if (null != resp) { +// chargingOrderRefundService.save(chargingOrderRefund); +// chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); +// } +// } +// if (3 == rechargePaymentType) { +// RefundReq dto = new RefundReq(); +// dto.setOutTradeNo(order.getRechargeSerialNumber()); +// dto.setOutRequestNo(chargingOrderRefund.getRefundCode()); +// dto.setRefundAmount(refundAmount.toString()); +// dto.setRefundReason("充电完成退款"); +// RefundResp resp = h5AliPaymentClient.refund(dto).getData(); +// if (null != resp && "10000".equals(resp.getCode())) { +// chargingOrderRefundService.save(chargingOrderRefund); +// chargingOrderService.chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null); +// } +// } +// } +// } +// +// //添加汇总统计数据 +// List<TChargingOrderAccountingStrategy> list4 = chargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>().eq("charging_order_id", order.getId())); +// BigDecimal electronic_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodElectricPrice).reduce(BigDecimal.ZERO, BigDecimal::add); +// BigDecimal service_reduce = list4.stream().map(TChargingOrderAccountingStrategy::getPeriodServicePrice).reduce(BigDecimal.ZERO, BigDecimal::add); +// BigDecimal chargingCapacity = list4.stream().map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add); +// BigDecimal serviceMoney = BigDecimal.ZERO; +// BigDecimal paymentMoney = BigDecimal.ZERO; +// long time = 0; +// if (!order.getOrderSource().equals(2)) { +// serviceMoney = serviceMoney.add(service_reduce); +// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce); +// } else { +// serviceMoney = serviceMoney.add(service_reduce.multiply(new BigDecimal("0.8"))); +// paymentMoney = paymentMoney.add(electronic_reduce).add(service_reduce.multiply(new BigDecimal("0.8"))); +// } +// if (order.getStartTime() != null && order.getEndTime() != null) { +// time = ChronoUnit.SECONDS.between(order.getStartTime(), order.getEndTime()); +// } +// TChargingOrderSummaryData summaryData = new TChargingOrderSummaryData(); +// summaryData.setChargingOrderId(order.getId()); +// summaryData.setChargingCapacity(chargingCapacity); +// summaryData.setChargingDuration(time); +// summaryData.setIncome(paymentMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); +// summaryData.setElectricPrice(electronic_reduce.setScale(2, BigDecimal.ROUND_HALF_EVEN)); +// summaryData.setServicePrice(serviceMoney.setScale(2, BigDecimal.ROUND_HALF_EVEN)); +// chargingOrderSummaryDataService.save(summaryData); +// +// //推送监管平台订单状态和订单详情 +// ChargingOrderVo chargingOrderVo = new ChargingOrderVo(); +// BeanUtils.copyProperties(order, chargingOrderVo); +// chargingMessageClient.pushOrderInfo(chargingOrderVo); +// chargingMessageClient.pushOrderStatus(chargingOrderVo); +// } +// } +//} -- Gitblit v1.7.1