From ea4e6cf0a63fa8470846fd5188da9e912faf661e Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 01 十一月 2024 10:01:24 +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                                               |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                                   |  156 ++++--
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java      |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java                            |   62 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java                                   |    8 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java                         |    2 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java                                                 |    3 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java                                         |    6 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java                                            |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java                                   |    6 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java                          |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml                                       |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java                                      |   56 ++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java                                   |   85 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java                                     |    2 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java            |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java                                                      |    1 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java                                      |    8 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml                                                    |   48 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java                                                     |    1 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java                                              |    2 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TChargingOrderVo.java                                                  |   15 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml                                 |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java                                      |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java                                    |   10 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileNotificationMapper.java                     |   12 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java |   48 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInviteUser.java                                                |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BaseModel.java                                          |    4 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/MongoChargingOrderQuery.java                                   |    4 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml                                                    |   11 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java                              |   13 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java                      |   86 +-
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java                                 |    5 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java                    |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml                                       |    7 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java                                       |    4 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/SwitchwayGate.java                              |    5 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java                         |    7 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java                         |  136 +++--
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java                    |   41 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java                      |   57 ++
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileNotificationMapper.xml                           |   18 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/CodeController.java                                  |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java                                        |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java                                             |    2 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java          |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java                                              |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java                                              |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java                               |   14 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java                               |   14 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java                                              |    9 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java                      |   14 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java                                  |   36 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                                            |   11 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                                  |   73 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java                   |   23 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java                           |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java                                        |   14 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java           |    9 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TFaultMessageMapper.java                                 |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                                      |   66 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java          |   18 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java                                                 |   79 --
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml                                                         |    2 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java                                                       |    4 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java                        |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java                               |   40 +
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TRepairMapper.xml                                             |    7 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java                       |   14 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java                                           |   11 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml                                                            |    4 
 72 files changed, 1,014 insertions(+), 433 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 72db785..ce10ebb 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
@@ -17,7 +17,7 @@
     @ApiModelProperty("最低会员价格")
     private BigDecimal minPrice;
     @ApiModelProperty("vip结束时间")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private LocalDateTime vipExpireTime;
     @ApiModelProperty("当天是否签到")
     private Integer isSign;
@@ -25,6 +25,7 @@
     private Integer points;
     @ApiModelProperty("当前优惠卷数量")
     private Integer couponNum;
+    private Long vipCouponNum;
     @ApiModelProperty("是否第一次添加车")
     private Integer firstAdd;
     @ApiModelProperty("当前绑定的车辆")
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
index d51745e..2acc636 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
@@ -87,6 +87,9 @@
     @TableField("coupon_json")
     private String couponJson;
 
+    @TableField("detail_id")
+    private Long detailId;
+
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInviteUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInviteUser.java
index 79cae9d..be66883 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInviteUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TInviteUser.java
@@ -52,6 +52,8 @@
     private LocalDateTime createTime;
     @TableField(exist = false)
     private String avatar;
+    @TableField(exist = false)
+    private String name;
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
index 2948838..eb221dd 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
@@ -58,7 +58,7 @@
             }
     
             @Override
-            public void updateChargingPileStatus(String code, Integer status) {
+            public void updateChargingPileStatus(String pile_code, String gun_code, Integer status) {
                 log.error("修改充电桩状态失败:" + throwable.getMessage());
             }
             
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
index d2f3666..f5053f5 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
@@ -7,6 +7,8 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import java.util.Set;
+
 
 /**
  * 充电桩服务降级处理
@@ -27,6 +29,11 @@
 			public R<Partner> getPartnerById(Integer id) {
 				return R.fail("根据id获取合作商信息失败:" + throwable.getMessage());
 			}
+			
+			@Override
+			public R<Set<Integer>> authSite(Integer partnerId, String siteMenu) {
+				return R.fail("获取合作商授权的站点数据失败:" + throwable.getMessage());
+			}
 		};
 	}
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
index 9b19c6f..60448b2 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
@@ -57,5 +57,5 @@
      * @param status
      */
     @PostMapping("/t-charging-pile/updateChargingPileStatus")
-    void updateChargingPileStatus(@RequestParam("code") String code, @RequestParam("status") Integer status);
+    void updateChargingPileStatus(@RequestParam("pile_code") String pile_code, @RequestParam("gun_code") String gun_code, @RequestParam("status") Integer status);
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java
index 198aeaa..5d3aa49 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java
@@ -8,6 +8,9 @@
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Set;
 
 /**
  * @author zhibing.pu
@@ -24,4 +27,14 @@
 	 */
 	@PostMapping("/partner/getPartnerById/{id}")
 	R<Partner> getPartnerById(@PathVariable("id") Integer id);
+	
+	
+	/**
+	 * 获取合作商授权的站点数据
+	 * @param partnerId
+	 * @param siteMenu
+	 * @return
+	 */
+	@PostMapping("/partner/authSite/{partnerId}")
+	R<Set<Integer>> authSite(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteMenu") String siteMenu);
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
index 6a147e5..39343ad 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
@@ -36,7 +36,7 @@
     @ApiModelProperty(value = "用户id")
     @TableField("app_user_id")
     private Long appUserId;
-    
+
     @ApiModelProperty(value = "停车场名称")
     @TableField("name")
     private String name;
@@ -44,7 +44,7 @@
     @ApiModelProperty(value = "车牌号")
     @TableField("license_plate")
     private String licensePlate;
-    
+
     @TableField(exist = false)
     private String uid;
     
@@ -123,5 +123,7 @@
     @TableField("serialnumber")
     private String serialnumber;
 
+    @TableField(exist = false)
+    private String parkName;
 
 }
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
index 5a46c09..e5298d0 100644
--- 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
@@ -34,9 +34,10 @@
             }
 
             @Override
-            public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(String orderId) {
+            public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(String ids) {
                 return R.fail("根据订单编号s获取所有监测数据失败:" + throwable.getMessage());
             }
+
 
             @Override
             public R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(String code) {
@@ -45,7 +46,7 @@
 
             @Override
             public R<UploadRealTimeMonitoringPageData> getAll(MongoChargingOrderQuery mongoChargingOrderQuery) {
-                return null;
+                return R.fail("getAll:" + throwable.getMessage());
             }
 
             @Override
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
index 5d89233..5d6df9f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
@@ -7,9 +7,7 @@
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Set;
@@ -31,11 +29,10 @@
 
 	/**
 	 * 批量查询
-	 * @param orderId
 	 * @return
 	 */
-	@PostMapping(value = "/uploadRealTimeMonitoringData/getOrderInfoByCodes")
-	public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@RequestParam("orderId") String orderId);
+	@GetMapping(value = "/uploadRealTimeMonitoringData/getOrderInfoByCodes/{ids}")
+	public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@PathVariable("ids") String ids);
 	/**
 	 * 根据订单编号获取所有监测数据
 	 * @param 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
index fe393ff..342055e 100644
--- 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
@@ -1,5 +1,6 @@
 package com.ruoyi.integration.api.model;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
 import java.util.Date;
@@ -10,7 +11,8 @@
  */
 @Data
 public class BaseModel {
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
 	private Date last_time = new Date();
-	
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
 	private Date create_time = new Date();
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
index e4a99c5..a6ff664 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -158,6 +158,11 @@
             public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
                 log.error("停止充电返回账单后计算费用处理失败:" + throwable.getMessage());
             }
+    
+            @Override
+            public R<List<TChargingOrder>> getChargingOrder(TChargingOrderVo order) {
+                return R.fail("获取充电订单数据失败:" + throwable.getMessage());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
index 20929f8..19ec997 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/OrderFallbackFactory.java
@@ -46,6 +46,12 @@
             }
 
             @Override
+            public R<Integer> getSalesCountByGoodsIdgetCount(Integer goodId, Integer goodeType, Integer buyType) {
+                return null;
+            }
+
+
+            @Override
             public R<List<String>> getCodeByOrderId(String goodsIds) {
                 return R.fail("根据订单ids查询现金购买优惠券订单编号:" + cause.getMessage());
             }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
index 3f10657..94b480a 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -206,4 +206,12 @@
      */
     @PostMapping("/t-charging-order/endChargeBillingCharge")
     void endChargeBillingCharge(@RequestBody TransactionRecordMessageVO vo);
+    
+    /**
+     * 获取充电订单数据
+     * @param order
+     * @return
+     */
+    @PostMapping("/t-charging-order/getChargingOrder")
+    R<List<TChargingOrder>> getChargingOrder(@RequestBody TChargingOrderVo order);
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
index 210327e..02994b0 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
@@ -28,6 +28,8 @@
     public R managementGiveVip(@RequestBody TGrantVip grantVip);
     @GetMapping("/t-exchange-order/getSalesCountByGoodsIds/{goodsIds}")
     R<List<Integer>> getSalesCountByGoodsId(@PathVariable("goodsIds") String goodsIds);
+    @GetMapping("/t-exchange-order/getCount")
+    R<Integer> getSalesCountByGoodsIdgetCount(@RequestParam("goodId") Integer goodId,@RequestParam("goodeType")Integer goodeType,@RequestParam("buyType")Integer buyType);
 
     /**
      * 管理后台 根据t_app_coupon订单购买或者兑换优惠券的订单编号
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TChargingOrderVo.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TChargingOrderVo.java
new file mode 100644
index 0000000..ee3dbbf
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TChargingOrderVo.java
@@ -0,0 +1,15 @@
+package com.ruoyi.order.api.vo;
+
+import com.ruoyi.order.api.model.TChargingOrder;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/10/29 13:35
+ */
+@Data
+public class TChargingOrderVo extends TChargingOrder {
+	private List<Integer> statusList;
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java
index ebe7621..5a99b2a 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/TCoupon.java
@@ -122,6 +122,10 @@
     @TableField(exist = false)
     private Integer useCount;
 
+    @ApiModelProperty(value = "销量")
+    @TableField(exist = false)
+    private Integer salesCount;
+
 
 
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/MongoChargingOrderQuery.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/MongoChargingOrderQuery.java
index a96a982..f9b33fb 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/MongoChargingOrderQuery.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/MongoChargingOrderQuery.java
@@ -25,9 +25,9 @@
     @ApiModelProperty(value = "充电枪code ")
     private String chargingGunCode;
     @ApiModelProperty(value = "开始时间2020-01-01 00:00:00 - 2021-01-01 23:59:59")
-    private String startTime;
+    private String createTime;
     @ApiModelProperty(value = "结束时间2020-01-01 00:00:00 - 2021-01-01 23:59:59")
-    private String endTime;
+    private String lastTime;
     @ApiModelProperty(value = "订单来源 1明星 2快电 3新电途")
     private Integer orderSource;
     @ApiModelProperty(value = "用户ids 前端忽略")
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java
index 0f28ea6..e13282a 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MD5Util.java
@@ -52,79 +52,24 @@
     public static String getMD5(String str) {
         if (StringUtils.isNotEmpty(str)) {
             try {
+                // 创建MD5加密实例
                 MessageDigest md = MessageDigest.getInstance("MD5");
-                md.update(str.getBytes());
-                byte b[] = md.digest();
-                int i;
-                StringBuffer buf = new StringBuffer("");
-                for (int offset = 0; offset < b.length; offset++) {
-                    i = b[offset];
-                    if (i < 0)
-                        i += 256;
-                    if (i < 16)
-                        buf.append("0");
-                    buf.append(Integer.toHexString(i));
+    
+                // 执行加密操作
+                byte[] messageDigest = md.digest(str.getBytes());
+    
+                // 将得到的散列值转换为十六进制
+                StringBuilder sb = new StringBuilder();
+                for (byte b : messageDigest) {
+                    sb.append(String.format("%02x", b));
                 }
-                //32位加密(小写)
-            return buf.toString();
-            //32位加密(大写)
-            //return buf.toString().toUpperCase();
-            // 16位的加密(小写)
-            //return buf.toString().substring(8, 24);
-            // 16位的加密(大写)
-            //return buf.toString().substring(8, 24).toUpperCase();
+    
+                // 返回MD5散列值
+                return sb.toString();
             } catch (NoSuchAlgorithmException e) {
                 e.printStackTrace();
             }
         }
-        return "";
-    }
- 
-    /**
-     * 获取32位大写
-     *
-     * @param str
-     * @return
-     */
-    public static String getMD5_32_upper(String str) {
-        if (StringUtils.isNotEmpty(str))
-            return getMD5(str).toUpperCase();
-        return "";
-    }
- 
-    /**
-     * 获取32位小写
-     *
-     * @param str
-     * @return
-     */
-    public static String getMD5_32_lower(String str) {
-        if (StringUtils.isNotEmpty(str))
-            return getMD5(str).toLowerCase();
-        return "";
-    }
- 
-    /**
-     * 获取16位大写
-     *
-     * @param str
-     * @return
-     */
-    public static String getMD5_16_upper(String str) {
-        if (StringUtils.isNotEmpty(str))
-            return getMD5(str).substring(8, 24).toUpperCase();
-        return "";
-    }
- 
-    /**
-     * 获取16位小写
-     *
-     * @param str
-     * @return
-     */
-    public static String getMD5_16_lower(String str) {
-        if (StringUtils.isNotEmpty(str))
-            return getMD5(str).substring(8, 24).toLowerCase();
         return "";
     }
  
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 6a9293c..3a6752e 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
@@ -5,6 +5,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -586,6 +587,8 @@
         return R.ok();
 
     }
+    @Resource
+    private TAppUserVipDetailService appUserVipDetailService;
 
     @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"})
     @GetMapping(value = "/user/info")
@@ -602,12 +605,14 @@
         if (byId.getVipEndTime()==null||byId.getVipEndTime().isBefore(LocalDateTime.now())){
             appUserInfoDto.setIsVip(0);
         }else {
+            TAppUserVipDetail one = appUserVipDetailService.getOne(new LambdaQueryWrapper<TAppUserVipDetail>()
+                    .eq(TAppUserVipDetail::getAppUserId, userId)
+                    .eq(TAppUserVipDetail::getVipId, byId.getVipId())
+                    .last(" and now() between start_time and end_time"));
+            Long count = appCouponService.lambdaQuery().eq(TAppCoupon::getDetailId, one.getId()).count();
+            appUserInfoDto.setVipCouponNum(count);
             appUserInfoDto.setIsVip(1);
             appUserInfoDto.setVipExpireTime(byId.getVipEndTime());
-
-
-
-
 
 
 
@@ -770,6 +775,7 @@
         for (TInviteUser record : page.getRecords()) {
             TAppUser byId = appUserService.getById(record.getBeInvitedAppUserId());
             record.setAvatar(byId.getAvatar());
+            record.setName(byId.getName());
         }
         return R.ok(page);
     }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
index 85ec054..692caa6 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
@@ -1,16 +1,26 @@
 package com.ruoyi.account.service.impl;
 
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.feignClient.AppUserVipDetailClient;
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
 import com.ruoyi.account.api.model.TInviteUser;
+import com.ruoyi.account.api.vo.GetAppUserVipDetail;
 import com.ruoyi.account.mapper.TInviteUserMapper;
+import com.ruoyi.account.service.TAppUserService;
 import com.ruoyi.account.service.TInviteUserService;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.TIntegralRule;
+import com.ruoyi.other.api.domain.TVip;
 import com.ruoyi.other.api.feignClient.IntegralRuleClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.Objects;
 
 /**
  * <p>
@@ -25,9 +35,29 @@
 
     @Autowired
     private IntegralRuleClient integralRuleClient;
+    @Autowired
+    private TAppUserService appUserService;
+    @Resource
+    private AppUserVipDetailClient vipDetailClient;
 
+    /**
+     *
+     * @param appUserId  被邀请人
+     * @param beInvitedAppUserId  邀请人
+     */
     @Override
     public void saveInviteUser(Long appUserId, Long beInvitedAppUserId) {
+
+        // 查询用户信息
+        TAppUser user = appUserService.getById(beInvitedAppUserId);
+        GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+        getAppUserVipDetail.setAppUserId(beInvitedAppUserId);
+        getAppUserVipDetail.setVipId(user.getVipId());
+        R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
+        TAppUserVipDetail data1 = appUserVipDetail.getData();
+        String vipJson = data1.getVipJson();
+        TVip vip = JSON.parseObject(vipJson, TVip.class);
+
         // 查询邀请用户获得积分配置
         TIntegralRule integralRule = integralRuleClient.getSet().getData();
         JSONObject jsonObject = JSONObject.parseObject(integralRule.getInviteUsersToEarnPoints());
@@ -35,7 +65,11 @@
         inviteUser.setAppUserId(beInvitedAppUserId);
         inviteUser.setBeInvitedAppUserId(appUserId);
         inviteUser.setCreateTime(LocalDateTime.now());
-        inviteUser.setAward(jsonObject.getInteger("num1"));
+        if(Objects.nonNull(vip) && vip.getDoubleIntegration() == 1){
+            inviteUser.setAward(jsonObject.getInteger("num1")*2);
+        }else {
+            inviteUser.setAward(jsonObject.getInteger("num1"));
+        }
         this.save(inviteUser);
     }
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
index 12dccfc..2e9bd75 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
@@ -77,6 +77,7 @@
                 tAppCoupon.setWaysToObtain(4);
                 tAppCoupon.setStatus(1);
                 tAppCoupon.setCouponJson(JSON.toJSONString(coupon));
+                    tAppCoupon.setDetailId(tAppUserVipDetail.getId());
                 appCouponService.save(tAppCoupon);
                 }
             }
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 8a7e076..3a24689 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
@@ -51,7 +51,7 @@
         String reqStr = MsgUtil.codeMsg(phone, code);
         String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr);
         // 记录短信发送
-        chargingPileNotificationService.saveData(1,null,null,phone,"验证码:"+code+",用于更换手机号。请勿转发。");
+        chargingPileNotificationService.saveData(1,-1,-1,phone,"验证码:"+code+",用于更换手机号。请勿转发。");
         return AjaxResult.success(result);
     }
 
@@ -70,7 +70,7 @@
         String reqStr = MsgUtil.applyCodeMsg(phone, code);
         String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr);
         // 记录短信发送
-        chargingPileNotificationService.saveData(1,null,null,phone,"验证码:"+code+",用于申请建桩。请勿转发。");
+        chargingPileNotificationService.saveData(1,-1,-1,phone,"验证码:"+code+",用于申请建桩。请勿转发。");
         return AjaxResult.success(result);
     }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
index 9739d0d..8494f33 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
@@ -7,6 +7,7 @@
 import com.ruoyi.chargingPile.api.model.Partner;
 import com.ruoyi.chargingPile.api.query.GetPartnerList;
 import com.ruoyi.chargingPile.api.query.SetPermissionConfiguration;
+import com.ruoyi.chargingPile.domain.SiteMenu;
 import com.ruoyi.chargingPile.dto.ResetPassword;
 import com.ruoyi.chargingPile.service.IPartnerService;
 import com.ruoyi.common.core.domain.R;
@@ -24,6 +25,7 @@
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author zhibing.pu
@@ -158,4 +160,16 @@
 		Partner partner = partnerService.getPartner(id);
 		return R.ok(partner);
 	}
+	
+	/**
+	 * 获取合作商授权的站点数据
+	 * @param partnerId
+	 * @param siteMenu
+	 * @return
+	 */
+	@PostMapping("/authSite/{partnerId}")
+	public R<Set<Integer>> authSite(@PathVariable("partnerId") Integer partnerId, @RequestParam("siteMenu") String siteMenu){
+		Set<Integer> integers = partnerService.authSite(partnerId, SiteMenu.valueOf(siteMenu));
+		return R.ok(integers);
+	}
 }
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 8081c4e..06a4e3f 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
@@ -131,8 +131,25 @@
 			// 当前时间属于那个阶段 取哪个阶段的电价
 			if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
 					&& DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
-				siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP));
-				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP));
+				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
+				if(null != byId1.getDiscount()){
+					siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
+				}else{
+					// 获取当前登录用户id
+					Long userId = tokenService.getLoginUserApplet().getUserId();
+					// 根据id查询用户信息
+					TAppUser appUser = appUserClient.getUserById(userId).getData();
+					if(Objects.nonNull(appUser)){
+						TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+						if(Objects.nonNull(vip) && vip.getType() == 2){
+							siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence()));
+						}else {
+							siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+						}
+					}else {
+						siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+					}
+				}
 			}
 		}
 		siteInfoVO.setChargingGunId(chargingGun.getId());
@@ -159,8 +176,25 @@
 			// 当前时间属于那个阶段 取哪个阶段的电价
 			if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
 					&& DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
-				siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP));
-				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().setScale(4, BigDecimal.ROUND_HALF_UP));
+				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
+				if(null != byId1.getDiscount()){
+					siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
+				}else{
+					// 获取当前登录用户id
+					Long userId = tokenService.getLoginUserApplet().getUserId();
+					// 根据id查询用户信息
+					TAppUser appUser = appUserClient.getUserById(userId).getData();
+					if(Objects.nonNull(appUser)){
+						TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+						if(Objects.nonNull(vip) && vip.getType() == 2){
+							siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence()));
+						}else {
+							siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+						}
+					}else {
+						siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+					}
+				}
 			}
 		}
 		siteInfoVO.setChargingPileId(one.getId());
@@ -195,17 +229,22 @@
 		siteList.setPageSize(99999);
 		PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList);
 		for (GetSiteListDTO record : list.getRecords()) {
-			Long count = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).eq(TChargingGun::getStatus, new int[]{3, 4, 5, 6}).count();
+			List<Integer> c1 = new ArrayList<>();
+			c1.add(3);
+			c1.add(4);
+			c1.add(5);
+			c1.add(6);
+			Long count = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).eq(TChargingGun::getStatus, 2).count();
 			record.setC1(count);
-			Long count1 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).eq(TChargingGun::getStatus, 2).count();
+			Long count1 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 1).count();
 			record.setC2(count1);
-			Long count2 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).eq(TChargingGun::getStatus, new int[]{3, 4, 5, 6}).count();
+			Long count2 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).eq(TChargingGun::getStatus, 2).count();
 			record.setK1(count2);
-			Long count3 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).eq(TChargingGun::getStatus, 2).count();
+			Long count3 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 2).count();
 			record.setK2(count3);
-			Long count4 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).eq(TChargingGun::getStatus, new int[]{3, 4, 5, 6}).count();
+			Long count4 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).eq(TChargingGun::getStatus, 2).count();
 			record.setM1(count4);
-			Long count5 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).eq(TChargingGun::getStatus, 2).count();
+			Long count5 = chargingGunService.lambdaQuery().eq(TChargingGun::getSiteId, record.getId()).eq(TChargingGun::getChargeMode, 3).count();
 			record.setM2(count5);
 
 			//利用率
@@ -261,14 +300,7 @@
 	@ApiOperation(value = "获取该充电站的利用率", tags = {"管理后台-数据分析-电站分析"})
 	public R getPercentByCityCode(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto){
 
-		if (chargingPercentProvinceDto.getDate1()==null){
-			LocalDate today = LocalDate.now();
-			LocalDate lastMonth = today.minusMonths(1);
-			LocalDate firstDayOfLastMonth = lastMonth.withDayOfMonth(1);
-			LocalDate lastDayOfLastMonth =lastMonth.withDayOfMonth(lastMonth.lengthOfMonth());
-			chargingPercentProvinceDto.setDate1(firstDayOfLastMonth);
-			chargingPercentProvinceDto.setDate2(lastDayOfLastMonth);
-		}
+
 
 
 
@@ -282,6 +314,9 @@
 		List<GetSiteListDTO> records = siteService.getSiteList(siteList).getRecords();
 		List<Integer> collect = records.stream().map(GetSiteListDTO::getId).collect(Collectors.toList());
 		// 通过时间段获取和充电桩id获取各个充电站的充电订单
+		if (chargingPercentProvinceDto.getDate1().equals(chargingPercentProvinceDto.getDate2())){
+			chargingPercentProvinceDto.setDate2(chargingPercentProvinceDto.getDate1().plusDays(1));
+		}
 			List<ChargingOrderGroup> data = chargingOrderClient.getBySiteIdAndTime(chargingPercentProvinceDto).getData();
 		// 计算利用率展示
 		for (ChargingOrderGroup datum : data) {
@@ -291,7 +326,7 @@
 				bigDecimal1 = bigDecimal1.add(chargingPile.getRatedPower());
 			}
 
-			long daysBetween = ChronoUnit.DAYS.between(chargingPercentProvinceDto.getDate1(), chargingPercentProvinceDto.getDate2()) + 1;
+			long daysBetween = ChronoUnit.DAYS.between(chargingPercentProvinceDto.getDate1(), chargingPercentProvinceDto.getDate2());
 			BigDecimal multiply = bigDecimal1.multiply(new BigDecimal("24")).multiply(BigDecimal.valueOf(daysBetween));
 			//得到利用率
 			BigDecimal divide = datum.getChargingCapacity().divide(multiply, 0, BigDecimal.ROUND_HALF_UP);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
index 562043a..5661ba5 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java
@@ -164,7 +164,10 @@
                 dto.setAuditStatus(1);
                 accountingStrategyService.updateById(dto);
                 // 添加明细
-                dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
+                dto.getAccountingStrategyDetails().forEach(detail -> {
+                    detail.setAccountingStrategyId(dto.getId());
+                    detail.setId(null);
+                });
                 accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
             }else {
                 Long userId = SecurityUtils.getLoginUser().getUserid();
@@ -188,7 +191,10 @@
             dto.setAuditStatus(1);
             accountingStrategyService.updateById(dto);
             // 添加明细
-            dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId()));
+            dto.getAccountingStrategyDetails().forEach(detail -> {
+                detail.setAccountingStrategyId(dto.getId());
+                detail.setId(null);
+            });
             accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails());
         }
         
@@ -360,11 +366,16 @@
                     TAccountingStrategy one = accountingStrategyService.lambdaQuery().eq(TAccountingStrategy::getId, byId.getParentId()).one();
                     byId.setSiteId(one.getSiteId());
                     //将site表对应的模板id修改为新的这个
-                    Site byId1 = siteService.getById(one.getSiteId());
-                    if (byId1!=null) {
-                        byId1.setAccountingStrategyId(byId.getId());
-                        siteService.updateById(byId1);
+                    List<Site> list = siteService.lambdaQuery().eq(Site::getAccountingStrategyId, one.getId()).list();
+                    for (Site site : list) {
+                        site.setAccountingStrategyId(byId.getId());
                     }
+                    siteService.updateBatchById(list);
+                    //
+                    
+
+
+                    //
                     accountingStrategyService.removeById(one.getId());
                 }
                 //硬件
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 191076b..aba788a 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
@@ -483,26 +483,28 @@
             settlementExportVO.setCreateTime1(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
             settlementExportVO.setStartTime1(startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
             settlementExportVO.setEndTime1(endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-            switch (settlementExportVO.getStatus()){
-                case 0:
-                    settlementExportVO.setStatusName("未知");
-                    break;
-                case 1:
-                    settlementExportVO.setStatusName("等待中/已插枪");
-                    break;
-                case 2:
-                    settlementExportVO.setStatusName("启动中");
-                    break;
-                case 3:
-                    settlementExportVO.setStatusName("充电中");
-                    break;
-                case 4:
-                    settlementExportVO.setStatusName("停止中");
-                    break;
-                case 5:
-                    settlementExportVO.setStatusName("已结束");
-                    break;
+            if (chargingOrder.getStatus()!=null){
+                switch (chargingOrder.getStatus()){
+                    case 0:
+                        settlementExportVO.setStatusName("未知");
+                        break;
+                    case 1:
+                        settlementExportVO.setStatusName("等待中/已插枪");
+                        break;
+                    case 2:
+                        settlementExportVO.setStatusName("启动中");
+                        break;
+                    case 3:
+                        settlementExportVO.setStatusName("充电中");
+                        break;
+                    case 4:
+                        settlementExportVO.setStatusName("停止中");
+                        break;
+                    case 5:
+                        settlementExportVO.setStatusName("已结束");
+                        break;
 
+                }
             }
             settlementExportVO.setOrderTypeName("充电订单");
             settlementExportVO.setChargingType("单桩双充");
@@ -589,7 +591,6 @@
                 excelWriter.fill(new FillWrapper("data1", chargingBillVOS), fillConfig, writeSheet);
                 excelWriter.fill(new FillWrapper("data2", chargingBillVOS), fillConfig, writeSheet2);
                 excelWriter.fill(new FillWrapper("data3", data.getList()), fillConfig, writeSheet3);
-                excelWriter.fill(new FillWrapper("data4", data.getList()), fillConfig, writeSheet3);
                 excelWriter.finish();
             } catch (Exception e) {
                 return R.fail("excel导出失败!");
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 bca4199..4a4feea 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
@@ -27,6 +27,9 @@
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.log.enums.OperatorType;
 import com.ruoyi.common.redis.service.RedisService;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.order.api.vo.TChargingOrderVo;
 import com.ruoyi.other.api.domain.TVip;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -41,9 +44,8 @@
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -66,6 +68,9 @@
 
 	@Resource
 	private TFaultMessageService faultMessageService;
+	
+	@Resource
+	private ChargingOrderClient chargingOrderClient;
 
 
     @Autowired
@@ -206,7 +211,7 @@
 	 */
 	@ResponseBody
 	@PostMapping("/getChargingPileById/{id}")
-	public R<TChargingPile> getChargingPileById(@PathVariable Integer id){
+	public R<TChargingPile> getChargingPileById(@PathVariable("id") Integer id){
 		TChargingPile chargingPile = chargingPileService.getById(id);
 		return R.ok(chargingPile);
 	}
@@ -214,69 +219,94 @@
 
 	/**
 	 * 更新充电桩状态
-	 * @param code
 	 * @param status
 	 */
 	@ResponseBody
 	@PostMapping("/updateChargingPileStatus")
-	public void updateChargingPileStatus(@RequestParam("code") String code, @RequestParam("status") Integer status){
-		TChargingPile chargingPile = chargingPileService.getOne(new LambdaQueryWrapper<TChargingPile>()
-				.eq(TChargingPile::getCode, code).eq(TChargingPile::getDelFlag, 0));
-		if(null != chargingPile){
-			//充电桩正常,返回异常,处理充电桩状态和添加故障记录
-			if(chargingPile.getStatus() == 1 && 1 == status){
-				List<TFaultMessage> faultMessages = faultMessageService.list(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingPile.getId())
-						.eq(TFaultMessage::getStatus, 2).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime));
-				if(faultMessages.isEmpty()){
-					TFaultMessage faultMessage = new TFaultMessage();
-					faultMessage.setSiteId(chargingPile.getSiteId());
-					faultMessage.setChargingPileId(chargingPile.getId());
-					faultMessage.setStatus(2);
-					faultMessage.setDownTime(LocalDateTime.now());
-					faultMessage.setCreateTime(LocalDateTime.now());
-					faultMessage.setDelFlag(false);
-					faultMessage.setContent("设备故障");
-					faultMessageService.save(faultMessage);
-					
+	public void updateChargingPileStatus(@RequestParam("pile_code") String pile_code, @RequestParam("gun_code") String gun_code, @RequestParam("status") Integer status){
+		Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_gun_online");
+		Long time = (Long) charging_pile_online.get(pile_code + gun_code);
+		//小于30秒才处理数据,防止频繁查询数据
+		if(null != time && (System.currentTimeMillis() - time) < 30000){
+			return;
+		}
+		TChargingGun tChargingGun = chargingGunService.getOne(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getFullNumber, (pile_code + gun_code)).eq(TChargingGun::getDelFlag, 0));
+		if(null != tChargingGun){
+			TChargingPile chargingPile = chargingPileService.getById(tChargingGun.getChargingPileId());
+			//枪处于离线或者故障,返回状态为正常,则修改其状态
+			if(0 == status && tChargingGun.getStatus() != 2){
+				TChargingGun tChargingGun1 = new TChargingGun();
+				tChargingGun1.setId(tChargingGun.getId());
+				tChargingGun1.setStatus(2);
+				chargingGunService.updateById(tChargingGun1);
+				if(chargingPile.getStatus() != 1){
 					TChargingPile chargingPile1 = new TChargingPile();
 					chargingPile1.setId(chargingPile.getId());
-					chargingPile1.setStatus(3);
+					chargingPile1.setStatus(1);
 					chargingPileService.updateById(chargingPile1);
-					
-					List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()));
-					for (TChargingGun chargingGun : list1) {
-						TChargingGun chargingGun1 = new TChargingGun();
-						chargingGun1.setId(chargingGun.getId());
-						chargingGun1.setStatus(7);
-						chargingGunService.updateById(chargingGun1);
-					}
 				}
-			}
-			if(chargingPile.getStatus() != 1 && 0 == status){
-				List<TFaultMessage> list = faultMessageService.list(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingPile.getId())
+				
+				List<TFaultMessage> list = faultMessageService.list(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingGunId, tChargingGun.getId())
 						.isNull(TFaultMessage::getEndTime));
 				if(!list.isEmpty()){
 					list.forEach(s->s.setEndTime(LocalDateTime.now()));
 					faultMessageService.updateBatchById(list);
 				}
-				
-				TChargingPile chargingPile1 = new TChargingPile();
-				chargingPile1.setId(chargingPile.getId());
-				chargingPile1.setStatus(1);
-				chargingPileService.updateById(chargingPile1);
-				
-				List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()));
-				for (TChargingGun chargingGun : list1) {
-					TChargingGun chargingGun1 = new TChargingGun();
-					chargingGun1.setId(chargingGun.getId());
-					chargingGun1.setStatus(2);
-					chargingGunService.updateById(chargingGun1);
-				}
 			}
-			if(0 == status){
-				Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_pile_online");
-				charging_pile_online.put(code, System.currentTimeMillis());
-				redisService.setCacheMap("charging_pile_online", charging_pile_online);
+			//枪处于正常,返回状态为故障,则修改其状态
+			if(1 == status && tChargingGun.getStatus() != 1 && tChargingGun.getStatus() != 7){
+				TChargingGun tChargingGun1 = new TChargingGun();
+				tChargingGun1.setId(tChargingGun.getId());
+				tChargingGun1.setStatus(7);
+				chargingGunService.updateById(tChargingGun1);
+				
+				//桩处于正常,桩所属的枪都处于非正常,修改桩状态为异常
+				List<TChargingGun> list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0));
+				int size = list.stream().filter(s -> s.getStatus() == 1 || s.getStatus() == 7).collect(Collectors.toList()).size();
+				if(chargingPile.getStatus() == 1 && list.size() == size){
+					TChargingPile chargingPile1 = new TChargingPile();
+					chargingPile1.setId(chargingPile.getId());
+					chargingPile1.setStatus(3);
+					chargingPileService.updateById(chargingPile1);
+				}
+				
+				TFaultMessage faultMessage = new TFaultMessage();
+				faultMessage.setSiteId(chargingPile.getSiteId());
+				faultMessage.setChargingPileId(chargingPile.getId());
+				faultMessage.setChargingGunId(tChargingGun.getId());
+				faultMessage.setStatus(2);
+				faultMessage.setDownTime(LocalDateTime.now());
+				faultMessage.setCreateTime(LocalDateTime.now());
+				faultMessage.setDelFlag(false);
+				faultMessage.setContent("设备故障");
+				faultMessageService.save(faultMessage);
+			}
+			
+			if(1 != status){
+				charging_pile_online.put(tChargingGun.getFullNumber(), System.currentTimeMillis());
+				redisService.setCacheMap("charging_gun_online", charging_pile_online);
+			}
+			if(2 == status){
+				TChargingOrderVo order = new TChargingOrderVo();
+				order.setChargingPileId(tChargingGun.getChargingPileId());
+				order.setChargingGunId(tChargingGun.getId());
+				order.setStatusList(Arrays.asList(1, 2, 3, 4, 5));
+				List<TChargingOrder> orders = chargingOrderClient.getChargingOrder(order).getData();
+				if(orders.size() > 0){
+					TChargingOrder chargingOrder = orders.get(0);
+					TChargingGun tChargingGun1 = new TChargingGun();
+					if(Arrays.asList(1, 2).contains(chargingOrder.getStatus())){
+						tChargingGun1.setStatus(3);
+					}
+					if(Arrays.asList(3).contains(chargingOrder.getStatus())){
+						tChargingGun1.setStatus(4);
+					}
+					if(Arrays.asList(4).contains(chargingOrder.getStatus()) && chargingOrder.getEndMode() == 2){
+						tChargingGun1.setStatus(5);
+					}
+					tChargingGun1.setId(tChargingGun.getId());
+					chargingGunService.updateById(tChargingGun1);
+				}
 			}
 		}
 	}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
index 3c8920c..7db9f8c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
@@ -148,7 +148,7 @@
                 .eq(TParkingLot::getSiteId, siteId)));
     }
 
-    @PostMapping(value = "/getRecordById")
+    @GetMapping(value = "/getRecordById")
     public R<TParkingRecord> getRecordById(@RequestParam("id") Long id){
         return R.ok(parkingRecordService.getById(id));
     }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
index 041fbc6..5d91a4c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -70,8 +70,11 @@
                 .page(Page.of(query.getPageCurr(), query.getPageSize()));
 
         for (TParkingRecord record : page.getRecords()) {
-            record.setName(parkingLotService.getById(record.getParkingLotId()).getName());
+            TParkingLot byId = parkingLotService.getById(record.getParkingLotId());
             record.setUid(record.getId().toString());
+            if (byId!=null) {
+                record.setParkName(byId.getName());
+            }
         }
         return R.ok(page);
     }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java
index 7fb53ff..fd964e2 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TRepairController.java
@@ -1,6 +1,8 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.chargingPile.api.model.TFaultMessage;
 import com.ruoyi.chargingPile.api.model.TRepair;
 import com.ruoyi.chargingPile.service.TRepairService;
@@ -38,8 +40,8 @@
 	private TRepairService repairService;
 	@Resource
 	private TokenService tokenService;
-	@Autowired
-	private SysUserClient userClient;
+	@Resource
+	private AppUserClient appUserClient;
 
 	/**
 	 * 添加故障报修管理
@@ -50,9 +52,9 @@
 	public AjaxResult<String> add(@Validated @RequestBody TRepair dto) {
 		Long userId = tokenService.getLoginUserApplet().getUserId();
 		// 查询报修人员信息
-		SysUser user = userClient.getSysUser(userId).getData();
-		if(Objects.nonNull(user)){
-			dto.setRepairman(user.getUserName());
+        TAppUser user = appUserClient.getUserById(userId).getData();
+        if(Objects.nonNull(user)){
+			dto.setRepairman(user.getName());
 		}
 		repairService.add(dto);
 		return AjaxResult.success();
@@ -61,7 +63,7 @@
 	@ResponseBody
 	@GetMapping("/getRepairList")
 	@ApiOperation(value = "获取报修记录列表数据", tags = {"管理后台-设备监控"})
-	public AjaxResult<PageInfo<TRepair>> getRepairList(String name, String siteId, BasePage basePage){
+	public AjaxResult<PageInfo<TRepair>> getRepairList(String name, Integer siteId, BasePage basePage){
 		PageInfo<TRepair> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize());
 		List<TRepair> repairList = repairService.getRepairList(pageInfo, name, siteId);
 		pageInfo.setRecords(repairList);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java
index c15b6af..dfe127a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TVehicleRampController.java
@@ -113,7 +113,7 @@
         TVehicleRamp vehicleRamp = vehicleRampService.getById(dto.getId());
         TParkingLot parkingLot = parkingLotService.getById(vehicleRamp.getParkingLotId());
         SwitchwayGateReq req = new SwitchwayGateReq();
-        req.setAction(vehicleRamp.getAction());
+        req.setAction(dto.getAction());
         req.setChannel(vehicleRamp.getCarportNum());
         req.setAppkey(parkingLot.getAppKey());
         req.setSecretkey(parkingLot.getSecretKey());
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileNotificationMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileNotificationMapper.java
index d093e4c..abc3c3d 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileNotificationMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TChargingPileNotificationMapper.java
@@ -27,4 +27,16 @@
 	 */
 	List<TChargingPileNotification> chargingPileNotificationPageList(PageInfo<TChargingPileNotification> pageInfo, @Param("siteIds") Set<Integer> siteIds);
 
+	/**
+	 * 保存通知数据
+	 * @param siteId
+	 * @param chargingPileId
+	 * @param phone
+	 * @param content
+	 */
+    void saveData(@Param("siteId") Integer siteId,
+				  @Param("chargingPileId")Integer chargingPileId,
+				  @Param("phone")String phone,
+				  @Param("content")String content);
+
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TFaultMessageMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TFaultMessageMapper.java
index 70c0e9c..f85b500 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TFaultMessageMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TFaultMessageMapper.java
@@ -20,8 +20,7 @@
 	/**
 	 * 获取故障信息列表
 	 * @param pageInfo
-	 * @param siteId
 	 * @return
 	 */
-	List<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, @Param("siteId") Integer siteId);
+	List<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, @Param("siteIds") List<Integer> siteIds);
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java
index c9190aa..1da2e90 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TRepairMapper.java
@@ -22,9 +22,9 @@
 	 * 获取列表数据
 	 * @param pageInfo
 	 * @param name
-	 * @param siteId
+	 * @param siteIds
 	 * @return
 	 */
-	List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, @Param("name") String name, @Param("siteId") String siteId);
+	List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, @Param("name") String name, @Param("siteIds") List<Integer> siteIds);
 
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java
index 02edf11..9bedb5f 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TRepairService.java
@@ -23,7 +23,7 @@
 	 * @param siteId
 	 * @return
 	 */
-	List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, String siteId);
+	List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, Integer siteId);
 
 	/**
 	 * 添加报修记录
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
index 9a33506..3a4d301 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -1,9 +1,13 @@
 package com.ruoyi.chargingPile.service.impl;
 
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.feignClient.AppUserVipDetailClient;
 import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.api.vo.GetAppUserVipDetail;
 import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
@@ -18,6 +22,7 @@
 import com.ruoyi.chargingPile.domain.SiteMenu;
 import com.ruoyi.chargingPile.mapper.SiteMapper;
 import com.ruoyi.chargingPile.service.*;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.ServletUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
@@ -80,7 +85,8 @@
 	
 	@Resource
 	private IntegrationClient integrationClient;
-
+	@Resource
+	private AppUserVipDetailClient vipDetailClient;
 	
 	
 	/**
@@ -88,6 +94,7 @@
 	 * @param siteList
 	 * @return
 	 */
+
 	@Override
 	public PageInfo<GetSiteListDTO> getSiteList(GetSiteList siteList) {
 		Set<Integer> ids = null;
@@ -95,12 +102,15 @@
 		SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
 		Integer roleType = sysUser.getRoleType();
 		Integer objectId = sysUser.getObjectId();
+		R<Integer> admin = sysUserClient.isAdmin(SecurityUtils.getUserId());
 		//合作商
 		if(roleType == 2){
 			ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST);
 		}else{
 			//非管理员需要根据角色和用户配置查询允许的站点数据
-			if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+			//改用roleId=1来判断
+			if(admin.getData()!=1){
+//			if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
 				List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
 				List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
 				if(data2.size() > 0){
@@ -134,12 +144,14 @@
 		SysUser sysUser = sysUserClient.getSysUser(userId).getData();
 		Integer roleType = sysUser.getRoleType();
 		Integer objectId = sysUser.getObjectId();
+		R<Integer> admin = sysUserClient.isAdmin(SecurityUtils.getUserId());
+
 		//合作商
 		if(roleType == 2){
 			ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST);
 		}else{
 			//非管理员需要根据角色和用户配置查询允许的站点数据
-			if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+			if(admin.getData()!=1){
 				List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
 				List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
 				List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
@@ -280,9 +292,9 @@
 	@Override
 	public PageInfo<SiteVO> pageList(SiteQuery query,Integer isLogin) {
 		TAppUser appUser = null;
+		// 获取当前登录用户id
+		Long userId = tokenService.getLoginUserApplet().getUserId();
 		if(isLogin == 1){
-			// 获取当前登录用户id
-			Long userId = tokenService.getLoginUserApplet().getUserId();
 			// 根据id查询用户信息
 			appUser = appUserClient.getUserById(userId).getData();
 		}
@@ -290,7 +302,14 @@
 		List<SiteVO> list = this.baseMapper.pageList(query,pageInfo);
 		if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){
 			// 查询会员信息
-			TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+//			TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+			getAppUserVipDetail.setAppUserId(userId);
+			getAppUserVipDetail.setVipId(appUser.getVipId());
+			R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
+			TAppUserVipDetail data1 = appUserVipDetail.getData();
+			String vipJson = data1.getVipJson();
+			TVip vip = JSON.parseObject(vipJson, TVip.class);
 			if(Objects.nonNull(vip) && vip.getType() == 2){
 				list.forEach(item -> {
 					if(Objects.nonNull(vip.getDiscount())){
@@ -380,7 +399,14 @@
 		List<SiteVO> list = this.baseMapper.getMapSiteList(query);
 		if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){
 			// 查询会员信息
-			TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+//			TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+			getAppUserVipDetail.setAppUserId(userId);
+			getAppUserVipDetail.setVipId(appUser.getVipId());
+			R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
+			TAppUserVipDetail data1 = appUserVipDetail.getData();
+			String vipJson = data1.getVipJson();
+			TVip vip = JSON.parseObject(vipJson, TVip.class);
 			if(Objects.nonNull(vip) && vip.getType() == 2){
 				list.forEach(item -> {
 					item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal()));
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java
index 9bead20..67f62d0 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileNotificationServiceImpl.java
@@ -95,20 +95,10 @@
 	@Override
 	public void saveData(Integer type,Integer siteId,Integer chargingPileId, String phone, String data) {
 		TChargingPileNotification notification = new TChargingPileNotification();
-		switch (type){
-			case 1:
-				// 验证码
-				notification.setPhone(phone);
-				notification.setContent(data);
-				break;
-			default:
-				// 停车占位
-				notification.setSiteId(siteId);
-				notification.setChargingPileId(chargingPileId);
-				notification.setPhone(phone);
-				notification.setContent(data);
-				break;
-		}
+		notification.setSiteId(siteId);
+		notification.setChargingPileId(chargingPileId);
+		notification.setPhone(phone);
+		notification.setContent(data);
 		this.save(notification);
 	}
 
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 70a11ec..f7019e4 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
@@ -170,19 +170,19 @@
 			return AjaxResult.error("设备编号已存在");
 		}
 		//调用华为Iot创建设备
-		AddDevice addDevice = new AddDevice();
-		addDevice.setProductId("66da68d21837002b28b34ec0");
-		addDevice.setNodeId(chargingPile.getCode());
-		addDevice.setDeviceName(chargingPile.getName());
-		addDevice.setDescription(chargingPile.getNumber().toString());
-		AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData();
-		if(null != deviceResp){
-			int httpStatusCode = deviceResp.getHttpStatusCode();
-			if(httpStatusCode == 201){
-				chargingPile.setIotdDeviceId(deviceResp.getDeviceId());
-				this.save(chargingPile);
-			}
-		}
+//		AddDevice addDevice = new AddDevice();
+//		addDevice.setProductId("66da68d21837002b28b34ec0");
+//		addDevice.setNodeId(chargingPile.getCode());
+//		addDevice.setDeviceName(chargingPile.getName());
+//		addDevice.setDescription(chargingPile.getNumber().toString());
+//		AddDeviceResp deviceResp = iotInterfaceClient.addDevice(addDevice).getData();
+//		if(null != deviceResp){
+//			int httpStatusCode = deviceResp.getHttpStatusCode();
+//			if(httpStatusCode == 201){
+//				chargingPile.setIotdDeviceId(deviceResp.getDeviceId());
+//			}
+//		}
+		this.save(chargingPile);
 		return AjaxResult.success();
 	}
 	
@@ -266,12 +266,12 @@
 		for (Integer id : ids) {
 			TChargingPile chargingPile = this.getById(id);
 			//调用华为Iot删除设备
-			if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){
-				DeleteDeviceResp deviceResp = iotInterfaceClient.deleteDevice(chargingPile.getIotdDeviceId()).getData();
-				if(null != deviceResp && deviceResp.getHttpStatusCode() == 0){
-					this.removeById(chargingPile);
-				}
-			}
+//			if(StringUtils.isNotEmpty(chargingPile.getIotdDeviceId())){
+//				DeleteDeviceResp deviceResp = iotInterfaceClient.deleteDevice(chargingPile.getIotdDeviceId()).getData();
+//				if(null != deviceResp && deviceResp.getHttpStatusCode() == 0){
+//				}
+//			}
+			this.removeById(chargingPile);
 		}
 		return AjaxResult.success();
 	}
@@ -482,13 +482,14 @@
 		Set<Integer> siteIds = new HashSet<>();
 		if(0 == query.getSiteId()){
 			SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+			R<Integer> admin = sysUserClient.isAdmin(SecurityUtils.getUserId());
 			Integer roleType = sysUser.getRoleType();
 			Integer objectId = sysUser.getObjectId();
 			if(2 == roleType){
 				siteIds = partnerService.authSite(objectId, SiteMenu.SITE_LIST);
 			}else{
 				//非管理员需要根据角色和用户配置查询允许的站点数据
-				if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+				if(admin.getData()!=1){
 					List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
                     List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
                     List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
@@ -585,30 +586,39 @@
 	 */
 	@Override
 	public void updateStatus() {
-		List<TChargingPile> list = this.list(new LambdaQueryWrapper<TChargingPile>().eq(TChargingPile::getDelFlag, 0));
-		Map<String, Object> charging_pile_online = redisService.getCacheMap("charging_pile_online");
-		for (TChargingPile chargingPile : list) {
-			Long time = (Long) charging_pile_online.get(chargingPile.getCode());
+		Map<String, Object> charging_gun_online = redisService.getCacheMap("charging_gun_online");
+		Set<String> keySet = charging_gun_online.keySet();
+		List<TChargingGun> list = new ArrayList<>();
+		if(keySet.size() > 0){
+			list = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getDelFlag, 0).in(TChargingGun::getFullNumber, keySet));
+		}
+		for (TChargingGun chargingGun : list) {
+			Long time = (Long) charging_gun_online.get(chargingGun.getFullNumber());
 			if(null != time && System.currentTimeMillis() - time > 60000){
-				TChargingPile chargingPile1 = new TChargingPile();
-				chargingPile1.setId(chargingPile.getId());
-				chargingPile1.setStatus(2);
-				this.updateById(chargingPile1);
-				List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()));
-				for (TChargingGun chargingGun : list1) {
-					TChargingGun chargingGun1 = new TChargingGun();
-					chargingGun1.setId(chargingGun.getId());
-					chargingGun1.setStatus(1);
-					chargingGunService.updateById(chargingGun1);
+				TChargingGun chargingGun1 = new TChargingGun();
+				chargingGun1.setId(chargingGun.getId());
+				chargingGun1.setStatus(1);
+				chargingGunService.updateById(chargingGun1);
+				
+				//桩处于正常,桩所属的枪都处于非正常,修改桩状态为异常
+				TChargingPile chargingPile = this.getById(chargingGun.getChargingPileId());
+				List<TChargingGun> list1 = chargingGunService.list(new LambdaQueryWrapper<TChargingGun>().eq(TChargingGun::getChargingPileId, chargingPile.getId()).eq(TChargingGun::getDelFlag, 0));
+				int size = list1.stream().filter(s -> s.getStatus() == 1 || s.getStatus() == 7).collect(Collectors.toList()).size();
+				if(chargingPile.getStatus() == 1 && list1.size() == size){
+					TChargingPile chargingPile1 = new TChargingPile();
+					chargingPile1.setId(chargingGun.getChargingPileId());
+					chargingPile1.setStatus(2);
+					this.updateById(chargingPile1);
 				}
 				
 				//添加记录
-				TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingPile.getId())
-						.eq(TFaultMessage::getStatus, 1).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime));
+				TFaultMessage faultMessage = faultMessageService.getOne(new LambdaQueryWrapper<TFaultMessage>().eq(TFaultMessage::getChargingPileId, chargingGun.getChargingPileId())
+						.eq(TFaultMessage::getChargingGunId, chargingGun.getId()).eq(TFaultMessage::getStatus, 1).eq(TFaultMessage::getDelFlag, 0).isNull(TFaultMessage::getEndTime));
 				if(null == faultMessage){
 					faultMessage = new TFaultMessage();
-					faultMessage.setSiteId(chargingPile.getSiteId());
-					faultMessage.setChargingPileId(chargingPile.getId());
+					faultMessage.setSiteId(chargingGun.getSiteId());
+					faultMessage.setChargingPileId(chargingGun.getChargingPileId());
+					faultMessage.setChargingGunId(chargingGun.getId());
 					faultMessage.setStatus(1);
 					faultMessage.setDownTime(LocalDateTime.now());
 					faultMessage.setCreateTime(LocalDateTime.now());
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java
index c9cf126..6ddc88c 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TFaultMessageServiceImpl.java
@@ -2,24 +2,33 @@
 
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.chargingPile.api.feignClient.PartnerClient;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.chargingPile.api.model.TFaultMessage;
+import com.ruoyi.chargingPile.domain.SiteMenu;
 import com.ruoyi.chargingPile.mapper.TFaultMessageMapper;
-import com.ruoyi.chargingPile.service.ISiteService;
-import com.ruoyi.chargingPile.service.TChargingPileNotificationService;
-import com.ruoyi.chargingPile.service.TChargingPileService;
-import com.ruoyi.chargingPile.service.TFaultMessageService;
+import com.ruoyi.chargingPile.service.*;
 import com.ruoyi.common.core.constant.MsgConstants;
 import com.ruoyi.common.core.utils.HttpUtils;
 import com.ruoyi.common.core.utils.MsgUtil;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.other.api.feignClient.RoleSiteClient;
+import com.ruoyi.other.api.feignClient.UserSiteClient;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.ruoyi.system.api.feignClient.SysUserRoleClient;
+import com.ruoyi.system.api.model.SysUserRoleVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -39,6 +48,21 @@
     private TChargingPileService chargingPileService;
     @Autowired
     private TChargingPileNotificationService chargingPileNotificationService;
+    
+    @Resource
+    private SysUserClient sysUserClient;
+    
+    @Resource
+    private IPartnerService partnerService;
+    
+    @Resource
+    private UserSiteClient userSiteClient;
+    
+    @Resource
+    private RoleSiteClient roleSiteClient;
+    
+    @Resource
+    private SysUserRoleClient sysUserRoleClient;
 
     @Override
     public void add(TFaultMessage dto) {
@@ -66,6 +90,29 @@
      */
     @Override
     public List<TFaultMessage> getFaultMessageList(PageInfo<TFaultMessage> pageInfo, Integer siteId) {
-        return this.baseMapper.getFaultMessageList(pageInfo, siteId);
+        //校验合作商权限
+        List<Integer> siteIds = new ArrayList<>();
+        if(null == siteId || 0 == siteId){
+            SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+            Integer roleType = sysUser.getRoleType();
+            Integer objectId = sysUser.getObjectId();
+            //合作商
+            if(roleType == 2){
+                Set<Integer> data = partnerService.authSite(objectId, SiteMenu.SITE_LIST);
+                siteIds = new ArrayList<>(data);
+            }else{
+                //非管理员需要根据角色和用户配置查询允许的站点数据
+                if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+                    List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
+                    List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
+                    List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
+                    data.addAll(data1);
+                    siteIds = data;
+                }
+            }
+        }else{
+            siteIds.add(siteId);
+        }
+        return this.baseMapper.getFaultMessageList(pageInfo, siteIds);
     }
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java
index 3832dc5..c1f07c9 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TRepairServiceImpl.java
@@ -5,24 +5,32 @@
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.chargingPile.api.model.TRepair;
+import com.ruoyi.chargingPile.domain.SiteMenu;
 import com.ruoyi.chargingPile.mapper.TRepairMapper;
-import com.ruoyi.chargingPile.service.ISiteService;
-import com.ruoyi.chargingPile.service.TChargingPileNotificationService;
-import com.ruoyi.chargingPile.service.TChargingPileService;
-import com.ruoyi.chargingPile.service.TRepairService;
+import com.ruoyi.chargingPile.service.*;
 import com.ruoyi.common.core.constant.MsgConstants;
 import com.ruoyi.common.core.utils.HttpUtils;
 import com.ruoyi.common.core.utils.MsgUtil;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.page.BasePage;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.other.api.feignClient.RoleSiteClient;
+import com.ruoyi.other.api.feignClient.UserSiteClient;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.ruoyi.system.api.feignClient.SysUserRoleClient;
+import com.ruoyi.system.api.model.SysUserRoleVo;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -41,6 +49,25 @@
 	private TChargingPileService chargingPileService;
 	@Autowired
 	private TChargingPileNotificationService chargingPileNotificationService;
+	
+	@Resource
+	private SysUserClient sysUserClient;
+	
+	@Resource
+	private IPartnerService partnerService;
+	
+	@Resource
+	private UserSiteClient userSiteClient;
+	
+	@Resource
+	private RoleSiteClient roleSiteClient;
+	
+	@Resource
+	private SysUserRoleClient sysUserRoleClient;
+	
+	
+	
+	
 	/**
 	 * 获取报修记录列表
 	 * @param name
@@ -48,8 +75,31 @@
 	 * @return
 	 */
 	@Override
-	public List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, String siteId) {
-		return this.baseMapper.getRepairList(pageInfo, name, siteId);
+	public List<TRepair> getRepairList(PageInfo<TRepair> pageInfo, String name, Integer siteId) {
+		//校验合作商权限
+		List<Integer> siteIds = new ArrayList<>();
+		if(null == siteId || 0 == siteId){
+			SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+			Integer roleType = sysUser.getRoleType();
+			Integer objectId = sysUser.getObjectId();
+			//合作商
+			if(roleType == 2){
+				Set<Integer> data = partnerService.authSite(objectId, SiteMenu.SITE_LIST);
+				siteIds = new ArrayList<>(data);
+			}else{
+				//非管理员需要根据角色和用户配置查询允许的站点数据
+				if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+					List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
+					List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
+					List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
+					data.addAll(data1);
+					siteIds = data;
+				}
+			}
+		}else{
+			siteIds.add(siteId);
+		}
+		return this.baseMapper.getRepairList(pageInfo, name, siteIds);
 	}
 
 	@Override
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
index c9b1ea5..34cc583 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml
@@ -57,7 +57,7 @@
             </if>
             AND site_id IS NULL
             AND (parent_id IS NULL OR audit_status = 1 OR audit_status = 2)
-            AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+
         </where>
         ORDER BY create_time DESC
     </select>
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
index 6a5ef5e..2b4d866 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileMapper.xml
@@ -87,7 +87,7 @@
         select
         a.id,
         a.status,
-        CONCAT(b.number, a.name) as name,
+        CONCAT(b.name, a.name) as name,
         a.parking_number as parkingNumber
         from t_charging_gun a
         left join t_charging_pile b on (a.charging_pile_id = b.id)
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileNotificationMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileNotificationMapper.xml
index e35a362..2901664 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileNotificationMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TChargingPileNotificationMapper.xml
@@ -17,9 +17,23 @@
     <sql id="Base_Column_List">
         id, site_id, charging_pile_id, content, create_time, del_flag
     </sql>
+    <insert id="saveData">
+            insert into t_charging_pile_notification(
+            <if test="siteId != null and siteId != 0">site_id,</if>
+            <if test="chargingPileId != null and chargingPileId != 0">charging_pile_id,</if>
+            <if test="phone != null and phone != ''">phone,</if>
+            <if test="content != null and content != ''">content,</if>
+            create_time
+            )values(
+            <if test="siteId != null and siteId != 0">#{siteId},</if>
+            <if test="chargingPileId != null and chargingPileId != 0">#{chargingPileId},</if>
+            <if test="phone != null and phone != ''">#{phone},</if>
+            <if test="content != null and content != ''">#{content},</if>
+            sysdate()
+            )
+    </insert>
 
-    
-    
+
     <select id="chargingPileNotificationPageList" resultType="com.ruoyi.chargingPile.api.model.TChargingPileNotification">
         select
         a.id,
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml
index cd1ff30..538c633 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TFaultMessageMapper.xml
@@ -32,8 +32,11 @@
         left join t_charging_pile b on (a.charging_pile_id = b.id)
         left join t_site c on (a.site_id = c.id)
         where a.del_flag = 0
-        <if test="null != siteId">
-            and a.site_id = #{siteId}
+        <if test="null != siteIds and siteIds.size() > 0">
+            and a.site_id in
+            <foreach collection="siteIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
         </if>
         order by a.create_time desc
     </select>
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TRepairMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TRepairMapper.xml
index 6c7b52f..6e02964 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TRepairMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TRepairMapper.xml
@@ -33,8 +33,11 @@
         <if test="null != name and '' != name">
             and a.repairman like CONCAT('%', #{name}, '%')
         </if>
-        <if test="null != siteId">
-            and a.site_id = #{siteId}
+        <if test="null != siteIds and siteIds.size() > 0">
+            and a.site_id in
+            <foreach collection="siteIds" item="item" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
         </if>
         order by a.create_time desc
     </select>
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/SwitchwayGate.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/SwitchwayGate.java
index 2ab74a0..c7750d3 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/SwitchwayGate.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/model/SwitchwayGate.java
@@ -1,9 +1,13 @@
 package com.ruoyi.integration.barrierGate.model;
 
+import com.alibaba.nacos.common.utils.MD5Utils;
 import com.ruoyi.common.core.utils.MD5Util;
 import lombok.Data;
 import lombok.experimental.Accessors;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.security.MD5Encoder;
+
+import java.nio.charset.Charset;
 
 /**
  * @author zhibing.pu
@@ -46,5 +50,4 @@
 		this.setSign(encoder);
 		return this;
 	}
-	
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java
index 4904d6b..ab49ae7 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/SwitchwayGateService.java
@@ -40,18 +40,4 @@
 		}
 		return success;
 	}
-	
-	
-//	public static void main(String[] args) {
-//		SwitchwayGateService switchwayGateService = new SwitchwayGateService();
-//		SwitchwayGateReq req = new SwitchwayGateReq();
-//		req.setAction("close");
-//		req.setChannel("001");
-//		Boolean success = switchwayGateService.gateService(req);
-//		if(success){
-//			log.info("调用成功");
-//		}else{
-//			log.info("调用失败");
-//		}
-//	}
 }
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
index f1271ae..1fa5baf 100644
--- 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
@@ -43,13 +43,12 @@
 
     /**
      * 批量查询
-     * @param orderId
      * @return
      */
-    @PostMapping(value = "/getOrderInfoByCodes")
-    public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@RequestParam("orderId") String orderId){
+    @GetMapping(value = "/getOrderInfoByCodes/{ids}")
+    public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@PathVariable("ids") String ids){
         List<UploadRealTimeMonitoringData> res = new ArrayList<>();
-        for (String s : orderId.split(",")) {
+        for (String s : ids.split(",")) {
             List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(s);
             if(dataByOrderCode.size() > 0){
                 UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(0);
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 2463e5e..ed002bf 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
@@ -6,6 +6,7 @@
 import com.ruoyi.common.core.dto.MongoChargingOrderQuery;
 
 import java.text.ParseException;
+import java.util.Date;
 import java.util.List;
 
 public interface UploadRealTimeMonitoringDataService extends BaseService<UploadRealTimeMonitoringData> {
@@ -26,4 +27,6 @@
     UploadRealTimeMonitoringData getLastDataById(String transaction_serial_number);
 
 	void delete(String id);
+
+	void updateById(String id);
 }
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 c23a6a6..6d56cff 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
@@ -8,12 +8,14 @@
 import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
 import com.ruoyi.common.core.dto.MongoChargingOrderQuery;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 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.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Service;
 
 import java.text.ParseException;
@@ -68,7 +70,7 @@
 //            query.addCriteria(Criteria.where("transaction_serial_number").in(values));
 //        }
         if (mongoChargingOrderQuery.getCode() != null && !mongoChargingOrderQuery.getCode().isEmpty()) {
-            query.addCriteria(Criteria.where("transaction_serial_number").regex(mongoChargingOrderQuery.getCode(), "i")); // "i" 表示不区分大小写
+            query.addCriteria(Criteria.where("transaction_serial_number").regex(mongoChargingOrderQuery.getCode(),"i")); // "i" 表示不区分大小写
         }
         if (mongoChargingOrderQuery.getOrderType() !=null){
             query.addCriteria(Criteria.where("orderType").is(mongoChargingOrderQuery.getOrderType()));
@@ -86,21 +88,21 @@
             query.addCriteria(Criteria.where("status").is(mongoChargingOrderQuery.getStatus()));
         }
 
-        if (mongoChargingOrderQuery.getStartTime() != null) {
-            String[] split = mongoChargingOrderQuery.getStartTime().split(" - ");
+        if (mongoChargingOrderQuery.getCreateTime() != null) {
+            String[] split = mongoChargingOrderQuery.getCreateTime().split(" - ");
 
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Date start = dateFormat.parse(split[0]);
             Date end = dateFormat.parse(split[1]);
-            query.addCriteria(Criteria.where("startTime").gte(start).lt(end));
+            query.addCriteria(Criteria.where("create_time").gte(start).lt(end));
         }
 
-        if (mongoChargingOrderQuery.getEndTime() != null && mongoChargingOrderQuery.getEndTime() != null) {
-            String[] split = mongoChargingOrderQuery.getEndTime().split(" - ");
+        if (mongoChargingOrderQuery.getLastTime() != null && mongoChargingOrderQuery.getLastTime() != null) {
+            String[] split = mongoChargingOrderQuery.getLastTime().split(" - ");
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             Date start = dateFormat.parse(split[0]);
             Date end = dateFormat.parse(split[1]);
-            query.addCriteria(Criteria.where("lastTime").gte(start).lt(end));
+            query.addCriteria(Criteria.where("last_time").gte(start).lt(end));
         }
 
 
@@ -112,17 +114,31 @@
 
 
         long totalElements = mongoTemplate.count(query, UploadRealTimeMonitoringData.class);
-        // 设置分页
-        Pageable pageable = PageRequest.of(mongoChargingOrderQuery.getPageCurr(), mongoChargingOrderQuery.getPageSize());
+
+        // 创建带有排序的 Pageable 对象
+        Pageable pageable = PageRequest.of(
+                mongoChargingOrderQuery.getPageCurr()-1,
+                mongoChargingOrderQuery.getPageSize(),
+                Sort.by(Sort.Direction.DESC, "create_time")
+        );
+
+        // 设置分页和排序
         query.with(pageable);
-        query.with(Sort.by(Sort.Direction.DESC,"create_time"));
+
+        // 执行查询并获取 Page 对象
+        List<UploadRealTimeMonitoringData> page = mongoTemplate.find(query, UploadRealTimeMonitoringData.class,"upload_real_time_monitoring_data");
+
+        // 设置分页
+//        Pageable pageable = PageRequest.of(mongoChargingOrderQuery.getPageSize()*(mongoChargingOrderQuery.getPageCurr()-1), mongoChargingOrderQuery.getPageSize());
+//        query.with(pageable);
+//        query.with(Sort.by(Sort.Direction.DESC,"create_time"));
         List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find(
                 query
                 , UploadRealTimeMonitoringData.class);
 
         UploadRealTimeMonitoringPageData uploadRealTimeMonitoringPageData = new UploadRealTimeMonitoringPageData();
         uploadRealTimeMonitoringPageData.setCount(totalElements);
-        uploadRealTimeMonitoringPageData.setRecords(uploadRealTimeMonitoringData);
+        uploadRealTimeMonitoringPageData.setRecords(page);
         return uploadRealTimeMonitoringPageData;
     }
 
@@ -145,4 +161,14 @@
         mongoTemplate.remove(byId);
     }
 
+    @Override
+    public void updateById(String id) {
+        // 创建查询条件
+        Query query = new Query(Criteria.where("_id").is(id));
+        // 创建更新对象
+        Update update = new Update().set("last_time", new Date());
+        // 执行更新操作
+        mongoTemplate.updateFirst(query, update, UploadRealTimeMonitoringData.class);
+    }
+
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
index be490dc..4a4cb95 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/produce/ChargingMessageListener.java
@@ -149,7 +149,7 @@
                 BeanUtils.copyProperties(pingMessage,ping);
                 pingService.create(ping);
     
-                chargingPileClient.updateChargingPileStatus(pingMessage.getCharging_pile_code(), pingMessage.getCharging_gun_status());
+                chargingPileClient.updateChargingPileStatus(pingMessage.getCharging_pile_code(), pingMessage.getCharging_gun_code(), pingMessage.getCharging_gun_status());
                 break;
             case SendTagConstant.END_CHARGE:
                 EndChargeMessage endChargeMessage = message.getEndChargeMessage();
@@ -201,7 +201,7 @@
                     uploadRealTimeMonitoringData.setElectrovalence_all(accountingStrategyDetail.getElectrovalence());
                     uploadRealTimeMonitoringData.setService_charge(accountingStrategyDetail.getServiceCharge());
                     if (Objects.nonNull(data)) {
-                        data.setLast_time(new Date());
+                        uploadRealTimeMonitoringDataService.updateById(data.getId());
                         uploadRealTimeMonitoringData.setPeriod_electric_price(uploadRealTimeMonitoringDataMessage.getPaid_amount().subtract(data.getPaid_amount()));
                         uploadRealTimeMonitoringData.setPeriod_charging_degree(uploadRealTimeMonitoringDataMessage.getCharging_degree().subtract(data.getCharging_degree()));
                         uploadRealTimeMonitoringData.setPeriod_service_price(uploadRealTimeMonitoringDataMessage.getCharging_degree().multiply(accountingStrategyDetail.getServiceCharge()).setScale(4, RoundingMode.HALF_UP));
@@ -337,10 +337,12 @@
                 // 添加实时上传记录结束记录
                 // 查询mogondb上一条数据
                 UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataService.getLastDataById(transactionRecordMessage.getTransaction_serial_number());
-                UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData();
-                BeanUtils.copyProperties(data,uploadRealTimeMonitoringData);
-                uploadRealTimeMonitoringData.setStatus(5);
-                uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
+                if(Objects.nonNull(data) && data.getStatus() != 5){
+                    UploadRealTimeMonitoringData uploadRealTimeMonitoringData = new UploadRealTimeMonitoringData();
+                    BeanUtils.copyProperties(data,uploadRealTimeMonitoringData);
+                    uploadRealTimeMonitoringData.setStatus(5);
+                    uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
+                }
                 break;
             case SendTagConstant.UPDATE_BALANCE_REPLY:
                 UpdateBalanceReplyMessage updateBalanceReplyMessage = message.getUpdateBalanceReplyMessage();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 8c33638..3932ca0 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -196,6 +196,7 @@
                 payOrderInfoDto.setPayAmount(byId.getPaymentAmount());
                 payOrderInfoDto.setPayTime(byId.getCreateTime());
                 payOrderInfoDto.setRefundAmount(byId.getRefundAmount());
+                payOrderInfoDto.setRechargeAmount(byId.getRechargeAmount());
                 return R.ok(payOrderInfoDto);
             case 2:
                 TShoppingOrder byId1 = shoppingOrderService.getById(orderId);
@@ -207,6 +208,7 @@
                 payOrderInfoDto1.setPayAmount(byId1.getPaymentAmount());
                 payOrderInfoDto1.setPayTime(byId1.getCreateTime());
                 payOrderInfoDto1.setRefundAmount(byId1.getRefundAmount());
+                payOrderInfoDto1.setRechargeAmount(byId1.getPaymentAmount());
                 return R.ok(payOrderInfoDto1);
             case 3:
                 TVipOrder byId2 = vipOrderService.getById(orderId);
@@ -218,6 +220,7 @@
                 payOrderInfoDto2.setPayAmount(byId2.getPaymentAmount());
                 payOrderInfoDto2.setPayTime(byId2.getCreateTime());
                 payOrderInfoDto2.setRefundAmount(byId2.getRefundAmount());
+                payOrderInfoDto2.setRechargeAmount(byId2.getPaymentAmount());
                 return R.ok(payOrderInfoDto2);
             //todo luo 停车场订单
 //                case 4:
@@ -368,6 +371,18 @@
             String format = tChargingOrderAccountingStrategy.getCreateTime().format(formatter);
             tChargingOrderAccountingStrategy.setStartTime(format+" "+tChargingOrderAccountingStrategy.getStartTime());
             tChargingOrderAccountingStrategy.setEndTime(format+" "+tChargingOrderAccountingStrategy.getEndTime());
+            if (byId.getVipDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){
+                BigDecimal multiply = byId.getVipDiscountAmount().divide(byId.getServiceCharge(), 2)
+                        .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
+                tChargingOrderAccountingStrategy.setVipDiscount(multiply);
+            }
+            bigDecimal = bigDecimal.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
+
+            if (byId.getCouponDiscountAmount()!=null && byId.getServiceCharge().compareTo(BigDecimal.ZERO) != 0){
+                BigDecimal multiply = byId.getCouponDiscountAmount().divide(byId.getServiceCharge(), 2)
+                        .multiply(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice());
+                tChargingOrderAccountingStrategy.setCouponDiscount(multiply);
+            }
         }
         chargingOrderInfoVO.setList(list);
         return AjaxResult.success(chargingOrderInfoVO);
@@ -500,7 +515,7 @@
     @PostMapping(value = "/chargingOrderWXCallback")
     public void chargingOrderWXCallback(@RequestParam("out_trade_no") String out_trade_no, @RequestParam("transaction_id") String transaction_id,
                                         @RequestParam("attach") String attach) {
-        AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(1, out_trade_no, transaction_id, attach);
+        chargingOrderService.chargingOrderCallback(1, out_trade_no, transaction_id, attach);
     }
     
     
@@ -765,6 +780,9 @@
         LocalDate sixBefore = PreviousSixMonths.get();
         Map<String,Object>  map = chargingOrderService.countAll(sixBefore);
         BigDecimal data = parkingLotClient.getRecordAmount(sixBefore).getData();
+        if (map ==null){
+            map = new HashMap<String,Object>();
+        }
         map.put("parkingAmount",data);
         BigDecimal data1 =   shoppingOrderService.getSumAmount(sixBefore);
         map.put("shopAmount",data1);
@@ -784,7 +802,8 @@
     public R watchChargingOrder(@RequestBody MongoChargingOrderQuery mongoChargingOrderQuery) {
 
         mongoChargingOrderQuery.setPageSize(10);
-        UploadRealTimeMonitoringPageData data1 = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery).getData();
+        R<UploadRealTimeMonitoringPageData> all = uploadRealTimeMonitoringDataClient.getAll(mongoChargingOrderQuery);
+        UploadRealTimeMonitoringPageData data1 = all.getData();
 
         List<ChargingOrderAndUploadRealTimeMonitoringDataDto> dtos = new ArrayList<>();
         Map<String,ChargingOrderVO> map  = new HashMap<>();
@@ -898,16 +917,13 @@
             // 获取当前日期
             LocalDate today = LocalDate.now();
             start = statisticsQueryDto.getStartTime();
-            end = statisticsQueryDto.getEndTime();
+            end = statisticsQueryDto.getEndTime().plusDays(1);
             // 获取本月1号的日期
-            YearMonth yearMonth = YearMonth.from(today);
 //            start = yearMonth.atDay(1);
 //
 //            System.out.println("本月1号是: " + start);
         }else if (statisticsQueryDto.getDayType()==4){
-            LocalDate today = LocalDate.now();
-            // 获取当前年份
-            int currentYear = today.getYear();
+
             // 获取今年1月1日的日期
             start = statisticsQueryDto.getStartTime();
             end = statisticsQueryDto.getEndTime();
@@ -916,7 +932,11 @@
             // 获取今年1月1日的日期
             start = statisticsQueryDto.getStartTime();
             end = statisticsQueryDto.getEndTime();
+            if (start.equals(end)){
+                end =  end.plusDays(1);
+            }
         }
+
         List<TChargingOrder> list = chargingOrderService.lambdaQuery().ge(TChargingOrder::getCreateTime, start).le(TChargingOrder::getCreateTime, end).in(TChargingOrder::getSiteId, siteIds).list();
         List<Long> chargingOrderIds = list.stream().map(TChargingOrder::getId).collect(Collectors.toList());
         chargingOrderIds.add(-1L);
@@ -1016,6 +1036,7 @@
             LocalDate startDate = statisticsQueryDto.getStartTime();
             LocalDate endDate = statisticsQueryDto.getEndTime();
 
+
             List<Map<String, Object>> dateRangeStatistics = new ArrayList<>();
 
             // 遍历日期范围
@@ -1045,6 +1066,8 @@
 
             LocalDate startDate = statisticsQueryDto.getStartTime();
             LocalDate endDate = statisticsQueryDto.getEndTime();
+
+
 
             List<Map<String, Object>> dateRangeStatistics = new ArrayList<>();
 
@@ -1165,6 +1188,8 @@
         tCharingUserMapVO.setMap(charMap);
         tCharingUserMapVO.setMap1(charMap1);
         }else {
+
+
             List<Map<String,Object>> map =  chargingOrderService.usersByQuery(statisticsQueryDto);
 
 
@@ -1245,8 +1270,19 @@
 
         //车辆用途
         List<Map<String, Object>> carMap = chargingOrderService.carUserMethod();
+
         //车辆品牌
         List<Map<String, Object>> carBrandMap = chargingOrderService.carUserBrand();
+        List<String> brands = new ArrayList<>();
+        for (Map<String, Object> objectMap : carBrandMap) {
+            brands.add(objectMap.get("vehicle_brand").toString());
+        }
+
+        Long count = chargingOrderService.countCar(brands);
+        Map<String, Object> others = new HashMap<>();
+        others.put("vehicle_brand","其他");
+        others.put("counts",count);
+        carBrandMap.add(others);
         //本地车数量
         Map<String,Object> localCarMap = chargingOrderService.countLocalCar();
 
@@ -1309,7 +1345,7 @@
     @ApiOperation(value = "电站评价", tags = {"管理后台-数据分析-设备运维分析"})
     public R<TCharingUserEquimentVO> equipment(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){
         List<Integer> siteIds =new ArrayList<>();
-        if (statisticsQueryDto.getSiteId()==null) {
+        if (statisticsQueryDto.getSiteId()==null||statisticsQueryDto.getSiteId()==0) {
             Long userId = SecurityUtils.getUserId();
             //获取当前登录的siteIds
             List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
@@ -1669,7 +1705,7 @@
         Long userId = tokenService.getLoginUserApplet().getUserId();
         List<TChargingOrder> list = chargingOrderService.list(Wrappers.lambdaQuery(TChargingOrder.class)
                 .eq(TChargingOrder::getAppUserId, userId)
-                .eq(TChargingOrder::getStatus, 3));
+                .in(TChargingOrder::getStatus, Arrays.asList(1,2,3,4)));
         List<Integer> gunIds = list.stream().map(TChargingOrder::getChargingGunId).collect(Collectors.toList());
         return R.ok(gunIds);
     }
@@ -1773,4 +1809,16 @@
         EndOfChargePageInfo endOfChargePageInfo = chargingOrderService.getEndOfChargePageInfo(id);
         return AjaxResult.success(endOfChargePageInfo);
     }
+
+
+    /**
+     * 获取订单数据
+     * @param order
+     * @return
+     */
+    @PostMapping("/getChargingOrder")
+    public R<List<TChargingOrder>> getChargingOrder(@RequestBody TChargingOrderVo order){
+        List<TChargingOrder> chargingOrder = chargingOrderService.getChargingOrder(order);
+        return R.ok(chargingOrder);
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
index 9dadd2f..7d688c5 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java
@@ -28,6 +28,8 @@
 import com.ruoyi.order.service.TShoppingOrderService;
 import com.ruoyi.common.core.dto.ExchangeDto;
 import com.ruoyi.common.core.utils.OrderCodeUtil;
+import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
 import com.ruoyi.other.api.feignClient.CouponClient;
 import com.ruoyi.other.api.feignClient.GoodsClient;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
@@ -118,6 +120,20 @@
                 byId.setReceivingName(data.getName()+"-"+data.getPhone());
                 byId.setReceivingAddress(data.getAddress());
             }
+        }
+        switch (byId.getOrderType()){
+            case 1:
+                TGoods data = goodsClient.getGoodsById(byId.getGoodsId()).getData();
+                if (data!=null){
+                    byId.setName(data.getName());
+                }
+                break;
+            case 2:
+                TCoupon data1 = couponClient.getCouponById1(byId.getCouponId()).getData();
+                if (data1!=null){
+                    byId.setName(data1.getName());
+                }
+                break;
         }
         return AjaxResult.success(byId);
     }
@@ -221,6 +237,46 @@
         }
         return R.ok(res);
     }
+
+    @GetMapping("/getCount")
+    public R<Integer> getCount(@RequestParam("goodId") Integer goodId,@RequestParam("goodeType")Integer goodeType,@RequestParam("buyType")Integer buyType){
+        if (buyType==1){
+            //现金
+            if (goodeType==1){
+                //商品
+                Integer reduce = tShoppingOrderService.list(new QueryWrapper<TShoppingOrder>()
+                                .eq("order_type",1)
+                                .eq("goods_id", goodId)
+                                .isNull("refund_status"))
+                        .stream().map(TShoppingOrder::getPurchaseQuantity).reduce(0, Integer::sum);
+                return R.ok(reduce);
+            }else {
+                //优惠券
+                Integer reduce = tShoppingOrderService.list(new QueryWrapper<TShoppingOrder>()
+                                .eq("order_type",2)
+                                .eq("coupon_id", goodId)
+                                .isNull("refund_status"))
+                        .stream().map(TShoppingOrder::getPurchaseQuantity).reduce(0, Integer::sum);
+                return R.ok(reduce);
+            }
+
+        }else {
+            //兑换
+            if (goodeType==1){
+                Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>().eq("order_type",1)
+                                .ne("status",4).eq("goods_id", goodId))
+                        .stream().map(TExchangeOrder::getPurchaseQuantity).reduce(0, Integer::sum);
+                return R.ok(reduce);
+            }else {
+                Integer reduce = exchangeOrderService.list(new QueryWrapper<TExchangeOrder>().eq("order_type",2)
+                        .ne("status",4).eq("coupon_id", goodId))
+                        .stream().map(TExchangeOrder::getPurchaseQuantity).reduce(0, Integer::sum);
+                return R.ok(reduce);
+            }
+        }
+
+
+    }
     /**
      * 管理后台 根据t_app_coupon订单ids查询优惠券的订单编号
      * @param goodsIds  订单号-商品类型
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
index 96f71ec..0322582 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
@@ -65,7 +65,7 @@
                 .like(manageOrderAppealQuery.getPhone() != null, TOrderAppeal::getPhone, manageOrderAppealQuery.getPhone())
                 .eq(manageOrderAppealQuery.getOrderType() != null, TOrderAppeal::getOrderType, manageOrderAppealQuery.getOrderType())
                 .in(TOrderAppeal::getOrderType, 1, 2)
-                .orderByDesc(TOrderAppeal::getFeedbackTime)
+                .orderByDesc(TOrderAppeal::getCreateTime)
                 .page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize()));
 
         for (TOrderAppeal record : page.getRecords()) {
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 00bbda4..1db4d3a 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
@@ -48,8 +48,8 @@
 
     @ApiOperation(tags = {"小程序-订单评价"},value = "充电订单评价标签及数量查询")
     @GetMapping(value = "/getTagCount")
-    public AjaxResult<List<TEvaluationTagVO>> getTagCount() {
-        return AjaxResult.ok(orderEvaluateService.getTagCount());
+    public AjaxResult<List<TEvaluationTagVO>> getTagCount(@RequestParam(value = "siteId")@ApiParam(value = "站点id")Integer siteId) {
+        return AjaxResult.ok(orderEvaluateService.getTagCount(siteId));
     }
 
     @ApiOperation(tags = {"小程序-订单评价"},value = "充电订单评价分页列表查询")
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java
index c195f20..9bfc93d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java
@@ -5,6 +5,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @author zhibing.pu
  * @Date 2024/8/12 19:07
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
index 880dca7..ae3424d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
@@ -24,6 +24,7 @@
     private LocalDateTime payTime;
     @ApiModelProperty("退款金额")
     private BigDecimal refundAmount;
+    private BigDecimal rechargeAmount;
 
 
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
index f5d173a..ee99d41 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -139,4 +139,6 @@
 	List<Map<String, Object>> needElec1(@Param("siteIds")List<Integer> siteIds,@Param("statisticsQueryDto")  ChargingStatisticsQueryDto statisticsQueryDto);
 
 	Long countNoTag();
+
+    Long countCar(@Param("brands") List<String> brands);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java
index 75a7287..831fde2 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java
@@ -41,7 +41,7 @@
      * @return
      */
     List<GetOrderEvaluatePageListDTO> getPageList(@Param("query") GetOrderEvaluatePageList pageList, @Param("evaluationTagIds") List<Integer> evaluationTagIds,
-                                                  PageInfo<GetOrderEvaluatePageListDTO> pageInfo);
+                                                  @Param("siteIds") List<Integer> siteIds, PageInfo<GetOrderEvaluatePageListDTO> pageInfo);
 
     /**
      * 查询站点下的所有订单评价
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 705fae3..c6ed1b2 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -18,6 +18,7 @@
 import com.ruoyi.order.dto.*;
 import com.ruoyi.order.vo.ChargingOrderListInfoVO;
 import com.ruoyi.order.vo.EndOfChargePageInfo;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.time.LocalDate;
 import java.util.List;
@@ -268,4 +269,14 @@
 	EndOfChargePageInfo getEndOfChargePageInfo(String id);
 
 	Long countNoTag();
+	
+	
+	/**
+	 * 获取订单数据
+	 * @param order
+	 * @return
+	 */
+	List<TChargingOrder> getChargingOrder(TChargingOrderVo order);
+
+    Long countCar(List<String> brands);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java
index 8444a5b..e95295d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java
@@ -31,7 +31,7 @@
      * 获取评价标签
      * @return
      */
-    List<TEvaluationTagVO> getTagCount();
+    List<TEvaluationTagVO> getTagCount(Integer siteId);
 
     /**
      * 充电订单评价分页列表查询
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
index 9d59216..bb69665 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java
@@ -91,6 +91,7 @@
         chargingBillVO.setOrderCount(list1.size());
         BigDecimal paymentAmountTotal = new BigDecimal("0");
         BigDecimal orderAmountTotal = new BigDecimal("0");
+        BigDecimal refundAmountTotal = new BigDecimal("0");
         BigDecimal electrovalenceTotal = new BigDecimal("0");
         BigDecimal serviceChargeTotal = new BigDecimal("0");
         BigDecimal commissionAmountTotal = new BigDecimal("0");
@@ -364,6 +365,7 @@
                 }else if (tChargingOrder.getPaymentAmount()!=null){
                     paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount());
                 }
+
                 // 累加订单金额
                 if (tChargingOrder.getOrderAmount()!=null){
                     orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount());
@@ -372,8 +374,10 @@
                 if (tChargingOrder.getElectrovalence()!=null){
                     electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
                 }
-                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus()!=null&&  tChargingOrder.getRefundStatus()==2){
-                    refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
+                List<TChargingOrderRefund> list2 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId())
+                        .eq(TChargingOrderRefund::getRefundStatus, 2).list();
+                for (TChargingOrderRefund tChargingOrderRefund : list2) {
+                    refundAmountTotal =refundAmountTotal.add(tChargingOrder.getRefundAmount());
                 }
                 // 累加累计服务费
                 if (tChargingOrder.getServiceCharge()!=null){
@@ -410,7 +414,7 @@
         chargingBillVO.setCommissionAmount(commissionAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
         chargingBillVO.setSharingAmount(sharingAmountTotal.setScale(2, RoundingMode.HALF_DOWN));
         chargingBillVO.setDiscount(discountTotal);
-
+        chargingBillVO.setRefundAmount(refundAmountTotal);
 
         pageInfo.setRecords(list);
         chargingBillVO.setList(pageInfo);
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 767007b..deab138 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
@@ -256,11 +256,13 @@
 		myChargingOrderInfo.setChargeMode(chargingGun.getChargeMode());
 		String name = chargingGunClient.getAllName(chargingOrder.getChargingGunId()).getData();
 		myChargingOrderInfo.setName(name);
-		if(null != chargingOrder.getAppUserCarId()){
-			TAppUserCar tAppUserCar = appUserCarClient.getCarByIds(Arrays.asList(chargingOrder.getAppUserCarId())).getData().get(0);
-			myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
-		}else{
-			myChargingOrderInfo.setLicensePlate("无");
+		if(Objects.nonNull(chargingOrder.getAppUserCarId())){
+			TAppUserCar tAppUserCar = appUserCarClient.getCarById(chargingOrder.getAppUserCarId().toString()).getData();
+			if(null != tAppUserCar){
+				myChargingOrderInfo.setLicensePlate(tAppUserCar.getLicensePlate());
+			}else{
+				myChargingOrderInfo.setLicensePlate("无");
+			}
 		}
 		myChargingOrderInfo.setStartTime(chargingOrder.getStartTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
 		myChargingOrderInfo.setEndTime(chargingOrder.getEndTime().atZone(ZoneId.systemDefault()).toInstant().getEpochSecond() * 1000);
@@ -387,7 +389,7 @@
 		TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId())
 				.in(TChargingOrder::getStatus, Arrays.asList(1, 2, 3)).eq(TChargingOrder::getDelFlag, 0));
 		if(null != one){
-			return AjaxResult.error("充电枪正在充电桩中,启动失败");
+			return AjaxResult.error("充电枪正在充电中,启动失败");
 		}
 		//查询当前充电枪是否有正在支付的订单
 		one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getChargingGunId, addChargingOrder.getId())
@@ -447,6 +449,7 @@
 		chargingOrder.setVipDiscountAmount(BigDecimal.ZERO);
 		chargingOrder.setOrderSource(0);
 		chargingOrder.setTitle("【充电桩充电】" + chargingPile.getNumber() + "号桩/" + tChargingGun.getCode() + "号枪");
+		chargingOrder.setStatus(1);
 		
 		Site site = siteClient.getSiteByIds(Arrays.asList(tChargingGun.getSiteId())).getData().get(0);
 		Integer accountingStrategyId = tChargingGun.getAccountingStrategyId();
@@ -685,9 +688,6 @@
 		String code = chargingOrder.getCode();
 		String key = "AQJC_" + chargingOrder.getChargingGunId();
 		List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
-		if(null == data || data.size() == 0){
-			return false;
-		}
 		log.error(code + ":-------------------开始检查调起充电结果-------------------" + data.toString());
 		if(data.size() != 0){
 			PlatformStartChargingReply platformStartChargingReply = data.get(1);
@@ -737,7 +737,7 @@
 				counter = (null == counter ? 0 : counter) + 1;
 				boot_failed_map.put(code, counter);
 				//启动失败
-				preChargeCheck1.setStartupSuccess(3);
+				preChargeCheck1.setStartupSuccess(1);
 				preChargeCheck1.setFailureCause(0);
 				redisService.setCacheObject(key, preChargeCheck1, 24L, TimeUnit.HOURS);
 				return false;
@@ -981,16 +981,17 @@
 		chargingOrder.setId(Long.valueOf(id));
 		chargingOrder.setAppUserId(order.getAppUserId());
 		chargingOrder.setEndTime(LocalDateTime.now());
+		chargingOrder.setStatus(4);
 		chargingOrder.setEndMode(1);
 		this.updateById(chargingOrder);
 		
-		String code1 = chargingOrder.getCode();
-		TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+		String code1 = order.getCode();
+		TChargingGun chargingGun = chargingGunClient.getChargingGunById(order.getChargingGunId()).getData();
 		//异步线程处理停机
 		ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1);
 		cachedThreadPool.execute(()->{
 			//调用硬件停止充电,停止成功后开始计算费用退款
-			TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingOrder.getChargingPileId()).getData();
+			TChargingPile chargingPile = chargingPileClient.getChargingPileById(order.getChargingPileId()).getData();
 			PlatformStopCharging platformStopCharging = new PlatformStopCharging();
 			platformStopCharging.setCharging_pile_code(chargingPile.getCode());
 			platformStopCharging.setCharging_gun_code(chargingGun.getCode());
@@ -1097,20 +1098,22 @@
 				inviteUser.setAward(num1);
 				inviteUserClient.updateInviteUser(inviteUser);
 			}
-			TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
-			String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
-			appUserIntegralChange.setCode(code);
-			appUserIntegralChange.setAppUserId(appUser1.getId());
-			appUserIntegralChange.setChangeType(5);
-			appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
-			appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
-			appUserIntegralChange.setCreateTime(LocalDateTime.now());
-			appUserIntegralChange.setOrderCode(chargingOrder.getCode());
-			appUserIntegralChange.setExtension(chargingOrder.getId().toString());
-			appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
-			
-			appUser1.setPoints(appUser1.getPoints() + num1);
-			appUserClient.updateAppUser(appUser1);
+			if(num1 > 0){
+				TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
+				String code = Double.valueOf(Math.random() * 1000).intValue() + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
+				appUserIntegralChange.setCode(code);
+				appUserIntegralChange.setAppUserId(appUser1.getId());
+				appUserIntegralChange.setChangeType(4);
+				appUserIntegralChange.setHistoricalIntegral(appUser1.getPoints());
+				appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
+				appUserIntegralChange.setCreateTime(LocalDateTime.now());
+				appUserIntegralChange.setOrderCode(chargingOrder.getCode());
+				appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+				appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
+				
+				appUser1.setPoints(appUser1.getPoints() + num1);
+				appUserClient.updateAppUser(appUser1);
+			}
 		}
 	}
 	
@@ -1768,7 +1771,7 @@
 	public void endChargeBillingCharge(TransactionRecordMessageVO vo) {
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, vo.getTransaction_serial_number()));
 		Integer status = chargingOrder.getStatus();
-		if(status == 4 || status == 5){
+		if(status == 5){
 			return;
 		}
 		
@@ -1861,9 +1864,7 @@
 		} catch (ParseException e) {
 			throw new RuntimeException(e);
 		}
-		System.err.println(start.getTime() + "\n" + end.getTime() + "\n" + lists.get(0).getStart() + "\n" + lists.get(0).getEnd());
-		
-		
+
 		for (AccountingStrategyDetailOrderVo strategyDetail : lists) {
 			BigDecimal sharp_peak_charge = strategyDetail.getChargingCapacity();
 			TChargingOrderAccountingStrategy chargingOrderAccountingStrategy = new TChargingOrderAccountingStrategy();
@@ -2026,7 +2027,7 @@
 			}
 		}
 		
-		order.setServiceCharge(periodServicePrice_total);
+		order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
 		order.setPaymentAmount(payAmount);
 		order.setRefundAmount(refundAmount);
 		order.setRefundStatus(1);
@@ -2070,17 +2071,19 @@
 				}
 			}
 			
-			TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
-			appUserIntegralChange.setAppUserId(appUser.getId());
-			appUserIntegralChange.setChangeType(2);
-			appUserIntegralChange.setHistoricalIntegral(appUser.getPoints());
-			appUser.setPoints(appUser.getPoints() + integral);
-			appUserIntegralChange.setCurrentIntegral(appUser.getPoints());
-			appUserIntegralChange.setCreateTime(LocalDateTime.now());
-			appUserIntegralChange.setOrderCode(chargingOrder.getCode());
-			appUserIntegralChange.setExtension(chargingOrder.getId().toString());
-			appUserClient.updateAppUser(appUser);
-			appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
+			if(integral > 0){
+				TAppUserIntegralChange appUserIntegralChange = new TAppUserIntegralChange();
+				appUserIntegralChange.setAppUserId(appUser.getId());
+				appUserIntegralChange.setChangeType(2);
+				appUserIntegralChange.setHistoricalIntegral(appUser.getPoints());
+				appUser.setPoints(appUser.getPoints() + integral);
+				appUserIntegralChange.setCurrentIntegral(appUser.getPoints());
+				appUserIntegralChange.setCreateTime(LocalDateTime.now());
+				appUserIntegralChange.setOrderCode(chargingOrder.getCode());
+				appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+				appUserClient.updateAppUser(appUser);
+				appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
+			}
 		}
 
 		//计算用户标签
@@ -2104,7 +2107,7 @@
 			chargingOrderRefund.setRefundTitle("充电完成退款");
 			chargingOrderRefund.setRefundContent("充电完成退款");
 			chargingOrderRefund.setRefundReason("充电完成退款");
-			chargingOrderRefund.setRefundRemark("实际充电消费金额:" + refundAmount);
+			chargingOrderRefund.setRefundRemark("实际充电消费金额:" + chargingOrder.getPaymentAmount());
 			chargingOrderRefund.setRefundTotalAmount(refundAmount);
 			chargingOrderRefund.setPayAmount(rechargeAmount);
 			if(1 == rechargePaymentType){
@@ -2237,6 +2240,9 @@
 				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 					return R.fail("退款金额需小于支付金额");
 				}
+				if ((tChargingOrder.getRechargeAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
+					tChargingOrder.setStatus(5);
+				}
 
 
 				TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
@@ -2303,6 +2309,10 @@
 				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 					return R.fail("退款金额需小于支付金额");
 				}
+				if ((tChargingOrder.getPaymentAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
+					tChargingOrder.setStatus(5);
+				}
+
 				TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund();
 				chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId());
 				chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2353,9 +2363,7 @@
 						tChargingOrder.setRefundStatus(2);
 						tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount()));
 
-						if (payOrderQueryDto.getRefundAmount().compareTo(tChargingOrder.getPaymentAmount())==0){
-							tChargingOrder.setStatus(5);
-						}
+
 						shoppingOrderService.updateById(tChargingOrder);
 
 						shoppingOrderRefundService.save(chargingOrderRefund);
@@ -2370,6 +2378,8 @@
 			if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 				return R.fail("退款金额需小于支付金额");
 			}
+
+
 			TVipOrderRefund chargingOrderRefund = new TVipOrderRefund();
 			chargingOrderRefund.setVipOrderId(tChargingOrder.getId());
 			chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount());
@@ -2449,7 +2459,7 @@
 		}
 		TChargingOrder one = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getAppUserCarId, appUserCar.getId())
 				.eq(TChargingOrder::getDelFlag, 0).gt(TChargingOrder::getStartTime, query.getStartTime())
-				.eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, -1));
+				.eq(TChargingOrder::getRechargePaymentStatus, 2).ne(TChargingOrder::getStatus, 5));
 		return one;
 	}
 
@@ -2582,7 +2592,7 @@
 			tSettlementConfirm.setRemark(dto.getRemark());
 			tSettlementConfirm.setServicePartner(dto.getServicePartner());
 			tSettlementConfirm.setServiceMoney(dto.getServiceMoney());
-			BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner());
+			BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner().multiply(new BigDecimal("0.01")));
 			// 总电损费用
 			BigDecimal divide = tSettlementConfirm.getProportionMoney().divide(subtract, 2, RoundingMode.HALF_DOWN);
 			// 平台承担电损
@@ -2744,10 +2754,17 @@
 			}
 			// 充电总时长
 
-			Long temp = 0L;
+			Long temp = 1L;
 			if (StringUtils.hasLength(stringBuilder.toString())){
-				List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(stringBuilder.substring(0,stringBuilder.length()-1)).getData();
-				temp+=(data6.stream().mapToLong(UploadRealTimeMonitoringData::getCumulative_charging_time).sum()*60);
+				String substring = stringBuilder.substring(0, stringBuilder.length() - 1);
+				for (String s : substring.split(",")) {
+					UploadRealTimeMonitoringData data6 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(s).getData();
+					if (data6!=null){
+						temp+=(data6.getCumulative_charging_time()*60);
+
+					}
+
+				}
 			}
 			List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
 			// 计算充电桩的功率平均值
@@ -2787,7 +2804,7 @@
 				if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
 					// 电站相同比较收入涨幅跌幅
 					if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){
-						BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+						BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome(),2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
 						tSettlementConfirm.setIncomePercentage(subtract+"%");
 					}else {
 						tSettlementConfirm.setIncomePercentage("100"+"%");
@@ -2965,4 +2982,37 @@
 	public Long countNoTag() {
 		return this.baseMapper.countNoTag();
 	}
+	
+	
+	@Override
+	public List<TChargingOrder> getChargingOrder(TChargingOrderVo order) {
+		LambdaQueryWrapper<TChargingOrder> queryWrapper = new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getDelFlag, 0);
+		if(null != order.getChargingPileId()){
+			queryWrapper.eq(TChargingOrder::getChargingPileId, order.getChargingPileId());
+		}
+		if(null != order.getChargingGunId()){
+			queryWrapper.eq(TChargingOrder::getChargingGunId, order.getChargingGunId());
+		}
+		if(null != order.getStatus()){
+			queryWrapper.eq(TChargingOrder::getStatus, order.getStatus());
+		}
+		if(null != order.getAppUserId()){
+			queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
+		}
+		if(null != order.getAppUserId()){
+			queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
+		}
+		if(null != order.getStatusList()){
+			queryWrapper.in(TChargingOrder::getAppUserId, order.getStatusList());
+		}
+		if(null != order.getEndMode()){
+			queryWrapper.eq(TChargingOrder::getEndMode, order.getEndMode());
+		}
+		return this.list(queryWrapper.orderByDesc(TChargingOrder::getCreateTime));
+	}
+
+	@Override
+	public Long countCar(List<String> brands) {
+		return this.baseMapper.countCar(brands);
+	}
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index f216c5c..dee224b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -15,6 +15,7 @@
 import com.ruoyi.account.api.feignClient.AppUserClient;
 import com.ruoyi.account.api.model.TAppUser;
 import com.ruoyi.account.api.model.TAppUserIntegralChange;
+import com.ruoyi.chargingPile.api.feignClient.PartnerClient;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
@@ -24,6 +25,7 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TOrderEvaluate;
 import com.ruoyi.order.api.model.TOrderEvaluateTag;
@@ -41,10 +43,12 @@
 import com.ruoyi.other.api.domain.TEvaluationTag;
 import com.ruoyi.other.api.domain.TIntegralRule;
 import com.ruoyi.other.api.domain.TVip;
-import com.ruoyi.other.api.feignClient.IntegralRuleClient;
-import com.ruoyi.other.api.feignClient.TEvaluationTagClient;
-import com.ruoyi.other.api.feignClient.VipClient;
+import com.ruoyi.other.api.feignClient.*;
 import com.ruoyi.other.api.vo.TEvaluationTagVO;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.ruoyi.system.api.feignClient.SysUserRoleClient;
+import com.ruoyi.system.api.model.SysUserRoleVo;
 import io.seata.spring.annotation.GlobalTransactional;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -54,11 +58,7 @@
 import java.math.BigDecimal;
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -101,6 +101,21 @@
     @Resource
     private VipClient vipClient;
     
+    @Resource
+    private SysUserClient sysUserClient;
+    
+    @Resource
+    private PartnerClient partnerService;
+    
+    @Resource
+    private UserSiteClient userSiteClient;
+    
+    @Resource
+    private RoleSiteClient roleSiteClient;
+    
+    @Resource
+    private SysUserRoleClient sysUserRoleClient;
+    
     
     
     
@@ -116,10 +131,20 @@
     @Resource
     private TOrderEvaluateMapper orderEvaluateMapper;
     @Override
-    public List<TEvaluationTagVO> getTagCount() {
+    public List<TEvaluationTagVO> getTagCount(Integer siteId) {
         // 查询标签列表
         R<List<TEvaluationTagVO>> r = evaluationTagClient.getList();
         List<TEvaluationTagVO> tagList = r.getData();
+        // 查询站点下的所有订单
+        List<TChargingOrder> tChargingOrders = chargingOrderMapper.selectList(Wrappers.lambdaQuery(TChargingOrder.class)
+                .eq(TChargingOrder::getSiteId, siteId));
+        if(CollectionUtils.isEmpty(tChargingOrders)){
+            tagList.forEach(e->e.setTagCount(0));
+            packageTagCount(0L,"有图",2,tagList);
+            packageTagCount(0L,"好评",3,tagList);
+            packageTagCount(0L,"中差评",4,tagList);
+            return tagList;
+        }
         List<Integer> tagIds = tagList.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
         // 统计标签使用数量
         List<TEvaluationTagVO> counts = orderEvaluateTagMapper.getCountByTagIds(tagIds);
@@ -251,7 +276,32 @@
             List<TEvaluationTagVO> data = evaluationTagClient.getTagList(pageList.getEvaluateType()).getData();
             evaluationTagIds = data.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
         }
-        List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, pageInfo);
+    
+        //校验合作商权限
+        List<Integer> siteIds = new ArrayList<>();
+        if(null == pageList.getSiteId() || 0 == pageList.getSiteId()){
+            SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
+            Integer roleType = sysUser.getRoleType();
+            Integer objectId = sysUser.getObjectId();
+            //合作商
+            if(roleType == 2){
+                Set<Integer> data = partnerService.authSite(objectId, "/data/site").getData();
+                siteIds = new ArrayList<>(data);
+            }else{
+                //非管理员需要根据角色和用户配置查询允许的站点数据
+                if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+                    List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
+                    List<SysUserRoleVo> data2 = sysUserRoleClient.getRoleByUserId(sysUser.getUserId()).getData();
+                    List<Integer> data1 = roleSiteClient.getSiteIds(data2.get(0).getRoleId()).getData();
+                    data.addAll(data1);
+                    siteIds = data;
+                }
+            }
+        }else{
+            siteIds.add(pageList.getSiteId());
+        }
+        
+        List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, siteIds, pageInfo);
         for (GetOrderEvaluatePageListDTO dto : list) {
             TAppUser appUser = appUserClient.getUserById(dto.getAppUserId()).getData();
             if(null != appUser){
@@ -259,8 +309,11 @@
                 String phone = appUser.getPhone();
                 dto.setPhone(phone.substring(0, 3) + "****" + phone.substring(6));
             }
-            Site site = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData().get(0);
-            dto.setSiteName(site.getName());
+            List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData();
+            if(null != data1 && data1.size() > 0){
+                Site site = data1.get(0);
+                dto.setSiteName(site.getName());
+            }
             List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, dto.getId()));
             List<Integer> tagIds = tOrderEvaluateTags.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList());
             if(tagIds.size() > 0){
@@ -387,9 +440,11 @@
             BeanUtils.copyProperties(orderEvaluate, orderEvaluateVo);
             List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, orderEvaluate.getId()));
             List<Integer> tagId = tOrderEvaluateTags.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList());
-            List<TEvaluationTag> data = evaluationTagClient.getListByIds(tagId).getData();
-            List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList());
-            orderEvaluateVo.setTagName(collect);
+            if(tagId.size() > 0){
+                List<TEvaluationTag> data = evaluationTagClient.getListByIds(tagId).getData();
+                List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList());
+                orderEvaluateVo.setTagName(collect);
+            }
             return orderEvaluateVo;
         }
         return null;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index f25778c..5716b77 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -187,7 +187,15 @@
                     break;
             }
         }
+
+        List<Long> appUserIds = list.stream().map(TActivityStatisticslVO::getAppUserId).collect(Collectors.toList());
+        List<TAppUser> appUsers = appUserClient.getUserByIds(appUserIds).getData();
+
         for (TActivityStatisticslVO tActivityStatisticslVO : list) {
+            TAppUser appUser = appUsers.stream().filter(user -> user.getId().equals(tActivityStatisticslVO.getAppUserId())).findFirst().orElse(null);
+            if(Objects.nonNull(appUser)){
+                tActivityStatisticslVO.setPhone(appUser.getPhone());
+            }
             // 判断享有了哪些类型
             switch (tActivityStatisticslVO.getOrderType()){
                 case 1:
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
index 2f94bc4..162f271 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -62,7 +62,7 @@
         </if>
     </select>
     <select id="getNoInvoicedOrder" resultMap="BaseResultMap">
-        select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and payment_amount is not null and app_user_id = #{appUserId} and refund_status is null
+        select * from t_charging_order where del_flag = 0 and status = 5 and recharge_payment_status = 2 and payment_amount is not null and app_user_id = #{appUserId}
         <if test="null != month and '' != month">
             and DATE_FORMAT(end_time, '%Y-%m') = #{month}
         </if>
@@ -121,12 +121,12 @@
         title,
         `status`,
         order_amount,
-        order_amount as payment_amount ,
+        payment_amount as payment_amount ,
         create_time,
         end_time,
         pay_time,
         refund_status,
-        (order_amount) as final_amount,
+        (recharge_amount-refund_amount) as final_amount,
         del_flag,
         app_user_id
         FROM
@@ -372,7 +372,7 @@
 
     </select>
     <select id="countAll" resultType="java.util.Map">
-        select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,ROUND(sum(electrovalence+service_charge) * 0.0006, 2) as commission_amount,sum(sharing_amount) as sharing_amount
+        select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,ROUND(sum(electrovalence+service_charge) * 0.006, 2) as commission_amount,sum(sharing_amount) as sharing_amount
         from t_charging_order
         where create_time &gt;= #{sixBefore} and del_flag = 0 and recharge_payment_status = 2
     </select>
@@ -398,7 +398,7 @@
     <select id="getDateData" resultType="java.util.Map">
         SELECT
             DATE_FORMAT( create_time, '%H:00' ) as time,
-        CAST(SUM(service_charge-coupon_discount_amount) AS DECIMAL(20, 6)) as  servicecharge,
+        CAST(SUM(service_charge) AS DECIMAL(20, 6)) as  servicecharge,
         CAST(SUM(charging_capacity) AS DECIMAL(20, 6)) as electrovalence,
         CAST(SUM(electrovalence) AS DECIMAL(20, 4)) AS paymentAmount,
         SUM(payment_amount) AS paymoney,
@@ -423,7 +423,7 @@
     <select id="getWeekData" resultType="java.util.Map">
         SELECT
         DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
-        SUM(service_charge-coupon_discount_amount) as servicecharge,
+        SUM(service_charge) as servicecharge,
         SUM(charging_capacity) as electrovalence,
         SUM(electrovalence) AS paymentAmount,
         SUM(payment_amount) AS paymoney,
@@ -448,7 +448,7 @@
     <select id="getMonthData" resultType="java.util.Map">
         SELECT
         DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
-        SUM(service_charge-coupon_discount_amount) as servicecharge,
+        SUM(service_charge) as servicecharge,
         SUM(charging_capacity) as electrovalence,
         SUM(electrovalence) AS paymentAmount,
         SUM(payment_amount) AS paymoney,
@@ -473,7 +473,7 @@
     <select id="getYearData" resultType="java.util.Map">
         SELECT
         DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
-        SUM(service_charge-coupon_discount_amount) as servicecharge,
+        SUM(service_charge) as servicecharge,
         SUM(charging_capacity) as electrovalence,
         SUM(electrovalence) AS paymentAmount,
         SUM(payment_amount) AS paymoney,
@@ -500,7 +500,7 @@
     <select id="getByDate" resultType="java.util.Map">
         SELECT
         DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
-        SUM(service_charge-coupon_discount_amount) as servicecharge,
+        SUM(service_charge) as servicecharge,
         SUM(charging_capacity) as electrovalence,
         SUM(electrovalence) AS paymentAmount,
         SUM(payment_amount) AS paymoney,
@@ -629,14 +629,12 @@
         SELECT
             'today' AS data_type,
             '1' as type,
-            DATE_FORMAT( create_time, '%Y-%m-%d %H' ) AS time,
+            DATE_FORMAT( create_time, '%H:00' ) AS time,
         count(DISTINCT  app_user_id) AS counts
         FROM
             t_charging_order
         WHERE
             del_flag = 0
-          AND recharge_payment_status = 2
-          AND ISNULL( refund_status )
           AND DATE ( create_time ) = CURDATE()
         GROUP BY
             time
@@ -704,10 +702,10 @@
         </if>
         <if test="statisticsQueryDto.dayType ==5">
             <if test="statisticsQueryDto.startTime != null">
-                AND create_time >= #{statisticsQueryDto.startTime}
+                AND DATE(create_time) >= #{statisticsQueryDto.startTime}
             </if>
             <if test="statisticsQueryDto.endTime != null">
-                AND create_time &lt;= #{statisticsQueryDto.endTime}
+                AND DATE(create_time) &lt;= #{statisticsQueryDto.endTime}
             </if>
         </if>
         GROUP BY
@@ -972,7 +970,7 @@
             `charging_pile_order`.`t_charging_order` co
                 LEFT JOIN  `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id
                 LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id
-        WHERE
+        WHERE co.del_flag = 0 and
             co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type = 4
         <if test="siteIds != null and siteIds.size() > 0">
             and co.site_id IN
@@ -1032,7 +1030,7 @@
         `charging_pile_order`.`t_charging_order` co
         LEFT JOIN  `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id
         LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on tc.charging_pile_id = cp.id
-        WHERE
+        WHERE co.del_flag = 0 and
         co.start_time IS NOT NULL AND co.end_time IS NOT NULL and tc.type in (2,3)
         <if test="siteIds != null and siteIds.size() > 0">
             and co.site_id IN
@@ -1254,7 +1252,7 @@
         `charging_pile_service`.`t_fault_message` co
         LEFT JOIN  `charging_pile_service`.`t_charging_pile` cp on co.charging_pile_id = cp.id
         WHERE
-        co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 1 and co.status =1
+        co.down_time IS NOT NULL AND co.end_time IS NOT NULL and cp.type = 2 and co.status =1
         <if test="siteIds != null and siteIds.size() > 0">
             and co.site_id IN
             <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
@@ -1448,6 +1446,13 @@
         <if test="statisticsQueryDto.dayType == 1">
             AND DATE( create_time ) between #{statisticsQueryDto.startTime} and #{statisticsQueryDto.endTime}
         </if>
+
+        <if test="siteIds != null and siteIds.size() > 0">
+            and site_id IN
+            <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
+                #{siteId}
+            </foreach>
+        </if>
         GROUP BY
             time
         ORDER BY
@@ -1533,4 +1538,13 @@
         )  and au.del_flag = 0
 
     </select>
+    <select id="countCar" resultType="java.lang.Long">
+        select count(1)
+        from
+            charging_pile_account.t_app_user_car
+        where del_flag = 0 and vehicle_brand  not in
+        <foreach collection="brands" item="brand" open="(" separator="," close=")">
+            #{brand}
+        </foreach>
+    </select>
 </mapper>
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 7a4d65a..872f114 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
@@ -84,8 +84,9 @@
         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
-        where order_id in
-        (select order_id
+        where del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
+        and order_id in
+        (select id
         from t_charging_order
         where site_id = #{siteId}
         and del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()})
@@ -123,6 +124,12 @@
         <if test="null != query.siteId">
             and b.site_id = #{query.siteId}
         </if>
+        <if test="null != siteIds and siteIds.size() > 0">
+            and b.site_id in
+            <foreach collection="siteIds" item="item" index="index" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
         order by a.create_time desc
     </select>
     <select id="goodTop" resultType="java.util.Map">
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
index 8c13bc7..b8f42ed 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml
@@ -78,7 +78,7 @@
     </select>
     <select id="getSumAmout" resultType="java.math.BigDecimal">
         SELECT
-            SUM(payment_amount) AS paymentAmount
+            SUM(payment_amount-refund_amount) AS paymentAmount
         FROM
             t_vip_order
         WHERE
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
index 3ea9ee4..c003b2e 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java
@@ -125,7 +125,7 @@
 
     @GetMapping("/getInfoByType")
     @ApiOperation(tags = {"小程序-兑换商城"},value = "商品查看详情")
-    public R getInfoByType(Integer goodType,Integer id) {
+    public R getInfoByType(Integer goodType,Integer id,Integer type) {
         if (goodType==1){
         TGoods byId = goodsService.getById(id);
         if (byId==null||byId.getStatus()==2){
@@ -135,7 +135,8 @@
 //            for (int i = 0; i < list.size(); i++) {
 //                list.get(i).setSalesCount(data.get(i));
 //            }
-
+            Integer data = orderClient.getSalesCountByGoodsIdgetCount(byId.getId(), 1, type).getData();
+            byId.setSalesCount(data);
         return R.ok(byId);
         }
         else {
@@ -143,7 +144,9 @@
             if (byId==null||byId.getStatus()==2){
                 return R.fail(2,"该商品已不存在");
             }
-                return R.ok(byId);
+            Integer data = orderClient.getSalesCountByGoodsIdgetCount(byId.getId(),2, type).getData();
+            byId.setSalesCount(data);
+            return R.ok(byId);
             }
     }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
index 5f390ad..d5e2f68 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TGoodsServiceImpl.java
@@ -78,14 +78,11 @@
             pageInfo.setRecords(list);
             return pageInfo;
         }
-        String string = stringBuilder.toString();
-        // 订单号加上商品类型
-        String res = string+"-"+basePage.getType();
-
-        List<Integer> data = orderClient.getSalesCountByGoodsId(res).getData();
-        for (int i = 0; i < list.size(); i++) {
-            list.get(i).setSalesCount(data.get(i));
+        for (TGoods tGoods : list) {
+            Integer data = orderClient.getSalesCountByGoodsIdgetCount(tGoods.getId(), tGoods.getGoodType(), basePage.getType()).getData();
+            tGoods.setSalesCount(data);
         }
+
         pageInfo.setRecords(list);
         return pageInfo;
     }
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
index c8879ee..4351904 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
@@ -55,13 +55,13 @@
 
     <select id="pageList1" resultType="com.ruoyi.other.api.domain.TGoods">
         SELECT
-            id,name,redeem_points as redeemPoints,inventory,original_price as originalPrice ,preferential_price as preferentialPrice,vip_price as vipPrice,1 as goodType,cover_picture as coverPicture
+            id,name,redeem_points as redeemPoints,inventory,original_price as originalPrice ,preferential_price as preferentialPrice,vip_price as vipPrice,1 as goodType,cover_picture as coverPicture,underlying_sales as underlyingSales
         FROM
             t_goods
         WHERE `status` = 1 and del_flag = 0 and type = #{appGoodQuery.type}
         UNION ALL
         SELECT
-            id,name,redeem_points  as redeemPoints,inventory_quantity as inventory,payment_amount as originalPrice,payment_amount as preferentiaPrice,vip_payment_amount as vipPrice,2 as goodType,cover_picture as coverPicture
+            id,name,redeem_points  as redeemPoints,inventory_quantity as inventory,payment_amount as originalPrice,payment_amount as preferentiaPrice,vip_payment_amount as vipPrice,2 as goodType,cover_picture as coverPicture,0 as underlyingSales
         FROM
             t_coupon
         WHERE `status`= 1 and del_flag = 0 and ways_to_obtain != #{appGoodQuery.type}

--
Gitblit v1.7.1