From e86ed626de30e3e60ba5e1294b0d134546ac5b4d Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 27 八月 2024 12:06:16 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java                                               |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                                   |   48 ++
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java                         |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java      |   40 ++
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSettingReply.java                                 |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerifyReply.java                             |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java                     |    2 
 ruoyi-service/ruoyi-chargingPile/pom.xml                                                                                              |   16 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java                                         |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartCharging.java                              |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java                       |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java                             |    2 
 ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports   |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java                       |   20 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BillingModeVerify.java                                  |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java                  |    2 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java            |   58 +++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java                                            |    8 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCardReply.java                              |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java                             |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java                                           |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java                               |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ReadRealTimeMonitoringData.java                         |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java                                      |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java                                   |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java                                        |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderInfo.java                                                  |    4 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java |   23 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java                                                   |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModel.java                                  |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSettingReply.java                       |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java                                             |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TransactionRecord.java                                  |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BaseModel.java                                          |   15 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java                                  |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java                               |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingMode.java                             |    2 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml                                                    |    6 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml                                                    |   12 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java                                 |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java                      |   66 +++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/CarBrandUtil.java                                           |   55 +++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java                         |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java                    |   17 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCard.java                             |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java                                      |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/EndCharge.java                                          |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java                                  |   28 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/AcquisitionBillingModeReply.java                        |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java                                   |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SynchronizeOfflineCardReply.java                        |    2 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java          |   10 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdateReply.java                          |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestart.java                                    |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/SSLCipherSuiteUtil.java                                     |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java                          |   32 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java                         |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ConfirmTransactionRecord.java                           |    2 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java                                                 |   34 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java          |   15 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/TApplyChargingPileDTO.java                              |   15 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java                                               |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/QRCodeUtils.java                                           |  267 ++++++++++++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserCar.java                                                |    6 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java                       |    4 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                                  |    7 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java                                     |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java                                      |    8 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                                        |   24 +
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java           |   35 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java             |   13 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OpenOrCloseGroundLock.java                              |    2 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java                                         |    4 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java                                               |    2 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SiteDetailEvaluateVO.java                                              |    3 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java                                  |    6 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java                                       |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/WorkingParameterSetting.java                            |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java                                   |    2 
 /dev/null                                                                                                                             |   41 --
 ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java                                                              |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRestartReply.java                               |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCardReply.java                              |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopChargingReply.java                          |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/TimingSetting.java                                      |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/OnlineReply.java                                        |    2 
 86 files changed, 911 insertions(+), 139 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
index 3a02097..24cacf9 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
@@ -23,6 +23,8 @@
     private Integer points;
     @ApiModelProperty("当前优惠卷数量")
     private Integer couponNum;
+    @ApiModelProperty("是否第一次添加车")
+    private Integer firstAdd;
     @ApiModelProperty("当前绑定的车辆")
     private List<TAppUserCar> userCars;
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
index 3fdbadc..e11a395 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUser.java
@@ -79,6 +79,9 @@
     @ApiModelProperty(value = "积分")
     @TableField("points")
     private Integer points;
+    @ApiModelProperty(value = "积分")
+    @TableField("first_add")
+    private Integer firstAdd;
 
     @ApiModelProperty(value = "省名称")
     @TableField("province")
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserCar.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserCar.java
index e832726..fc25220 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserCar.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserCar.java
@@ -43,6 +43,12 @@
     @TableField("license_plate")
     private String licensePlate;
 
+
+    @ApiModelProperty(value = "车牌")
+    @TableField("pic")
+    private String pic;
+
+
     @ApiModelProperty(value = "车辆品牌")
     @TableField("vehicle_brand")
     private String vehicleBrand;
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/TApplyChargingPileDTO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/TApplyChargingPileDTO.java
new file mode 100644
index 0000000..bb30bf5
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/dto/TApplyChargingPileDTO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.chargingPile.api.dto;
+
+import com.ruoyi.chargingPile.api.model.TApplyChargingPile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "TApplyChargingPileDTO对象",description = "申请建桩")
+public class TApplyChargingPileDTO extends TApplyChargingPile {
+
+    @ApiModelProperty(value = "验证码")
+    private String code;
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java
index 890d00c..4587086 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/ChargingGunCountVO.java
@@ -14,4 +14,10 @@
     @ApiModelProperty(value = "充电枪总数数量")
     private Integer totalCount;
 
+    public ChargingGunCountVO(Integer freeCount, Integer totalCount) {
+        this.freeCount = freeCount;
+        this.totalCount = totalCount;
+    }
+    public ChargingGunCountVO() {
+    }
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java
index 8edc9bd..994525c 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteDetailVO.java
@@ -9,6 +9,8 @@
 @ApiModel(value = "SiteDetailVO对象",description = "站点详情VO")
 public class SiteDetailVO extends Site {
 
+    @ApiModelProperty(value = "合作商名称")
+    private String partnerName;
     @ApiModelProperty(value = "绑定车牌提示文案")
     private String bindCarTips;
     @ApiModelProperty(value = "距离")
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
new file mode 100644
index 0000000..cd5fa43
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
@@ -0,0 +1,40 @@
+package com.ruoyi.integration.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
+import com.ruoyi.integration.api.model.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 充电桩服务降级处理
+ * 
+ * @author ruoyi
+ */
+@Component
+public class UploadRealTimeMonitoringDataFallbackFactory implements FallbackFactory<UploadRealTimeMonitoringDataClient>
+{
+    private static final Logger log = LoggerFactory.getLogger(UploadRealTimeMonitoringDataFallbackFactory.class);
+
+    @Override
+    public UploadRealTimeMonitoringDataClient create(Throwable throwable) {
+        log.error("调用充电桩实时监测数据失败:{}", throwable.getMessage());
+        return new UploadRealTimeMonitoringDataClient() {
+    
+    
+            @Override
+            public R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId) {
+                return R.fail("查询充电桩实时监测数据失败:" + throwable.getMessage());
+            }
+    
+            @Override
+            public R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(String code) {
+                return R.fail("根据订单编号获取所有监测数据失败:" + throwable.getMessage());
+            }
+        };
+    }
+}
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
new file mode 100644
index 0000000..d6da53d
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
@@ -0,0 +1,35 @@
+package com.ruoyi.integration.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/26 18:20
+ */
+@FeignClient(contextId = "UploadRealTimeMonitoringDataClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = UploadRealTimeMonitoringDataFallbackFactory.class)
+public interface UploadRealTimeMonitoringDataClient {
+	
+	/**
+	 * 通过订单编号获取充电桩实时监测数据
+	 * @param orderId
+	 * @return
+	 */
+	@PostMapping("/uploadRealTimeMonitoringData/getOrderInfoByCode")
+	R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId);
+	
+	/**
+	 * 根据订单编号获取所有监测数据
+	 * @param code
+	 * @return
+	 */
+	@PostMapping("/uploadRealTimeMonitoringData/getDataByOrderCode")
+	R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(@RequestParam("code") String code);
+}
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 1439583..92f30c5 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "acquisition_billing_mode") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class AcquisitionBillingMode {
+public class AcquisitionBillingMode extends BaseModel {
 
     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 046b0ae..acbcabd 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "acquisition_billing_mode_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class AcquisitionBillingModeReply {
+public class AcquisitionBillingModeReply extends BaseModel {
 
     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/BaseModel.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BaseModel.java
new file mode 100644
index 0000000..3ec6eb0
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BaseModel.java
@@ -0,0 +1,15 @@
+package com.ruoyi.integration.api.model;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/26 19:05
+ */
+@Data
+public class BaseModel {
+	
+	private Date create_time = new Date();
+}
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 64b066d..27ab720 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "billing_mode_verify") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class BillingModeVerify {
+public class BillingModeVerify extends BaseModel {
 
     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 e9b55cf..f2bba91 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "billing_mode_verify_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class BillingModeVerifyReply {
+public class BillingModeVerifyReply extends BaseModel {
 
     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/BmsAbort.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsAbort.java
index 8d55a62..8679a4d 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "bms_abort") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class BmsAbort {
+public class BmsAbort extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsDemandAndChargerExportation.java
index d9d2b83..dc5de41 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "bms_demand_and_charger_exportation") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class BmsDemandAndChargerExportation {
+public class BmsDemandAndChargerExportation extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BmsInformation.java
index be5c578..14e6893 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "bms_information") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class BmsInformation {
+public class BmsInformation extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingHandshake.java
index 3b6b65a..872cc2e 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "charging_handshake") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ChargingHandshake {
+public class ChargingHandshake extends BaseModel {
 
     private String transaction_serial_number;// 交易流水号
     private String charging_pile_code;// 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileReturnsGroundLockData.java
index 9a4991b..c5567c2 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "charging_pile_returns_ground_lock_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ChargingPileReturnsGroundLockData {
+public class ChargingPileReturnsGroundLockData extends BaseModel {
 
     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/ChargingPileStartsCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingPileStartsCharging.java
index 8d49fdf..06c1d89 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "charging_pile_starts_charging") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ChargingPileStartsCharging {
+public class ChargingPileStartsCharging extends BaseModel {
 
     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/ClearOfflineCard.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ClearOfflineCard.java
index fab03db..8b16c12 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "clear_offline_card") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ClearOfflineCard {
+public class ClearOfflineCard extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private Integer physical_card_number; // 清除离线卡的个数,最大 24 个
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 85675a0..a49b1bf 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "clear_offline_card_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ClearOfflineCardReply {
+public class ClearOfflineCardReply extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号
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 3466ec6..d4c4b71 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "confirm_transaction_record") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ConfirmTransactionRecord {
+public class ConfirmTransactionRecord extends BaseModel {
 
     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 53700e2..50749a7 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "end_charge") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class EndCharge {
+public class EndCharge extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ErrorMessage.java
index 121916d..3c8c178 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "error_message") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ErrorMessage {
+public class ErrorMessage extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/GroundLockRealTimeData.java
index b34e3ad..bad55cf 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "ground_lock_real_time_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class GroundLockRealTimeData {
+public class GroundLockRealTimeData extends BaseModel {
 
     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/MotorAbort.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/MotorAbort.java
index 6dc6a21..4c883ec 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "motor_abort") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class MotorAbort {
+public class MotorAbort extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Online.java
index a1c6714..f899c04 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "online") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class Online {
+public class Online extends BaseModel {
     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 f7ba285..7c90bba 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "online_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class OnlineReply {
+public class OnlineReply extends BaseModel {
     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 0817b90..c88e665 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "open_or_close_ground_lock") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class OpenOrCloseGroundLock {
+public class OpenOrCloseGroundLock extends BaseModel {
 
     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/ParameterSetting.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ParameterSetting.java
index 2f000bc..e821f97 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "parameter_setting") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ParameterSetting {
+public class ParameterSetting extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Ping.java
index aa15ab4..d9c4ed8 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "ping") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class Ping {
+public class Ping extends BaseModel {
 
     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/PlatformConfirmationCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformConfirmationCharging.java
index 86f6fb4..fe0af18 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "platform_confirmation_charging") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformConfirmationCharging {
+public class PlatformConfirmationCharging extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformRemoteUpdate.java
index 5f3699b..2dde5c8 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "platform_remote_update") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformRemoteUpdate {
+public class PlatformRemoteUpdate extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private Integer charging_pile_type; // 桩型号(1:直流,2:交流)
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 1fd3a07..24e14ee 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "platform_remote_update_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformRemoteUpdateReply {
+public class PlatformRemoteUpdateReply extends BaseModel {
 
     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 fe9e689..a910e2f 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "platform_restart") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformRestart {
+public class PlatformRestart extends BaseModel {
 
     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 090301b..fba4349 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "platform_restart_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformRestartReply {
+public class PlatformRestartReply extends BaseModel {
 
     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 44faec9..5edb4de 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "platform_start_charging") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformStartCharging {
+public class PlatformStartCharging extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
index 98b2023..6647071 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStartChargingReply.java
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "platform_start_charging_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformStartChargingReply {
+public class PlatformStartChargingReply extends BaseModel {
 
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PlatformStopCharging.java
index ef78114..4a9cd1e 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "platform_stop_charging") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformStopCharging {
+public class PlatformStopCharging extends BaseModel {
 
     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 c86f4b4..1c3d8ba 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "platform_stop_charging_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class PlatformStopChargingReply {
+public class PlatformStopChargingReply extends BaseModel {
 
     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/Pong.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/Pong.java
index 565a7a6..fe4c9a6 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "pong") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class Pong {
+public class Pong extends BaseModel {
 
     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/QueryOfflineCard.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/QueryOfflineCard.java
index b548e9c..1d211aa 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "query_offline_card") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class QueryOfflineCard {
+public class QueryOfflineCard extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private Integer physical_card_number; //桩编码
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 23fd320..12cf45d 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "query_offline_card_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class QueryOfflineCardReply {
+public class QueryOfflineCardReply extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private String physical_card1; // 第 1 个卡物理卡号,离线卡物理卡号
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 ef60cb1..669e9fe 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "read_real_time_monitoring_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class ReadRealTimeMonitoringData {
+public class ReadRealTimeMonitoringData extends BaseModel {
 
     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 7985365..ebf8945 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "setup_billing_model") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class SetupBillingModel {
+public class SetupBillingModel extends BaseModel {
 
     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/SetupBillingModelReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/SetupBillingModelReply.java
index 739d3a2..9373261 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "setup_billing_model_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class SetupBillingModelReply {
+public class SetupBillingModelReply extends BaseModel {
 
     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 642046d..42b74f6 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "synchronize_offline_card") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class SynchronizeOfflineCard {
+public class SynchronizeOfflineCard extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private Integer card_number; // 下发卡个数
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 ff59a77..c2fb969 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "synchronize_offline_card_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class SynchronizeOfflineCardReply {
+public class SynchronizeOfflineCardReply extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private Integer save_result; // 保存结果(0:失败,1:成功)
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 84ec799..c9a2626 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "timing_setting") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class TimingSetting {
+public class TimingSetting extends BaseModel {
 
     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 0880c9c..3748990 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "timing_setting_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class TimingSettingReply {
+public class TimingSettingReply extends BaseModel {
 
     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 7359108..0906efb 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "transaction_record") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class TransactionRecord {
+public class TransactionRecord extends BaseModel {
 
     private String transaction_serial_number;// 交易流水号
     private String charging_pile_code;// 桩编码
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalance.java
index 97e243d..dd901dc 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "update_balance") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class UpdateBalance {
+public class UpdateBalance extends BaseModel {
 
     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/UpdateBalanceReply.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UpdateBalanceReply.java
index bc2db26..7cfe110 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
@@ -13,7 +13,7 @@
 @Data
 @Document(collection = "update_balance_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class UpdateBalanceReply {
+public class UpdateBalanceReply extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private String physical_card_number; //物理卡号
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 7b3552f..b131c91 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
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -13,8 +14,9 @@
 @Data
 @Document(collection = "upload_real_time_monitoring_data") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class UploadRealTimeMonitoringData {
+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 367419d..7e53a90 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "working_parameter_setting") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class WorkingParameterSetting {
+public class WorkingParameterSetting extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private Integer allow_work;// 是否允许工作(0:表示允许正常工作,1:表示停止使用,锁定充电桩)
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 bc55ffd..858cc3b 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
@@ -11,7 +11,7 @@
 @Data
 @Document(collection = "working_parameter_setting_reply") //指定要对应的文档名(表名)
 @Accessors(chain = true)
-public class WorkingParameterSettingReply {
+public class WorkingParameterSettingReply extends BaseModel {
 
     private String charging_pile_code; //桩编码
     private Integer set_result; //设置结果(0:失败,1:成功)
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index c064657..1dff966 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1 +1,2 @@
-com.ruoyi.integration.api.factory.IntegrationFallbackFactory
\ No newline at end of file
+com.ruoyi.integration.api.factory.IntegrationFallbackFactory
+com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SiteDetailEvaluateVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SiteDetailEvaluateVO.java
index 75770da..ecaa2a8 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SiteDetailEvaluateVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SiteDetailEvaluateVO.java
@@ -5,12 +5,13 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.List;
 
 @Data
 @ApiModel(value = "SiteDetailEvaluateVO对象",description = "站点详情订单评价")
-public class SiteDetailEvaluateVO extends TOrderEvaluate {
+public class SiteDetailEvaluateVO implements Serializable {
 
     @ApiModelProperty(value = "好评率")
     private BigDecimal reviewRate;
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
index bac3898..588cd20 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
@@ -35,7 +35,7 @@
 		loginLog.setUserId(userId);
 		loginLog.setUsername(username);
 		loginLog.setIpAddress(headerData.get("ip"));
-		loginLog.setAddress("");// todo 待完善  https://www.juhe.cn/docs/api/id/1
+		loginLog.setAddress("");
 		loginLog.setBrowserType(headerData.get("browser"));
 		loginLog.setOperatingSystem(headerData.get("os"));
 		loginLog.setLoginTime(LocalDateTime.now());
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
index 3a06693..ca886c7 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
@@ -128,9 +128,13 @@
     public static final String DATE_FORMATTER_TIME = "yyyy-MM-dd HH:mm:ss";
     public static final String DATE_FORMATTER_DATE = "yyyy-MM-dd";
     /**
-     * 后缀
+     * 修改手机号后缀
      */
-    public static final String APPLET = "_applet";
+    public static final String UPDATE_PHONE = "_updatePhone";
+    /**
+     * 申请建桩后缀
+     */
+    public static final String APPLY_CHARGING = "_applyCharging";
     /**
      * 定时任务违规的字符
      */
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java
index 4a04905..17019d1 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java
@@ -11,6 +11,8 @@
     public static final String SEND_URL = "http://112.35.1.155:1992/sms/tmpsubmit";
     /** 更换手机号短信验证码 TEMPLATE_ID */
     public static final String CODE_TEMPLATE_ID = "5bf3949463e54c03a25c6fce3ad48139";
+    /** 建桩申请短信验证码 TEMPLATE_ID */
+    public static final String APPLY_TEMPLATE_ID = "44ac24b86a9f4dd6bee41577e2703472";
 
     /** 停车占位提醒 TEMPLATE_ID */
     public static final String STOP_TEMPLATE_ID = "4940ce98a3f94f67aa9f5cd2d4e05cbd";
@@ -22,6 +24,8 @@
     public static final String FAULT_TEMPLATE_ID = "37956469a14a47e484a747a1e7e462de";
     /** 更换手机号短信验证码 AP_ID */
     public static final String CODE_AP_ID = "GH123";
+    /** 建桩短信验证码 AP_ID */
+    public static final String APPLY_AP_ID = "JZ123";
 
     /** 停车占位提醒 AP_ID */
     public static final String STOP_AP_ID = "TC123";
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
index 54eb150..14c12e1 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
@@ -49,6 +49,40 @@
         return encode;
     }
 
+    /**
+     * 更换手机号:【签名】验证码:XXX,用于更换手机号。请勿转发。
+     * @param phone 手机号
+     * @param code 验证码
+     * @return
+     */
+    public static String applyCodeMsg(String phone,String code){
+        SubmitTempletReq submitReq = new SubmitTempletReq();
+        String[] paramss = {code};
+        submitReq.setApId(MsgConstants.APPLY_AP_ID);
+        submitReq.setEcName(ecName);
+        submitReq.setSecretKey(secretKey);
+        submitReq.setParams(JSON.toJSONString(paramss));
+        submitReq.setMobiles(phone);
+        submitReq.setAddSerial("");
+        submitReq.setSign(sign);
+        submitReq.setTemplateId(MsgConstants.APPLY_TEMPLATE_ID);
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(submitReq.getEcName());
+        stringBuffer.append(submitReq.getApId());
+        stringBuffer.append(submitReq.getSecretKey());
+        stringBuffer.append(submitReq.getTemplateId());
+        stringBuffer.append(submitReq.getMobiles());
+        stringBuffer.append(submitReq.getParams());
+        stringBuffer.append(submitReq.getSign());
+        stringBuffer.append(submitReq.getAddSerial());
+        submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+        String reqText = JSON.toJSONString(submitReq);
+        //加密
+        String encode = Base64.encodeBase64String(reqText.getBytes());
+        System.err.println(encode);
+        return encode;
+    }
+
 
     /**
      * 停车占位提醒:车辆已在3小时前完成充电,请及时取车,避免长时间占用充电资源。
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
index 5fa9ce9..6288f56 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -38,6 +38,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -200,6 +201,13 @@
         return R.ok(tAppCouponService.pagelist(couponId));
     }
 
+    @ApiOperation(value = "优惠卷可用数量", tags = {"小程序-站点管理-站点详情"})
+    @GetMapping(value = "/couponCount")
+    public R<Long> couponCount() {
+        LocalDateTime now = LocalDateTime.now();
+        return R.ok(tAppCouponService.lambdaQuery().le(TAppCoupon::getStartTime, now).ge(TAppCoupon::getEndTime, now).eq(TAppCoupon::getStatus, 1).count());
+    }
+
     @Autowired
     private TAppUserTagService appUserTagService;
     @Autowired
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index ff010e9..776fb34 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -523,6 +523,7 @@
             tAppUserCar.setUid(tAppUserCar.getId().toString());
         }
         appUserInfoDto.setUserCars(list);
+        appUserInfoDto.setFirstAdd(byId.getFirstAdd()!=null?byId.getFirstAdd():0);
         return R.ok(appUserInfoDto);
 
 
@@ -550,7 +551,8 @@
 
     }
 
-    @ApiOperation(value = "优惠卷列表不分页(1可使用2不可用)", tags = {"小程序-个人中心"})
+
+    @ApiOperation(value = "优惠卷详情(1可使用2不可用)", tags = {"小程序-个人中心"})
     @PostMapping(value = "/user/coupon/getById")
     public R<TAppCoupon> couponGetById(@RequestParam("id")Long id) {
         TAppCoupon appCoupon = appCouponService.getById(id);
@@ -614,7 +616,7 @@
     @ApiOperation(value = "更换手机号", tags = {"小程序-用户管理-更换手机号"})
     @PostMapping(value = "/user/updatePhone")
     public AjaxResult<String> updatePhone(@Validated @RequestBody UpdatePhoneDTO dto) {
-        String code = redisService.getCacheObject(dto.getPhone() + Constants.APPLET);
+        String code = redisService.getCacheObject(dto.getPhone() + Constants.UPDATE_PHONE);
         if(StringUtils.isEmpty(code)){
             return AjaxResult.error("验证码已过期,请重新获取验证码!");
         }
@@ -820,6 +822,7 @@
             //增加积分记录
             pointDetailUtil.addDetail(byId.getPoints(),byId.getPoints()+point,5,userId,appUserCar.getLicensePlate(),"");
             byId.setPoints(byId.getPoints()+point);
+            byId.setFirstAdd(1);
             appUserService.updateById(byId);
 
 
@@ -853,7 +856,7 @@
 
     }
 
-    @ApiOperation(value = "根据品牌获取车型", tags = {"小程序-个人中心-车辆"})
+    @ApiOperation(value = "根据品牌获取车系", tags = {"小程序-个人中心-车辆"})
     @GetMapping(value = "/user/car/getModel")
     public R getModel(String id) throws Exception {
         String modelById = CarBrandUtil.getModelById(id);
@@ -867,5 +870,20 @@
         }
         return R.ok(backList);
     }
+    @ApiOperation(value = "根据车系获取车型", tags = {"小程序-个人中心-车辆"})
+    @GetMapping(value = "/user/car/getSeries")
+    public R getSeries(String id) throws Exception {
+        String modelById = CarBrandUtil.getSeriesById(id);
+        JSONObject jsonObject = JSON.parseObject(modelById);
+        JSONArray data = jsonObject.getJSONArray("data");
+        JSONArray backList = new JSONArray();
+        for (Object datum : data) {
+            JSONObject jsonObject1 = JSON.parseObject(datum.toString());
+            JSONArray list = jsonObject1.getJSONArray("list");
+            backList.addAll(list);
+        }
+        return R.ok(backList);
+
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/CarBrandUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/CarBrandUtil.java
index 350cca0..568c5c6 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/CarBrandUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/CarBrandUtil.java
@@ -117,4 +117,59 @@
         }
         return "";
     }
+
+
+
+    public static   String getSeriesById(String brandId) throws Exception {
+        // Create a new request.
+        Request httpClientRequest = new Request();
+        try {
+            // Set the request parameters.
+            // AppKey, AppSecrect, Method and Url are required parameters.
+            // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables.
+            // In this example, the AK/SK are stored in environment variables for identity authentication.
+            // Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK.
+            httpClientRequest.setKey("9a4a2b69afe141718f6843c5d39961ec");
+            httpClientRequest.setSecret("541845f206324bbc933065b44fc98c47");
+            httpClientRequest.setMethod("POST");
+            // Set a request URL in the format of https://{Endpoint}/{URI}.
+            httpClientRequest.setUrl("https://vehiclequery.apistore.huaweicloud.com/vehicle/query/model");
+            httpClientRequest.addHeader("Content-Type", "text/plain");
+            httpClientRequest.addQueryStringParam("seriesId",brandId);
+            // Set a body for http request.
+//            httpClientRequest.setBody("put your request body here");
+        } catch (Exception e) {
+//            LOGGER.error(e.getMessage());
+            return "";
+        }
+        CloseableHttpClient client = null;
+        try {
+            // Sign the request.
+            HttpRequestBase signedRequest = Client.sign(httpClientRequest, Constant.SIGNATURE_ALGORITHM_SDK_HMAC_SHA256);
+            if (Constant.DO_VERIFY) {
+                // creat httpClient and verify ssl certificate
+                HostName.setUrlHostName(httpClientRequest.getHost());
+                client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClientWithVerify(Constant.INTERNATIONAL_PROTOCOL);
+            } else {
+                // creat httpClient and do not verify ssl certificate
+                client = (CloseableHttpClient) SSLCipherSuiteUtil.createHttpClient(Constant.INTERNATIONAL_PROTOCOL);
+            }
+            HttpResponse response = client.execute(signedRequest);
+            // Print the body of the response.
+            HttpEntity resEntity = response.getEntity();
+            if (resEntity != null) {
+//                LOGGER.info("Processing Body with name: {} and value: {}", System.getProperty("line.separator"),
+//                        EntityUtils.toString(resEntity, "UTF-8"));
+                String string = EntityUtils.toString(resEntity, "UTF-8");
+                return string;
+            }
+        } catch (Exception e) {
+            LOGGER.error(e.getMessage());
+        } finally {
+            if (client != null) {
+                client.close();
+            }
+        }
+        return "";
+    }
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/SSLCipherSuiteUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/SSLCipherSuiteUtil.java
index 2fe11fb..367075c 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/SSLCipherSuiteUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/carBrand/SSLCipherSuiteUtil.java
@@ -14,7 +14,7 @@
 import org.openeuler.BGMProvider;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import okhttp3.OkHttpClient;
+import shade.okhttp3.OkHttpClient;
 
 import javax.net.ssl.*;
 import java.net.HttpURLConnection;
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml
index 2823142..7942bc2 100644
--- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/TAppCouponMapper.xml
@@ -71,10 +71,10 @@
             t1.del_flag = 0
           AND t1.app_user_id = #{userId}
           AND t1.status = 1
-        and t1.endTime &gt;= now()
+        and t1.end_time &gt;= now()
         GROUP BY
-            t1.coupon_id,
-            t1.end_time
+            t1.app_user_id,
+        t1.coupon_id
     </select>
 
 </mapper>
diff --git a/ruoyi-service/ruoyi-chargingPile/pom.xml b/ruoyi-service/ruoyi-chargingPile/pom.xml
index 75191c3..40a8298 100644
--- a/ruoyi-service/ruoyi-chargingPile/pom.xml
+++ b/ruoyi-service/ruoyi-chargingPile/pom.xml
@@ -131,6 +131,10 @@
 		    <groupId>com.ruoyi</groupId>
 		    <artifactId>ruoyi-api-order</artifactId>
 	    </dependency>
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-integration</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>com.alibaba</groupId>
@@ -138,7 +142,17 @@
             <version>3.3.0</version>
             <type>pom</type>
         </dependency>
-
+        <!--二维码-->
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.3.0</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java
index 14b8403..8a7e076 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java
@@ -10,14 +10,19 @@
 import com.ruoyi.common.core.utils.MsgUtil;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.redis.service.RedisService;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
+@RestController
+@RequestMapping("/code")
 public class CodeController {
 
     @Autowired
@@ -34,7 +39,7 @@
      * @return 结果
      */
     @ApiOperation(value = "获取验证码",notes = "获取验证码",tags = {"更换手机号获取验证码"})
-    @GetMapping("getCode")
+    @GetMapping("/getCode")
     public AjaxResult getCode(@RequestParam("phone") String phone)
     {
         TAppUser appUser = appUserClient.selectByPhone(phone).getData();
@@ -42,7 +47,7 @@
             return AjaxResult.error("该手机号已绑定账号");
         }
         String code = MsgUtil.createCode();
-        redisService.setCacheObject(phone+ Constants.APPLET,code,5L, TimeUnit.MINUTES);
+        redisService.setCacheObject(phone+ Constants.UPDATE_PHONE,code,5L, TimeUnit.MINUTES);
         String reqStr = MsgUtil.codeMsg(phone, code);
         String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr);
         // 记录短信发送
@@ -50,4 +55,23 @@
         return AjaxResult.success(result);
     }
 
+    /**
+     * 获取验证码
+     *
+     * @param phone 手机号
+     * @return 结果
+     */
+    @ApiOperation(value = "获取验证码",notes = "获取验证码",tags = {"申请建桩获取验证码"})
+    @GetMapping("/getApplyCode")
+    public AjaxResult getApplyCode(@RequestParam("phone") String phone)
+    {
+        String code = MsgUtil.createCode();
+        redisService.setCacheObject(phone+ Constants.APPLY_CHARGING,code,5L, TimeUnit.MINUTES);
+        String reqStr = MsgUtil.applyCodeMsg(phone, code);
+        String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr);
+        // 记录短信发送
+        chargingPileNotificationService.saveData(1,null,null,phone,"验证码:"+code+",用于申请建桩。请勿转发。");
+        return AjaxResult.success(result);
+    }
+
 }
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 c0352fe..e073766 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
@@ -138,6 +138,11 @@
 	@PostMapping("/getDetailById")
 	public AjaxResult<SiteDetailVO> getDetailById(@Validated @RequestBody SiteDetailQuery query){
 		SiteDetailVO siteDetailVO = siteService.getDetailById(query.getSiteId());
+		// 查询合作商名称
+		Partner partner = partnerService.getById(siteDetailVO.getPartnerId());
+		if(Objects.nonNull(partner)){
+			siteDetailVO.setPartnerName(partner.getName());
+		}
 		// 计算距离
 		Map<String, Double> distance = GeodesyUtil.getDistance(query.getLat() + "," + query.getLon(), siteDetailVO.getLat() + "," + siteDetailVO.getLon());
 		siteDetailVO.setDistance(distance.get("WGS84"));
@@ -153,7 +158,7 @@
 	@ApiOperation(value = "获取站点下充电桩及充电枪列表", tags = {"小程序-站点管理-站点详情"})
 	@GetMapping("/getChargingGunList")
 	public AjaxResult<List<TChargingPileVO>> getChargingGunList(@RequestParam(value = "siteId")@ApiParam(value = "站点id", required = true)Integer siteId,
-																@RequestParam(value = "siteId",required = false)@ApiParam(value = "类型 1=超充,2=快充,3=慢充")Integer type){
+																@RequestParam(value = "type",required = false)@ApiParam(value = "类型 1=超充,2=快充,3=慢充")Integer type){
 		return AjaxResult.success(chargingPileService.getChargingGunList(siteId,type));
 	}
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
index e60d631..ffc0dfa 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -2,9 +2,11 @@
 
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
 import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
+import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyService;
 import com.ruoyi.common.core.exception.ServiceException;
@@ -17,8 +19,6 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.time.LocalTime;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -35,11 +35,13 @@
 @RequestMapping("/t-accounting-strategy-detail")
 public class TAccountingStrategyDetailController {
 
+    private final ISiteService siteService;
     private final TAccountingStrategyService accountingStrategyService;
     private final TAccountingStrategyDetailService accountingStrategyDetailService;
 
     @Autowired
-    public TAccountingStrategyDetailController(TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
+    public TAccountingStrategyDetailController(ISiteService siteService, TAccountingStrategyService accountingStrategyService, TAccountingStrategyDetailService accountingStrategyDetailService) {
+        this.siteService = siteService;
         this.accountingStrategyService = accountingStrategyService;
         this.accountingStrategyDetailService = accountingStrategyDetailService;
     }
@@ -50,9 +52,8 @@
     @ApiOperation(tags = {"小程序-站点管理-站点详情"},value = "通过站点id查询计费策略明细列表")
     @GetMapping(value = "/queryAccountingStrategyDetailBySiteId")
     public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailBySiteId(@RequestParam("siteId") Integer siteId) {
-        TAccountingStrategy accountingStrategy = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class)
-                .eq(TAccountingStrategy::getSiteId, siteId)
-                .last("limit 1"));
+        Site site = siteService.getById(siteId);
+        TAccountingStrategy accountingStrategy = accountingStrategyService.getById(site.getAccountingStrategyId());
         if(Objects.isNull(accountingStrategy)){
             throw new ServiceException("未查询到计费策略");
         }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
index 376534d..8e85f92 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java
@@ -11,15 +11,18 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.chargingPile.api.dto.ApplyChargingQuery;
 import com.ruoyi.chargingPile.api.dto.ApplyChargingRemarkDto;
+import com.ruoyi.chargingPile.api.dto.TApplyChargingPileDTO;
 import com.ruoyi.chargingPile.api.model.TApplyChargingPile;
 import com.ruoyi.chargingPile.dto.TApplyChargingPileExportDto;
 import com.ruoyi.chargingPile.service.TApplyChargingPileService;
 import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.log.enums.OperatorType;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.service.TokenService;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.codec.CharEncoding;
@@ -51,11 +54,13 @@
 
     private final TApplyChargingPileService applyChargingPileService;
     private final TokenService tokenService;
+    private final RedisService redisService;
 
     @Autowired
-    public TApplyChargingPileController(TApplyChargingPileService applyChargingPileService, TokenService tokenService) {
+    public TApplyChargingPileController(TApplyChargingPileService applyChargingPileService, TokenService tokenService, RedisService redisService) {
         this.applyChargingPileService = applyChargingPileService;
         this.tokenService = tokenService;
+        this.redisService = redisService;
     }
 
     /**
@@ -64,7 +69,15 @@
     @Log(title = "建桩申请", businessType = BusinessType.INSERT,operatorType = OperatorType.MOBILE)
     @ApiOperation(tags = {"小程序-建桩申请"},value = "建桩申请")
     @PostMapping(value = "/add")
-    public AjaxResult<Boolean> add(@RequestBody TApplyChargingPile dto) {
+    public AjaxResult<Boolean> add(@RequestBody TApplyChargingPileDTO dto) {
+        // 验证验证码
+        String code = redisService.getCacheObject(dto.getLandlordPhone() + Constants.APPLY_CHARGING);
+        if(StringUtils.isEmpty(code)){
+            return AjaxResult.error("验证码已过期,请重新获取验证码!");
+        }
+        if(!code.equals(dto.getCode())){
+            return AjaxResult.error("验证码错误!");
+        }
         // 用户id
         Long userId = tokenService.getLoginUserApplet().getUserId();
         dto.setAppUserId(userId);
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 334d16f..4120f07 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
@@ -1,6 +1,8 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import cn.hutool.core.img.ImgUtil;
+import cn.hutool.core.io.FileUtil;
 import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
@@ -8,6 +10,7 @@
 import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
 import com.ruoyi.chargingPile.service.TChargingGunService;
 import com.ruoyi.chargingPile.service.TChargingPileService;
+import com.ruoyi.chargingPile.util.QRCodeUtils;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.domain.BaseDelete;
@@ -21,7 +24,14 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.PrintWriter;
+import java.net.URLEncoder;
 import java.util.Arrays;
 import java.util.List;
 
@@ -125,7 +135,27 @@
     @ApiOperation(tags = {"管理后台-充电桩信息"},value = "下载二维码")
     @GetMapping(value = "/downloadQRCode/{id}")
     public void downloadQRCode(@PathVariable Integer id, HttpServletResponse response){
-        // todo 待完善
+        try {
+            TChargingGun chargingGun = chargingGunService.getById(id);
+            String fileName = URLEncoder.encode(chargingGun.getCode(), "UTF-8") + ".jpg";
+            response.setContentType("application/force-download");
+            response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
+            String url = "https://www.baidu.com?id=" + id;
+            String filePath = "D:/Program Files/nginx-1.20.2/html";
+            QRCodeUtils.encode(url, filePath);
+            FileInputStream inputStream = new FileInputStream(filePath);
+            ServletOutputStream out = response.getOutputStream();
+            int len = 0;
+            byte[] buf = new byte[1024];
+            while ((len = inputStream.read(buf, 0, 1024)) != -1) {
+                out.write(buf);
+            }
+            out.flush();
+            out.close();
+            inputStream.close();
+        }catch (Exception e){
+            e.printStackTrace();
+        }
     }
     
     
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
index 0857bc3..b5de0af 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -65,7 +65,7 @@
      * 查询充电桩列表
      */
     @ApiOperation(tags = {"小程序-充电桩"},value = "通过站点id查询充电桩列表")
-    @PostMapping(value = "/list")
+    @GetMapping(value = "/list")
     @ApiImplicitParams({
 		    @ApiImplicitParam(name = "siteId", value = "站点id")
     })
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 fbfb178..785ad38 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
@@ -82,12 +82,17 @@
             accountingStrategyDetailVO.setEndTime("23:59:59".equals(accountingStrategyDetailVO.getEndTime())? "00:00":accountingStrategyDetailVO.getEndTime());
             accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0)
                     .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细"));
-            if(Objects.nonNull(vip) && vip.getType() == 2){
-                accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(vip.getDiscount()));
-                accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(vip.getDiscount()));
+            if(Objects.nonNull(vip)) {
+                if (vip.getType() == 2) {
+                    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()));
+                }
             }else {
-                accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(accountingStrategy.getDiscount()));
-                accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(accountingStrategy.getDiscount()));
+                accountingStrategyDetailVO.setTotalPrice(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()));
+                accountingStrategyDetailNext.setTotalPrice(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()));
             }
             list = new ArrayList<>();
             list.add(accountingStrategyDetailVO);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
index e88f663..ac10f19 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.chargingPile.api.dto.TChargingGunDTO;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.chargingPile.api.query.TChargingGunQuery;
 import com.ruoyi.chargingPile.api.vo.ChargingGunCountVO;
 import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
@@ -13,6 +14,7 @@
 import com.ruoyi.chargingPile.mapper.TChargingGunMapper;
 import com.ruoyi.chargingPile.service.IPartnerService;
 import com.ruoyi.chargingPile.service.TChargingGunService;
+import com.ruoyi.chargingPile.service.TChargingPileService;
 import com.ruoyi.common.core.enums.status.ChargingGunModeEnum;
 import com.ruoyi.common.core.enums.status.ChargingGunStatusEnum;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -23,7 +25,9 @@
 import com.ruoyi.other.api.feignClient.UserSiteClient;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.util.Arrays;
@@ -56,6 +60,8 @@
     
     @Resource
     private RoleSiteClient roleSiteClient;
+    @Autowired
+    private TChargingPileService chargingPileService;
 
     
     
@@ -142,8 +148,20 @@
     @Override
     public Map<String, ChargingGunCountVO> getChargingGunCount(Integer siteId) {
         Map<String, ChargingGunCountVO> map = new HashMap<>(4);
+        //查询充电桩
+        List<TChargingPile> pileList = chargingPileService.list(Wrappers.lambdaQuery(TChargingPile.class)
+                .eq(TChargingPile::getSiteId, siteId));
+        if(CollectionUtils.isEmpty(pileList)){
+            map.put("superSufficient", new ChargingGunCountVO(0,0));
+            map.put("fastSufficient", new ChargingGunCountVO(0,0));
+            map.put("slowSufficient", new ChargingGunCountVO(0,0));
+            map.put("totalSufficient", new ChargingGunCountVO(0,0));
+            return map;
+        }
+        Set<Integer> pileIds = pileList.stream().map(TChargingPile::getId).collect(Collectors.toSet());
         // 查询全部充电枪
-        List<TChargingGun> list = this.list(Wrappers.lambdaQuery(TChargingGun.class).eq(TChargingGun::getSiteId, siteId));
+        List<TChargingGun> list = this.list(Wrappers.lambdaQuery(TChargingGun.class).eq(TChargingGun::getSiteId, siteId)
+                .in(TChargingGun::getChargingPileId, pileIds));
         int freeCount = 0;
         // 超级充
         ChargingGunCountVO superSufficient = getGunCount(ChargingGunModeEnum.SUPER_SUFFICIENT.getCode(), list);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
index a6567a5..a567303 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -27,6 +27,8 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
 import com.ruoyi.order.api.model.TChargingOrder;
@@ -81,6 +83,9 @@
 	
 	@Resource
 	private AppUserCarClient appUserCarClient;
+	
+	@Resource
+	private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
 	
 	
 	
@@ -244,9 +249,12 @@
 	@Override
 	public List<TChargingPileVO> getChargingGunList(Integer siteId,Integer type) {
 		List<TChargingPileVO> chargingPileVOS = this.baseMapper.getChargingGunList(siteId);
-		List<TChargingGun> chargingGuns = chargingGunService.list(Wrappers.lambdaQuery(TChargingGun.class)
-				.eq(TChargingGun::getSiteId, siteId)
-				.eq(TChargingGun::getChargeMode, type));
+		LambdaQueryWrapper<TChargingGun> wrapper = new LambdaQueryWrapper<>();
+		if(Objects.nonNull(type)){
+			wrapper.eq(TChargingGun::getChargeMode, type);
+		}
+		wrapper.eq(TChargingGun::getSiteId, siteId);
+		List<TChargingGun> chargingGuns = chargingGunService.list(wrapper);
 		// 查询充电枪信息
 		chargingPileVOS.forEach(item -> {
 			item.setChargingGunList(chargingGuns.stream().filter(gun -> gun.getChargingPileId().equals(item.getId())).collect(Collectors.toList()));
@@ -401,7 +409,7 @@
 		}else{
 			siteIds.add(query.getSiteId());
 		}
-		// todo 待完善
+		
 		if(null != query.getStatus() && 0 < query.getStatus().size()){
 			if(query.getStatus().contains(3)){
 				query.getStatus().add(6);
@@ -424,7 +432,57 @@
 					TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(appUserCarId)).getData().get(0);
 					gunMonitoring.setLicensePlate(tAppUserCar.getLicensePlate());
 				}
+				
+				UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData();
+				gunMonitoring.setChargingRatio(BigDecimal.valueOf(data.getSoc()));
+				gunMonitoring.setElectricQuantity(data.getCharging_degree().toString());
+				gunMonitoring.setSoc(data.getSoc().toString());
+				gunMonitoring.setElectricCurrent(data.getOutput_current().toString());
+				gunMonitoring.setVoltage(data.getOutput_voltage().toString());
+				switch (data.getHardware_fault()){
+					case 1:
+						gunMonitoring.setFaultCause("急停按钮动作故障");
+						break;
+					case 2:
+						gunMonitoring.setFaultCause("无可用整流模块");
+						break;
+					case 3:
+						gunMonitoring.setFaultCause("出风口温度过高");
+						break;
+					case 4:
+						gunMonitoring.setFaultCause("交流防雷故障");
+						break;
+					case 5:
+						gunMonitoring.setFaultCause("交直流模块 DC20 通信中断");
+						break;
+					case 6:
+						gunMonitoring.setFaultCause("绝缘检测模块 FC08 通信中断");
+						break;
+					case 7:
+						gunMonitoring.setFaultCause("电度表通信中断");
+						break;
+					case 8:
+						gunMonitoring.setFaultCause("读卡器通信中断");
+						break;
+					case 9:
+						gunMonitoring.setFaultCause("RC10 通信中断");
+						break;
+					case 10:
+						gunMonitoring.setFaultCause("风扇调速板故障");
+						break;
+					case 11:
+						gunMonitoring.setFaultCause("直流熔断器故障");
+						break;
+					case 12:
+						gunMonitoring.setFaultCause("高压接触器故障");
+						break;
+					case 13:
+						gunMonitoring.setFaultCause("门打开");
+						break;
+				}
 			}
+			
+			
 		}
 		return pageInfo.setRecords(chargingGunMonitoring);
 	}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/QRCodeUtils.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/QRCodeUtils.java
new file mode 100644
index 0000000..e13aa76
--- /dev/null
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/util/QRCodeUtils.java
@@ -0,0 +1,267 @@
+package com.ruoyi.chargingPile.util;
+
+import com.google.zxing.*;
+import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.common.HybridBinarizer;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.geom.RoundRectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.OutputStream;
+import java.util.Hashtable;
+import java.util.Random;
+
+/**
+ * 二维码工具类
+ */
+public class QRCodeUtils {
+
+    private static Logger logger = LoggerFactory.getLogger(QRCodeUtils.class);
+
+    private static final String CHARSET = "utf-8";
+    private static final String FORMAT_NAME = "JPG";
+    // 二维码尺寸
+    private static final int QRCODE_SIZE = 300;
+    // LOGO宽度
+    private static final int WIDTH = 60;
+    // LOGO高度
+    private static final int HEIGHT = 60;
+
+    private static BufferedImage createImage(String content, String imgPath,
+                                             boolean needCompress) throws Exception {
+        Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
+        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+        hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
+        hints.put(EncodeHintType.MARGIN, 1);
+        BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
+                BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints);
+        int width = bitMatrix.getWidth();
+        int height = bitMatrix.getHeight();
+        BufferedImage image = new BufferedImage(width, height,
+                BufferedImage.TYPE_INT_RGB);
+        for (int x = 0; x < width; x++) {
+            for (int y = 0; y < height; y++) {
+                image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000
+                        : 0xFFFFFFFF);
+            }
+        }
+        if (imgPath == null || "".equals(imgPath)) {
+            return image;
+        }
+        // 插入图片
+        QRCodeUtils.insertImage(image, imgPath, needCompress);
+        return image;
+    }
+
+    /**
+     * 插入LOGO
+     *
+     * @param source
+     *            二维码图片
+     * @param imgPath
+     *            LOGO图片地址
+     * @param needCompress
+     *            是否压缩
+     * @throws Exception
+     */
+    private static void insertImage(BufferedImage source, String imgPath,
+                                    boolean needCompress) throws Exception {
+        File file = new File(imgPath);
+        if (!file.exists()) {
+            logger.debug(""+imgPath+"   该文件不存在!");
+            return;
+        }
+        Image src = ImageIO.read(new File(imgPath));
+        int width = src.getWidth(null);
+        int height = src.getHeight(null);
+        if (needCompress) { // 压缩LOGO
+            if (width > WIDTH) {
+                width = WIDTH;
+            }
+            if (height > HEIGHT) {
+                height = HEIGHT;
+            }
+            Image image = src.getScaledInstance(width, height,
+                    Image.SCALE_SMOOTH);
+            BufferedImage tag = new BufferedImage(width, height,
+                    BufferedImage.TYPE_INT_RGB);
+            Graphics g = tag.getGraphics();
+            g.drawImage(image, 0, 0, null); // 绘制缩小后的图
+            g.dispose();
+            src = image;
+        }
+        // 插入LOGO
+        Graphics2D graph = source.createGraphics();
+        int x = (QRCODE_SIZE - width) / 2;
+        int y = (QRCODE_SIZE - height) / 2;
+        graph.drawImage(src, x, y, width, height, null);
+        Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);
+        graph.setStroke(new BasicStroke(3f));
+        graph.draw(shape);
+        graph.dispose();
+    }
+
+    /**
+     * 生成二维码(内嵌LOGO)
+     *
+     * @param content
+     *            内容
+     * @param imgPath
+     *            LOGO地址
+     * @param destPath
+     *            存放目录
+     * @param needCompress
+     *            是否压缩LOGO
+     * @throws Exception
+     */
+    public static String encode(String content, String imgPath, String destPath,
+                                boolean needCompress) throws Exception {
+        BufferedImage image = QRCodeUtils.createImage(content, imgPath,
+                needCompress);
+        mkdirs(destPath);
+        ImageIO.write(image, FORMAT_NAME, new File(destPath));
+        return destPath;
+    }
+
+    /**
+     * 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
+     * @date 2013-12-11 上午10:16:36
+     * @param destPath 存放目录
+     */
+    public static void mkdirs(String destPath) {
+        File file =new File(destPath);
+        //当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)
+        if (!file.exists() && !file.isDirectory()) {
+            file.mkdirs();
+        }
+    }
+
+    /**
+     * 生成二维码(内嵌LOGO)
+     *
+     * @param content
+     *            内容
+     * @param imgPath
+     *            LOGO地址
+     * @param destPath
+     *            存储地址
+     * @throws Exception
+     */
+    public static void encode(String content, String imgPath, String destPath)
+            throws Exception {
+        QRCodeUtils.encode(content, imgPath, destPath, false);
+    }
+
+    /**
+     * 生成二维码
+     *
+     * @param content
+     *            内容
+     * @param destPath
+     *            存储地址
+     * @param needCompress
+     *            是否压缩LOGO
+     * @throws Exception
+     */
+    public static void encode(String content, String destPath,
+                              boolean needCompress) throws Exception {
+        QRCodeUtils.encode(content, null, destPath, needCompress);
+    }
+
+    /**
+     * 生成二维码
+     *
+     * @param content
+     *            内容
+     * @param destPath
+     *            存储地址
+     * @throws Exception
+     */
+    public static void encode(String content, String destPath) throws Exception {
+        QRCodeUtils.encode(content, null, destPath, false);
+    }
+
+    /**
+     * 生成二维码(内嵌LOGO)
+     *
+     * @param content
+     *            内容
+     * @param imgPath
+     *            LOGO地址
+     * @param output
+     *            输出流
+     * @param needCompress
+     *            是否压缩LOGO
+     * @throws Exception
+     */
+    public static void encode(String content, String imgPath,
+                              OutputStream output, boolean needCompress) throws Exception {
+        BufferedImage image = QRCodeUtils.createImage(content, imgPath,
+                needCompress);
+        ImageIO.write(image, FORMAT_NAME, output);
+    }
+
+    /**
+     * 生成二维码
+     *
+     * @param content
+     *            内容
+     * @param output
+     *            输出流
+     * @throws Exception
+     */
+    public static void encode(String content, OutputStream output)
+            throws Exception {
+        QRCodeUtils.encode(content, null, output, false);
+    }
+
+    /**
+     * 解析二维码
+     *
+     * @param file
+     *            二维码图片
+     * @return
+     * @throws Exception
+     */
+    public static String decode(File file) throws Exception {
+        BufferedImage image;
+        image = ImageIO.read(file);
+        if (image == null) {
+            return null;
+        }
+        BufferedImageLuminanceSource source = new BufferedImageLuminanceSource(
+                image);
+        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
+        Result result;
+        Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
+        hints.put(DecodeHintType.CHARACTER_SET, CHARSET);
+        result = new MultiFormatReader().decode(bitmap, hints);
+        String resultStr = result.getText();
+        return resultStr;
+    }
+
+    /**
+     * 解析二维码
+     *
+     * @param path
+     *            二维码图片地址
+     * @return
+     * @throws Exception
+     */
+    public static String decode(String path) throws Exception {
+        return QRCodeUtils.decode(new File(path));
+    }
+
+    public static void main(String[] args) throws Exception {
+        String text = "http://www.baidu.com";  //这里设置自定义网站url
+        String logoPath = "C:\\Users\\admin\\Desktop\\test\\test.jpg";
+        String destPath = "C:\\Users\\admin\\Desktop\\test\\";
+        logger.debug(QRCodeUtils.encode(text, logoPath, destPath, true));
+    }
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingOrderController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingOrderController.java
deleted file mode 100644
index ec1e822..0000000
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/ChargingOrderController.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.ruoyi.integration.controller;
-
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
-import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author xiaochen
- * @since 2024-08-07
- */
-@RestController
-@RequestMapping("/chargingOrder")
-public class ChargingOrderController {
-    @Resource
-    private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
-
-    /**
-     * 远程调用 通过订单流水号 查询订单详情
-     * @param orderId
-     * @return
-     */
-    @PostMapping(value = "/getOrderInfoByCode")
-    public R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId){
-        UploadRealTimeMonitoringData byId = uploadRealTimeMonitoringDataService.findById(orderId);
-        return R.ok(byId);
-    }
-
-}
-
-
-
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
new file mode 100644
index 0000000..7928fbe
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
@@ -0,0 +1,58 @@
+package com.ruoyi.integration.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
+import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-07
+ */
+@RestController
+@RequestMapping("/uploadRealTimeMonitoringData")
+public class UploadRealTimeMonitoringDataController {
+    @Resource
+    private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
+
+    /**
+     * 远程调用 通过订单流水号 查询订单详情
+     * @param orderId
+     * @return
+     */
+    @PostMapping(value = "/getOrderInfoByCode")
+    public R<UploadRealTimeMonitoringData> chargingOrderInfo(@RequestParam("orderId") String orderId){
+        List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(orderId);
+        if(dataByOrderCode.size() > 0){
+            UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(dataByOrderCode.size() - 1);
+            return R.ok(uploadRealTimeMonitoringData);
+        }
+        return R.ok();
+    }
+    
+    
+    /**
+     * 根据订单编号获取所有监测数据
+     * @param code
+     * @return
+     */
+    @PostMapping(value = "/getDataByOrderCode")
+    public R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(@RequestParam("code") String code){
+        List<UploadRealTimeMonitoringData> list = uploadRealTimeMonitoringDataService.getDataByOrderCode(code);
+        return R.ok(list);
+    }
+    
+}
+
+
+
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java
index ca3235c..c63f3f5 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java
@@ -4,5 +4,15 @@
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.integration.mongodb.base.BaseService;
 
+import java.util.List;
+
 public interface UploadRealTimeMonitoringDataService extends BaseService<UploadRealTimeMonitoringData> {
+	
+	/**
+	 * 根据订单号查询监控数据
+	 * @param code
+	 * @return
+	 */
+	List<UploadRealTimeMonitoringData> getDataByOrderCode(String code);
+	
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
index 6c2ef6b..adfda0b 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java
@@ -1,11 +1,15 @@
 package com.ruoyi.integration.mongodb.service.impl;
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.integration.iotda.constant.IotConstant;
 import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -31,5 +35,22 @@
     public List<UploadRealTimeMonitoringData> findAll() {
         return mongoTemplate.findAll(UploadRealTimeMonitoringData.class);
     }
-
+    
+    
+    /**
+     * 根据订单号查询监控数据
+     * @param code
+     * @return
+     */
+    @Override
+    public List<UploadRealTimeMonitoringData> getDataByOrderCode(String code) {
+        Query query = new Query();
+        if(StringUtils.isNotEmpty(code)){
+            query.addCriteria(Criteria.where("transaction_serial_number").is(code));
+        }
+        List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find(
+                query.with(Sort.by("create_time"))
+                , UploadRealTimeMonitoringData.class);
+        return uploadRealTimeMonitoringData;
+    }
 }
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 ab31311..63c2a97 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
@@ -37,7 +37,7 @@
 
 
     @ApiOperation(tags = {"小程序-订单评价"},value = "充电订单评价标签及数量查询")
-    @PostMapping(value = "/getTagCount")
+    @GetMapping(value = "/getTagCount")
     public AjaxResult<List<TEvaluationTagVO>> getTagCount() {
         return AjaxResult.ok(orderEvaluateService.getTagCount());
     }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderInfo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderInfo.java
index 65d4294..5d6aaed 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderInfo.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/MyChargingOrderInfo.java
@@ -51,9 +51,9 @@
 	@ApiModelProperty("阶段费用明细")
 	private List<TChargingOrderAccountingStrategy> stageCost;
 	@ApiModelProperty("电流电压曲线")
-	private Map<String, Object> currentAndVoltage;
+	private List<Map<String, Object>> currentAndVoltage;
 	@ApiModelProperty("功率曲线")
-	private Map<String, Object> power;
+	private List<Map<String, Object>> power;
 	@ApiModelProperty("是否可申诉(0=否,1=是)")
 	private Integer actionable;
 }
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 31ebc79..94f73de 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
@@ -21,6 +21,8 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
 import com.ruoyi.order.api.query.ChargingOrderQuery;
@@ -47,6 +49,7 @@
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -91,6 +94,13 @@
 	
 	@Resource
 	private RedisService redisService;
+	
+	@Resource
+	private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
+	
+	
+	
+	
 
 	/**
 	 * 获取小程序充电记录列表数据
@@ -164,11 +174,39 @@
 						.orderByAsc(TChargingOrderAccountingStrategy::getStartTime)
 		);
 		myChargingOrderInfo.setStageCost(stageCost);
-		// todo 待完善
-		//再MongoDB中获取数据
-		myChargingOrderInfo.setCurrentAndVoltage(null);
-		//再MongoDB中获取数据
-		myChargingOrderInfo.setPower(null);
+		List<UploadRealTimeMonitoringData> dataList = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
+		if(null != dataList){
+			//在MongoDB中获取数据
+			SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+			List<String> time = dataList.stream().map(s -> sdf.format(s.getCreate_time())).collect(Collectors.toList());
+			List<BigDecimal> outputVoltage = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_voltage).collect(Collectors.toList());
+			List<BigDecimal> outputCurrent = dataList.stream().map(UploadRealTimeMonitoringData::getOutput_current).collect(Collectors.toList());
+			List<Map<String, Object>> currentAndVoltage = new ArrayList<>();
+			for (int i = 0; i < time.size(); i++) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("time", time.get(i));
+				//电流
+				map.put("electricity", outputCurrent.get(i));
+				//电压
+				map.put("voltage", outputVoltage.get(i));
+				currentAndVoltage.add(map);
+			}
+			myChargingOrderInfo.setCurrentAndVoltage(currentAndVoltage);
+			//在MongoDB中获取数据
+			List<Integer> soc = dataList.stream().map(UploadRealTimeMonitoringData::getSoc).collect(Collectors.toList());
+			List<BigDecimal> po = dataList.stream().map(s -> s.getOutput_current().multiply(s.getOutput_voltage()).divide(new BigDecimal(1000))).collect(Collectors.toList());
+			List<Map<String, Object>> power = new ArrayList<>();
+			for (int i = 0; i < time.size(); i++) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("time", time.get(i));
+				//soc
+				map.put("soc", soc.get(i));
+				//电压
+				map.put("power", po.get(i));
+				power.add(map);
+			}
+			myChargingOrderInfo.setPower(power);
+		}
 		myChargingOrderInfo.setActionable(myChargingOrderInfo.getEndTime() + 604800000L > System.currentTimeMillis() ? 0 : 1);
 		return myChargingOrderInfo;
 	}
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 f086241..476d723 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
@@ -82,12 +82,12 @@
     <select id="getOrderEvaluateBySiteId" resultType="com.ruoyi.order.api.vo.TOrderEvaluateVO">
         select id, order_type, order_id, app_user_id,app_user_car_id, mark, content, img_url, evaluation_response,
                create_time, response_time, del_flag
-        from t_order_evaluate toe
-        where toe.order_id in
-        (select toc.order_id
-        from t_charging_order toc
-        where toc.site_id = #{siteId}
-        and toc.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()})
+        from t_order_evaluate
+        where order_id in
+        (select order_id
+        from t_charging_order
+        where site_id = #{siteId}
+        and del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()})
     </select>
 
     

--
Gitblit v1.7.1