From a41e23347029bf69a3f59438749658252de81d2e Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 15 十月 2024 09:41:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                                |  887 ++++++++++++++++---------------
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java                              |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java                          |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java                  |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java                                      |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java                           |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java                    |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java                          |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java                                                |   40 +
 ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml                                                                         |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java                               |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java               |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java                                |   60 +
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java                                   |    7 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java                           |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java                          |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java                                        |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java                            |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java                      |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java                                   |   15 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java                                |    1 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java                                  |    2 
 ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml                                                                         |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java                               |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java                    |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java                                          |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java                               |    1 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserIntegralChangeFallbackFactory.java                  |    5 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java                       |   10 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java                               |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java                            |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java                          |    1 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml                                                 |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java                              |    1 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java                              |    5 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java                          |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java                                   |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java                                       |    1 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java                                     |   49 +
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStopChargingReplyServiceImpl.java |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java                                                  |   13 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserIntegralChangeController.java                       |   14 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java                     |   17 
 ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java                                            |   17 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml                                                 |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java                                |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java                     |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java                       |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java                                 |    1 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java                       |   31 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java                             |    5 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java                      |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java                        |    1 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java       |   25 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateTagMapper.xml                                              |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml                                             |    6 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java                                            |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java                    |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                                         |   19 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                               |   12 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java                                  |    1 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/AccountingStrategyDetailOrder.java                               |    4 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java        |    2 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java                                     |    8 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java                           |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                                   |   49 +
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java                            |   25 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java                                      |   14 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java                                            |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java                                    |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDeliveryReply.java                             |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java                         |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java                                |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java                            |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java                           |    1 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java                                |    6 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java                       |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDelivery.java                                  |    1 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java                                   |    1 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/listener/IotMessageListener.java                   |   25 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java                    |  146 ++--
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java                                     |    1 
 82 files changed, 955 insertions(+), 620 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
index 67b6a52..d00fb80 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -85,6 +85,12 @@
             public R<TAppUserAddress> getAddressById(Long id) {
                 return R.fail("通过地址id `查询用户地址失败:"+throwable.getMessage());
             }
+    
+    
+            @Override
+            public R<String> getWXToken() {
+                return R.fail("获取微信token失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserIntegralChangeFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserIntegralChangeFallbackFactory.java
index da91d05..26f343e 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserIntegralChangeFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserIntegralChangeFallbackFactory.java
@@ -27,6 +27,11 @@
 			public R addAppUserIntegralChange(TAppUserIntegralChange appUserIntegralChange) {
 				return R.fail("添加积分变动记录失败:" + throwable.getMessage());
 			}
+			
+			@Override
+			public R<TAppUserIntegralChange> getTAppUserIntegralChangeByOrderCode(String code) {
+				return R.fail("根据订单code获取积分记录失败:" + throwable.getMessage());
+			}
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index 0f42ada..1646c54 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -85,4 +85,12 @@
 
     @PostMapping(value = "/t-app-user/user/give/vip")
     public R giveVip(@RequestBody GiveVipDto giveVipDto);
+    
+    
+    /**
+     * 获取微信token
+     * @return
+     */
+    @PostMapping("/wxLogin/getWXToken")
+    R<String> getWXToken();
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java
index eed0fbd..549263d 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserIntegralChangeClient.java
@@ -7,6 +7,7 @@
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @author zhibing.pu
@@ -22,4 +23,13 @@
 	 */
 	@PostMapping("/t-app-user-integral-change/addAppUserIntegralChange")
 	R addAppUserIntegralChange(@RequestBody TAppUserIntegralChange appUserIntegralChange);
+	
+	
+	/**
+	 * 根据订单code获取积分记录
+	 * @param code
+	 * @return
+	 */
+	@PostMapping("/t-app-user-integral-change/addAppUserIntegralChange")
+	R<TAppUserIntegralChange> getTAppUserIntegralChangeByOrderCode(@RequestParam("code") String code);
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
index 5ceab1f..5edbbb9 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
@@ -24,7 +24,7 @@
 	 * @return
 	 */
 	@PostMapping("/uploadRealTimeMonitoringData/getOrderInfoByCode")
-	R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId);
+	R<UploadRealTimeMonitoringData> chargingOrderInfo(@RequestParam("orderId") String orderId);
 
 	/**
 	 * 批量查询
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 8a096a8..ebe3f62 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
@@ -13,7 +13,6 @@
 @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 1fc190a..7b55b38 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
@@ -15,17 +15,16 @@
 @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;// 尖费电费费率(精确到五位小数)
-    private BigDecimal sharp_peak_service_rate;// 尖服务费费率(精确到五位小数)
-    private BigDecimal peak_electricity_rate;// 峰电费费率(精确到五位小数)
-    private BigDecimal peak_service_rate;// 峰服务费费率(精确到五位小数)
-    private BigDecimal flat_peak_electricity_rate;// 平电费费率(精确到五位小数)
-    private BigDecimal flat_peak_service_rate;// 平服务费费率(精确到五位小数)
-    private BigDecimal low_peak_electricity_rate;// 谷电费费率(精确到五位小数)
-    private BigDecimal low_peak_service_rate;// 谷服务费费率(精确到五位小数)
+    private BigDecimal sharp_peak_electricity_rate = BigDecimal.ZERO;// 尖费电费费率(精确到五位小数)
+    private BigDecimal sharp_peak_service_rate = BigDecimal.ZERO;// 尖服务费费率(精确到五位小数)
+    private BigDecimal peak_electricity_rate = BigDecimal.ZERO;// 峰电费费率(精确到五位小数)
+    private BigDecimal peak_service_rate = BigDecimal.ZERO;// 峰服务费费率(精确到五位小数)
+    private BigDecimal flat_peak_electricity_rate = BigDecimal.ZERO;// 平电费费率(精确到五位小数)
+    private BigDecimal flat_peak_service_rate = BigDecimal.ZERO;// 平服务费费率(精确到五位小数)
+    private BigDecimal low_peak_electricity_rate = BigDecimal.ZERO;// 谷电费费率(精确到五位小数)
+    private BigDecimal low_peak_service_rate = BigDecimal.ZERO;// 谷服务费费率(精确到五位小数)
     private BigDecimal loss_ratio;// 计损比例
 //    private DayTimeBase day_time_base;
     private Integer time1;// 0:00~0:30 时段费率号(0:尖费率,1:峰费率,2:平费率,3:谷费率)
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 61f2f05..6b4eded 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
@@ -13,7 +13,6 @@
 @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 d7df7d2..795b08c 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
@@ -13,7 +13,6 @@
 @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 9dcb165..592b4e0 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
@@ -15,7 +15,6 @@
 @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 c190e8a..917a20f 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
@@ -15,7 +15,6 @@
 @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 fbc1221..530b6d9 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
@@ -15,7 +15,6 @@
 @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/ChargingHandshake.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java
index 98158a9..f47e2f5 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java
@@ -15,7 +15,6 @@
 @Document(collection = "charging_handshake") //指定要对应的文档名(表名)
 @Accessors(chain = true)
 public class ChargingHandshake 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/ChargingPileReturnsGroundLockData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java
index 47f9b72..9f4e4d1 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
@@ -13,7 +13,6 @@
 @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 b17f9b2..6db9689 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
@@ -13,7 +13,6 @@
 @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 4b53b4f..835a5bc 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
@@ -13,7 +13,6 @@
 @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 54ef073..021b97f 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
@@ -13,7 +13,6 @@
 @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 b7d8b18..69c7681 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
@@ -13,7 +13,6 @@
 @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 4364158..5c77db6 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
@@ -15,7 +15,6 @@
 @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 64766c5..f170327 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
@@ -15,7 +15,6 @@
 @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 e50835f..ed43a18 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
@@ -13,7 +13,6 @@
 @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 a57894f..0c81e3a 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
@@ -13,7 +13,6 @@
 @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 fa07b34..2feb5b1 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
@@ -13,7 +13,6 @@
 @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 388c86d..5fd1ceb 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
@@ -13,7 +13,6 @@
 @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 b7058e1..88562fe 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
@@ -13,7 +13,6 @@
 @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 1e020ee..9798646 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
@@ -15,7 +15,6 @@
 @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 855b5b0..d2b4e9e 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
@@ -13,7 +13,6 @@
 @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 f9dcee1..4685df2 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
@@ -15,7 +15,6 @@
 @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 6e2b406..6a13756 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
@@ -13,7 +13,6 @@
 @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 667b094..92e7c08 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
@@ -13,7 +13,6 @@
 @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 e136e01..8d50b2a 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
@@ -13,7 +13,6 @@
 @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 0c1ece3..be2e424 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
@@ -13,7 +13,6 @@
 @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/PlatformStartCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java
index b19b471..c747845 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java
@@ -16,7 +16,6 @@
 @Accessors(chain = true)
 public class PlatformStartCharging 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 d2fe56a..821d2d8 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
@@ -13,7 +13,6 @@
 @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 114ee43..b063da5 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
@@ -15,7 +15,6 @@
 @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 575222c..2978938 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
@@ -13,7 +13,6 @@
 @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/QrCodeDelivery.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDelivery.java
index 1bf5898..ac3be77 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDelivery.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDelivery.java
@@ -10,7 +10,6 @@
 @Accessors(chain = true)
 public class QrCodeDelivery {
 
-    @Id
     private String charging_pile_code; // 桩编码
     private Integer code_format; // "0:第一种前缀+桩编号  1:第二种前缀+桩编号+枪编号"
     private Integer prefix_length; // 二维码前缀长度长度最大不超过200 字节
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDeliveryReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDeliveryReply.java
index 6a63992..476252e 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDeliveryReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QrCodeDeliveryReply.java
@@ -10,7 +10,6 @@
 @Accessors(chain = true)
 public class QrCodeDeliveryReply {
 
-    @Id
     private String charging_pile_code; // 桩编码
     private Integer delivery_result; // 设置结果(0:成功,1:失败)
 
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 14ef89f..241cdf8 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
@@ -13,7 +13,6 @@
 @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 7462b26..da7de83 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
@@ -13,7 +13,6 @@
 @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 3392cca..c77c7a3 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
@@ -13,7 +13,6 @@
 @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 e9f2d71..7fc845f 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
@@ -15,7 +15,6 @@
 @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 292aebb..a774e6e 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
@@ -13,7 +13,6 @@
 @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 9a2cc3c..add2041 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
@@ -13,7 +13,6 @@
 @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 76d8c79..b6d0da3 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
@@ -15,7 +15,6 @@
 @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 e0157da..37236c2 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
@@ -13,7 +13,6 @@
 @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 8521e21..093e3dc 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
@@ -13,7 +13,6 @@
 @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 4cd58df..b25fd4a 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
@@ -15,7 +15,6 @@
 @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 26d3cd3..e5c3a4a 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
@@ -15,7 +15,6 @@
 @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 996d445..662a870 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
@@ -15,7 +15,6 @@
 @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 28b7ba4..89c2c9f 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
@@ -16,7 +16,6 @@
 @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; // 抢号
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 f073411..22d26da 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
@@ -13,7 +13,6 @@
 @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 5d7deff..fe433ee 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
@@ -13,7 +13,6 @@
 @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 56baedd..e4a99c5 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
@@ -153,6 +153,11 @@
             public void terminateSuccessfulResponse(PlatformStopChargingReplyVO platformStopChargingReply) {
                 log.error("停止充电应答处理失败:" + throwable.getMessage());
             }
+    
+            @Override
+            public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
+                log.error("停止充电返回账单后计算费用处理失败:" + 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 ae33132..3f10657 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
@@ -199,4 +199,11 @@
      */
     @PostMapping("/t-charging-order/terminateSuccessfulResponse")
     void terminateSuccessfulResponse(@RequestBody PlatformStopChargingReplyVO platformStopChargingReply);
+    
+    /**
+     * 停止充电返回账单后计算费用
+     * @param vo
+     */
+    @PostMapping("/t-charging-order/endChargeBillingCharge")
+    void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo);
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/AccountingStrategyDetailOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/AccountingStrategyDetailOrder.java
index 776c46c..d56cb8d 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/AccountingStrategyDetailOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/AccountingStrategyDetailOrder.java
@@ -22,8 +22,8 @@
 	@TableId(type = IdType.INPUT, value = "id")
 	private Integer id;
 	@ApiModelProperty(value = "策略id")
-	@TableField("accounting_strategy_order_id")
-	private Integer accountingStrategyOrderId;
+	@TableField("accounting_strategy_id")
+	private Integer accountingStrategyId;
 	
 	@ApiModelProperty(value = "阶段(1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段)")
 	@TableField("type")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
new file mode 100644
index 0000000..7a6ce29
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TransactionRecordMessageVO.java
@@ -0,0 +1,49 @@
+package com.ruoyi.order.api.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 交易记录
+ **/
+
+@Data
+public class TransactionRecordMessageVO {
+
+    private String transaction_serial_number;// 交易流水号
+    private String charging_pile_code;// 桩编码
+    private String charging_gun_code;// 抢号
+    private String start_time;// 开始时间
+    private String end_time;// 结束时间
+    private BigDecimal sharp_peak_unit_price;// 尖单价
+    private BigDecimal sharp_peak_charge;// 尖电量
+    private BigDecimal loss_sharp_peak_charge;// 计损尖电量
+    private BigDecimal sharp_peak_amount;// 尖金额
+    private BigDecimal peak_unit_price;// 峰单价
+    private BigDecimal peak_charge;// 峰电量
+    private BigDecimal loss_peak_charge;// 计损峰电量
+    private BigDecimal peak_amount;// 峰金额
+    private BigDecimal flat_peak_unit_price;// 平单价
+    private BigDecimal flat_peak_charge;// 平电量
+    private BigDecimal loss_flat_peak_charge;// 计损平电量
+    private BigDecimal flat_peak_amount;// 平金额
+    private BigDecimal low_peak_unit_price;// 谷单价
+    private BigDecimal low_peak_charge;// 谷电量
+    private BigDecimal loss_low_peak_charge;// 计损谷电量
+    private BigDecimal low_peak_amount;// 谷金额
+    private BigDecimal total_initial_value;// 电表总起值
+    private BigDecimal total_stop_value;// 电表总止值
+    private BigDecimal total_electricity;// 总电量
+    private BigDecimal loss_total_electricity;// 计损总电量
+    private BigDecimal payment_amount;// 消费金额
+    private String vin;// 电动汽车唯一标识
+    private Integer start_method;// 交易标识(1:app 启动,2:卡启动,4:离线卡启动,5: vin 码启动充电)
+    private String trade_date;// 交易日期、时间
+    private Integer stop_reason;// 停止原因
+    private String physical_card_number;// 物理卡号
+
+
+}
+
+
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
index 7b18ebf..b11e4bb 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
@@ -31,7 +31,7 @@
 	 * 获取标签列表
 	 * @return
 	 */
-	@PostMapping("/t-evaluation-tag/getList")
+	@GetMapping("/t-evaluation-tag/getList")
 	R<List<TEvaluationTagVO>> getList();
 
 	
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserIntegralChangeController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserIntegralChangeController.java
index 496fd0f..9b5dbd9 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserIntegralChangeController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserIntegralChangeController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.account.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.account.api.model.TAppUserIntegralChange;
 import com.ruoyi.account.service.TAppUserIntegralChangeService;
 import com.ruoyi.common.core.domain.R;
@@ -40,5 +41,18 @@
 		appUserIntegralChangeService.save(appUserIntegralChange);
 		return R.ok();
 	}
+	
+	
+	/**
+	 * 根据订单code获取积分记录
+	 * @param code
+	 * @return
+	 */
+	@ResponseBody
+	@PostMapping("/getTAppUserIntegralChangeByOrderCode")
+	public R<TAppUserIntegralChange> getTAppUserIntegralChangeByOrderCode(@RequestParam("code") String code){
+		TAppUserIntegralChange one = appUserIntegralChangeService.getOne(new LambdaQueryWrapper<TAppUserIntegralChange>().eq(TAppUserIntegralChange::getOrderCode, code));
+		return R.ok(one);
+	}
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
index 4d5e00f..43741a2 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java
@@ -15,6 +15,7 @@
 import com.ruoyi.account.wx.pojo.AppletUserEncrypteData;
 import com.ruoyi.account.wx.tools.WxAppletTools;
 import com.ruoyi.account.wx.tools.WxUtils;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.FileUploadUtils;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -162,5 +163,16 @@
         }
         return AjaxResult.success();
     }
-
+    
+    
+    /**
+     * 获取微信token
+     * @return
+     */
+    @PostMapping("/getWXToken")
+    public R<String> getWXToken(){
+        WxAppletTools appletTools = new WxAppletTools(wxRestTemplate, wxConfig);
+        String accessToken = appletTools.getAccessToken("");
+        return R.ok(accessToken);
+    }
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index cf9bb95..dc9f996 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -121,7 +121,11 @@
 			// 当前时间属于那个阶段 取哪个阶段的电价
 			if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){
 				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence());
-				siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(4, BigDecimal.ROUND_HALF_UP));
+				if(null != byId1.getDiscount()){
+					siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(4, BigDecimal.ROUND_HALF_UP));
+				}else{
+					siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+				}
 			}
 		}
 		siteInfoVO.setChargingGunId(chargingGun.getId());
@@ -147,7 +151,11 @@
 			// 当前时间属于那个阶段 取哪个阶段的电价
 			if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){
 				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence());
-				siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(4, BigDecimal.ROUND_HALF_UP));
+				if(null != byId1.getDiscount()){
+					siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(4, BigDecimal.ROUND_HALF_UP));
+				}else{
+					siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+				}
 			}
 		}
 		siteInfoVO.setChargingPileId(one.getId());
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 765d06c..1d083c1 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
@@ -176,16 +176,24 @@
             out.close();
             inputStream.close();
             
-            //清楚服务器上的文件
-//            Process process = null;
-//            try {
-//                process = Runtime.getRuntime().exec("sudo rm -rf " + filePath);
-//            } catch (IOException e) {
-//                throw new RuntimeException(e);
-//            }
-//            if (process != null) {
-//                process.destroy();
-//            }
+            //清除服务器上的文件
+            try {
+                // 使用Runtime执行命令
+                Process process = Runtime.getRuntime().exec("sudo rm -rf " + filePath);
+                // 读取命令的输出
+                BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+                String line;
+                while ((line = reader.readLine()) != null) {
+                    System.out.println(line);
+                }
+                // 等待命令执行完成
+                process.waitFor();
+                // 关闭流
+                reader.close();
+            } catch (IOException | InterruptedException e) {
+                e.printStackTrace();
+            }
+            
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -258,7 +266,8 @@
      */
     @PostMapping("/getChargingGunByCode")
     public R<TChargingGun> getChargingGunByCode(@RequestBody GetChargingGunByCode code){
-        TChargingPile chargingPile = chargingPileService.getOne(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getCode, code.getCharging_pile_code()).eq(TChargingPile::getDelFlag, 0));
+        TChargingPile chargingPile = chargingPileService.getOne(new LambdaQueryWrapper<TChargingPile>()
+                .eq(TChargingPile::getCode, code.getCharging_pile_code()).eq(TChargingPile::getDelFlag, 0));
         return R.ok(chargingGunService.getOne(Wrappers.lambdaQuery(TChargingGun.class)
                         .eq(TChargingGun::getChargingPileId, chargingPile.getId())
                         .eq(TChargingGun::getCode, code.getCharging_gun_code())
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
index 8616e00..a8cc5e0 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -88,8 +88,13 @@
                     accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge().multiply(vip.getDiscount())));
                     accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge().multiply(vip.getDiscount())));
                 } else {
-                    accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge().multiply(accountingStrategy.getDiscount())));
-                    accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge().multiply(accountingStrategy.getDiscount())));
+                    if(Objects.isNull(accountingStrategy.getDiscount())){
+                        accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge().multiply(new BigDecimal(1))));
+                        accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge().multiply(new BigDecimal(1))));
+                    }else {
+                        accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge().multiply(accountingStrategy.getDiscount())));
+                        accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge().multiply(accountingStrategy.getDiscount())));
+                    }
                 }
             }else {
                 accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()));
@@ -121,8 +126,12 @@
                 .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细"));
 //        strategyPriceVO.setDiscountAmount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge())
 //                .subtract(accountingStrategyDetailVO.getServiceCharge().multiply(accountingStrategy.getDiscount())).setScale(2, BigDecimal.ROUND_HALF_UP));
-        strategyPriceVO.setDiscountAmount(accountingStrategyDetailVO.getServiceCharge()
-                .subtract(accountingStrategyDetailVO.getServiceCharge().multiply(accountingStrategy.getDiscount())).setScale(2, BigDecimal.ROUND_HALF_UP));
+        if(Objects.isNull(accountingStrategy.getDiscount())){
+            strategyPriceVO.setDiscountAmount(BigDecimal.ZERO);
+        }else {
+            strategyPriceVO.setDiscountAmount(accountingStrategyDetailVO.getServiceCharge()
+                    .subtract(accountingStrategyDetailVO.getServiceCharge().multiply(accountingStrategy.getDiscount())).setScale(2, BigDecimal.ROUND_HALF_UP));
+        }
         // 查询最高折扣的会员
         TVip monthlyCardDiscount = vipClient.getVipInfoByType(3).getData();
         strategyPriceVO.setServiceFeeDiscount(monthlyCardDiscount.getMonthlyCardDiscount());
@@ -209,8 +218,12 @@
                     accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge().multiply(vip.getDiscount())));
                     accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge().multiply(vip.getDiscount())));
                 } else {
-                    accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge().multiply(accountingStrategy.getDiscount())));
-                    accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge().multiply(accountingStrategy.getDiscount())));
+                    BigDecimal discount = accountingStrategy.getDiscount();
+                    if(Objects.isNull(discount)){
+                        discount = BigDecimal.ONE;
+                    }
+                    accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge().multiply(discount)));
+                    accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge().multiply(discount)));
                 }
             }else {
                 accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()));
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
index 9f87768..2c96080 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -197,14 +197,14 @@
 		POW(
 		SIN(
 		(
-		#{query.lat} * PI() / 180 - ts.lat * PI() / 180
+		#{query.lat} * PI() / 180 - lat * PI() / 180
 		) / 2
 		),
 		2
-		) + COS(#{query.lat} * PI() / 180) * COS(ts.lat * PI() / 180) * POW(
+		) + COS(#{query.lat} * PI() / 180) * COS(lat * PI() / 180) * POW(
 		SIN(
 		(
-		#{query.lon} * PI() / 180 - ts.lon * PI() / 180
+		#{query.lon} * PI() / 180 - lon * PI() / 180
 		) / 2
 		),
 		2
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 5cffb52..4648622 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
@@ -146,14 +146,14 @@
                 AcquisitionBillingModeMessage acquisitionBillingModeMessage = JSON.parseObject(content.toJSONString(),AcquisitionBillingModeMessage.class);
                 chargingMessage.setAcquisitionBillingModeMessage(acquisitionBillingModeMessage);
                 // 响应硬件   计费模型请求应答  1=尖阶段,2=峰阶段,3=平阶段,4=谷阶段
-                List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(acquisitionBillingModeMessage.getCharging_pile_code().substring(0,14)).getData();
+                List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(acquisitionBillingModeMessage.getCharging_pile_code()).getData();
                 Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
                 // 价格设置
                 AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
                 StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
                 // 时段设置
                 StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
-                TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(acquisitionBillingModeMessage.getCharging_pile_code().substring(0,14)).getData();
+                TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(acquisitionBillingModeMessage.getCharging_pile_code()).getData();
                 acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
                 acquisitionBillingModeReply.setCharging_pile_code(acquisitionBillingModeMessage.getCharging_pile_code());
                 acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO);
@@ -161,6 +161,7 @@
                 sendResult = enhanceProduce.chargingMessage(chargingMessage);
                 break;
             case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA:
+                log.info("充电实时数据上传");
                 UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = JSON.parseObject(content.toJSONString(),UploadRealTimeMonitoringDataMessage.class);
                 chargingMessage.setUploadRealTimeMonitoringDataMessage(uploadRealTimeMonitoringDataMessage);
                 sendResult = enhanceProduce.chargingMessage(chargingMessage);
@@ -442,5 +443,25 @@
         String message = iotMessageProduce.sendMessage(platformStopCharging.getCharging_pile_code(), ServiceIdMenu.PLATFORM_STOP_CHARGING.getKey(),messageUtil.platformStopCharging(platformStopCharging));
         return R.ok(message);
     }
+    @ApiOperation(value = "计费模板下发",tags = {"硬件接口"})
+    @GetMapping(value = "/accountingStrategy")
+    public R accountingStrategy() {
+        String code = "3401231001200202";
+        String deviceId = "3401231001200202";
+        List<TAccountingStrategyDetail> accountingStrategyDetails = accountingStrategyDetailClient.getDetailListByCode(code).getData();
+        Map<Integer, TAccountingStrategyDetail> strategyPrice = StrategyUtil.getStrategyPrice(accountingStrategyDetails);
+        // 价格设置
+        AcquisitionBillingModeReply acquisitionBillingModeReply = new AcquisitionBillingModeReply();
+        StrategyUtil.setStrategyPrice(strategyPrice,acquisitionBillingModeReply);
+        // 时段设置
+        StrategyUtil.setTime(accountingStrategyDetails,acquisitionBillingModeReply);
+        TAccountingStrategyDetail accountingStrategyDetail = accountingStrategyDetailClient.getDetailByCode(code).getData();
+        acquisitionBillingModeReply.setBilling_model_code(accountingStrategyDetail.getId().toString());
+        acquisitionBillingModeReply.setCharging_pile_code(code);
+        acquisitionBillingModeReply.setLoss_ratio(BigDecimal.ZERO);
+        System.err.println(acquisitionBillingModeReply);
+        iotMessageProduce.sendMessage(deviceId, ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getKey(),messageUtil.acquisitionBillingModeReply(acquisitionBillingModeReply));
+        return R.ok();
+    }
 
 }
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
index 67e1e07..bd592d8 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/MessageUtil.java
@@ -64,6 +64,7 @@
      * @return
      */
     public JSONObject onlineReply(OnlineReply onlineReply){
+        log.info("登录认证应答:{}", onlineReply);
         onlineReplyService.create(onlineReply);
         return  getMessageJsonString(onlineReply, ServiceIdMenu.ONLINE_REPLY.getValue());
     }
@@ -74,6 +75,7 @@
      * @return
      */
     public JSONObject pong(Pong pong){
+        log.info("心跳包应答:{}", pong);
         pongService.create(pong);
         return  getMessageJsonString(pong, ServiceIdMenu.PONG.getValue());
     }
@@ -84,6 +86,7 @@
      * @return
      */
     public JSONObject billingModeVerifyReply(BillingModeVerifyReply billingModeVerifyReply){
+        log.info("计费模型验证请求应答:{}", billingModeVerifyReply);
         billingModeVerifyReplyService.create(billingModeVerifyReply);
         return  getMessageJsonString(billingModeVerifyReply, ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getValue());
     }
@@ -94,6 +97,7 @@
      * @return
      */
     public JSONObject acquisitionBillingModeReply(AcquisitionBillingModeReply acquisitionBillingModeReply){
+        log.info("计费模型验证请求应答:{}", acquisitionBillingModeReply);
         acquisitionBillingModeReplyService.create(acquisitionBillingModeReply);
         return  getMessageJsonString(acquisitionBillingModeReply, ServiceIdMenu.ACQUISITION_BILLING_MODE_REPLY.getValue());
     }
@@ -104,6 +108,7 @@
      * @return
      */
     public JSONObject readRealTimeMonitoringData(ReadRealTimeMonitoringData readRealTimeMonitoringData){
+        log.info("读取实时监测数据:{}", readRealTimeMonitoringData);
         readRealTimeMonitoringDataService.create(readRealTimeMonitoringData);
         return  getMessageJsonString(readRealTimeMonitoringData, ServiceIdMenu.READ_REAL_TIME_MONITORING_DATA.getValue());
     }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
index e935937..261e9c7 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/iotda/utils/tools/StrategyUtil.java
@@ -6,6 +6,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -34,22 +35,30 @@
      */
     public static void setStrategyPrice(Map<Integer, TAccountingStrategyDetail> accountingStrategyDetails,AcquisitionBillingModeReply acquisitionBillingModeReply) {
         accountingStrategyDetails.forEach((k,v)->{
+            BigDecimal electrovalence = v.getElectrovalence();
+            BigDecimal serviceCharge = v.getServiceCharge();
+            if(Objects.isNull(electrovalence)){
+                electrovalence = BigDecimal.ZERO;
+            }
+            if(Objects.isNull(serviceCharge)){
+                serviceCharge = BigDecimal.ZERO;
+            }
             switch (k){
                 case 1:
-                    acquisitionBillingModeReply.setSharp_peak_electricity_rate(v.getElectrovalence());
-//                    acquisitionBillingModeReply.setSharp_peak_service_rate(v.getServiceCharge());
+                    acquisitionBillingModeReply.setSharp_peak_electricity_rate(electrovalence);
+                    acquisitionBillingModeReply.setSharp_peak_service_rate(serviceCharge);
                     break;
                 case 2:
-                    acquisitionBillingModeReply.setPeak_electricity_rate(v.getElectrovalence());
-//                    acquisitionBillingModeReply.setPeak_service_rate(v.getServiceCharge());
+                    acquisitionBillingModeReply.setPeak_electricity_rate(electrovalence);
+                    acquisitionBillingModeReply.setPeak_service_rate(serviceCharge);
                     break;
                 case 3:
-                    acquisitionBillingModeReply.setFlat_peak_electricity_rate(v.getElectrovalence());
-//                    acquisitionBillingModeReply.setFlat_peak_service_rate(v.getServiceCharge());
+                    acquisitionBillingModeReply.setFlat_peak_electricity_rate(electrovalence);
+                    acquisitionBillingModeReply.setFlat_peak_service_rate(serviceCharge);
                     break;
                 default:
-                    acquisitionBillingModeReply.setLow_peak_electricity_rate(v.getElectrovalence());
-//                    acquisitionBillingModeReply.setLow_peak_service_rate(v.getServiceCharge());
+                    acquisitionBillingModeReply.setLow_peak_electricity_rate(electrovalence);
+                    acquisitionBillingModeReply.setLow_peak_service_rate(serviceCharge);
                     break;
             }
         });
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStopChargingReplyServiceImpl.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStopChargingReplyServiceImpl.java
index d44e36f..b170b6f 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStopChargingReplyServiceImpl.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStopChargingReplyServiceImpl.java
@@ -43,7 +43,7 @@
     public PlatformStopChargingReply getPlatformStopChargingReply(GetPlatformStopChargingReply query) {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         List<PlatformStopChargingReply> platformStopChargingReplies = mongoTemplate.find(new Query().addCriteria(Criteria.where("charging_pile_code").is(query.getCharging_pile_code())
-                .and("charging_gun_code").is(query.getCharging_gun_code()).and("create_time").lte(sdf.format(new Date())).and("create_time").gte(query.getEnd_time())), PlatformStopChargingReply.class);
+                .and("charging_gun_code").is(query.getCharging_gun_code()).and("create_time").lte(sdf.format(new Date())).gte(query.getEnd_time())), PlatformStopChargingReply.class);
         return platformStopChargingReplies.size() > 0 ? platformStopChargingReplies.get(0) : null;
     }
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
index 8cc1e62..d89f907 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
@@ -22,6 +22,7 @@
 import com.ruoyi.order.api.vo.PlatformStartChargingReplyMessageVO;
 import com.ruoyi.order.api.vo.PlatformStopChargingReplyVO;
 import com.ruoyi.order.api.vo.SecurityDetectionVO;
+import com.ruoyi.order.api.vo.TransactionRecordMessageVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.annotation.MessageModel;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -185,75 +186,82 @@
                 acquisitionBillingModeService.create(acquisitionBillingMode);
                 break;
             case SendTagConstant.UPLOAD_REAL_TIME_MONITORING_DATA:
-                UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = message.getUploadRealTimeMonitoringDataMessage();
-                log.info("上传实时监测数据-业务消息处理:{}",uploadRealTimeMonitoringDataMessage);
-                // 持久化消息
-                UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData();
-                BeanUtils.copyProperties(uploadRealTimeMonitoringDataMessage,uploadRealTimeMonitoringData);
-                // 查询mogondb上一条数据
-                UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number());
-                // 查询订单
-                TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(uploadRealTimeMonitoringDataMessage.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(uploadRealTimeMonitoringDataMessage.getPaid_amount().subtract(data.getPaid_amount()));
-                    uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree()));
-                    uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
-                }else {
-                    log.info("首次上传实时监测数据");
-                    uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount());
-                    uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree());
-                    uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
-                }
-                uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
-                // 业务处理
-                UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery();
-                BeanUtils.copyProperties(uploadRealTimeMonitoringData, query);
-                chargingOrderClient.chargeMonitoring(query);
-                GetChargingGunByCode code = new GetChargingGunByCode();
-                code.setCharging_pile_code(uploadRealTimeMonitoringDataMessage.getCharging_pile_code());
-                code.setCharging_gun_code(uploadRealTimeMonitoringDataMessage.getCharging_gun_code());
-                TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
-                if(Objects.nonNull(chargingGun)){
-                    // 存储状态信息
-                    TFaultMessage faultMessage = new TFaultMessage();
-                    if(uploadRealTimeMonitoringDataMessage.getCharging_gun_status().equals(0) || uploadRealTimeMonitoringDataMessage.getCharging_gun_status().equals(1)){
-                        faultMessage.setSiteId(chargingGun.getSiteId());
-                        faultMessage.setChargingPileId(chargingGun.getChargingPileId());
-                        faultMessage.setChargingGunId(chargingGun.getId());
-                        switch (uploadRealTimeMonitoringDataMessage.getCharging_gun_status()){
-                            case 0:
-                                faultMessage.setStatus(1);
-                                chargingGun.setStatus(1);
-                                break;
-                            case 1:
-                                faultMessage.setStatus(2);
-                                chargingGun.setStatus(7);
-                                break;
-                        }
-                        faultMessage.setDownTime(LocalDateTime.now());
-                        faultMessageClient.createFaultMessage(faultMessage);
+                try {
+                    UploadRealTimeMonitoringDataMessage uploadRealTimeMonitoringDataMessage = message.getUploadRealTimeMonitoringDataMessage();
+                    log.info("上传实时监测数据-业务消息处理:{}",uploadRealTimeMonitoringDataMessage);
+                    // 持久化消息
+                    UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData();
+                    BeanUtils.copyProperties(uploadRealTimeMonitoringDataMessage,uploadRealTimeMonitoringData);
+                    // 查询mogondb上一条数据
+                    UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(uploadRealTimeMonitoringDataMessage.getTransaction_serial_number());
+                    // 查询订单
+                    TChargingOrder chargingOrder = chargingOrderClient.getOrderByCode(uploadRealTimeMonitoringDataMessage.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(uploadRealTimeMonitoringDataMessage.getPaid_amount().subtract(data.getPaid_amount()));
+                        uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree()));
+                        uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
                     }else {
-                        switch (uploadRealTimeMonitoringDataMessage.getCharging_gun_status()){
-                            case 2:
-                                chargingGun.setStatus(2);
-                                break;
-                            case 3:
-                                chargingGun.setStatus(4);
-                                break;
-                        }
-                        // 空闲 充电 查询是否该设备之前存在离线记录或者故障记录
-                        faultMessage = faultMessageClient.getFaultMessageByGunId(chargingGun.getId()).getData();
-                        if(Objects.nonNull(faultMessage)){
-                            faultMessage.setEndTime(LocalDateTime.now());
-                            faultMessageClient.updateFaultMessage(faultMessage);
-                        }
+                        log.info("首次上传实时监测数据");
+                        uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount());
+                        uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree());
+                        uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
                     }
-                    chargingGunClient.updateChargingGunById(chargingGun);
+                    int i = uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
+                    if(i == 0){
+                        log.error("数据存储mongo失败");
+                    }
+                    // 业务处理
+                    UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery();
+                    BeanUtils.copyProperties(uploadRealTimeMonitoringData, query);
+                    chargingOrderClient.chargeMonitoring(query);
+                    GetChargingGunByCode code = new GetChargingGunByCode();
+                    code.setCharging_pile_code(uploadRealTimeMonitoringDataMessage.getCharging_pile_code());
+                    code.setCharging_gun_code(uploadRealTimeMonitoringDataMessage.getCharging_gun_code());
+                    TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
+                    if(Objects.nonNull(chargingGun)){
+                        // 存储状态信息
+                        TFaultMessage faultMessage = new TFaultMessage();
+                        if(uploadRealTimeMonitoringDataMessage.getCharging_gun_status().equals(0) || uploadRealTimeMonitoringDataMessage.getCharging_gun_status().equals(1)){
+                            faultMessage.setSiteId(chargingGun.getSiteId());
+                            faultMessage.setChargingPileId(chargingGun.getChargingPileId());
+                            faultMessage.setChargingGunId(chargingGun.getId());
+                            switch (uploadRealTimeMonitoringDataMessage.getCharging_gun_status()){
+                                case 0:
+                                    faultMessage.setStatus(1);
+                                    chargingGun.setStatus(1);
+                                    break;
+                                case 1:
+                                    faultMessage.setStatus(2);
+                                    chargingGun.setStatus(7);
+                                    break;
+                            }
+                            faultMessage.setDownTime(LocalDateTime.now());
+                            faultMessageClient.createFaultMessage(faultMessage);
+                        }else {
+                            switch (uploadRealTimeMonitoringDataMessage.getCharging_gun_status()){
+                                case 2:
+                                    chargingGun.setStatus(2);
+                                    break;
+                                case 3:
+                                    chargingGun.setStatus(4);
+                                    break;
+                            }
+                            // 空闲 充电 查询是否该设备之前存在离线记录或者故障记录
+                            faultMessage = faultMessageClient.getFaultMessageByGunId(chargingGun.getId()).getData();
+                            if(Objects.nonNull(faultMessage)){
+                                faultMessage.setEndTime(LocalDateTime.now());
+                                faultMessageClient.updateFaultMessage(faultMessage);
+                            }
+                        }
+                        chargingGunClient.updateChargingGunById(chargingGun);
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
                 }
                 break;
             case SendTagConstant.CHARGING_HANDSHAKE:
@@ -358,6 +366,10 @@
                     chargingOrderRecord.setTotalElectricity(transactionRecordMessage.getTotal_electricity());
                     chargingOrderClient.updateChargingOrder(chargingOrderRecord);
                 }
+                //计算费用
+                TransactionRecordMessageVO vo = new TransactionRecordMessageVO();
+                BeanUtils.copyProperties(transactionRecordMessage,vo);
+                chargingOrderClient.endChargeBillingCharge(vo);
                 break;
             case SendTagConstant.UPDATE_BALANCE_REPLY:
                 UpdateBalanceReplyMessage updateBalanceReplyMessage = message.getUpdateBalanceReplyMessage();
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 ea4a3c8..3636697 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
@@ -55,6 +55,7 @@
 import com.ruoyi.order.service.*;
 import com.ruoyi.order.service.impl.TChargingOrderServiceImpl;
 import com.ruoyi.order.util.PreviousSixMonths;
+import com.ruoyi.order.vo.EndOfChargePageInfo;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
 import com.ruoyi.payment.api.vo.AliQueryOrder;
@@ -143,6 +144,9 @@
     private AppUserCarClient appUserCarClient;
     @Resource
     private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
+    
+    @Resource
+    private TOrderInvoiceService invoiceService;
 
 
     /**
@@ -471,6 +475,7 @@
     @ResponseBody
     @PostMapping(value = "/securityDetection")
     public void securityDetection(@RequestBody SecurityDetectionVO securityDetection){
+        log.error("-------------------安全检测数据-------------------:" + securityDetection);
         chargingOrderService.securityDetection(securityDetection);
     }
     
@@ -571,6 +576,17 @@
     public void terminateSuccessfulResponse(@RequestBody PlatformStopChargingReplyVO platformStopChargingReply){
         log.error("-------------------远程停止充电请求应答-------------------:" + platformStopChargingReply);
         chargingOrderService.terminateSuccessfulResponse(platformStopChargingReply);
+    }
+    
+    
+    /**
+     * 停止充电返回账单后计算费用
+     * @param vo
+     */
+    @PostMapping("/endChargeBillingCharge")
+    public void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo){
+        log.error("-------------------停止充电返回账单后计算费用-------------------:" + vo);
+        chargingOrderService.endChargeBillingCharge(vo);
     }
     
     
@@ -1301,8 +1317,7 @@
 
     }
 
-    @Resource
-    private TOrderInvoiceService invoiceService;
+    
     @ResponseBody
     @GetMapping(value = "/work/shopOrder")
     @ApiOperation(value = "购物订单统计", tags = {"管理后台-工作台"})
@@ -1335,14 +1350,18 @@
             return R.ok(userMap);
 
     }
-    public static void main(String[] args) {
-        // 示例数据
-        List<TChargingOrder> list = getSampleData();
-        System.err.println(list);
-        List<Map<String, BigDecimal>> result = processData(list);
 
-        result.forEach(System.out::println);
+    @GetMapping(value = "/getGunIdsByUserId")
+    @ApiOperation(value = "查询当前用户正在充电中的枪id集合", tags = {"小程序-首页-用户充电订单信息"})
+    public R<List<Integer>> getGunIdsByUserId() {
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        List<TChargingOrder> list = chargingOrderService.list(Wrappers.lambdaQuery(TChargingOrder.class)
+                .eq(TChargingOrder::getAppUserId, userId)
+                .eq(TChargingOrder::getStatus, 3));
+        List<Integer> gunIds = list.stream().map(TChargingOrder::getChargingGunId).collect(Collectors.toList());
+        return R.ok(gunIds);
     }
+
 
 
     private static List<TChargingOrder> getSampleData() {
@@ -1395,6 +1414,7 @@
      */
     @PostMapping("/endCharge")
     public void endCharge(@RequestParam("code") String code){
+        log.error(code + ":-------------------充电桩自动结束充电-------------------");
         chargingOrderService.endCharge(code, 2);
     }
 
@@ -1404,6 +1424,7 @@
      */
     @PostMapping("/excelEndCharge")
     public void excelEndCharge(@RequestParam("code") String code){
+        log.error(code + ":-------------------充电异常,停止充电-------------------");
         chargingOrderService.excelEndCharge(code);
     }
 
@@ -1428,4 +1449,16 @@
         chargingOrderService.updateById(chargingOrder);
         return R.ok();
     }
+    
+    
+    @ResponseBody
+    @GetMapping(value = "/getEndOfChargePageInfo/{id}")
+    @ApiOperation(value = "获取充电结束页面数据", tags = {"小程序-扫一扫"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "订单id", required = true)
+    })
+    public AjaxResult<EndOfChargePageInfo> getEndOfChargePageInfo(@PathVariable("id") String id){
+        EndOfChargePageInfo endOfChargePageInfo = chargingOrderService.getEndOfChargePageInfo(id);
+        return AjaxResult.success(endOfChargePageInfo);
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
index 924cae7..e2e2faf 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
@@ -11,6 +11,7 @@
 import com.ruoyi.order.dto.GetOrderEvaluatePageListDTO;
 import com.ruoyi.order.dto.OrderEvaluateVo;
 import com.ruoyi.order.service.TOrderEvaluateService;
+import com.ruoyi.order.vo.ReplyEvaluationVO;
 import com.ruoyi.other.api.vo.TEvaluationTagVO;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -63,9 +64,9 @@
     
     
     
-    @DeleteMapping(value = "/delOrderEvaluate")
+    @DeleteMapping(value = "/delOrderEvaluate/{id}")
     @ApiOperation(value = "删除充电评价", tags = {"管理后台-充电评价"})
-    public AjaxResult delOrderEvaluate(@PathVariable Long id){
+    public AjaxResult delOrderEvaluate(@PathVariable("id") Long id){
         TOrderEvaluate orderEvaluate = orderEvaluateService.getById(id);
         orderEvaluateService.removeById(orderEvaluate);
         return AjaxResult.success();
@@ -76,9 +77,9 @@
     
     @PostMapping(value = "/replyEvaluation")
     @ApiOperation(value = "充电评价回复", tags = {"管理后台-充电评价"})
-    public AjaxResult replyEvaluation(@PathVariable("id") Long id, @RequestParam("reply") String reply){
-        TOrderEvaluate orderEvaluate = orderEvaluateService.getById(id);
-        reply = reply.replaceAll("& #40;", "(")
+    public AjaxResult replyEvaluation(@RequestBody ReplyEvaluationVO vo){
+        TOrderEvaluate orderEvaluate = orderEvaluateService.getById(vo.getId());
+        String reply = vo.getReply().replaceAll("& #40;", "(")
                 .replaceAll("& #41;", ")")
                 .replaceAll("& #40;", "(")
                 .replaceAll("& #41;", ")")
@@ -94,9 +95,9 @@
     
     
     
-    @DeleteMapping(value = "/delOrderEvaluateReply")
+    @DeleteMapping(value = "/delOrderEvaluateReply/{id}")
     @ApiOperation(value = "删除充电评价回复", tags = {"管理后台-充电评价"})
-    public AjaxResult delOrderEvaluateReply(@PathVariable Long id){
+    public AjaxResult delOrderEvaluateReply(@PathVariable("id") Long id){
         TOrderEvaluate orderEvaluate = orderEvaluateService.getById(id);
         orderEvaluate.setEvaluationResponse("");
         orderEvaluateService.updateById(orderEvaluate);
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 d096708..0593bb3 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
@@ -17,6 +17,8 @@
 import com.ruoyi.order.api.vo.*;
 import com.ruoyi.order.dto.*;
 import com.ruoyi.order.vo.ChargingOrderListInfoVO;
+import com.ruoyi.order.vo.EndOfChargePageInfo;
+
 import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
@@ -168,7 +170,14 @@
 	 * @param code
 	 */
 	void endCharge(String code, Integer endMode);
-
+	
+	/**
+	 * 停止充电返回账单后计算费用
+	 * @param vo
+	 */
+	void endChargeBillingCharge(TransactionRecordMessageVO vo);
+	
+	
 
 	/**
 	 * 异常结束充电处理逻辑
@@ -248,4 +257,12 @@
 	List<Map<String, Object>> countAllUserData();
 
 	List<Map<String, Object>> needElec1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
+	
+	
+	/**
+	 * 获取充电结束页面详情
+	 * @param id
+	 * @return
+	 */
+	EndOfChargePageInfo getEndOfChargePageInfo(String id);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index f479f12..be2102b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -47,6 +47,7 @@
 import com.ruoyi.order.service.TChargingOrderService;
 import com.ruoyi.order.service.TOrderEvaluateService;
 import com.ruoyi.order.service.*;
+import com.ruoyi.order.vo.EndOfChargePageInfo;
 import com.ruoyi.other.api.domain.*;
 import com.ruoyi.order.vo.ChargingOrderListInfoVO;
 import com.ruoyi.other.api.feignClient.*;
@@ -56,7 +57,6 @@
 import com.ruoyi.payment.api.model.RefundResp;
 import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.payment.api.vo.*;
-import com.ruoyi.system.api.feignClient.SysUserClient;
 import io.seata.spring.annotation.GlobalTransactional;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -73,6 +73,8 @@
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
+import java.time.format.TextStyle;
+import java.time.temporal.WeekFields;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.stream.Collectors;
@@ -97,8 +99,7 @@
 
 	@Resource
 	private SiteClient siteClient;
-
-
+	
 	@Resource
 	private AppUserCarClient appUserCarClient;
 	@Resource
@@ -139,8 +140,7 @@
 
 	@Resource
 	private TOrderEvaluateService orderEvaluateService;
-
-
+	
 	@Resource
 	private AccountingStrategyDetailClient accountingStrategyDetailClient;
 
@@ -557,80 +557,83 @@
 		//根据支付金额,获取出使用的计费策略明细
 		//计算电费金额和服务费
 		BigDecimal serviceCharge = BigDecimal.ZERO;
-		BigDecimal electrovalence = BigDecimal.ZERO;
 		BigDecimal discountAmount = BigDecimal.ZERO;
 		BigDecimal discount = chargingOrder.getVipDiscount();
 		//先根据额定功率计算出每秒充电度数,然后计算出支付金额能充多少度电
 		TChargingGun tChargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+		//1秒充电度数
 		BigDecimal s_degrees = tChargingGun.getRatedPower().divide(new BigDecimal(3600), 6, RoundingMode.HALF_EVEN);
-
+		
 		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-		List<AccountingStrategyDetailOrder> list = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
-		for (AccountingStrategyDetailOrder accountingStrategyDetailOrder : list) {
-			Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", ""));
-			Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", ""));
-			String[] split = accountingStrategyDetailOrder.getEndTime().split(":");
-			if(now >= start && now < end){
-				Calendar calendar = Calendar.getInstance();
-				calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-				calendar.set(Calendar.MINUTE, Integer.valueOf(split[1]));
-				//到此策略结束的秒数
-				if(null == nowTimeMillis){
-					String[] split1 = accountingStrategyDetailOrder.getStartTime().split(":");
-					Calendar calendar1 = Calendar.getInstance();
-					calendar1.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
-					calendar1.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
-					nowTimeMillis = calendar.getTimeInMillis();
+		//判断会员是否还有充电优惠次数,计算会员优惠的折扣金额
+		if(null != appUser.getVipId()){
+			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+			getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+			getAppUserVipDetail.setVipId(appUser.getVipId());
+			TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+			if(null != data && data.getChargeNum() > 0){
+				//计算折扣
+				List<AccountingStrategyDetailOrder> list = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
+				//将数据叠加两份,处理跨天的情况
+				list.addAll(list);
+				boolean sta = false;
+				for (AccountingStrategyDetailOrder accountingStrategyDetailOrder : list) {
+					Integer start = Integer.valueOf(accountingStrategyDetailOrder.getStartTime().replaceAll(":", ""));
+					Integer end = Integer.valueOf(accountingStrategyDetailOrder.getEndTime().replaceAll(":", ""));
+					String[] split = accountingStrategyDetailOrder.getEndTime().split(":");
+					if(sta || now >= start){
+						sta = true;
+						
+						Calendar end_calendar = Calendar.getInstance();
+						end_calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+						end_calendar.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+						//到此策略结束的秒数
+						if(null == nowTimeMillis){
+							String[] split1 = accountingStrategyDetailOrder.getStartTime().split(":");
+							Calendar start_calendar = Calendar.getInstance();
+							start_calendar.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0]));
+							start_calendar.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
+							nowTimeMillis = start_calendar.getTimeInMillis();
+						}
+						//间隔秒数
+						long m = (end_calendar.getTimeInMillis() - nowTimeMillis) / 1000;
+						//每秒需要支付的服务费金额
+						BigDecimal total_until = accountingStrategyDetailOrder.getElectrovalence().add(accountingStrategyDetailOrder.getServiceCharge());
+						BigDecimal s_total_amount = s_degrees.multiply(total_until);
+						//每秒需要支付的服务费金额
+						BigDecimal s_server_amount = s_degrees.multiply(accountingStrategyDetailOrder.getServiceCharge());
+						//计算剩余金额能充多长时间的电
+						long times = rechargeAmount1.divide(s_server_amount, 0, RoundingMode.DOWN).longValue();
+						if(times > m){
+							//充电时间跨度两个计费策略,需要继续对下一个策略进行计算
+							serviceCharge = s_server_amount.multiply(new BigDecimal(m));
+							discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10))));
+							rechargeAmount1 = rechargeAmount1.subtract(s_total_amount.multiply(new BigDecimal(m)));
+							nowTimeMillis = null;
+						}else{
+							serviceCharge = s_server_amount.multiply(new BigDecimal(times));
+							discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10))));
+							break;
+						}
+					}
 				}
-				long m = (calendar.getTimeInMillis() - nowTimeMillis) / 1000;
-				//每度电的单价
-				BigDecimal total_unit = accountingStrategyDetailOrder.getElectrovalence().add(accountingStrategyDetailOrder.getServiceCharge());
-				//每秒需要支付的金额
-				BigDecimal multiply = s_degrees.multiply(total_unit);
-				//计算充值金额能充多长时间的电
-				long times = rechargeAmount1.divide(multiply, 0, RoundingMode.DOWN).longValue();
-				if(times > m){
-					//充电时间跨度两个计费策略,需要继续对下一个策略进行计算
-					electrovalence = accountingStrategyDetailOrder.getElectrovalence().multiply(s_degrees).multiply(new BigDecimal(m));
-					serviceCharge = accountingStrategyDetailOrder.getServiceCharge().multiply(s_degrees).multiply(new BigDecimal(m));
-					discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10))));
-					rechargeAmount1 = rechargeAmount1.subtract(multiply.multiply(new BigDecimal(m)));
-					nowTimeMillis = null;
-				}else{
-					electrovalence = accountingStrategyDetailOrder.getElectrovalence().multiply(s_degrees).multiply(new BigDecimal(times));
-					serviceCharge = accountingStrategyDetailOrder.getServiceCharge().multiply(s_degrees).multiply(new BigDecimal(times));
-					discountAmount = discountAmount.add(serviceCharge.multiply((new BigDecimal(10).subtract(discount)).divide(new BigDecimal(10))));
-					break;
+				if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
+					//计算会员最大优惠金额
+					TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+					BigDecimal maximumDeduction = vip.getMaximumDeduction();
+					//普通会员有最高优惠限制
+					if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
+						discountAmount = maximumDeduction;
+					}
 				}
-			}
-		}
-		if(discountAmount.compareTo(BigDecimal.ZERO) >= 0){
-			//计算会员最大优惠金额
-			if(null != appUser.getVipId()){
-				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
-				BigDecimal maximumDeduction = vip.getMaximumDeduction();
-				//普通会员有最高优惠限制
-				if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
-					discountAmount = maximumDeduction;
-				}
-				
-				//判断会员是否还有充电优惠次数
-				GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
-				getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
-				getAppUserVipDetail.setVipId(appUser.getVipId());
-				TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
-				if(null != data && data.getChargeNum() > 0){
-					data.setChargeNum(data.getChargeNum() - 1);
-					appUserVipDetailClient.updateAppUserVipDetail(data);
-					//会员有充电优惠次数,直接将优惠金额加入到充电费用中增加充电时长
-					electrovalence = electrovalence.add(discountAmount);
-				}
+				discountAmount = discountAmount.setScale(4, RoundingMode.HALF_EVEN);
 			}
 		}
 		
-		electrovalence = electrovalence.setScale(2, RoundingMode.HALF_EVEN);
-		discountAmount = discountAmount.setScale(2, RoundingMode.HALF_EVEN);
-		chargingOrder.setChargeAmount(electrovalence);
+		
+		//机子上显示的金额为用户充值的金额+会员折扣金额
+		BigDecimal account_balance = chargingOrder.getRechargeAmount().add(discountAmount).setScale(4, RoundingMode.HALF_EVEN);
+		chargingOrder.setChargeAmount(account_balance);
 		chargingOrder.setVipDiscountAmount(discountAmount);
 		this.updateById(chargingOrder);
 
@@ -643,11 +646,9 @@
 		platformStartCharging.setCharging_gun_code(tChargingGun.getCode());
 		//使用订单id作为逻辑卡号
 		platformStartCharging.setCard_number(chargingOrder.getId().toString());
-		platformStartCharging.setAccount_balance(electrovalence);
+		platformStartCharging.setAccount_balance(account_balance);
 		
-		log.error(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------");
-		log.error(platformStartCharging.toString());
-
+		log.error(chargingOrder.getCode() + ":-------------------远程调起开始充电请求-------------------" + platformStartCharging.toString());
 		sendMessageClient.platformStartCharging(platformStartCharging);
 		//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
 		Long id = chargingOrder.getId();
@@ -679,17 +680,19 @@
 		if(null != securityDetection){
 			PreChargeCheck preChargeCheck1 =  redisService.getCacheObject("AQJC_" + chargingOrder.getChargingGunId());
 			if(null != preChargeCheck1){
-				preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock());
+				preChargeCheck1.setElectronicLockLock(true);
 				preChargeCheck1.setInsulationTesting(true);
-				preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection());
+				preChargeCheck1.setSecureConnectionDetection(securityDetection.getSecure_connection() == 1);
 				preChargeCheck1.setStartupSuccess(1);
 				redisService.setCacheObject("AQJC_" + chargingOrder.getChargingGunId(), preChargeCheck1, 24L, TimeUnit.HOURS);
 			}
 		}
 		
 		List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
-		log.error(code + ":-------------------开始检查调起充电结果-------------------");
-		log.error(data.toString());
+		if(null == data){
+			return false;
+		}
+		log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
 		if(data.size() != 0){
 			PlatformStartChargingReply platformStartChargingReply = data.get(1);
 			Integer startup_result = platformStartChargingReply.getStartup_result();
@@ -728,9 +731,8 @@
 			redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
 			return true;
 		}else{
-			log.error(code + ":-------------------未上传开启充电结果-------------------");
-			
 			Integer counter = boot_failed_map.get(code);
+			log.error(code + ":-------------------未上传开启充电结果-------------------" + counter);
 			PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
 			//5分钟内未启动成功,退回金额。
 			if(null == counter || counter < 300){
@@ -770,18 +772,17 @@
 		code.setCharging_pile_code(securityDetection.getCharging_pile_code());
 		code.setCharging_gun_code(securityDetection.getCharging_gun_code());
 		TChargingGun chargingGun = chargingGunClient.getChargingGunByCode(code).getData();
-		PreChargeCheck preChargeCheck1 =  redisService.getCacheObject("AQJC_" + chargingGun.getId());
+		PreChargeCheck preChargeCheck1 = redisService.getCacheObject("AQJC_" + chargingGun.getId());
 		if(null != preChargeCheck1){
-			preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock());
+			preChargeCheck1.setElectronicLockLock(true);
 			preChargeCheck1.setInsulationTesting(true);
-			preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection());
-			preChargeCheck1.setStartupSuccess(1);
+			preChargeCheck1.setSecureConnectionDetection(securityDetection.getSecure_connection() == 1);
 			redisService.setCacheObject("AQJC_" + chargingGun.getId(), preChargeCheck1, 24L, TimeUnit.HOURS);
 		}
 	}
 	
 	/**
-	 * 启动充电应发
+	 * 启动充电应答
 	 * @param message
 	 */
 	@Override
@@ -795,9 +796,8 @@
 		String code = order.getCode();
 		PreChargeCheck preChargeCheck1 =  redisService.getCacheObject("AQJC_" + order.getChargingGunId());
 		if(null != preChargeCheck1){
-			preChargeCheck1.setElectronicLockLock(preChargeCheck1.getElectronicLockLock());
+			preChargeCheck1.setElectronicLockLock(true);
 			preChargeCheck1.setInsulationTesting(true);
-			preChargeCheck1.setSecureConnectionDetection(preChargeCheck1.getSecureConnectionDetection());
 			preChargeCheck1.setStartupSuccess(1);
 		}
 		if(0 == startup_result){
@@ -893,7 +893,7 @@
 			TChargingOrderRefund one = chargingOrderRefundService.getOne(new LambdaQueryWrapper<TChargingOrderRefund>().eq(TChargingOrderRefund::getRefundCode, out_refund_no));
 			one.setRefundSerialNumber(refund_id);
 			one.setRefundStatus(2);
-			one.setRefundTime(LocalDateTime.parse(success_time, DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
+			one.setRefundTime(LocalDateTime.now());
 			chargingOrderRefundService.updateById(one);
 		}
 		return AjaxResult.success();
@@ -911,7 +911,7 @@
 	public ChargingDetails getChargingDetails(Integer id) {
 		Long userId = tokenService.getLoginUserApplet().getUserId();
 		TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, userId).eq(TChargingOrder::getChargingGunId, id)
-				.in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getDelFlag, 0));
+				.eq(TChargingOrder::getRechargePaymentStatus, 2).eq(TChargingOrder::getDelFlag, 0).orderByDesc(TChargingOrder::getStartTime).last(" limit 0, 1"));
 		if(null == one){
 			return null;
 		}
@@ -969,6 +969,96 @@
 		chargingOrder.setEndMode(1);
 		this.updateById(chargingOrder);
 		
+		String code1 = chargingOrder.getCode();
+		TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+		//异步线程处理停机
+		ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1);
+		cachedThreadPool.execute(()->{
+			//调用硬件停止充电,停止成功后开始计算费用退款
+			TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingOrder.getChargingPileId()).getData();
+			PlatformStopCharging platformStopCharging = new PlatformStopCharging();
+			platformStopCharging.setCharging_pile_code(chargingPile.getCode());
+			platformStopCharging.setCharging_gun_code(chargingGun.getCode());
+			sendMessageClient.platformStopCharging(platformStopCharging);
+			log.error(code1 + ":-------------------远程停止充电请求-------------------");
+			log.error(platformStopCharging.toString());
+			//开始查询停机应答,成功后开始计费费用
+			boolean stop_status = false;
+			for (int i = 0; i < 60; i++) {
+				TChargingOrder chargingOrder1 = this.getById(id);
+				if(chargingOrder1.getStatus() != 3){
+					break;
+				}
+				GetPlatformStopChargingReply query = new GetPlatformStopChargingReply();
+				query.setCharging_gun_code(chargingGun.getCode());
+				query.setCharging_pile_code(chargingPile.getCode());
+				query.setEnd_time(chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+				PlatformStopChargingReply reply = platformStopChargingReplyClient.getPlatformStopChargingReply(query).getData();
+				log.error(code1 + ":-------------------查询远程停止充电应答-------------------");
+				if(null == reply){
+					log.error(code1 + ":-------------------远程停止充电应答无数据-------------------");
+					try {
+						Thread.sleep(1000);
+					} catch (InterruptedException e) {
+						throw new RuntimeException(e);
+					}
+					continue;
+				}
+				log.error(reply.toString());
+				
+				if(0 == reply.getStop_result()){
+					String failure_cause = "";
+					switch (reply.getFailure_cause()){
+						case 0:
+							failure_cause = "无";
+							break;
+						case 1:
+							failure_cause = "设备编号不匹配";
+							break;
+						case 2:
+							failure_cause = "枪未处于充电状态";
+							break;
+						case 3:
+							failure_cause = "其他";
+							break;
+					}
+					log.error(code1 + ":停机失败:订单号:{},失败原因:{}", chargingOrder.getCode(), failure_cause);
+					try {
+						Thread.sleep(1000);
+					} catch (InterruptedException e) {
+						throw new RuntimeException(e);
+					}
+					continue;
+				}else{
+					log.error(code1 + ":-------------------远程停止充电请求成功-------------------");
+					stop_status = true;
+				}
+				break;
+			}
+			if(stop_status){
+				chargingOrder.setStatus(5);
+				this.updateById(chargingOrder);
+				
+				//计算用户标签
+				editUserTag(chargingOrder);
+				//用户推荐奖励
+				referralReward(chargingOrder);
+				// 将枪状态重置为空闲
+				chargingGun.setStatus(2);
+				chargingGunClient.updateChargingGunById(chargingGun);
+			}else{
+				log.error(code1 + ":-------------------远程停止充电应答最终失败-------------------");
+			}
+		});
+		return AjaxResult.success();
+	}
+	
+	
+	/**
+	 * 结束充电后处理用户标签数据
+	 * @param chargingOrder
+	 */
+	public void editUserTag(TChargingOrder chargingOrder){
 		//处理用户标签数据
 		List<TUserTag> data = userTagClient.getAllUserTag().getData();
 		//累计充电次数
@@ -1025,79 +1115,14 @@
 				}
 			}
 		}
-		String code1 = chargingOrder.getCode();
-		
-		//异步线程处理停机
-		ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1);
-		cachedThreadPool.execute(()->{
-			//调用硬件停止充电,停止成功后开始计算费用退款
-			TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingOrder.getChargingPileId()).getData();
-			TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
-			PlatformStopCharging platformStopCharging = new PlatformStopCharging();
-			platformStopCharging.setCharging_pile_code(chargingPile.getCode());
-			platformStopCharging.setCharging_gun_code(chargingGun.getCode());
-			sendMessageClient.platformStopCharging(platformStopCharging);
-			log.error(code1 + ":-------------------远程停止充电请求-------------------");
-			log.error(platformStopCharging.toString());
-			//开始查询停机应答,成功后开始计费费用
-			for (int i = 0; i < 60; i++) {
-				GetPlatformStopChargingReply query = new GetPlatformStopChargingReply();
-				query.setCharging_gun_code(chargingGun.getCode());
-				query.setCharging_pile_code(chargingPile.getCode());
-				query.setEnd_time(chargingOrder.getEndTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-				PlatformStopChargingReply reply = platformStopChargingReplyClient.getPlatformStopChargingReply(query).getData();
-				log.error(code1 + ":-------------------查询远程停止充电应答-------------------");
-				log.error(reply.toString());
-				if(null == reply){
-					try {
-						Thread.sleep(1000);
-					} catch (InterruptedException e) {
-						throw new RuntimeException(e);
-					}
-					continue;
-				}
-				
-				TChargingOrder chargingOrder1 = this.getById(id);
-				if(chargingOrder1.getStatus() != 3){
-					break;
-				}
-				
-				if(0 == reply.getStop_result()){
-					String failure_cause = "";
-					switch (reply.getFailure_cause()){
-						case 0:
-							failure_cause = "无";
-							break;
-						case 1:
-							failure_cause = "设备编号不匹配";
-							break;
-						case 2:
-							failure_cause = "枪未处于充电状态";
-							break;
-						case 3:
-							failure_cause = "其他";
-							break;
-					}
-					log.error(code1 + ":停机失败:订单号:{},失败原因:{}", chargingOrder.getCode(), failure_cause);
-					try {
-						Thread.sleep(1000);
-					} catch (InterruptedException e) {
-						throw new RuntimeException(e);
-					}
-					continue;
-				}
-
-				// 将枪状态重置为空闲
-				chargingGun.setStatus(2);
-				chargingGunClient.updateChargingGunById(chargingGun);
-				//计算费用,处理退款
-				endCharge(chargingOrder);
-				log.error(code1 + ":-------------------远程停止充电请求成功-------------------");
-				break;
-			}
-		});
-
-
+	}
+	
+	
+	/**
+	 * 推荐奖励(被推荐首单奖励)
+	 * @param chargingOrder
+	 */
+	public void referralReward(TChargingOrder chargingOrder){
 		//处理推荐奖励(被推荐首单奖励)
 		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
 		long count = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
@@ -1141,13 +1166,12 @@
 			appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
 			appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
 			appUserIntegralChange.setCreateTime(LocalDateTime.now());
+			appUserIntegralChange.setOrderCode(chargingOrder.getCode());
 			appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
-
+			
 			appUser1.setPoints(appUser1.getPoints() + num1);
 			appUserClient.updateAppUser(appUser1);
 		}
-
-		return AjaxResult.success();
 	}
 	
 	
@@ -1167,6 +1191,7 @@
 		if(null != order && order.getStatus() != 3){
 			return;
 		}
+		
 		String code1 = order.getCode();
 		if(0 == platformStopChargingReply.getStop_result()){
 			String failure_cause = "";
@@ -1185,176 +1210,22 @@
 					break;
 			}
 			log.error(code1 + ":停机失败:订单号:{},失败原因:{}", order.getCode(), failure_cause);
-			return;
+		}else{
+			order.setEndTime(LocalDateTime.now());
+			order.setStatus(5);
+			order.setEndMode(1);
+			this.updateById(order);
+			//计算用户标签
+			editUserTag(order);
+			//用户推荐奖励
+			referralReward(order);
+			// 将枪状态重置为空闲
+			chargingGun.setStatus(2);
+			chargingGunClient.updateChargingGunById(chargingGun);
 		}
-		
-		// 将枪状态重置为空闲
-		chargingGun.setStatus(2);
-		chargingGunClient.updateChargingGunById(chargingGun);
-		//计算费用,处理退款
-		endCharge(order);
 	}
 	
 	
-	
-	
-	
-	/**
-	 * 手动结束后的费用计算和退款逻辑
-	 */
-	@GlobalTransactional(rollbackFor = Exception.class)
-	public void endCharge(TChargingOrder chargingOrder){
-		//如果使用优惠券需要判断优惠券是否满足使用条件
-		//根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
-		//退款金额=优惠券金额+剩余充电金额
-		List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
-		BigDecimal total = BigDecimal.ZERO;
-		for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
-			BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
-			BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
-			total = total.add(periodElectricPrice).add(periodServicePrice);
-		}
-		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
-		BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount();
-		BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
-		//退款金额(已经计算了折扣优惠部分)
-		BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
-		BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
-		BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
-		if(null != chargingOrder.getVipDiscount()){
-			orderAmount = orderAmount.divide(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
-			chargingOrder.setOrderAmount(total);
-		}
-
-		if(chargingOrder.getEndMode() == 2){
-			chargingOrder.setEndMode(refundAmount.compareTo(BigDecimal.ZERO) > 0 ? 2 : 3);
-		}
-		chargingOrder.setStatus(5);
-		chargingOrder.setPaymentAmount(payAmount);
-		this.updateById(chargingOrder);
-		
-		//添加积分
-		TIntegralRule integralRule = integralRuleClient.getSet().getData();
-		if(null != integralRule){
-			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-			Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
-			Integer integral = payAmount.multiply(new BigDecimal(num1)).intValue();
-			if(null != appUser.getVipId()){
-				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
-				Integer doubleIntegration = vip.getDoubleIntegration();
-				//双倍积分
-				if(1 == doubleIntegration){
-					integral *= 2;
-				}
-			}
-			
-			TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
-			appUserIntegralChange.setAppUserId(appUser.getId());
-			appUserIntegralChange.setChangeType(2);
-			appUserIntegralChange.setHistoricalIntegral(appUser.getPoints());
-			appUser.setPoints(appUser.getPoints() + integral);
-			appUserIntegralChange.setCurrentIntegral(appUser.getPoints());
-			appUserIntegralChange.setCreateTime(LocalDateTime.now());
-			appUserClient.updateAppUser(appUser);
-			appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
-		}
-		
-		//计算优惠券
-		if(null != chargingOrder.getAppCouponId()){
-			//判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。
-			TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData();
-			String couponJson = appCoupon.getCouponJson();
-			TCoupon tCoupon = JSON.parseObject(couponJson, TCoupon.class);
-			Integer preferentialMode = tCoupon.getPreferentialMode();
-			if(1 == preferentialMode){
-				//满减
-				if(total.compareTo(tCoupon.getMeetTheConditions()) >= 0){
-					refundAmount = refundAmount.add(tCoupon.getDiscountAmount());
-					chargingOrder.setCouponDiscountAmount(tCoupon.getDiscountAmount());
-					payAmount = payAmount.subtract(tCoupon.getDiscountAmount());
-				}else{
-					chargingOrder.setAppCouponId(null);
-					chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
-					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
-				}
-			}
-			if(2 == preferentialMode){
-				//抵扣
-				if(total.compareTo(tCoupon.getMeetTheConditions()) >= 0){
-					//折扣金额
-					BigDecimal divide = total.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
-					divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
-					refundAmount = refundAmount.add(divide);
-					chargingOrder.setCouponDiscountAmount(divide);
-					payAmount = payAmount.subtract(divide);
-				}else{
-					chargingOrder.setAppCouponId(null);
-					chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
-					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
-				}
-			}
-		}
-
-		if(null != chargingOrder.getVipDiscount()){
-			BigDecimal subtract = orderAmount.subtract(total);
-			chargingOrder.setVipDiscountAmount(subtract);
-			payAmount = payAmount.subtract(subtract);
-		}
-		//开始构建退款费用
-		if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
-			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
-			//构建退款明细
-			TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
-			chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
-			chargingOrderRefund.setRefundAmount(refundAmount);
-			chargingOrderRefund.setRefundStatus(1);
-			chargingOrderRefund.setPayType(rechargePaymentType);
-			chargingOrderRefund.setRefundStatus(1);
-			chargingOrderRefund.setCode(chargingOrder.getCode());
-			chargingOrderRefund.setRefundTitle("充电完成退款");
-			chargingOrderRefund.setRefundContent("充电完成退款");
-			chargingOrderRefund.setRefundReason("充电完成退款");
-			chargingOrderRefund.setRefundRemark("充电完成退款");
-			chargingOrderRefund.setRefundTotalAmount(refundAmount);
-			chargingOrderRefund.setPayAmount(rechargeAmount);
-			if(1 == rechargePaymentType){
-				WxPaymentRefundModel model = new WxPaymentRefundModel();
-				model.setOut_trade_no(chargingOrder.getCode());
-				model.setOut_refund_no(chargingOrderRefund.getRefundCode());
-				model.setReason("充电完成退款");
-				model.setNotify_url("/payment/wx/refund/notify");
-				WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
-				amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
-				amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
-				amount.setCurrency("CNY");
-				model.setAmount(amount);
-				R<String> orderR = wxPaymentClient.refundOrderR(model);
-				if(200 == orderR.getCode()){
-					chargingOrderRefundService.save(chargingOrderRefund);
-				}
-			}
-			if(2 == rechargePaymentType){
-				RefundReq dto = new RefundReq();
-				dto.setOutTradeNo(chargingOrder.getCode());
-				dto.setOutRequestNo(chargingOrderRefund.getCode());
-				dto.setRefundAmount(rechargeAmount.toString());
-				dto.setRefundReason("充电完成退款");
-				RefundResp resp = aliPaymentClient.refund(dto).getData();
-				if(null != resp){
-					SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
-					AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
-					if(success.isSuccess()){
-						chargingOrderRefundService.save(chargingOrderRefund);
-					}
-				}
-			}
-
-		}
-
-		
-	}
 
 
 
@@ -1532,13 +1403,8 @@
 	public List<Map<String, Object>> getYearData(List<Long> chargingOrderIds) {
 		return this.baseMapper.getYearData(chargingOrderIds);
 	}
-	@Resource
-	private SysUserClient sysUserClient;
-	@Resource
-	private UserSiteClient userSiteClient;
 
-	@Resource
-	private RoleSiteClient roleSiteClient;
+	
 	@Override
 	public ChargingOrderTimeVO chargingList(ChargingListQuery dto) {
 		String startTime1 = null;
@@ -1753,10 +1619,8 @@
 		return chargingOrderTimeVO;
 	}
 
-//	@Override
-//	public R payRefund(PayOrderRefundDto payOrderQueryDto) {
-//		return null;
-//	}
+
+	
 
 	@Override
 	public ChargingOrderListInfoVO chargingInfo(String uid) {
@@ -1845,23 +1709,23 @@
 	 */
 	@Override
 	public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
-		if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getCharging_gun_code())){
+		if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(query.getTransaction_serial_number())){
 			//获取当前的计费策略
-			TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getCharging_gun_code()));
+			TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, query.getTransaction_serial_number()));
 			AccountingStrategyDetailOrder strategyDetail = accountingStrategyDetailOrderClient.getNowAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
 			TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = chargingOrderAccountingStrategyService.getOne(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>()
 					.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()).orderByDesc(TChargingOrderAccountingStrategy::getCreateTime).last(" limit 0, 1"));
-			SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
 			if(null == chargingOrderAccountingStrategy){
 				chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
 				chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
 				chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
 				chargingOrderAccountingStrategy.setType(strategyDetail.getType());
-				chargingOrderAccountingStrategy.setStartTime(sdf.format(chargingOrder.getStartTime()));
-				chargingOrderAccountingStrategy.setEndTime(sdf.format(new Date()));
+				chargingOrderAccountingStrategy.setStartTime(chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm")));
+				chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
 				chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
 				chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
 				chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
+				//已充电总度数
 				BigDecimal charging_degree = query.getCharging_degree();
 				BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(charging_degree);
 				BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(charging_degree);
@@ -1878,9 +1742,7 @@
 				chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
 			}else{
 				if(chargingOrderAccountingStrategy.getAccountingStrategyDetailId().equals(strategyDetail.getId())){
-					BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
-					BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
-					BigDecimal periodOriginalServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
+					//已充电总度数
 					BigDecimal charging_degree = query.getCharging_degree();
 					BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(charging_degree);
 					BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(charging_degree);
@@ -1889,24 +1751,23 @@
 					if(null != chargingOrder.getVipDiscount()){
 						serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
 					}
-					periodServicePrice = periodServicePrice.add(serviceCharge);
-					periodOriginalServicePrice = periodOriginalServicePrice.add(originalServicePrice);
-					periodElectricPrice = periodElectricPrice.add(electrovalenc);
-					chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice);
-					chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(periodOriginalServicePrice);
-					chargingOrderAccountingStrategy.setPeriodElectricPrice(periodElectricPrice);
-					chargingOrderAccountingStrategy.setEndTime(sdf.format(new Date()));
+					chargingOrderAccountingStrategy.setChargingCapacity(charging_degree);
+					chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
+					chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
+					chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
+					chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
 					chargingOrderAccountingStrategyService.updateById(chargingOrderAccountingStrategy);
 				}else{
-					TChargingOrderAccountingStrategy chargingOrderAccountingStrategy1 = new TChargingOrderAccountingStrategy();
-					chargingOrderAccountingStrategy1.setChargingOrderId(chargingOrder.getId());
-					chargingOrderAccountingStrategy1.setAccountingStrategyDetailId(strategyDetail.getId());
-					chargingOrderAccountingStrategy1.setType(strategyDetail.getType());
-					chargingOrderAccountingStrategy1.setStartTime(sdf.format(chargingOrderAccountingStrategy.getEndTime()));
-					chargingOrderAccountingStrategy1.setEndTime(sdf.format(new Date()));
-					chargingOrderAccountingStrategy1.setElectrovalence(strategyDetail.getElectrovalence());
-					chargingOrderAccountingStrategy1.setServiceCharge(strategyDetail.getServiceCharge());
-					chargingOrderAccountingStrategy1.setCostServiceCharge(strategyDetail.getCostServiceCharge());
+					chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
+					chargingOrderAccountingStrategy.setChargingOrderId(chargingOrder.getId());
+					chargingOrderAccountingStrategy.setAccountingStrategyDetailId(strategyDetail.getId());
+					chargingOrderAccountingStrategy.setType(strategyDetail.getType());
+					chargingOrderAccountingStrategy.setStartTime(chargingOrder.getStartTime().format(DateTimeFormatter.ofPattern("HH:mm")));
+					chargingOrderAccountingStrategy.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm")));
+					chargingOrderAccountingStrategy.setElectrovalence(strategyDetail.getElectrovalence());
+					chargingOrderAccountingStrategy.setServiceCharge(strategyDetail.getServiceCharge());
+					chargingOrderAccountingStrategy.setCostServiceCharge(strategyDetail.getCostServiceCharge());
+					//已充电总度数
 					BigDecimal charging_degree = query.getCharging_degree();
 					BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(charging_degree);
 					BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(charging_degree);
@@ -1915,22 +1776,23 @@
 					if(null != chargingOrder.getVipDiscount()){
 						serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount().divide(new BigDecimal(10)));
 					}
-					chargingOrderAccountingStrategy1.setChargingCapacity(charging_degree);
-					chargingOrderAccountingStrategy1.setPeriodElectricPrice(electrovalenc);
-					chargingOrderAccountingStrategy1.setPeriodOriginalServicePrice(originalServicePrice);
-					chargingOrderAccountingStrategy1.setPeriodServicePrice(serviceCharge);
-					chargingOrderAccountingStrategy1.setCreateTime(LocalDateTime.now());
-					chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy1);
+					chargingOrderAccountingStrategy.setChargingCapacity(charging_degree);
+					chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
+					chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
+					chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
+					chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
+					chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
 				}
 			}
 
 			List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>()
 					.eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
+			//总充电金额
 			BigDecimal t = BigDecimal.ZERO;
 			for (TChargingOrderAccountingStrategy coas : list) {
 				t = t.add(coas.getPeriodServicePrice()).add(coas.getPeriodElectricPrice());
 			}
-			BigDecimal residualAmount = chargingOrder.getRechargeAmount().subtract(t).setScale(2, RoundingMode.HALF_EVEN);
+			BigDecimal residualAmount = chargingOrder.getRechargeAmount().subtract(t).setScale(4, RoundingMode.HALF_EVEN);
 			chargingOrder.setResidualAmount(residualAmount);
 			BigDecimal divide = query.getOutput_current().multiply(query.getOutput_voltage()).divide(new BigDecimal(1000));
 			chargingOrder.setChargingPower(divide);
@@ -1953,60 +1815,17 @@
 		}
 		chargingOrder.setStatus(5);
 		chargingOrder.setEndMode(endMode);
+		chargingOrder.setEndTime(LocalDateTime.now());
 		this.updateById(chargingOrder);
-
-		//计算费用,处理退款
-		endCharge(chargingOrder);
+		// 将枪状态重置为空闲
+		TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+		chargingGun.setStatus(2);
+		chargingGunClient.updateChargingGunById(chargingGun);
 		
-		//处理推荐奖励(被推荐首单奖励)
-		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-		long count = this.count(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserId, chargingOrder.getAppUserId())
-				.eq(TChargingOrder::getStatus, 5).isNull(TChargingOrder::getEndMode).eq(TChargingOrder::getDelFlag, 0));
-		if(null != appUser.getInviteUserId() && 1 == count){
-			TIntegralRule integralRule = integralRuleClient.getSet().getData();
-			String inviteUsersToEarnPoints = integralRule.getInviteUsersToEarnPoints();
-			JSONObject jsonObject = JSON.parseObject(inviteUsersToEarnPoints);
-			Integer num1 = jsonObject.getInteger("num1");
-			
-			TAppUser appUser1 = appUserClient.getUserById(appUser.getInviteUserId()).getData();
-			if(null != appUser1.getVipId()){
-				TVip vip = vipClient.getInfo1(appUser1.getVipId()).getData();
-				Integer doubleIntegration = vip.getDoubleIntegration();
-				//双倍积分
-				if(1 == doubleIntegration){
-					num1 *= 2;
-				}
-			}
-			
-			GetInviteUser query = new GetInviteUser();
-			query.setAppUserId(appUser1.getId());
-			query.setBeInvitedAppUserId(chargingOrder.getAppUserId());
-			TInviteUser inviteUser = inviteUserClient.getInviteUser(query).getData();
-			if(null == inviteUser){
-				inviteUser = new TInviteUser();
-				inviteUser.setAppUserId(appUser1.getId());
-				inviteUser.setBeInvitedAppUserId(chargingOrder.getAppUserId());
-				inviteUser.setAward(num1);
-				inviteUser.setCreateTime(LocalDateTime.now());
-				inviteUserClient.saveInviteUser(inviteUser);
-			}else{
-				inviteUser.setAward(num1);
-				inviteUserClient.updateInviteUser(inviteUser);
-			}
-			TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
-			String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
-			appUserIntegralChange.setCode(code);
-			appUserIntegralChange.setAppUserId(appUser1.getId());
-			appUserIntegralChange.setChangeType(5);
-			appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
-			appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
-			appUserIntegralChange.setCreateTime(LocalDateTime.now());
-			appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
-			
-			appUser1.setPoints(appUser1.getPoints() + num1);
-			appUserClient.updateAppUser(appUser1);
-		}
-		
+		//计算用户标签
+		editUserTag(chargingOrder);
+		//用户推荐奖励
+		referralReward(chargingOrder);
 	}
 
 	/**
@@ -2017,7 +1836,194 @@
 	public void excelEndCharge(String orderCode) {
 		endCharge(orderCode, 0);
 	}
-
+	
+	
+	/**
+	 * 停止充电返回账单后计算费用
+	 * @param vo
+	 */
+	@Override
+	@GlobalTransactional(rollbackFor = Exception.class)
+	public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
+		//如果使用优惠券需要判断优惠券是否满足使用条件
+		//根据实际的充电金额计算退款金额   退回费用=(原金额/总金额)*(总金额-实际充电金额)
+		//退款金额=优惠券金额+剩余充电金额
+		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
+		List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
+		BigDecimal periodElectricPrice_total = BigDecimal.ZERO;
+		BigDecimal periodServicePrice_total = BigDecimal.ZERO;
+		BigDecimal total = BigDecimal.ZERO;
+		for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
+			BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
+			BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
+			periodElectricPrice_total = periodElectricPrice_total.add(periodElectricPrice);
+			periodServicePrice_total = periodServicePrice_total.add(periodServicePrice);
+			total = total.add(periodElectricPrice).add(periodServicePrice);
+		}
+		//原金额
+		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+		BigDecimal vipDiscountAmount = chargingOrder.getVipDiscountAmount();
+		//总金额(充值金额+会员折扣金额)
+		BigDecimal decimal = rechargeAmount.add(vipDiscountAmount);
+		//退款金额(已经计算了折扣优惠部分)
+		BigDecimal refundAmount = rechargeAmount.divide(decimal, new MathContext(4, RoundingMode.HALF_EVEN)).multiply(decimal.subtract(total));
+		BigDecimal orderAmount = BigDecimal.valueOf(total.doubleValue());
+		BigDecimal payAmount = BigDecimal.valueOf(total.doubleValue());
+		//折扣金额
+		BigDecimal discountAmount = BigDecimal.ZERO;
+		if(null != chargingOrder.getVipDiscount()){
+			//服务费折扣
+			discountAmount = periodServicePrice_total.multiply((new BigDecimal(10).subtract(chargingOrder.getVipDiscount())).divide(new BigDecimal(10)));
+			
+			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+			if(null != appUser.getVipId()){
+				//判断会员是否还有充电优惠次数
+				GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+				getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+				getAppUserVipDetail.setVipId(appUser.getVipId());
+				TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+				if(null != data && data.getChargeNum() > 0){
+					data.setChargeNum(data.getChargeNum() - 1);
+					appUserVipDetailClient.updateAppUserVipDetail(data);
+				}
+				
+				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+				BigDecimal maximumDeduction = vip.getMaximumDeduction();
+				//普通会员有最高优惠限制
+				if(vip.getType() == 1 && discountAmount.compareTo(maximumDeduction) > 0){
+					discountAmount = maximumDeduction;
+				}
+			}
+			payAmount = payAmount.subtract(discountAmount);
+		}
+		
+		if(chargingOrder.getEndMode() == 2){
+			chargingOrder.setEndMode(refundAmount.compareTo(BigDecimal.ZERO) > 0 ? 2 : 3);
+		}
+		chargingOrder.setStatus(5);
+		chargingOrder.setOrderAmount(orderAmount);
+		chargingOrder.setVipDiscountAmount(discountAmount);
+		
+		//计算优惠券
+		if(null != chargingOrder.getAppCouponId()){
+			//判断实际充电金额是否满足优惠券使用条件,如果不满足则不适用优惠券。
+			TAppCoupon appCoupon = appCouponClient.getAppCouponById(chargingOrder.getAppCouponId()).getData();
+			String couponJson = appCoupon.getCouponJson();
+			TCoupon tCoupon = JSON.parseObject(couponJson, TCoupon.class);
+			Integer preferentialMode = tCoupon.getPreferentialMode();
+			if(1 == preferentialMode){
+				//满减
+				if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
+					refundAmount = refundAmount.add(tCoupon.getDiscountAmount());
+					chargingOrder.setCouponDiscountAmount(tCoupon.getDiscountAmount());
+					payAmount = payAmount.subtract(tCoupon.getDiscountAmount());
+				}else{
+					chargingOrder.setAppCouponId(null);
+					chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+				}
+			}
+			if(2 == preferentialMode){
+				//抵扣
+				if(payAmount.compareTo(tCoupon.getMeetTheConditions()) >= 0){
+					//折扣金额
+					BigDecimal divide = payAmount.multiply(new BigDecimal(10).subtract(tCoupon.getDiscount())).divide(new BigDecimal(10));
+					divide = divide.compareTo(tCoupon.getMaximumDiscountAmount()) > 0 ? tCoupon.getMaximumDiscountAmount() : divide;
+					refundAmount = refundAmount.add(divide);
+					chargingOrder.setCouponDiscountAmount(divide);
+					payAmount = payAmount.subtract(divide);
+				}else{
+					chargingOrder.setAppCouponId(null);
+					chargingOrder.setCouponDiscountAmount(BigDecimal.ZERO);
+					appCouponClient.refund(chargingOrder.getAppCouponId().toString());
+				}
+			}
+		}
+		chargingOrder.setPaymentAmount(payAmount);
+		this.updateById(chargingOrder);
+		
+		//添加积分
+		TIntegralRule integralRule = integralRuleClient.getSet().getData();
+		if(null != integralRule){
+			TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+			Integer num1 = JSON.parseObject(integralRule.getChargeCredit()).getInteger("num1");
+			Integer integral = payAmount.multiply(new BigDecimal(num1)).intValue();
+			if(null != appUser.getVipId()){
+				TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+				Integer doubleIntegration = vip.getDoubleIntegration();
+				//双倍积分
+				if(1 == doubleIntegration){
+					integral *= 2;
+				}
+			}
+			
+			TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
+			appUserIntegralChange.setAppUserId(appUser.getId());
+			appUserIntegralChange.setChangeType(2);
+			appUserIntegralChange.setHistoricalIntegral(appUser.getPoints());
+			appUser.setPoints(appUser.getPoints() + integral);
+			appUserIntegralChange.setCurrentIntegral(appUser.getPoints());
+			appUserIntegralChange.setCreateTime(LocalDateTime.now());
+			appUserIntegralChange.setOrderCode(chargingOrder.getCode());
+			appUserClient.updateAppUser(appUser);
+			appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
+		}
+		
+		
+		//开始构建退款费用
+		if(refundAmount.compareTo(BigDecimal.ZERO) > 0){
+			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
+			//构建退款明细
+			TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
+			chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Double.valueOf(Math.random() * 1000).intValue()));
+			chargingOrderRefund.setRefundAmount(refundAmount);
+			chargingOrderRefund.setRefundStatus(1);
+			chargingOrderRefund.setPayType(rechargePaymentType);
+			chargingOrderRefund.setRefundStatus(1);
+			chargingOrderRefund.setCode(chargingOrder.getCode());
+			chargingOrderRefund.setRefundTitle("充电完成退款");
+			chargingOrderRefund.setRefundContent("充电完成退款");
+			chargingOrderRefund.setRefundReason("充电完成退款");
+			chargingOrderRefund.setRefundRemark("充电完成退款");
+			chargingOrderRefund.setRefundTotalAmount(refundAmount);
+			chargingOrderRefund.setPayAmount(rechargeAmount);
+			if(1 == rechargePaymentType){
+				WxPaymentRefundModel model = new WxPaymentRefundModel();
+				model.setOut_trade_no(chargingOrder.getCode());
+				model.setOut_refund_no(chargingOrderRefund.getRefundCode());
+				model.setReason("充电完成退款");
+				model.setNotify_url("/payment/wx/refund/notify");
+				WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+				amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
+				amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
+				amount.setCurrency("CNY");
+				model.setAmount(amount);
+				R<String> orderR = wxPaymentClient.refundOrderR(model);
+				if(200 == orderR.getCode()){
+					chargingOrderRefundService.save(chargingOrderRefund);
+				}
+			}
+			if(2 == rechargePaymentType){
+				RefundReq dto = new RefundReq();
+				dto.setOutTradeNo(chargingOrder.getCode());
+				dto.setOutRequestNo(chargingOrderRefund.getCode());
+				dto.setRefundAmount(rechargeAmount.toString());
+				dto.setRefundReason("充电完成退款");
+				RefundResp resp = aliPaymentClient.refund(dto).getData();
+				if(null != resp){
+					SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
+					AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
+					if(success.isSuccess()){
+						chargingOrderRefundService.save(chargingOrderRefund);
+					}
+				}
+			}
+			
+		}
+	}
+	
 	@Override
 	public List<Map<String, Object>> getByDate(List<Long> chargingOrderIds) {
 		return this.baseMapper.getByDate(chargingOrderIds);
@@ -2662,12 +2668,33 @@
 	public List<Map<String, Object>> needElec1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
 		return this.baseMapper.needElec1(siteIds,statisticsQueryDto);
 	}
-
-	public static void main(String[] args) {
-//		String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
-//		String format1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
-//		System.err.println(format+"至"+format1);
-//		LocalDateTime parse = LocalDateTime.parse("2024-01-12 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
-//		System.err.println(parse.format(DateTimeFormatter.ofPattern("yyyy-dd")));
+	
+	/**
+	 * 获取充电结束页面详情
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public EndOfChargePageInfo getEndOfChargePageInfo(String id) {
+		EndOfChargePageInfo info = new EndOfChargePageInfo();
+		TChargingOrder chargingOrder = this.getById(id);
+		info.setId(id);
+		info.setCode(chargingOrder.getCode());
+		info.setPaymentAmount(chargingOrder.getPaymentAmount());
+		info.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount());
+		TAppUserIntegralChange integralChange = appUserIntegralChangeClient.getTAppUserIntegralChangeByOrderCode(chargingOrder.getCode()).getData();
+		info.setIntegral(null == integralChange ? 0 : integralChange.getCurrentIntegral() - integralChange.getHistoricalIntegral());
+		info.setRechargeAmount(chargingOrder.getRechargeAmount());
+		info.setRefundAmount(chargingOrder.getRefundAmount());
+		LocalDateTime startTime = chargingOrder.getStartTime();
+		LocalDateTime endTime = chargingOrder.getEndTime();
+		info.setStartDay(startTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " 周" + startTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE));
+		info.setStartHour(startTime.format(DateTimeFormatter.ofPattern("HH:mm")));
+		info.setEndDay(endTime.format(DateTimeFormatter.ofPattern("MM月dd日")) + " 周" + endTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.SIMPLIFIED_CHINESE));
+		info.setEndHour(endTime.format(DateTimeFormatter.ofPattern("HH:mm")));
+		int hour = endTime.getHour() - startTime.getHour();
+		int second = endTime.getSecond() - startTime.getSecond();
+		info.setDuration(0 == hour ? String.format("%s分钟", second) : String.format("%s小时%s分钟", hour, second));
+		return info;
 	}
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index 689b6e2..6823260 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -2,6 +2,8 @@
 
 import cn.hutool.db.DaoTemplate;
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -17,6 +19,7 @@
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.HttpUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
@@ -120,12 +123,18 @@
         List<Integer> tagIds = tagList.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
         // 统计标签使用数量
         List<TEvaluationTagVO> counts = orderEvaluateTagMapper.getCountByTagIds(tagIds);
+        List<Integer> ids = counts.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
         tagList.forEach(tag -> {
-            counts.forEach(count -> {
-                if (tag.getId().equals(count.getId())) {
-                    tag.setTagCount(count.getTagCount());
-                }
-            });
+            if(ids.contains(tag.getId())){
+                counts.forEach(count -> {
+                    if (tag.getId().equals(count.getId())) {
+                        tag.setTagCount(count.getTagCount());
+                    }
+                });
+            }else{
+                tag.setTagCount(0);
+            }
+            
         });
         tagList = tagList.stream().sorted(Comparator.comparing(TEvaluationTagVO::getTagCount).reversed()).collect(Collectors.toList());
         // 统计有图,好评,中差评数量
@@ -221,9 +230,11 @@
         List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, pageInfo);
         for (GetOrderEvaluatePageListDTO dto : list) {
             TAppUser appUser = appUserClient.getUserById(dto.getAppUserId()).getData();
-            dto.setAvatar(appUser.getAvatar());
-            String phone = appUser.getPhone();
-            dto.setPhone(phone.substring(0, 3) + "****" + phone.substring(6));
+            if(null != appUser){
+                dto.setAvatar(appUser.getAvatar());
+                String phone = appUser.getPhone();
+                dto.setPhone(phone.substring(0, 3) + "****" + phone.substring(6));
+            }
             Site site = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData().get(0);
             dto.setSiteName(site.getName());
             List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, dto.getId()));
@@ -259,6 +270,37 @@
             TChargingOrder chargingOrder = chargingOrderService.getById(query.getOrderId());
             orderEvaluate.setAppUserCarId(chargingOrder.getAppUserCarId());
         }
+        TAppUser appUser = appUserClient.getUserById(userid).getData();
+    
+        //检测敏感词
+        String content = orderEvaluate.getContent();
+        String token = appUserClient.getWXToken().getData();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("content", content);
+        jsonObject.put("version", 2);
+        jsonObject.put("scene", 2);
+        jsonObject.put("openid", appUser.getWxOpenid());
+        String post = HttpUtils.post("https://api.weixin.qq.com/wxa/msg_sec_check?access_token=" + token, jsonObject.toString());
+        JSONObject object = JSONObject.parseObject(post);
+        Integer errcode = object.getInteger("errcode");
+        if(0 != errcode){
+            throw new RuntimeException(object.getString("errmsg"));
+        }
+        JSONArray detail = object.getJSONArray("detail");
+        for (int i = 0; i < detail.size(); i++) {
+            JSONObject jsonObject1 = detail.getJSONObject(i);
+            Integer errcode1 = jsonObject1.getInteger("errcode");
+            if(0 == errcode1){
+                String suggest = jsonObject1.getString("suggest");
+                Integer label = jsonObject1.getInteger("label");
+                String keyword = jsonObject1.getString("keyword");
+                Integer prob = jsonObject1.getInteger("prob");
+                if(("risky".equals(suggest) || "review".equals(suggest)) && 100 != label && StringUtils.isNotEmpty(keyword) && 80 <= prob){
+                    content = content.replaceAll(keyword, "***");
+                }
+            }
+        }
+        orderEvaluate.setContent(content);
         this.save(orderEvaluate);
     
         List<Integer> tagIds = query.getTagIds();
@@ -276,7 +318,6 @@
             //积分
             Integer num1 = JSON.parseObject(credit).getInteger("num1");
             if(null != num1 && 0 < num1){
-                TAppUser appUser = appUserClient.getUserById(userid).getData();
                 if(null != appUser.getVipId()){
                     TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
                     Integer doubleIntegration = vip.getDoubleIntegration();
@@ -296,6 +337,7 @@
                 appUserIntegralChange.setHistoricalIntegral(points);
                 appUserIntegralChange.setCurrentIntegral(points + num1);
                 appUserIntegralChange.setCreateTime(LocalDateTime.now());
+                appUserIntegralChange.setOrderCode(orderEvaluate.getId().toString());
                 appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
             }
         }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java
new file mode 100644
index 0000000..006e32a
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/EndOfChargePageInfo.java
@@ -0,0 +1,40 @@
+package com.ruoyi.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/10/12 9:20
+ */
+@Data
+@ApiModel
+public class EndOfChargePageInfo {
+	@ApiModelProperty("订单id")
+	private String id;
+	@ApiModelProperty("充电金额")
+	private BigDecimal paymentAmount;
+	@ApiModelProperty("优惠金额")
+	private BigDecimal couponDiscountAmount;
+	@ApiModelProperty("积分")
+	private Integer integral;
+	@ApiModelProperty("订单编号")
+	private String code;
+	@ApiModelProperty("预充金额")
+	private BigDecimal rechargeAmount;
+	@ApiModelProperty("退还金额")
+	private BigDecimal refundAmount;
+	@ApiModelProperty("开始日期")
+	private String startDay;
+	@ApiModelProperty("开始时间")
+	private String startHour;
+	@ApiModelProperty("结束日期")
+	private String endDay;
+	@ApiModelProperty("结束时间")
+	private String endHour;
+	@ApiModelProperty("充电时长")
+	private String duration;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java
new file mode 100644
index 0000000..7e1587e
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ReplyEvaluationVO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.vo;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/10/10 11:40
+ */
+@Data
+public class ReplyEvaluationVO {
+	private Long id;
+	private String reply;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
index d0b8691..6587762 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml
@@ -29,6 +29,7 @@
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
         username: nacos
         password: nacos
+#        ip: 192.168.110.85
       config:
         # 配置中心地址
         server-addr: 192.168.110.169:8848
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
index 67673b1..f766a28 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
@@ -94,7 +94,7 @@
     
     <select id="getPageList" resultType="com.ruoyi.order.dto.GetOrderEvaluatePageListDTO">
         select
-        CAST(a.id AS CHAR) as id,
+        a.id,
         b.`code`,
         a.mark,
         b.site_id as siteId,
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateTagMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateTagMapper.xml
index d1ee724..962a88e 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateTagMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateTagMapper.xml
@@ -14,7 +14,7 @@
         id, order_evaluate_id, evaluation_tag_id
     </sql>
     <select id="getCountByTagIds" resultType="com.ruoyi.other.api.vo.TEvaluationTagVO">
-        SELECT  evaluation_tag_id,count(id) AS tagCount FROM t_order_evaluate_tag
+        SELECT  evaluation_tag_id as id,count(id) AS tagCount FROM t_order_evaluate_tag
         <where> 
              <if test="tagIds != null and tagIds.size() > 0">
                 AND evaluation_tag_id IN
diff --git a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
index 101afd4..85979cd 100644
--- a/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
+++ b/ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/RuoYiOrderApplicationTests.java
@@ -1,8 +1,23 @@
 package com.ruoyi.order;
 
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.order.service.TChargingOrderService;
+import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.annotation.Resource;
+import java.io.PrintWriter;
 
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiOrderApplication.class)
 public class RuoYiOrderApplicationTests {
-
+	
+	@Resource
+	private TChargingOrderService chargingOrderService;
+	
+	
+	@Test
+	public void test(){
+		AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(2, "CD55720241011143234718", "4200002400202410113181486798", "");
+		
+	}
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
index fc51ae5..6b94607 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml
@@ -29,6 +29,7 @@
         namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
         username: nacos
         password: nacos
+#        ip: 192.168.110.85
       config:
         # 配置中心地址
         server-addr: 192.168.110.169:8848
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml
index 67410dd..e9d24a2 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TEvaluationTagMapper.xml
@@ -26,7 +26,7 @@
 
     
     
-    <select id="pageList" resultMap="BaseResultMap">
+    <select id="pageList" resultType="com.ruoyi.other.api.domain.TEvaluationTag">
         select * from t_evaluation_tag where del_flag = 0
         <if test="null != name and '' != name">
             and name like CONCAT('%', #{name}, '%')

--
Gitblit v1.7.1