From 5c3d044bb3b0bdaf170e683d97992d5773ea706d Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期六, 31 八月 2024 14:52:59 +0800
Subject: [PATCH] 完善功能
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 55 +++++++++++++----
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java | 2
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java | 31 ++++++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 3
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java | 26 ++++++++
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java | 23 ++++++-
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java | 1
7 files changed, 119 insertions(+), 22 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
new file mode 100644
index 0000000..cdc9f16
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
@@ -0,0 +1,31 @@
+package com.ruoyi.chargingPile.api.factory;
+
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.common.core.domain.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 18:33
+ */
+@Component
+public class AccountingStrategyDetailFallbackFactory implements FallbackFactory<AccountingStrategyDetailClient> {
+ private static final Logger log = LoggerFactory.getLogger(AccountingStrategyDetailFallbackFactory.class);
+
+
+ @Override
+ public AccountingStrategyDetailClient create(Throwable throwable) {
+ log.error("计费策略调用失败:{}", throwable.getMessage());
+ return new AccountingStrategyDetailClient(){
+
+ @Override
+ public R<TAccountingStrategyDetail> getNowData(Integer accountingStrategyId) {
+ return R.fail("获取当前有效的计费策略明细失败:" + throwable.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
new file mode 100644
index 0000000..b63175e
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
@@ -0,0 +1,26 @@
+package com.ruoyi.chargingPile.api.feignClient;
+
+import com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 18:33
+ */
+@FeignClient(contextId = "AccountingStrategyDetailClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = AccountingStrategyDetailFallbackFactory.class)
+public interface AccountingStrategyDetailClient {
+
+
+ /**
+ * 获取当前有效的计费策略明细
+ * @param accountingStrategyId
+ * @return
+ */
+ @PostMapping("/t-accounting-strategy-detail/getNowData")
+ R<TAccountingStrategyDetail> getNowData(@RequestParam("accountingStrategyId") Integer accountingStrategyId);
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index e5e3ae5..f015cf5 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,4 +1,5 @@
com.ruoyi.chargingPile.api.factory.ChargingPileFallbackFactory
com.ruoyi.chargingPile.api.factory.SiteFallbackFactory
com.ruoyi.chargingPile.api.factory.ParkingLotFallbackFactory
-com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory
\ No newline at end of file
+com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory
+com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
index 0657802..c2c27be 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
@@ -2,7 +2,6 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.integration.api.factory.SendMessageFallbackFactory;
-import com.ruoyi.integration.api.model.EndCharge;
import com.ruoyi.integration.api.model.PlatformStartCharging;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
index ffc0dfa..5234673 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -1,23 +1,23 @@
package com.ruoyi.chargingPile.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
import com.ruoyi.chargingPile.service.ISiteService;
import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
import com.ruoyi.chargingPile.service.TAccountingStrategyService;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.web.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
@@ -77,6 +77,19 @@
public AjaxResult<StrategyPriceVO> queryPrice(@RequestParam("siteId") Integer siteId) {
return AjaxResult.ok(accountingStrategyDetailService.queryPrice(siteId));
}
-
+
+
+ /**
+ * 获取当前有效的计费模板
+ * @param accountingStrategyId
+ * @return
+ */
+ @PostMapping("/getNowData")
+ public R<TAccountingStrategyDetail> getNowData(@RequestParam("accountingStrategyId") Integer accountingStrategyId){
+ TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(new LambdaQueryWrapper<TAccountingStrategyDetail>()
+ .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategyId)
+ .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+ return R.ok(one);
+ }
}
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 5fda815..ad94c84 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
@@ -10,10 +10,12 @@
import com.ruoyi.account.api.model.TAppUserCar;
import com.ruoyi.account.api.model.TAppUserVipDetail;
import com.ruoyi.account.api.vo.GetAppUserVipDetail;
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
import com.ruoyi.chargingPile.api.model.TChargingGun;
import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.common.core.domain.R;
@@ -114,6 +116,9 @@
@Resource
private TOrderEvaluateService orderEvaluateService;
+
+ @Resource
+ private AccountingStrategyDetailClient accountingStrategyDetailClient;
@@ -435,21 +440,43 @@
//根据当前充值的金额和计费模板算出充电的金额
BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
//计算充电金额,会员需要将折扣金额加入到充电总金额中
+ TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+ TAccountingStrategyDetail strategyDetail = accountingStrategyDetailClient.getNowData(chargingGun.getAccountingStrategyId()).getData();
+ //总单价
+ BigDecimal totalUnitPrice = strategyDetail.getServiceCharge().add(strategyDetail.getElectrovalence());
+ //计算能充电的度数
+ BigDecimal degrees = rechargeAmount.divide(totalUnitPrice);
+ //计算电费金额和服务费
+ BigDecimal serviceCharge = strategyDetail.getServiceCharge().multiply(degrees);
+ BigDecimal electrovalence = strategyDetail.getElectrovalence().multiply(degrees);
-// TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-// if(){
-// appUser.getVipId()
-// }
-//
-//
-// //调用远程启动充电消息
-// PlatformStartCharging platformStartCharging = new PlatformStartCharging();
-// platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
-// platformStartCharging.setCharging_pile_code();
-// platformStartCharging.setCharging_gun_code();
-// platformStartCharging.setCard_number();
-// platformStartCharging.setAccount_balance()
-// sendMessageClient.platformStartCharging(platformStartCharging);
+ //再处理会员折扣
+ BigDecimal discount = BigDecimal.ZERO;
+ TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+ if(null != appUser.getVipId()){
+ GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+ getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+ getAppUserVipDetail.setVipId(appUser.getVipId());
+ TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+ if(data.getChargeNum() > 0){
+ discount = serviceCharge.multiply(data.getDiscount().divide(new BigDecimal(10)));
+ data.setChargeNum(data.getChargeNum() - 1);
+ appUserVipDetailClient.
+ }
+ }
+ electrovalence = electrovalence.add(discount);
+
+ //调用远程启动充电消息
+ PlatformStartCharging platformStartCharging = new PlatformStartCharging();
+ platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
+ platformStartCharging.setCharging_pile_code();
+ platformStartCharging.setCharging_gun_code();
+ platformStartCharging.setCard_number();
+ platformStartCharging.setAccount_balance(electrovalence);
+ sendMessageClient.platformStartCharging(platformStartCharging);
+ //异步线程检测远程启动的应答结果。如果失败,则需要全额退款
+
+
return AjaxResult.success();
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
index f69c779..7f4effd 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
@@ -80,7 +80,7 @@
@ResponseBody
- @DeleteMapping("/getInvoiceTypeList")
+ @GetMapping("/getInvoiceTypeList")
@ApiOperation(value = "获取开票类型", tags = {"小程序-充电发票"})
public AjaxResult<List<TInvoiceType>> getInvoiceTypeList(){
List<TInvoiceType> list = invoiceTypeService.list(new LambdaQueryWrapper<TInvoiceType>()
--
Gitblit v1.7.1