From 7fffe9efd9e363941f5506f6476f86ffa0500deb Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 04 三月 2025 10:16:39 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 53 ++----- ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java | 328 ++++++++++++++++++++++++++-------------------- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 6 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 20 ++ 4 files changed, 215 insertions(+), 192 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index fefc4da..15bdec0 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/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; diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 3076b77..968a695 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/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); } } + + + /** * 查询会员在本月有多少次享受了充电折扣 diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index 6a24a15..21e394a 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/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); 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 99073cb..cd8aa3b 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,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); +// } +//} -- Gitblit v1.7.1