From 85c4410b0948799a93f19f345b4ed18c253c89f3 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 03 九月 2024 10:26:33 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java                         |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java                                 |    3 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java                                                    |    2 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java                               |  109 +++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java                                   |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java                             |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java                     |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java                                         |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java                       |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java                             |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java                                  |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java                  |    3 
 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-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java                              |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java                             |    3 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java                                                 |   10 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java                                           |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml                                 |    7 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java                               |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java                         |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java                                   |    3 
 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/impl/UploadRealTimeMonitoringDataServiceImpl.java |   13 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java                                  |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java                       |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java                                     |    9 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java                                             |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java                                  |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java                               |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderRefundDto.java                                                    |   18 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java                             |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java                                 |    3 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java                                 |    5 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java                              |    4 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java                             |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java                                      |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java                                          |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java                        |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java                                   |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java                        |    3 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java          |    7 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java                          |    3 
 ruoyi-service/ruoyi-integration/pom.xml                                                                                               |    4 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java                                    |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java                          |   16 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java                         |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java                           |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java                                               |    3 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java                                |  104 +++---
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java                       |    5 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                                            |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java                   |  109 ++++++
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java                                     |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java             |   20 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java                              |    3 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/OnlineMessageListener.java                        |   15 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                                      |   19 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java                                               |    3 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PingMessageListener.java                          |   15 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java                                       |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java                            |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java                                   |    3 
 /dev/null                                                                                                                             |  124 --------
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java    |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java                               |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java                              |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java                          |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java                                      |    3 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java             |    7 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java                      |   86 +++++
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java                                        |    2 
 72 files changed, 629 insertions(+), 269 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-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java
index 37f71b0..c9c09f2 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java
@@ -85,6 +85,8 @@
     @TableField("two_audit_time")
     private LocalDateTime twoAuditTime;
 
-
+    @ApiModelProperty(value = "父级id  上一次已审核通过的id  为空则代表是新增,或者本次数据状态审核中或已拒绝")
+    @TableField("parent_id")
+    private Integer parentId;
 
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java
index 92f30c5..8a096a8 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "acquisition_billing_mode") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class AcquisitionBillingMode extends BaseModel {
-
+    @Id
     private String charging_pile_code;// 桩编码
 
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java
index acbcabd..6546d89 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "acquisition_billing_mode_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class AcquisitionBillingModeReply extends BaseModel {
-
+    @Id
     private String charging_pile_code;// 桩编码
     private String billing_model_code;// "计费模型编号
     private BigDecimal sharp_peak_electricity_rate;// 尖费电费费率(精确到五位小数)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java
index 27ab720..61f2f05 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "billing_mode_verify") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class BillingModeVerify extends BaseModel {
-
+    @Id
     private String charging_pile_code;// 桩编码
     private String billing_model_code;// "计费模型编号,首次连接到平台时置零
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java
index f2bba91..d7df7d2 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "billing_mode_verify_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class BillingModeVerifyReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; // 桩编
     private String billing_model_code; // 计费模型编
     private Integer billing_model_result; // 验证结果(0:桩计费模型与平台一致,1:桩计费模型与平台不一致)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java
index 8679a4d..9dcb165 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "bms_abort") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class BmsAbort extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java
index dc5de41..be2a555 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "bms_demand_and_charger_exportation") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class BmsDemandAndChargerExportation extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java
index 14e6893..ef62154 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "bms_information") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class BmsInformation extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java
index 3090700..ccd33d4 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java
@@ -18,11 +18,8 @@
  **/
 
 @Data
-@Document(collection = "upload_real_time_monitoring_data") //指定要对应的文档名(表名)
-@Accessors(chain = true)
 public class ChargingOrderAndUploadRealTimeMonitoringDataDto extends BaseModel {
 
-    @Id
     private String id;
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java
index c5567c2..47f9b72 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "charging_pile_returns_ground_lock_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ChargingPileReturnsGroundLockData extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String charging_gun_code; // 抢号
     private Integer control_state; // 地锁控制返回标志(1:鉴权成功,0:鉴权失败)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java
index 06c1d89..b17f9b2 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "charging_pile_starts_charging") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ChargingPileStartsCharging extends BaseModel {
-
+    @Id
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
     private Integer start_method; // 启动方式(1:表示通过刷卡启动充电,2:表示通过帐号启动充电(暂不支持),3:表示vin码启动充电)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java
index 8b16c12..4b53b4f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "clear_offline_card") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ClearOfflineCard extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer physical_card_number; // 清除离线卡的个数,最大 24 个
     private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java
index a49b1bf..54ef073 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "clear_offline_card_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ClearOfflineCardReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号
     private String physical_card2;
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java
index d4c4b71..b7d8b18 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "confirm_transaction_record") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ConfirmTransactionRecord extends BaseModel {
-
+    @Id
     private String transaction_serial_number;// 桩编码
     private Integer confirm_result;// 确认结果(0:上传成功,1:非法账单)
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java
index 50749a7..4364158 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "end_charge") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class EndCharge extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java
index 3c8c178..64766c5 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "error_message") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ErrorMessage extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java
index bad55cf..e50835f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "ground_lock_real_time_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class GroundLockRealTimeData extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String charging_gun_code; // 抢号
     private Integer parking_lock_status; // 车位锁状态(0:未到位状态,1:升锁到位状态,2:降锁到位状态)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java
index 4c883ec..a57894f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "motor_abort") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class MotorAbort extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java
index f899c04..fa07b34 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,6 +13,7 @@
 @Document(collection = "online") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class Online extends BaseModel {
+    @Id
     private String charging_pile_code;// 充电桩编号
     private Integer charging_pile_type;// 充电桩类型(0 表示直流桩,1 表示交流桩)
     private Integer charging_gun_number;// 充电枪数量
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java
index 7c90bba..388c86d 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,6 +13,7 @@
 @Document(collection = "online_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class OnlineReply extends BaseModel {
+    @Id
     private String charging_pile_code;// 桩编码
     private Integer online_result;// 登陆结果(0:成功,1:失败)
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java
index c88e665..b7058e1 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "open_or_close_ground_lock") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class OpenOrCloseGroundLock extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String charging_gun_code; // 抢号
     private Integer operate; // 升/降地锁(1:升锁,2:降锁)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java
index e821f97..1e020ee 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "parameter_setting") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ParameterSetting extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java
index d9c4ed8..855b5b0 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "ping") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class Ping extends BaseModel {
-
+    @Id
     private String charging_pile_code;// 桩编码
     private String charging_gun_code;// 抢号
     private Integer charging_gun_status;// 抢状态(0:正常,1:故障)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java
index fe0af18..f9dcee1 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "platform_confirmation_charging") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformConfirmationCharging extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java
index 2dde5c8..6e2b406 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "platform_remote_update") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformRemoteUpdate extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer charging_pile_type; // 桩型号(1:直流,2:交流)
     private Integer charging_pile_power; // 桩功率
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java
index 24e14ee..667b094 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "platform_remote_update_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformRemoteUpdateReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer escalation_state; // 升级状态(0:成功,1:编码错误,2:程序与桩型号不符,3:下载更新文件超时)
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java
index a910e2f..e136e01 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "platform_restart") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformRestart extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer operate; // 执行控制 (1:立即执行,2:空闲执行)
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java
index fba4349..0c1ece3 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "platform_restart_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformRestartReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer set_result; // 设置结果(0:失败,1:成功)
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
index 6647071..54f09f3 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "platform_start_charging_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformStartChargingReply extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java
index 4a9cd1e..d2fe56a 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "platform_stop_charging") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformStopCharging extends BaseModel {
-
+    @Id
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java
index 1c3d8ba..114ee43 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "platform_stop_charging_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class PlatformStopChargingReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
     private Integer stop_result; // 停止结果(0:失败,1:成功)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java
index fe4c9a6..575222c 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "pong") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class Pong extends BaseModel {
-
+    @Id
     private String charging_pile_code;// 桩编码
     private String charging_gun_code;// 抢号
     private Integer charging_gun_status;// 心跳应答(0)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java
index 1d211aa..14ef89f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "query_offline_card") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class QueryOfflineCard extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer physical_card_number; //桩编码
     private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java
index 12cf45d..7462b26 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "query_offline_card_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class QueryOfflineCardReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号
     private String physical_card2;
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java
index 669e9fe..3392cca 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "read_real_time_monitoring_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ReadRealTimeMonitoringData extends BaseModel {
-
+    @Id
     private String charging_pile_code;// 桩编码
     private String charging_gun_code;//  抢号
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java
index ebf8945..e9f2d71 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "setup_billing_model") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class SetupBillingModel extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String billing_model_code; // 计费模型编号
     private BigDecimal sharp_peak_electricity_rate; // 尖费电费费率(精确到五位小数)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java
index 9373261..292aebb 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "setup_billing_model_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class SetupBillingModelReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String set_result; //设置结果(0:失败,1:成功)
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java
index 42b74f6..9a2cc3c 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "synchronize_offline_card") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class SynchronizeOfflineCard extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer card_number; // 下发卡个数
     private String card1; // 第 1 个卡逻辑卡号,离线卡逻辑卡号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java
index c2fb969..76d8c79 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "synchronize_offline_card_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class SynchronizeOfflineCardReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer save_result; // 保存结果(0:失败,1:成功)
     private Integer failure_cause; // 失败原因(1:卡号格式错误,2:储存空间不足)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java
index c9a2626..e0157da 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "timing_setting") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class TimingSetting extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String current_time; //当前时间
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java
index 3748990..8521e21 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "timing_setting_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class TimingSettingReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String current_time; //当前时间
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
index 0906efb..4cd58df 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "transaction_record") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class TransactionRecord extends BaseModel {
-
+    @Id
     private String transaction_serial_number;// 交易流水号
     private String charging_pile_code;// 桩编码
     private String charging_gun_code;// 抢号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java
index dd901dc..26d3cd3 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "update_balance") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class UpdateBalance extends BaseModel {
-
+    @Id
     private String charging_pile_code;// 桩编码
     private String charging_gun_code;// 抢号
     private String physical_card_number;// 物理卡号
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java
index 7cfe110..996d445 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -14,7 +15,7 @@
 @Document(collection = "update_balance_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class UpdateBalanceReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private String physical_card_number; //物理卡号
     private BigDecimal account_balance; //修改结果(:0:修改成功,1:设备编号错误,2:卡号错误)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
index 5338fa8..4204334 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
@@ -3,6 +3,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -15,7 +16,7 @@
 @Document(collection = "upload_real_time_monitoring_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class UploadRealTimeMonitoringData extends BaseModel {
-
+    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
@@ -43,6 +44,8 @@
 
     private BigDecimal period_service_price;//    @ApiModelProperty("时段服务费")
 
+    private BigDecimal period_charging_degree;// @ApiModelProperty("时段充电度数")
+
 
 }
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java
index 7e53a90..f073411 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "working_parameter_setting") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class WorkingParameterSetting extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer allow_work;// 是否允许工作(0:表示允许正常工作,1:表示停止使用,锁定充电桩)
     private Integer maximum_output_power; // 充电桩最大允许输出功率
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java
index 858cc3b..5d7deff 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
@@ -12,7 +13,7 @@
 @Document(collection = "working_parameter_setting_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class WorkingParameterSettingReply extends BaseModel {
-
+    @Id
     private String charging_pile_code; //桩编码
     private Integer set_result; //设置结果(0:失败,1:成功)
 }
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-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
index 9c48083..894820f 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -122,7 +122,7 @@
     @ApiModelProperty(value = "充值支付第三方流水号")
     @TableField("recharge_serial_number")
     private String rechargeSerialNumber;
-    
+
     @ApiModelProperty(value = "剩余金额(用于前端展示)")
     @TableField("residual_amount")
     private BigDecimal residualAmount;
@@ -185,12 +185,4 @@
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("pay_time")
     private LocalDateTime payTime;
-    
-    @ApiModelProperty(value = "累计服务费")
-    @TableField("service_charge")
-    private BigDecimal serviceCharge;
-    
-    @ApiModelProperty(value = "累计电费")
-    @TableField("electrovalence")
-    private BigDecimal electrovalence;
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java
index 7bec166..b991d8e 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java
@@ -35,5 +35,7 @@
     private String gunName;
     @ApiModelProperty(value = "枪号")
     private String gunNumber;
+    @ApiModelProperty(value = "结束方式(0=异常终止,1=主动终止,2=满电终止,3=费用不足终止)")
+    private Integer endMode;
 
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 58e94fb..b0b15f2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -16,6 +16,7 @@
 import com.ruoyi.chargingPile.service.TChargingPileService;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.dto.SteategyPassDto;
+import com.ruoyi.common.core.enums.AuditStateEnum;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.domain.BaseDelete;
 import com.ruoyi.common.core.web.page.PageInfo;
@@ -40,6 +41,7 @@
 import java.time.LocalTime;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 
 import static com.ruoyi.common.core.context.SecurityContextHolder.getUserId;
 
@@ -115,7 +117,6 @@
         // 添加明细
         dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
         accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
-        // TODO 硬件 同步策略到充电桩
         return AjaxResult.ok(dto.getId());
     }
 
@@ -125,19 +126,52 @@
     @Log(title = "修改计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "修改计费策略")
     @PostMapping(value = "/update")
-    public AjaxResult<Boolean> update(@RequestBody TAccountingStrategyDTO dto) {
+    public AjaxResult<String> update(@RequestBody TAccountingStrategyDTO dto) {
         Boolean flag = accountingStrategyDetailService.isStrategy24Hour(dto.getAccountingStrategyDetails());
         if(flag){
             return AjaxResult.error("计费模板时间设置有误差");
         }
-        // 删除计费策略明细信息
-        accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
-                .eq(TAccountingStrategyDetail::getAccountingStrategyId, dto.getId()));
-        accountingStrategyService.updateById(dto);
-        // 添加明细
-        dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
-        // TODO 硬件 同步策略到充电桩
-        return AjaxResult.ok(accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()));
+        // 判断修改的计费策略是否为已通过
+        if(dto.getAuditStatus() == 3 || dto.getAuditStatus() == 4){
+            // 查询是否有下级审核中的策略
+            TAccountingStrategy children = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class)
+                    .eq(TAccountingStrategy::getParentId, dto.getId())
+                    .ne(TAccountingStrategy::getAuditStatus, Arrays.asList(3,4)));
+            if(Objects.nonNull(children)){
+                // 删除计费策略明细信息
+                accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
+                        .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId()));
+                dto.setAuditStatus(1);
+                accountingStrategyService.updateById(dto);
+                // 添加明细
+                dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
+                accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
+            }else {
+                Long userId = SecurityUtils.getLoginUser().getUserid();
+                dto.setUserId(userId);
+                dto.setAuditStatus(1);
+                dto.setId(null);
+                dto.setParentId(dto.getId());
+                accountingStrategyService.save(dto);
+                // 添加明细
+                List<TAccountingStrategyDetail> accountingStrategyDetails = dto.getAccountingStrategyDetails();
+                accountingStrategyDetails.forEach(detail -> {
+                    detail.setAccountingStrategyId(dto.getId());
+                    detail.setId(null);
+                });
+                accountingStrategyDetailService.saveBatch(accountingStrategyDetails);
+            }
+        }else {
+            // 删除计费策略明细信息
+            accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, dto.getId()));
+            dto.setAuditStatus(1);
+            accountingStrategyService.updateById(dto);
+            // 添加明细
+            dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
+            accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
+        }
+        return AjaxResult.success();
     }
 
     /**
@@ -162,12 +196,61 @@
     }
 
     /**
+     * 查看计费策略详情-修改后
+     */
+    @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "查看计费策略详情修改后children的数据")
+    @GetMapping(value = "/getDetailChildrenById")
+    public AjaxResult<TAccountingStrategyVO> getDetailChildrenById(@RequestParam("id") Integer id) {
+        TAccountingStrategyVO accountingStrategyVO = new TAccountingStrategyVO();
+        // 先查询children对象
+        TAccountingStrategy children = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class)
+                .eq(TAccountingStrategy::getParentId, id)
+                .orderByDesc(TAccountingStrategy::getCreateTime)
+                .last("LIMIT 1"));
+        if(Objects.nonNull(children)){
+            BeanUtils.copyProperties(children,accountingStrategyVO);
+            // 查询用户信息
+            if(null != children.getFirstUserId()){
+                String firstUserName = sysUserClient.getSysUser(children.getFirstUserId()).getData().getNickName();
+                accountingStrategyVO.setFirstUserName(firstUserName);
+            }
+            if(null != children.getTwoUserId()){
+                String twoUserName = sysUserClient.getSysUser(children.getTwoUserId()).getData().getNickName();
+                accountingStrategyVO.setTwoUserName(twoUserName);
+            }
+            accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId())));
+        }else {
+            TAccountingStrategy accountingStrategy = accountingStrategyService.getById(id);
+            BeanUtils.copyProperties(accountingStrategy,accountingStrategyVO);
+            // 查询用户信息
+            if(null != accountingStrategy.getFirstUserId()){
+                String firstUserName = sysUserClient.getSysUser(accountingStrategy.getFirstUserId()).getData().getNickName();
+                accountingStrategyVO.setFirstUserName(firstUserName);
+            }
+            if(null != accountingStrategy.getTwoUserId()){
+                String twoUserName = sysUserClient.getSysUser(accountingStrategy.getTwoUserId()).getData().getNickName();
+                accountingStrategyVO.setTwoUserName(twoUserName);
+            }
+            accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
+                    .eq(TAccountingStrategyDetail::getAccountingStrategyId, id)));
+        }
+        return AjaxResult.ok(accountingStrategyVO);
+    }
+
+    /**
      * 删除计费策略
      */
     @Log(title = "删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE)
     @ApiOperation(tags = {"后台-计费策略"},value = "删除计费策略")
     @DeleteMapping(value = "/deleteById")
     public AjaxResult<Boolean> deleteById(@RequestParam("id") Integer id) {
+        // 判断策略是否在使用
+        long count = siteService.count(Wrappers.lambdaQuery(Site.class)
+                .eq(Site::getAccountingStrategyId, id));
+        if(count>0){
+            return AjaxResult.error("该计费策略正在使用中,无法删除");
+        }
         // 刪除计费策略明细信息
         accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
                 .eq(TAccountingStrategyDetail::getAccountingStrategyId, id));
@@ -182,6 +265,12 @@
     @DeleteMapping(value = "/deleteByIds")
     public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) {
         String[] split = ids.split(",");
+        // 判断策略是否在使用
+        long count = siteService.count(Wrappers.lambdaQuery(Site.class)
+                .in(Site::getAccountingStrategyId, Arrays.asList(split)));
+        if(count>0){
+            return AjaxResult.error("该计费策略正在使用中,无法删除");
+        }
         // 刪除计费策略明细信息
         accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class)
                 .in(TAccountingStrategyDetail::getAccountingStrategyId, Arrays.asList(split)));
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-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
index 852f794..521ac63 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
@@ -18,15 +18,16 @@
         <result column="two_audit_time" property="twoAuditTime" />
         <result column="create_time" property="createTime" />
         <result column="del_flag" property="delFlag" />
+        <result column="parent_id" property="parentId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag
+        id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,parent_id
     </sql>
     <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO">
         SELECT
-        id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id
+        id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id,parent_id
         FROM t_accounting_strategy
         <where>
             <if test="query.name != null and query.name != ''">
@@ -45,7 +46,7 @@
     
     <select id="getPlatformAccountingStrategy" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO">
         SELECT
-            id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag
+            id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,parent_id
         FROM t_accounting_strategy where del_flag = 0 and site_id is not null order by create_time desc
     </select>
 </mapper>
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/iotda/constant/SendTagConstant.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java
new file mode 100644
index 0000000..9088d1e
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/constant/SendTagConstant.java
@@ -0,0 +1,109 @@
+package com.ruoyi.integration.iotda.constant;
+
+
+/**
+ * @author xiaochen
+ * @Date 2024/8/22 15:28
+ */
+public class SendTagConstant {
+	/**
+	 * 充电桩登录认证
+	 */
+	public static final String ONLINE ="online";
+	/**
+	 * 充电桩心跳包
+	 */
+	public static final String PING ="ping";
+	/**
+	 * 计费模型验证请求
+	 */
+	public static final String BILLING_MODE_VERIFY ="billing_mode_verify";
+	/**
+	 * 充电桩计费模型请求
+	 */
+	public static final String ACQUISITION_BILLING_MODE ="acquisition_billing_mode";
+	/**
+	 * 上传实时监测数据
+	 */
+	public static final String UPLOAD_REAL_TIME_MONITORING_DATA ="upload_real_time_monitoring_data";
+	/**
+	 * 充电握手
+	 */
+	public static final String CHARGING_HANDSHAKE ="charging_handshake";
+	/**
+	 * 充电阶段BMS中止
+	 */
+	public static final String BMS_ABORT ="bms_abort";
+	/**
+	 * 充电阶段充电机中止
+	 */
+	public static final String MOTOR_ABORT ="motor_abort";
+	/**
+	 * 充电过程BMS需求、充电机输出
+	 */
+	public static final String BMS_DEMAND_AND_CHARGER_EXPORTATION ="bms_demand_and_charger_exportation";
+	/**
+	 * 充电过程BMS信息
+	 */
+	public static final String BMS_INFORMATION ="bms_information";
+	/**
+	 * 充电桩主动申请启动充电
+	 */
+	public static final String CHARGING_PILE_STARTS_CHARGING ="charging_pile_starts_charging";
+	/**
+	 * 远程启机命令回复
+	 */
+	public static final String PLATFORM_START_CHARGING_REPLY ="platform_start_charging_reply";
+	/**
+	 * 远程停机命令回复
+	 */
+	public static final String PLATFORM_STOP_CHARGING_REPLY ="platform_stop_charging_reply";
+	/**
+	 * 交易记录
+	 */
+	public static final String TRANSACTION_RECORD ="transaction_record";
+	/**
+	 * 余额更新应答
+	 */
+	public static final String UPDATE_BALANCE_REPLY ="update_balance_reply";
+	/**
+	 * 卡数据同步应答
+	 */
+	public static final String SYNCHRONIZE_OFFLINE_CARD_REPLY ="synchronize_offline_card_reply";
+	/**
+	 * 离线卡数据清除应答
+	 */
+	public static final String CLEAR_OFFLINE_CARD_REPLY ="clear_offline_card_reply";
+	/**
+	 * 离线卡数据查询应答
+	 */
+	public static final String QUERY_OFFLINE_CARD_REPLY ="query_offline_card_reply";
+	/**
+	 * 充电桩工作参数设置应答
+	 */
+	public static final String WORKING_PARAMETER_SETTING_REPLY ="working_parameter_setting_reply";
+	/**
+	 * 对时设置应答
+	 */
+	public static final String TIMING_SETTING_REPLY ="timing_setting_reply";
+	/**
+	 * 计费模型应答
+	 */
+	public static final String SETUP_BILLING_MODEL_REPLY ="setup_billing_model_reply";
+	/**
+	 * 地锁数据上送(充电桩上送)
+	 */
+	public static final String GROUND_LOCK_REAL_TIME_DATA ="ground_lock_real_time_data";
+	/**
+	 * 充电桩返回数据(上行)
+	 */
+	public static final String CHARGING_PILE_RETURNS_GROUND_LOCK_DATA ="charging_pile_returns_ground_lock_data";
+	/**
+	 * 远程重启应答
+	 */
+	public static final String PLATFORM_RESTART_REPLY ="platform_restart_reply";
+	/**
+	 * 远程更新应答
+	 */
+	public final static String PLATFORM_REMOTE_UPDATE_REPLY ="platform_remote_update_reply";
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/SendTagMenu.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/SendTagMenu.java
deleted file mode 100644
index d4e01ed..0000000
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/enums/SendTagMenu.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.ruoyi.integration.iotda.enums;
-
-
-/**
- * @author xiaochen
- * @Date 2024/8/22 15:28
- */
-public enum SendTagMenu {
-	/**
-	 * 充电桩登录认证
-	 */
-	ONLINE ("online"),
-	/**
-	 * 充电桩心跳包
-	 */
-	PING ("ping"),
-	/**
-	 * 计费模型验证请求
-	 */
-	BILLING_MODE_VERIFY ("billing_mode_verify"),
-	/**
-	 * 充电桩计费模型请求
-	 */
-	ACQUISITION_BILLING_MODE ("acquisition_billing_mode"),
-	/**
-	 * 上传实时监测数据
-	 */
-	UPLOAD_REAL_TIME_MONITORING_DATA ("upload_real_time_monitoring_data"),
-	/**
-	 * 充电握手
-	 */
-	CHARGING_HANDSHAKE ("charging_handshake"),
-	/**
-	 * 充电阶段BMS中止
-	 */
-	BMS_ABORT ("bms_abort"),
-	/**
-	 * 充电阶段充电机中止
-	 */
-	MOTOR_ABORT ("motor_abort"),
-	/**
-	 * 充电过程BMS需求、充电机输出
-	 */
-	BMS_DEMAND_AND_CHARGER_EXPORTATION ("bms_demand_and_charger_exportation"),
-	/**
-	 * 充电过程BMS信息
-	 */
-	BMS_INFORMATION ("bms_information"),
-	/**
-	 * 充电桩主动申请启动充电
-	 */
-	CHARGING_PILE_STARTS_CHARGING ("charging_pile_starts_charging"),
-	/**
-	 * 远程启机命令回复
-	 */
-	PLATFORM_START_CHARGING_REPLY ("platform_start_charging_reply"),
-	/**
-	 * 远程停机命令回复
-	 */
-	PLATFORM_STOP_CHARGING_REPLY ("platform_stop_charging_reply"),
-	/**
-	 * 交易记录
-	 */
-	TRANSACTION_RECORD ("transaction_record"),
-	/**
-	 * 余额更新应答
-	 */
-	UPDATE_BALANCE_REPLY ("update_balance_reply"),
-	/**
-	 * 卡数据同步应答
-	 */
-	SYNCHRONIZE_OFFLINE_CARD_REPLY ("synchronize_offline_card_reply"),
-	/**
-	 * 离线卡数据清除应答
-	 */
-	CLEAR_OFFLINE_CARD_REPLY ("clear_offline_card_reply"),
-	/**
-	 * 离线卡数据查询应答
-	 */
-	QUERY_OFFLINE_CARD_REPLY ("query_offline_card_reply"),
-	/**
-	 * 充电桩工作参数设置应答
-	 */
-	WORKING_PARAMETER_SETTING_REPLY ("working_parameter_setting_reply"),
-	/**
-	 * 对时设置应答
-	 */
-	TIMING_SETTING_REPLY ("timing_setting_reply"),
-	/**
-	 * 计费模型应答
-	 */
-	SETUP_BILLING_MODEL_REPLY ("setup_billing_model_reply"),
-	/**
-	 * 地锁数据上送(充电桩上送)
-	 */
-	GROUND_LOCK_REAL_TIME_DATA ("ground_lock_real_time_data"),
-	/**
-	 * 充电桩返回数据(上行)
-	 */
-	CHARGING_PILE_RETURNS_GROUND_LOCK_DATA ("charging_pile_returns_ground_lock_data"),
-	/**
-	 * 远程重启应答
-	 */
-	PLATFORM_RESTART_REPLY ("platform_restart_reply"),
-	/**
-	 * 远程更新应答
-	 */
-	PLATFORM_REMOTE_UPDATE_REPLY ("platform_remote_update_reply"),
-	;
-	private String value;
-
-
-	SendTagMenu(String value) {
-		this.value = value;
-	}
-	
-	public String getValue() {
-		return value;
-	}
-	
-	public void setValue(String value) {
-		this.value = value;
-	}
-}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
index acf6897..3640b42 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java
@@ -2,7 +2,11 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.integration.iotda.constant.SendTagConstant;
+import com.ruoyi.integration.rocket.produce.EnhanceProduce;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -16,6 +20,8 @@
 @RestController
 public class IotMessageListener {
 
+    @Autowired
+    private EnhanceProduce enhanceProduce;
 
     /**
      * 设备消息监听
@@ -27,9 +33,85 @@
     public AjaxResult<String> message(@RequestBody JSONObject jsonObject) throws IOException {
         log.info("接收到消息中转:{}",jsonObject);
         JSONObject content = jsonObject.getJSONObject("content");
-        if (content.getString("name").equals("device_status_change")){
-            //设备状态改变
+        String service_id = content.getString("service_id");
+        log.info("服务id:{}",service_id);
+        SendResult sendResult;
+        // 设备消息下发
+        switch (service_id){
+            case SendTagConstant.ONLINE:
+                sendResult = enhanceProduce.onlineMessage(content);
+                break;
+            case SendTagConstant.PING:
+                sendResult = enhanceProduce.pingMessage(content);
+                break;
+            case SendTagConstant.BILLING_MODE_VERIFY:
+                sendResult = enhanceProduce.billingModeVerifyMessage(content);
+                break;
+            case SendTagConstant.ACQUISITION_BILLING_MODE:
+                sendResult = enhanceProduce.acquisitionBillingModeMessage(content);
+                break;
+            case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA:
+                sendResult = enhanceProduce.uploadRealTimeMonitoringDataMessage(content);
+                break;
+            case SendTagConstant.CHARGING_HANDSHAKE:
+                sendResult = enhanceProduce.chargingHandshakeMessage(content);
+                break;
+            case SendTagConstant.BMS_ABORT:
+                sendResult = enhanceProduce.bmsAbortMessage(content);
+                break;
+            case SendTagConstant.MOTOR_ABORT:
+                sendResult = enhanceProduce.motorAbortMessage(content);
+                break;
+            case SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION:
+                sendResult = enhanceProduce.bmsDemandAndChargerExportationMessage(content);
+                break;
+            case SendTagConstant.BMS_INFORMATION:
+                sendResult = enhanceProduce.bmsInformationMessage(content);
+                break;
+            case SendTagConstant.CHARGING_PILE_STARTS_CHARGING:
+                sendResult = enhanceProduce.chargingPileStartsChargingMessage(content);
+                break;
+            case SendTagConstant.PLATFORM_START_CHARGING_REPLY:
+                sendResult = enhanceProduce.platformStartChargingReplyMessage(content);
+                break;
+            case SendTagConstant.PLATFORM_STOP_CHARGING_REPLY:
+                sendResult = enhanceProduce.platformStopChargingReplyMessage(content);
+                break;
+            case SendTagConstant.TRANSACTION_RECORD:
+                sendResult = enhanceProduce.transactionRecordMessage(content);
+                break;
+            case SendTagConstant.UPDATE_BALANCE_REPLY:
+                sendResult = enhanceProduce.updateBalanceReplyMessage(content);
+                break;
+            case SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY:
+                sendResult = enhanceProduce.synchronizeOfflineCardReplyMessage(content);
+                break;
+            case SendTagConstant.CLEAR_OFFLINE_CARD_REPLY:
+                sendResult = enhanceProduce.clearOfflineCardReplyMessage(content);
+                break;
+            case SendTagConstant.WORKING_PARAMETER_SETTING_REPLY:
+                sendResult = enhanceProduce.workingParameterSettingReplyMessage(content);
+                break;
+            case SendTagConstant.TIMING_SETTING_REPLY:
+                sendResult = enhanceProduce.timingSettingReplyMessage(content);
+                break;
+            case SendTagConstant.SETUP_BILLING_MODEL_REPLY:
+                sendResult = enhanceProduce.setupBillingModelReplyMessage(content);
+                break;
+            case SendTagConstant.GROUND_LOCK_REAL_TIME_DATA:
+                sendResult = enhanceProduce.groundLockRealTimeDataMessage(content);
+                break;
+            case SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA:
+                sendResult = enhanceProduce.chargingPileReturnsGroundLockDataMessage(content);
+                break;
+            case SendTagConstant.PLATFORM_RESTART_REPLY:
+                sendResult = enhanceProduce.platformRestartReplyMessage(content);
+                break;
+            default:
+                sendResult = enhanceProduce.platformRemoteUpdateReplyMessage(content);
+                break;
         }
+        log.info("rocketmq消息下发结果:{}",sendResult);
         return AjaxResult.success();
     }
 
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/OnlineMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/OnlineMessageListener.java
index 7ad85d9..6d3b5c1 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/OnlineMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/OnlineMessageListener.java
@@ -1,6 +1,10 @@
 package com.ruoyi.integration.rocket.listener;
 
 import com.ruoyi.integration.api.model.Online;
+import com.ruoyi.integration.api.model.OnlineReply;
+import com.ruoyi.integration.iotda.enums.ServiceIdMenu;
+import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce;
+import com.ruoyi.integration.iotda.utils.tools.MessageUtil;
 import com.ruoyi.integration.mongodb.service.OnlineService;
 import com.ruoyi.integration.rocket.model.OnlineMessage;
 import com.ruoyi.integration.rocket.model.OnlineMessage;
@@ -24,6 +28,10 @@
 
     @Autowired
     private OnlineService onlineService;
+    @Autowired
+    private MessageUtil messageUtil;
+    @Autowired
+    private IotMessageProduce iotMessageProduce;
 
     @Override
     protected void handleMessage(OnlineMessage message) throws Exception {
@@ -33,7 +41,12 @@
         Online online = new Online();
         BeanUtils.copyProperties(message,online);
         onlineService.create(online);
-        // 业务处理
+        // 业务处理 登录认证应答
+        OnlineReply onlineReply = new OnlineReply();
+        onlineReply.setCharging_pile_code(message.getCharging_pile_code());
+        onlineReply.setOnline_result(0);
+        String result = iotMessageProduce.sendMessage(onlineReply.getCharging_pile_code(), ServiceIdMenu.ONLINE_REPLY.getKey(), messageUtil.onlineReply(onlineReply));
+        log.info("充电桩登录认证-返回结果:{}",result);
     }
 
     @Override
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PingMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PingMessageListener.java
index 5a562a6..f44ef06 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PingMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/PingMessageListener.java
@@ -2,6 +2,10 @@
 
 import com.ruoyi.integration.api.model.Online;
 import com.ruoyi.integration.api.model.Ping;
+import com.ruoyi.integration.api.model.Pong;
+import com.ruoyi.integration.iotda.enums.ServiceIdMenu;
+import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce;
+import com.ruoyi.integration.iotda.utils.tools.MessageUtil;
 import com.ruoyi.integration.mongodb.service.OnlineService;
 import com.ruoyi.integration.mongodb.service.PingService;
 import com.ruoyi.integration.rocket.model.PingMessage;
@@ -25,7 +29,10 @@
 
     @Autowired
     private PingService pingService;
-
+    @Autowired
+    private MessageUtil messageUtil;
+    @Autowired
+    private IotMessageProduce iotMessageProduce;
     @Override
     protected void handleMessage(PingMessage message) throws Exception {
         // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试
@@ -35,6 +42,12 @@
         BeanUtils.copyProperties(message,ping);
         pingService.create(ping);
         // 业务处理
+        Pong pong = new Pong();
+        pong.setCharging_pile_code(message.getCharging_pile_code());
+        pong.setCharging_gun_code(message.getCharging_gun_code());
+        pong.setCharging_gun_status(0);
+        String result = iotMessageProduce.sendMessage(pong.getCharging_pile_code(), ServiceIdMenu.PONG.getKey(), messageUtil.pong(pong));
+        log.info("充电桩心跳包-返回结果:{}",result);
     }
 
     @Override
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-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduceController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
similarity index 68%
rename from ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduceController.java
rename to ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
index eb4f3e2..5586e13 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduceController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/EnhanceProduce.java
@@ -2,22 +2,22 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.ruoyi.integration.iotda.enums.SendTagMenu;
+import com.ruoyi.integration.iotda.constant.SendTagConstant;
 import com.ruoyi.integration.rocket.model.*;
 import com.ruoyi.integration.rocket.util.RocketMQEnhanceTemplate;
 import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.client.producer.SendResult;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.UUID;
 
-@RestController
-@RequestMapping("enhance")
 @Slf4j
-public class EnhanceProduceController {
+@Component
+public class EnhanceProduce {
 
     //注入增强后的模板,可以自动实现环境隔离,日志记录
     @Setter(onMethod_ = @Autowired)
@@ -33,8 +33,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.ONLINE.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.ONLINE.getValue(), message);
+        message.setSource(SendTagConstant.ONLINE);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.ONLINE, message);
     }
 
     /**
@@ -45,8 +45,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.PING.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PING.getValue(), message);
+        message.setSource(SendTagConstant.PING);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PING, message);
     }
 
     /**
@@ -57,8 +57,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.BILLING_MODE_VERIFY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BILLING_MODE_VERIFY.getValue(), message);
+        message.setSource(SendTagConstant.BILLING_MODE_VERIFY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BILLING_MODE_VERIFY, message);
     }
 
     /**
@@ -69,8 +69,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.ACQUISITION_BILLING_MODE.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.ACQUISITION_BILLING_MODE.getValue(), message);
+        message.setSource(SendTagConstant.ACQUISITION_BILLING_MODE);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.ACQUISITION_BILLING_MODE, message);
     }
 
     /**
@@ -81,8 +81,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.UPLOAD_REAL_TIME_MONITORING_DATA.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.UPLOAD_REAL_TIME_MONITORING_DATA.getValue(), message);
+        message.setSource(SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA, message);
     }
 
     /**
@@ -93,8 +93,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.CHARGING_HANDSHAKE.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CHARGING_HANDSHAKE.getValue(), message);
+        message.setSource(SendTagConstant.CHARGING_HANDSHAKE);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CHARGING_HANDSHAKE, message);
     }
 
     /**
@@ -105,8 +105,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.BMS_ABORT.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BMS_ABORT.getValue(), message);
+        message.setSource(SendTagConstant.BMS_ABORT);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BMS_ABORT, message);
     }
 
     /**
@@ -117,8 +117,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.MOTOR_ABORT.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.MOTOR_ABORT.getValue(), message);
+        message.setSource(SendTagConstant.MOTOR_ABORT);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.MOTOR_ABORT, message);
     }
 
     /**
@@ -129,8 +129,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.BMS_DEMAND_AND_CHARGER_EXPORTATION.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BMS_DEMAND_AND_CHARGER_EXPORTATION.getValue(), message);
+        message.setSource(SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BMS_DEMAND_AND_CHARGER_EXPORTATION, message);
     }
 
     /**
@@ -141,8 +141,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.BMS_INFORMATION.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.BMS_INFORMATION.getValue(), message);
+        message.setSource(SendTagConstant.BMS_INFORMATION);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.BMS_INFORMATION, message);
     }
 
     /**
@@ -153,8 +153,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.CHARGING_PILE_STARTS_CHARGING.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CHARGING_PILE_STARTS_CHARGING.getValue(), message);
+        message.setSource(SendTagConstant.CHARGING_PILE_STARTS_CHARGING);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CHARGING_PILE_STARTS_CHARGING, message);
     }
 
     /**
@@ -165,8 +165,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.PLATFORM_START_CHARGING_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_START_CHARGING_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.PLATFORM_START_CHARGING_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_START_CHARGING_REPLY, message);
     }
 
     /**
@@ -177,8 +177,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.PLATFORM_STOP_CHARGING_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_STOP_CHARGING_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.PLATFORM_STOP_CHARGING_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_STOP_CHARGING_REPLY, message);
     }
 
     /**
@@ -189,8 +189,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.TRANSACTION_RECORD.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.TRANSACTION_RECORD.getValue(), message);
+        message.setSource(SendTagConstant.TRANSACTION_RECORD);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.TRANSACTION_RECORD, message);
     }
 
     /**
@@ -201,8 +201,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.UPDATE_BALANCE_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.UPDATE_BALANCE_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.UPDATE_BALANCE_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.UPDATE_BALANCE_REPLY, message);
     }
 
     /**
@@ -213,8 +213,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.SYNCHRONIZE_OFFLINE_CARD_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.SYNCHRONIZE_OFFLINE_CARD_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.SYNCHRONIZE_OFFLINE_CARD_REPLY, message);
     }
 
     /**
@@ -225,8 +225,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.CLEAR_OFFLINE_CARD_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CLEAR_OFFLINE_CARD_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.CLEAR_OFFLINE_CARD_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CLEAR_OFFLINE_CARD_REPLY, message);
     }
 
     /**
@@ -237,8 +237,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.WORKING_PARAMETER_SETTING_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.WORKING_PARAMETER_SETTING_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.WORKING_PARAMETER_SETTING_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.WORKING_PARAMETER_SETTING_REPLY, message);
     }
 
     /**
@@ -249,8 +249,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.TIMING_SETTING_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.TIMING_SETTING_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.TIMING_SETTING_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.TIMING_SETTING_REPLY, message);
     }
 
     /**
@@ -261,8 +261,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.SETUP_BILLING_MODEL_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.SETUP_BILLING_MODEL_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.SETUP_BILLING_MODEL_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.SETUP_BILLING_MODEL_REPLY, message);
     }
 
     /**
@@ -273,8 +273,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.GROUND_LOCK_REAL_TIME_DATA.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.GROUND_LOCK_REAL_TIME_DATA.getValue(), message);
+        message.setSource(SendTagConstant.GROUND_LOCK_REAL_TIME_DATA);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.GROUND_LOCK_REAL_TIME_DATA, message);
     }
 
     /**
@@ -285,8 +285,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA.getValue(), message);
+        message.setSource(SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.CHARGING_PILE_RETURNS_GROUND_LOCK_DATA, message);
     }
 
     /**
@@ -297,8 +297,8 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.PLATFORM_RESTART_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_RESTART_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.PLATFORM_RESTART_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_RESTART_REPLY, message);
     }
 
     /**
@@ -309,7 +309,7 @@
         // 设置业务key
         message.setKey(UUID.randomUUID().toString());
         // 设置消息来源,便于查询
-        message.setSource(SendTagMenu.PLATFORM_REMOTE_UPDATE_REPLY.getValue());
-        return rocketMQEnhanceTemplate.send(TOPIC, SendTagMenu.PLATFORM_REMOTE_UPDATE_REPLY.getValue(), message);
+        message.setSource(SendTagConstant.PLATFORM_REMOTE_UPDATE_REPLY);
+        return rocketMQEnhanceTemplate.send(TOPIC, SendTagConstant.PLATFORM_REMOTE_UPDATE_REPLY, message);
     }
 }
\ No newline at end of file
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..0cdb324 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;
@@ -140,6 +141,12 @@
     @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"})
     public R<PageInfo<PayOrderDto>> payOrderList(@RequestBody PayOrderQueryDto payOrderQueryDto) {
         return chargingOrderService.payOrderQuery(payOrderQueryDto);
+    }
+    @ResponseBody
+    @PostMapping(value = "/pay/order/refund")
+    @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"})
+    public R refund(@RequestBody PayOrderRefundDto payOrderQueryDto) {
+        return chargingOrderService.payRefund(payOrderQueryDto);
     }
 
     @ResponseBody
@@ -638,7 +645,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)));
+    }
+
 
 
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderRefundDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderRefundDto.java
new file mode 100644
index 0000000..c8ca3d3
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderRefundDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.dto;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class PayOrderRefundDto{
+    private Long orderId;
+    @ApiModelProperty("1充电订单2购物订单3vip订单4停车订单")
+    private Integer type;
+    private BigDecimal refundAmount;
+    private String reason;
+    private String remark;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index ff03857..df5281e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -130,6 +130,8 @@
 
     ChargingOrderTimeVO chargingList(ChargingListQuery dto);
 
+	R payRefund(PayOrderRefundDto payOrderQueryDto);
+
 	ChargingOrderListInfoVO chargingInfo(String uid);
 
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
index 6c8d89c..b48a88e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java
@@ -57,13 +57,14 @@
             if (item.getOrderType() == 1) {
                 TChargingOrder tChargingOrder = chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null);
                 if(Objects.nonNull(tChargingOrder)){
-                    item.setChargingOrder(chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null));
+                    item.setChargingOrder(tChargingOrder);
                     SiteNameVO siteNameVO = chargingGunClient.getAllInfoById(tChargingOrder.getChargingGunId()).getData();
                     item.setGunName(siteNameVO.getGunName());
                     item.setGunNumber(siteNameVO.getGunNumber());
                     item.setPileName(siteNameVO.getPileName());
                     item.setPileNumber(siteNameVO.getPileNumber());
                     item.setSiteName(siteNameVO.getSiteName());
+                    item.setEndMode(tChargingOrder.getEndMode());
                 }
             }else if (item.getOrderType() == 2) {
                 TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null);
@@ -82,7 +83,11 @@
         BeanUtils.copyProperties(orderAppeal,orderAppealVO);
         // 查询申诉详情
         if (orderAppeal.getOrderType() == 1) {
-            orderAppealVO.setChargingOrder(chargingOrderMapper.selectById(orderAppeal.getOrderId()));
+            TChargingOrder tChargingOrder = chargingOrderMapper.selectById(orderAppeal.getOrderId());
+            orderAppealVO.setChargingOrder(tChargingOrder);
+            if(Objects.nonNull(tChargingOrder)){
+                orderAppealVO.setEndMode(tChargingOrder.getEndMode());
+            }
         }else if (orderAppeal.getOrderType() == 2) {
             TShoppingOrder tShoppingOrder = shoppingOrderMapper.selectById(orderAppeal.getOrderId());
             setGoodsInfo(orderAppealVO,tShoppingOrder);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index 1ea0979..e3ba3e6 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -361,6 +361,7 @@
         if(1 == paymentType){
             WxPaymentRefundModel model = new WxPaymentRefundModel();
             model.setOut_trade_no(shoppingOrder.getCode());
+            model.setTransaction_id(shoppingOrder.getSerialNumber());
             model.setOut_refund_no(shoppingOrderRefund.getRefundCode());
             model.setReason("取消订单");
             model.setNotify_url("http://127.0.0.1:9000/order/t-shopping-order/cancelShoppingOrderWxRefund");

--
Gitblit v1.7.1