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 |  537 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 511 insertions(+), 26 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 eb53438..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,26 +1,511 @@
-package com.ruoyi.order;
-
-import com.alibaba.fastjson2.JSON;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.order.dto.ChargingDetails;
-import com.ruoyi.order.dto.MyChargingOrderInfo;
-import com.ruoyi.order.service.TChargingOrderService;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-import javax.annotation.Resource;
-import java.io.PrintWriter;
-
-@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class)
-public class RuoYiOrderApplicationTests {
-	
-	@Resource
-	private TChargingOrderService chargingOrderService;
-	
-	
-	@Test
-	public void test(){
-		ChargingDetails chargingDetails = chargingOrderService.getChargingDetails(75);
-		System.err.println(JSON.toJSONString(chargingDetails));
-	}
-}
+//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