无关风月
2025-03-04 7fffe9efd9e363941f5506f6476f86ffa0500deb
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
4个文件已修改
407 ■■■■ 已修改文件
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -49,7 +49,6 @@
import com.ruoyi.other.api.feignClient.VipClient;
import com.ruoyi.system.api.model.LoginUser;
import com.ruoyi.system.api.model.LoginUserApplet;
import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.IOUtils;
@@ -63,10 +62,7 @@
import javax.activation.FileDataSource;
import javax.annotation.Resource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileOutputStream;
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -468,6 +468,10 @@
        return refundList1;
    }
    public static List<TChargingOrderRefund> testing4(long total, long current, long size, List<TChargingOrderRefund> str){
        List<TChargingOrderRefund> result = new ArrayList<>();
        //获取初始化分页结构
@@ -518,11 +522,8 @@
    }
    public static void main(String[] args) {
        String temp = "00";
        Integer i = Integer.valueOf(temp);
        System.err.println(i);
    }
    @RequiresPermissions(value = {"/chargingPileOrder/monitoring_record"}, logical = Logical.OR)
    @ResponseBody
    @GetMapping(value = "/chargingOrderInfo")
@@ -585,6 +586,9 @@
        return AjaxResult.success(chargingOrderInfoVO);
    }
    @ResponseBody
    @PostMapping(value = "/addEvaluate")
    @ApiOperation(value = "添加评价", tags = {"小程序-扫一扫"})
@@ -593,6 +597,9 @@
        orderEvaluateService.addOrderEvaluate(dto);
        return AjaxResult.success();
    }
    /**
     * 查询用户最近一次充电记录使用的车辆
     *
@@ -612,6 +619,9 @@
            return R.ok(-1L);
        }
    }
    /**
     * 查询会员在本月有多少次享受了充电折扣
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2019,10 +2019,10 @@
        if(null == chargingOrder){
            return R.ok();
        }
        Integer status = chargingOrder.getStatus();
        if(status == 5){
            return R.ok();
        }
//        Integer status = chargingOrder.getStatus();
//        if(status == 5){
//            return R.ok();
//        }
        
        //如果使用优惠券需要判断优惠券是否满足使用条件
        //根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
@@ -2085,7 +2085,7 @@
                    AccountingStrategyDetailOrderVo vo1 = new AccountingStrategyDetailOrderVo();
                    BeanUtils.copyProperties(strategyDetail, vo1);
                    vo1.setChargingCapacity(sharp_peak_charge);
                    lists.add(vo1);
                    lists.add(0, vo1);
                }
                
                //第二天的
@@ -2212,42 +2212,19 @@
            total = total.add(electrovalenc.add(originalServicePrice));
        }
        
        BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
        //折扣金额
        BigDecimal discountAmount = chargingOrder.getVipDiscountAmount();
        //原金额
        BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
        BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount();
        //总金额(充值金额+会员折扣金额)
        BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
        BigDecimal decimal = rechargeAmount.add(discountAmount);
        //退款金额(已经计算了折扣优惠部分)
        //如果充电总金额未使用完,则需要退回费用=(原金额/总金额)*(总金额-实际充电金额)
        BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
        BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
        BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
        //折扣金额
        BigDecimal discountAmount = BigDecimal.ZERO;
        if(null != chargingOrder.getVipDiscount()){
            TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
            //判断会员是否还有充电优惠次数
            GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
            getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
            getAppUserVipDetail.setVipId(appUser.getVipId());
            TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
            if(null != data && data.getChargeNum() > 0){
                data.setChargeNum(data.getChargeNum() - 1);
                appUserVipDetailClient.updateAppUserVipDetail(data);
                //服务费折扣
                discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
                TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
                BigDecimal maximumDeduction = vip.getMaximumDeduction();
                //普通会员有最高优惠限制
                if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
                    discountAmount = maximumDeduction;
                }
            }
        }
        //会员折扣金额
        discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
        payAmount = payAmount.subtract(discountAmount);
        //支付金额
        BigDecimal payAmount = rechargeAmount.subtract(refundAmount);
        //实际充值服务费-会员折扣
        periodServicePrice_total = periodServicePrice_total.subtract(discountAmount);
        TChargingOrder order = new TChargingOrder();
@@ -2269,10 +2246,12 @@
        order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
        order.setStatus(5);
        order.setOrderAmount(orderAmount.setScale(2, RoundingMode.HALF_EVEN));
        order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.HALF_EVEN));
        order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.HALF_EVEN));
        order.setChargingCapacity(vo.getTotal_electricity());
        order.setElectricity(vo.getTotal_electricity());
        if(discountAmount.compareTo(BigDecimal.ZERO) == 0){
            order.setVipDiscount(BigDecimal.valueOf(1));
        }
        
        //计算优惠券
        BigDecimal couponDiscount = BigDecimal.ZERO;
@@ -2326,7 +2305,9 @@
        }
        //优惠券优惠金额
        couponDiscount = couponDiscount.setScale(4, RoundingMode.HALF_EVEN);
        //退款金额+优惠券
        refundAmount = refundAmount.add(couponDiscount);
        //实际支付金额-优惠券
        payAmount = payAmount.subtract(couponDiscount);
        if(periodServicePrice_total.compareTo(BigDecimal.ZERO) > 0){
            periodServicePrice_total = periodServicePrice_total.subtract(couponDiscount);
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
@@ -1,146 +1,182 @@
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(){
        MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo("1852288949187297282");
    }
}
//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\": \"01\",\n" +
//                "\t\"charging_pile_code\": \"2024123100001005\",\n" +
//                "\t\"end_time\": \"2025-03-04 00:00:43.00\",\n" +
//                "\t\"flat_amount2\": 0.000000,\n" +
//                "\t\"flat_amount4\": 0.000000,\n" +
//                "\t\"flat_amount6\": 2.350000,\n" +
//                "\t\"flat_charge2\": 0.000000,\n" +
//                "\t\"flat_charge4\": 0.000000,\n" +
//                "\t\"flat_charge6\": 1.989000,\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\": 27.320000,\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\\\":\\\"CD38820250303225620557\\\",\\\"charging_pile_code\\\":\\\"2024123100001005\\\",\\\"charging_gun_code\\\":\\\"01\\\",\\\"start_time\\\":\\\"2025-03-03 22:56:18.00\\\",\\\"end_time\\\":\\\"2025-03-04 00:00:43.00\\\",\\\"valley_charge1\\\":\\\"0.066000\\\",\\\"loss_valley_charge1\\\":\\\"0\\\",\\\"valley_amount1\\\":\\\"0.040000\\\",\\\"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\\\":\\\"1.989000\\\",\\\"loss_flat_charg6\\\":\\\"0\\\",\\\"flat_amount6\\\":\\\"2.350000\\\",\\\"valley_charge7\\\":\\\"33.103000\\\",\\\"loss_valley_charge7\\\":\\\"0\\\",\\\"valley_amount7\\\":\\\"24.910000\\\",\\\"total_electricity\\\":\\\"35.158001\\\",\\\"loss_total_electricity\\\":\\\"0\\\",\\\"payment_amount\\\":\\\"27.320000\\\",\\\"trade_date\\\":\\\"0\\\",\\\"stop_reason\\\":\\\"1\\\",\\\"physical_card_number\\\":\\\"1234567812345678\\\"}\",\n" +
//                "\t\"retryTimes\": 0,\n" +
//                "\t\"sendTime\": 1741017648977,\n" +
//                "\t\"serviceId\": \"transaction_record\",\n" +
//                "\t\"source\": \"\",\n" +
//                "\t\"start_time\": \"2025-03-03 22:56:18.00\",\n" +
//                "\t\"stop_reason\": 1,\n" +
//                "\t\"total_electricity\": 35.158001,\n" +
//                "\t\"trade_date\": \"0\",\n" +
//                "\t\"transaction_serial_number\": \"CD38820250303225620557\",\n" +
//                "\t\"valley_amount1\": 0.040000,\n" +
//                "\t\"valley_amount7\": 24.910000,\n" +
//                "\t\"valley_charge1\": 0.066000,\n" +
//                "\t\"valley_charge7\": 33.103000\n" +
//                "}", TransactionRecordMessageVO.class);
//        chargingOrderService.endChargeBillingCharge(vo);
//    }
//}