From c6ae115f27ba34dbeb52fafa6f6dd728d3809157 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 02 九月 2024 19:55:25 +0800
Subject: [PATCH] 硬件接口处理
---
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 5 +
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java | 36 ++++++++++--
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java | 7 ++
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java | 13 ++++
ruoyi-service/ruoyi-integration/pom.xml | 4 +
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java | 5 +
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java | 13 +++-
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 16 +++--
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java | 7 ++
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java | 20 ++++++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 13 ++++
11 files changed, 121 insertions(+), 18 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
index cdc9f16..10f44fe 100644
--- 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
@@ -26,6 +26,11 @@
public R<TAccountingStrategyDetail> getNowData(Integer accountingStrategyId) {
return R.fail("获取当前有效的计费策略明细失败:" + throwable.getMessage());
}
+
+ @Override
+ public R<TAccountingStrategyDetail> getDetailBySiteId(Integer siteId) {
+ return R.fail("通过站点id查询当前时段使用的策略明细失败:" + 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
index b63175e..cddb45e 100644
--- 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
@@ -23,4 +23,11 @@
*/
@PostMapping("/t-accounting-strategy-detail/getNowData")
R<TAccountingStrategyDetail> getNowData(@RequestParam("accountingStrategyId") Integer accountingStrategyId);
+ /**
+ * 通过站点id查询当前时段使用的策略明细
+ * @param siteId
+ * @return
+ */
+ @PostMapping("/t-accounting-strategy-detail/getDetailBySiteId")
+ R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId);
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
index 8738bb2..64b0022 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -68,6 +68,11 @@
@Override
public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
}
+
+ @Override
+ public R<TChargingOrder> getOrderByCode(String code) {
+ return R.fail("通过流水号查询订单调用失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
index 96340a0..6077804 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -9,10 +9,7 @@
import com.ruoyi.order.api.query.TChargingCountQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -70,4 +67,12 @@
*/
@PostMapping(value = "/t-charging-order/chargeMonitoring")
void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query);
+
+ /**
+ * 通过流水号查询订单
+ * @param code
+ * @return
+ */
+ @PostMapping(value = "/t-charging-order/getOrderByCode/{code}")
+ R<TChargingOrder> getOrderByCode(@PathVariable("code") String code);
}
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 5234673..f8558c5 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
@@ -91,5 +91,25 @@
.last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
return R.ok(one);
}
+
+ /**
+ * 获取当前有效的计费模板
+ * @param accountingStrategyId
+ * @return
+ */
+ /**
+ * 通过站点id查询当前时段使用的策略明细
+ * @param siteId
+ * @return
+ */
+ @PostMapping("/getDetailBySiteId")
+ public R<TAccountingStrategyDetail> getDetailBySiteId(@RequestParam("siteId") Integer siteId){
+ Site site = siteService.getById(siteId);
+ TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
+ TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(Wrappers.<TAccountingStrategyDetail>lambdaQuery()
+ .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategy.getId())
+ .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+ return R.ok(one);
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index fe5e167..029a4e9 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -21,6 +21,8 @@
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.log.enums.OperatorType;
+import com.ruoyi.integration.api.feignClient.IntegrationClient;
+import com.ruoyi.integration.api.model.EndCharge;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,18 +53,16 @@
@RequestMapping("/t-charging-gun")
public class TChargingGunController {
- private final TChargingGunService chargingGunService;
-
+ @Autowired
+ private TChargingGunService chargingGunService;
+ @Autowired
+ private IntegrationClient integrationClient;
+
@Resource
private TChargingPileService chargingPileService;
@Resource
private ISiteService siteService;
- @Autowired
- public TChargingGunController(TChargingGunService chargingGunService) {
- this.chargingGunService = chargingGunService;
- }
-
/**
* 查询充电枪列表
*/
@@ -132,6 +132,8 @@
@PutMapping(value = "/stopCharging")
public AjaxResult<String> stopCharging(@RequestParam("id") Integer id) {
// TODO 硬件 结束充电
+ EndCharge endCharge = new EndCharge();
+ integrationClient.endCharge(endCharge);
return AjaxResult.success();
}
diff --git a/ruoyi-service/ruoyi-integration/pom.xml b/ruoyi-service/ruoyi-integration/pom.xml
index 4c146a8..571bf94 100644
--- a/ruoyi-service/ruoyi-integration/pom.xml
+++ b/ruoyi-service/ruoyi-integration/pom.xml
@@ -169,6 +169,10 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-api-order</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-api-chargingPile</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java
index e142505..f5b92c3 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java
@@ -17,4 +17,11 @@
List<UploadRealTimeMonitoringData> getDataByOrderCode(String code);
List<UploadRealTimeMonitoringData> getDataAll(Set<String> values, Integer page, Integer size);
+ /**
+ * 查询订单最新一条数据
+ * @param transaction_serial_number
+ * @return
+ */
+ UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number);
+
}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
index 89cf4d0..cbed3aa 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
@@ -73,4 +73,17 @@
return uploadRealTimeMonitoringData;
}
+ @Override
+ public UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number) {
+ Query query = new Query();
+ if (StringUtils.isNotEmpty(transaction_serial_number)){
+ query.addCriteria(Criteria.where("transaction_serial_number").is(transaction_serial_number));
+ }
+ // 按照 createdAt 字段降序排序
+ query.with(Sort.by(Sort.Direction.DESC, "create_time"));
+ // 限制结果只返回一条记录
+ query.limit(1);
+ return mongoTemplate.findOne(query, UploadRealTimeMonitoringData.class);
+ }
+
}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
index f28993e..dc6342c 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
@@ -1,11 +1,14 @@
package com.ruoyi.integration.rocket.listener;
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
import com.ruoyi.integration.api.model.Online;
import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
import com.ruoyi.integration.rocket.model.UploadRealTimeMonitoringDataMessage;
import com.ruoyi.integration.rocket.util.EnhanceMessageHandler;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -15,6 +18,9 @@
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Objects;
@Slf4j
@Component
@@ -31,12 +37,10 @@
@Resource
private ChargingOrderClient chargingOrderClient;
-
-
-
-
-
-
+ @Resource
+ private AccountingStrategyDetailClient accountingStrategyDetailClient;
+
+
@Override
protected void handleMessage(UploadRealTimeMonitoringDataMessage message) throws Exception {
// 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试
@@ -44,11 +48,31 @@
// 持久化消息
UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData();
BeanUtils.copyProperties(message,uploadRealTimeMonitoringData);
+ // 查询mogondb上一条数据
+ UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(message.getTransaction_serial_number());
+ // 查询订单
+ TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(message.getTransaction_serial_number()).getData();
+ // 查询当前时间段的计费策略
+ TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailBySiteId(chargingOrder.getSiteId()).getData();
+ uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence());
+ uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge());
+ if (Objects.nonNull(data)) {
+ uploadRealTimeMonitoringData.setLast_time(data.getLast_time());
+ uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount().divide(data.getPaid_amount()));
+ uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree().divide(data.getCharging_degree()));
+ uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
+ }else {
+ log.info("首次上传实时监测数据");
+ uploadRealTimeMonitoringData.setPeriod_electric_price(message.getPaid_amount());
+ uploadRealTimeMonitoringData.setPeriod_charging_degree(message.getCharging_degree());
+ uploadRealTimeMonitoringData.setPeriod_service_price(message.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
+ }
uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
// 业务处理
UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery();
BeanUtils.copyProperties(uploadRealTimeMonitoringData, query);
chargingOrderClient.chargeMonitoring(query);
+
}
@Override
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 ca25338..4ca0f92 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
@@ -1,4 +1,5 @@
package com.ruoyi.order.controller;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import java.math.BigDecimal;
@@ -638,7 +639,17 @@
public void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query){
chargingOrderService.chargeMonitoring(query);
}
-
+ /**
+ * 通过流水号查询订单
+ * @param code
+ * @return
+ */
+ @PostMapping(value = "/getOrderByCode/{code}")
+ public R<TChargingOrder> getOrderByCode(@PathVariable("code") String code){
+ return R.ok(chargingOrderService.getOne(Wrappers.lambdaQuery(TChargingOrder.class)
+ .eq(TChargingOrder::getCode,code)));
+ }
+
--
Gitblit v1.7.1