From 5489c2cc4d35970ca8fe4d30cf8ac374eef17ca4 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 31 八月 2024 18:02:39 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingOrderGroup.java                                        |   13 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                                   |  306 ++++++
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java      |    6 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java                                   |   14 
 ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports  |    3 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserVipDetailClient.java                               |    7 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java                     |    7 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java                                   |    5 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/UploadRealTimeMonitoringDataQuery.java                              |   36 
 ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports   |    3 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/PlatformStartChargingReplyClient.java             |   28 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java                               |   11 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixCircleDto.java                                                         |   11 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java                     |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java                                |    5 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java            |    9 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java        |   31 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java                                      |   24 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java                                                 |   25 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml                                                    |  260 ++++-
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java                                                   |    6 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingPercentProvinceDto.java                                |   13 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixChargingDto.java                                                       |   19 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java                                                          |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixVipDto.java                                                            |   13 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java  |   16 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/PlatformStartChargingReplyService.java            |   11 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/UploadRealTimeMonitoringDataServiceImpl.java |   20 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/BaseModel.java                                          |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/PreviousSixMonths.java                                                   |   20 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java                                       |    3 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java                      |   18 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java                                 |   19 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java                 |    6 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/PlatformStartChargingReplyController.java              |   35 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java                    |    2 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java                           |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ChargingPercentBack.java                                    |   14 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java                                 |    6 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java                            |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java                                        |   13 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java                            |    6 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java                                        |   39 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixShopDto.java                                                           |   13 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/UploadRealTimeMonitoringDataService.java          |    4 
 ruoyi-service/ruoyi-integration/pom.xml                                                                                               |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java                                              |   22 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java                       |    1 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java                                                   |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java                                                 |    9 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java                                            |   10 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java                       |   11 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java                              |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                                            |   42 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java                                          |   62 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                                  |  119 ++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java                           |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TShoppingOrderMapper.java                                              |    6 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PreChargeCheck.java                                                       |    4 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java           |    4 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java             |   23 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/PlatformStartChargingReplyFallbackFactory.java        |   34 
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java                      |    7 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                                      |  388 ++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingStatisticsQueryDto.java                                           |   18 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixMonthTotal.java                                                        |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml                                      |    3 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml                                                         |   41 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java                        |   47 +
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml                                                    |   36 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java    |  209 +++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java                                   |    2 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserVipDetailFallbackFactory.java                          |    7 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStartChargingReplyServiceImpl.java   |   16 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java                               |   44 +
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java             |   26 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ParkingRecordPageQuery.java                                 |   16 
 77 files changed, 2,166 insertions(+), 177 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
index bb60f76..71dc82f 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -35,7 +35,7 @@
     
             @Override
             public R<TAppUser> getUserById(Long id) {
-                return R.fail("根据id查询用户失败:"+throwable.getMessage());
+                throw new RuntimeException("根据id查询用户失败:"+throwable.getMessage());
             }
 
             @Override
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserVipDetailFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserVipDetailFallbackFactory.java
index f22b61a..ebd90f7 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserVipDetailFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserVipDetailFallbackFactory.java
@@ -26,7 +26,12 @@
     
             @Override
             public R<TAppUserVipDetail> getAppUserVipDetail(GetAppUserVipDetail getAppUserVipDetail) {
-                return R.fail("获取用户当前有效的VIP明细调用失败:" + throwable.getMessage());
+                throw new RuntimeException("获取用户当前有效的VIP明细调用失败:" + throwable.getMessage());
+            }
+    
+            @Override
+            public void updateAppUserVipDetail(TAppUserVipDetail appUserVipDetail) {
+                throw new RuntimeException(throwable.getMessage());
             }
         };
     }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserVipDetailClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserVipDetailClient.java
index 37f0dbb..2470569 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserVipDetailClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserVipDetailClient.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * @author zhibing.pu
@@ -24,4 +25,10 @@
 	R<TAppUserVipDetail> getAppUserVipDetail(GetAppUserVipDetail getAppUserVipDetail);
 	
 	
+	/**
+	 * 修改会员明细
+	 * @param appUserVipDetail
+	 */
+	@PostMapping("/appUserVipDetail/updateAppUserVipDetail")
+	void updateAppUserVipDetail(@RequestBody TAppUserVipDetail appUserVipDetail);
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java
new file mode 100644
index 0000000..6a6b7c6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/InvoiceInformationVo.java
@@ -0,0 +1,62 @@
+package com.ruoyi.account.api.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.web.domain.BasePojo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author luodangjia
+ * @since 2024-08-06
+ */
+@Data
+public class InvoiceInformationVo {
+
+
+    private String id;
+
+    @ApiModelProperty(value = "用户id")
+    private Long appUserId;
+
+    @ApiModelProperty(value = "发票类型(1=增值税普通发票,2=增值税专用发票)")
+    private String invoiceType;
+
+    @ApiModelProperty(value = "发票类型id")
+    private Integer invoiceTypeId;
+
+    @ApiModelProperty(value = "抬头类型(1=个人,2=企业)")
+    private Integer invoicingObjectType;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "纳税识别号")
+    private String taxIdentificationNumber;
+
+    @ApiModelProperty(value = "公司地址")
+    private String companyAddress;
+
+    @ApiModelProperty(value = "公司电话")
+    private String companyPhone;
+
+    @ApiModelProperty(value = "开户银行")
+    private String depositBank;
+
+    @ApiModelProperty(value = "银行账户")
+    private String bankAccount;
+
+    @ApiModelProperty(value = "设置默认(0=否,1=是)")
+    private Integer isDefault;
+
+
+
+
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
new file mode 100644
index 0000000..cdc9f16
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/AccountingStrategyDetailFallbackFactory.java
@@ -0,0 +1,31 @@
+package com.ruoyi.chargingPile.api.factory;
+
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.common.core.domain.R;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 18:33
+ */
+@Component
+public class AccountingStrategyDetailFallbackFactory  implements FallbackFactory<AccountingStrategyDetailClient> {
+	private static final Logger log = LoggerFactory.getLogger(AccountingStrategyDetailFallbackFactory.class);
+	
+	
+	@Override
+	public AccountingStrategyDetailClient create(Throwable throwable) {
+		log.error("计费策略调用失败:{}", throwable.getMessage());
+		return new AccountingStrategyDetailClient(){
+			
+			@Override
+			public R<TAccountingStrategyDetail> getNowData(Integer accountingStrategyId) {
+				return R.fail("获取当前有效的计费策略明细失败:" + throwable.getMessage());
+			}
+		};
+	}
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
index 3c9c594..f5a89cc 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingGunFallbackFactory.java
@@ -35,7 +35,7 @@
     
             @Override
             public R<TChargingGun> getChargingGunById(Integer id) {
-                return R.fail("根据id获取充电枪失败:" + throwable.getMessage());
+                throw new RuntimeException("根据id获取充电枪失败:" + throwable.getMessage());
             }
 
             @Override
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
index ef7c322..d66b799 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
@@ -11,6 +11,8 @@
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -37,6 +39,11 @@
             public R<TParkingRecord> getRecordById(Long siteId) {
                 return R.fail("通过id查询停车场记录:" + throwable.getMessage());
             }
+
+            @Override
+            public R<BigDecimal> getRecordAmount(LocalDate sixBefore) {
+                return null;
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
index ed6ce4b..b4cdc47 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
@@ -1,5 +1,6 @@
 package com.ruoyi.chargingPile.api.factory;
 
+import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.common.core.domain.R;
@@ -34,6 +35,11 @@
             public R<List<Site>> getSiteAll() {
                 return R.fail("获取所有站点调用失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<List<GetSiteListDTO>> getSiteListByUserId(Long userId) {
+                return null;
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
new file mode 100644
index 0000000..b63175e
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/AccountingStrategyDetailClient.java
@@ -0,0 +1,26 @@
+package com.ruoyi.chargingPile.api.feignClient;
+
+import com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/28 18:33
+ */
+@FeignClient(contextId = "AccountingStrategyDetailClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = AccountingStrategyDetailFallbackFactory.class)
+public interface AccountingStrategyDetailClient {
+	
+	
+	/**
+	 * 获取当前有效的计费策略明细
+	 * @param accountingStrategyId
+	 * @return
+	 */
+	@PostMapping("/t-accounting-strategy-detail/getNowData")
+	R<TAccountingStrategyDetail> getNowData(@RequestParam("accountingStrategyId") Integer accountingStrategyId);
+}
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
index 5c45bcf..bc3338a 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
@@ -12,6 +12,8 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -30,4 +32,7 @@
     @PostMapping(value = "/t-parking-lot/getRecordById")
     public R<TParkingRecord> getRecordById(@RequestParam("id") Long siteId);
 
+    @PostMapping(value = "/t-parking-lot/getRecordAmount")
+    public R<BigDecimal> getRecordAmount(@RequestParam("sixBefore") LocalDate sixBefore);
+
 }
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
index 2412cf2..a56392f 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
@@ -1,12 +1,15 @@
 package com.ruoyi.chargingPile.api.feignClient;
 
+import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.factory.SiteFallbackFactory;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -31,4 +34,7 @@
 	 */
 	@PostMapping("/site/getSiteAll")
 	R<List<Site>> getSiteAll();
+
+	@GetMapping("/site/getSiteList/byUserId")
+	R<List<GetSiteListDTO>> getSiteListByUserId(@RequestParam("userId") Long userId);
 }
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 69bfa7e..889907b 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
@@ -39,6 +39,11 @@
     @ApiModelProperty(value = "车牌号")
     @TableField("license_plate")
     private String licensePlate;
+    @TableField(exist = false)
+    private String name;
+    @TableField(exist = false)
+
+    private String uid;
     @ApiModelProperty(value = "订单编号")
     @TableField("code")
     private String code;
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index e5e3ae5..f015cf5 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,4 +1,5 @@
 com.ruoyi.chargingPile.api.factory.ChargingPileFallbackFactory
 com.ruoyi.chargingPile.api.factory.SiteFallbackFactory
 com.ruoyi.chargingPile.api.factory.ParkingLotFallbackFactory
-com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory
\ No newline at end of file
+com.ruoyi.chargingPile.api.factory.ChargingGunFallbackFactory
+com.ruoyi.chargingPile.api.factory.AccountingStrategyDetailFallbackFactory
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/PlatformStartChargingReplyFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/PlatformStartChargingReplyFallbackFactory.java
new file mode 100644
index 0000000..e0c2990
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/PlatformStartChargingReplyFallbackFactory.java
@@ -0,0 +1,34 @@
+package com.ruoyi.integration.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient;
+import com.ruoyi.integration.api.model.PlatformStartChargingReply;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/31 15:16
+ */
+@Component
+public class PlatformStartChargingReplyFallbackFactory  implements FallbackFactory<PlatformStartChargingReplyClient> {
+	
+	private static final Logger log = LoggerFactory.getLogger(PlatformStartChargingReplyFallbackFactory.class);
+	
+	
+	@Override
+	public PlatformStartChargingReplyClient create(Throwable throwable) {
+		log.error("远程启机应答调用失败:{}", throwable.getMessage());
+		return new PlatformStartChargingReplyClient(){
+			
+			@Override
+			public R<List<PlatformStartChargingReply>> getPlatformStartChargingReply(String code) {
+				return R.fail("根据订单编号查询远程启机应答结果失败:" + throwable.getMessage());
+			}
+		};
+	}
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
index 863530b..8b9c02b 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/SendMessageFallbackFactory.java
@@ -28,6 +28,7 @@
     
             @Override
             public void platformStartCharging(PlatformStartCharging platformStartCharging) {
+                throw new RuntimeException("远程启机失败" + throwable.getMessage());
             }
         };
     }
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 cd5fa43..2586a69 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
@@ -9,6 +9,7 @@
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * 充电桩服务降级处理
@@ -35,6 +36,11 @@
             public R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(String code) {
                 return R.fail("根据订单编号获取所有监测数据失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<List<UploadRealTimeMonitoringData>> getAll(Set<String> values, Integer page, Integer size) {
+                return null;
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/PlatformStartChargingReplyClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/PlatformStartChargingReplyClient.java
new file mode 100644
index 0000000..e3856e6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/PlatformStartChargingReplyClient.java
@@ -0,0 +1,28 @@
+package com.ruoyi.integration.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.factory.PlatformStartChargingReplyFallbackFactory;
+import com.ruoyi.integration.api.model.PlatformStartChargingReply;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/31 15:16
+ */
+@FeignClient(contextId = "PlatformStartChargingReplyClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = PlatformStartChargingReplyFallbackFactory.class)
+public interface PlatformStartChargingReplyClient {
+	
+	
+	/**
+	 * 根据订单编号查询远程启机应答结果
+	 * @param code
+	 * @return
+	 */
+	@PostMapping("/platformStartChargingReply/getPlatformStartChargingReply")
+	R<List<PlatformStartChargingReply>> getPlatformStartChargingReply(@RequestParam("code") String code);
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
index 0657802..c2c27be 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/SendMessageClient.java
@@ -2,7 +2,6 @@
 
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.integration.api.factory.SendMessageFallbackFactory;
-import com.ruoyi.integration.api.model.EndCharge;
 import com.ruoyi.integration.api.model.PlatformStartCharging;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
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 d6da53d..902dff5 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
@@ -9,6 +9,7 @@
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author zhibing.pu
@@ -32,4 +33,7 @@
 	 */
 	@PostMapping("/uploadRealTimeMonitoringData/getDataByOrderCode")
 	R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(@RequestParam("code") String code);
+
+	@PostMapping("/uploadRealTimeMonitoringData/getAll")
+	R<List<UploadRealTimeMonitoringData>> getAll(@RequestParam("values") Set<String> values, @RequestParam("page") Integer page, @RequestParam("size")Integer size);
 }
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 3ec6eb0..fe393ff 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
@@ -10,6 +10,7 @@
  */
 @Data
 public class BaseModel {
+	private Date last_time = new Date();
 	
 	private Date create_time = new Date();
 }
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java
new file mode 100644
index 0000000..3090700
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java
@@ -0,0 +1,209 @@
+package com.ruoyi.integration.api.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 上传实时监测数据
+ **/
+
+@Data
+@Document(collection = "upload_real_time_monitoring_data") //指定要对应的文档名(表名)
+@Accessors(chain = true)
+public class ChargingOrderAndUploadRealTimeMonitoringDataDto extends BaseModel {
+
+    @Id
+    private String id;
+    private String transaction_serial_number; // 交易流水号
+    private String charging_pile_code; // 桩编码
+    private String charging_gun_code; // 抢号
+    private Integer charging_gun_status; // 状态(0:离线,1:故障,2:空闲,3:充电)
+    private Integer homing_status; // 枪是否归位(0:否,1:是,2:未知)
+    private Integer insertion_status; // 是否插枪(0:否,1:是)
+    private BigDecimal output_voltage; // 输出电压,精确到小数点后一位;待机置零
+    private BigDecimal output_current; // 输出电流,精确到小数点后一位;待机置零
+    private Integer gun_line_temperature; // 枪线温度,整形,偏移量-50;待机置零
+    private String gun_line_code; // 枪线编码,没有置零
+    private Integer soc; // SOC待机置零;交流桩置零
+    private Integer battery_temperature; // 电池组最高温度,整形,偏移量-50 ºC;待机置零;交流桩置零
+    private Integer cumulative_charging_time; // 累计充电时间,单位:min;待机置零
+    private Integer time_remaining; // 剩余时间,单位:min;待机置零、交流桩置零
+    @ApiModelProperty("充电度数")
+    private BigDecimal charging_degree; // 充电度数,精确到小数点后四位;待机置零
+    private BigDecimal loss_of_charging_degree; // 计损充电度数,精确到小数点后四位;待机置零,未设置计损比例时等于充电度数
+    private BigDecimal paid_amount; // 已充金额,精确到小数点后四位;待机置零(电费+服务费)*计损充电度数
+
+    @ApiModelProperty("时段电价")
+    private BigDecimal electrovalence_all;
+    @ApiModelProperty("时段服务费单价")
+    private BigDecimal service_charge;
+    @ApiModelProperty("时段电费")
+    private BigDecimal period_electric_price;
+    @ApiModelProperty("时段服务费")
+    private BigDecimal period_service_price;
+    private Integer hardware_fault; // 硬件故障(1:急停按钮动作故障;2:无可用整流模块;3:出风口温度过高;4:交流防雷故障;5:交直流模块 DC20 通信中断;6:绝缘检测模块 FC08 通信中断;7:电度表通信中断;8:读卡器通信中断;9:RC10 通信中断;10:风扇调速板故障;11:直流熔断器故障;12:高压接触器故障;13:门打开)、
+
+    @ApiModelProperty(value = "订单编号")
+    @TableField("code")
+    private String code;
+
+    @ApiModelProperty(value = "订单类型(1=充电订单(小程序),2=充电订单(刷卡))")
+    @TableField("order_type")
+    private Integer orderType;
+    @ApiModelProperty(value = "0平台1其他")
+    @TableField("order_source")
+    private Integer orderSource;
+
+    @ApiModelProperty(value = "平台或其他第三分名字")
+    @TableField("source_name")
+    private String sourceName;
+    @ApiModelProperty(value = "手续费")
+    @TableField("commission_amount")
+    private BigDecimal commissionAmount;
+    @ApiModelProperty(value = "分佣")
+    @TableField("sharing_amount")
+    private BigDecimal sharingAmount;
+
+    @ApiModelProperty(value = "订单分类(1=线上,2=线下)")
+    @TableField("order_classification")
+    private Integer orderClassification;
+
+    @ApiModelProperty(value = "用户id")
+    @TableField("app_user_id")
+    private Long appUserId;
+
+    @ApiModelProperty(value = "充电车辆 id")
+    @TableField("app_user_car_id")
+    private Long appUserCarId;
+
+    @ApiModelProperty(value = "站点 id")
+    @TableField("site_id")
+    private Integer siteId;
+
+    @ApiModelProperty(value = "停车场id")
+    @TableField("parking_lot_id")
+    private Integer parkingLotId;
+
+    @ApiModelProperty(value = "充电桩id")
+    @TableField("charging_pile_id")
+    private Integer chargingPileId;
+
+    @ApiModelProperty(value = "充电枪id")
+    @TableField("charging_gun_id")
+    private Integer chargingGunId;
+
+    @ApiModelProperty(value = "充电总度数")
+    @TableField("charging_capacity")
+    private BigDecimal chargingCapacity;
+
+    @ApiModelProperty(value = "充电功率")
+    @TableField("charging_power")
+    private BigDecimal chargingPower;
+
+    @ApiModelProperty(value = "充电开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField("start_time")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "充电结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField("end_time")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "状态(0=未知,1=等待中/已插枪,2=启动中,3=充电中,4=停止中,5=已结束)")
+    @TableField("status")
+    private Integer status;
+
+    @ApiModelProperty(value = "结束方式(0=异常终止,1=主动终止,2=满电终止,3=费用不足终止)")
+    @TableField("end_mode")
+    private Integer endMode;
+
+    @ApiModelProperty(value = "充值金额")
+    @TableField("recharge_amount")
+    private BigDecimal rechargeAmount;
+
+    @ApiModelProperty(value = "充值支付方式(1=微信,2=支付宝)")
+    @TableField("recharge_payment_type")
+    private Integer rechargePaymentType;
+
+    @ApiModelProperty(value = "充值支付状态(1=待支付,2=已支付)")
+    @TableField("recharge_payment_status")
+    private Integer rechargePaymentStatus;
+
+    @ApiModelProperty(value = "充值支付第三方流水号")
+    @TableField("recharge_serial_number")
+    private String rechargeSerialNumber;
+
+    @ApiModelProperty(value = "订单金额(总金额)")
+    @TableField("order_amount")
+    private BigDecimal orderAmount;
+
+    @ApiModelProperty(value = "优惠券id")
+    @TableField("app_coupon_id")
+    private Long appCouponId;
+
+    @ApiModelProperty(value = "优惠券抵扣金额")
+    @TableField("coupon_discount_amount")
+    private BigDecimal couponDiscountAmount;
+
+    @ApiModelProperty(value = "会员折扣")
+    @TableField("vip_discount")
+    private BigDecimal vipDiscount;
+
+    @ApiModelProperty(value = "会员优惠金额")
+    @TableField("vip_discount_amount")
+    private BigDecimal vipDiscountAmount;
+
+    @ApiModelProperty(value = "支付金额(实付)")
+    @TableField("payment_amount")
+    private BigDecimal paymentAmount;
+
+    @ApiModelProperty(value = "退款流水号")
+    @TableField("refund_code")
+    private String refundCode;
+
+    @ApiModelProperty(value = "退款金额")
+    @TableField("refund_amount")
+    private BigDecimal refundAmount;
+
+    @ApiModelProperty(value = "累计服务费")
+    @TableField("service_charge")
+    private BigDecimal serviceCharge;
+
+    @ApiModelProperty(value = "累计电费")
+    @TableField("electrovalence")
+    private BigDecimal electrovalence;
+
+    @ApiModelProperty(value = "退款状态(1=退款中,2=退款成功)")
+    @TableField("refund_status")
+    private Integer refundStatus;
+
+    @ApiModelProperty(value = "退款第三方流水号")
+    @TableField("refund_serial_number")
+    private String refundSerialNumber;
+
+    @ApiModelProperty(value = "退款成功时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField("refund_time")
+    private LocalDateTime refundTime;
+
+
+    @ApiModelProperty(value = "支付时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField("pay_time")
+    private LocalDateTime payTime;
+
+
+}
+
+
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
index b131c91..5338fa8 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
@@ -1,8 +1,8 @@
 package com.ruoyi.integration.api.model;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
-import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
 import java.math.BigDecimal;
@@ -16,7 +16,6 @@
 @Accessors(chain = true)
 public class UploadRealTimeMonitoringData extends BaseModel {
 
-    @Id
     private String transaction_serial_number; // 交易流水号
     private String charging_pile_code; // 桩编码
     private String charging_gun_code; // 抢号
@@ -36,6 +35,14 @@
     private BigDecimal paid_amount; // 已充金额,精确到小数点后四位;待机置零(电费+服务费)*计损充电度数
     private Integer hardware_fault; // 硬件故障(1:急停按钮动作故障;2:无可用整流模块;3:出风口温度过高;4:交流防雷故障;5:交直流模块 DC20 通信中断;6:绝缘检测模块 FC08 通信中断;7:电度表通信中断;8:读卡器通信中断;9:RC10 通信中断;10:风扇调速板故障;11:直流熔断器故障;12:高压接触器故障;13:门打开)
 
+    private BigDecimal electrovalence_all;// @ApiModelProperty("时段电价")
+
+    private BigDecimal service_charge;//@ApiModelProperty("时段服务费单价")
+
+    private BigDecimal period_electric_price;//    @ApiModelProperty("时段电费")
+
+    private BigDecimal period_service_price;//    @ApiModelProperty("时段服务费")
+
 
 }
 
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 5d5cc8f..6cc32c5 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-integration/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,4 +1,5 @@
 com.ruoyi.integration.api.factory.IntegrationFallbackFactory
 com.ruoyi.integration.api.factory.UploadRealTimeMonitoringDataFallbackFactory
 com.ruoyi.integration.api.factory.ChargingHandshakeFallbackFactory
-com.ruoyi.integration.api.factory.SendMessageFallbackFactory
\ No newline at end of file
+com.ruoyi.integration.api.factory.SendMessageFallbackFactory
+com.ruoyi.integration.api.factory.PlatformStartChargingReplyFallbackFactory
\ No newline at end of file
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 ee6192f..8738bb2 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
@@ -1,13 +1,18 @@
 package com.ruoyi.order.api.factory;
 
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.query.TChargingCountQuery;
+import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
+
+import java.util.List;
 
 /**
  * 充电订单服务降级处理
@@ -36,6 +41,16 @@
             }
 
             @Override
+            public R<List<TChargingOrder>> getList(Integer siteId) {
+                return R.fail("根据站点id查询充电订单:" + throwable.getMessage());
+            }
+
+            @Override
+            public R<List<ChargingOrderGroup>> getBySiteIdAndTime(ChargingPercentProvinceDto chargingPercentProvinceDto) {
+                return null;
+            }
+
+            @Override
             public R<Integer> getChargingCount(TChargingCountQuery req) {
                 return R.fail("根据会员id和有效期查询有效期内享受充电折扣次数:" + throwable.getMessage());
             }
@@ -49,6 +64,10 @@
             public R<Long> getCar() {
                 return R.fail("获取用户最近使用车辆充电的车辆id:" + throwable.getMessage());
             }
+    
+            @Override
+            public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
index 5d51fbc..2f98b2c 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderAccountingStrategyClient.java
@@ -36,6 +36,6 @@
 	 * @param days
 	 * @return
 	 */
-	@PostMapping("/t-charging-order-getDailyChargingDegree-strategy/getUtilizationTrend/{days}")
+	@PostMapping("/t-charging-order-accounting-strategy/getDailyChargingDegree/{days}")
 	R<List<Double>> getDailyChargingDegree(@PathVariable("days") Integer days, @RequestParam("siteIds") Set<Integer> siteIds);
 }
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 5d19dd8..96340a0 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
@@ -2,14 +2,19 @@
 
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.order.api.factory.ChargingOrderFallbackFactory;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.query.TChargingCountQuery;
+import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 /**
  * 充电订单服务
@@ -22,6 +27,16 @@
 
     @PostMapping(value = "/t-charging-order/detail")
     R<TChargingOrder> orderDetail(@RequestParam("orderId") Long orderId);
+
+
+    @PostMapping(value = "/t-charging-order/getList")
+    R<List<TChargingOrder>> getList(@RequestParam("siteId") Integer siteId);
+
+    @PostMapping(value = "/t-charging-order/getBySiteIdAndTime")
+    R<List<ChargingOrderGroup>> getBySiteIdAndTime(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto);
+
+
+
 
     /**
      * 查询会员在本月有多少次享受了充电折扣
@@ -46,4 +61,13 @@
      */
     @GetMapping(value = "/t-charging-order/getCar")
     public R<Long> getCar();
+    
+    
+    /**
+     * 处理充电订单实时监控数据相关的业务逻辑
+     * @param query
+     * @return
+     */
+    @PostMapping(value = "/t-charging-order/chargeMonitoring")
+    void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query);
 }
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
index 9351b4e..9c48083 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -39,6 +39,19 @@
     @ApiModelProperty(value = "订单类型(1=充电订单(小程序),2=充电订单(刷卡))")
     @TableField("order_type")
     private Integer orderType;
+    @ApiModelProperty(value = "0平台1其他")
+    @TableField("order_source")
+    private Integer orderSource;
+
+    @ApiModelProperty(value = "平台或其他第三分名字")
+    @TableField("source_name")
+    private String sourceName;
+    @ApiModelProperty(value = "手续费")
+    @TableField("commission_amount")
+    private BigDecimal commissionAmount;
+    @ApiModelProperty(value = "分佣")
+    @TableField("sharing_amount")
+    private BigDecimal sharingAmount;
 
     @ApiModelProperty(value = "订单分类(1=线上,2=线下)")
     @TableField("order_classification")
@@ -109,6 +122,10 @@
     @ApiModelProperty(value = "充值支付第三方流水号")
     @TableField("recharge_serial_number")
     private String rechargeSerialNumber;
+    
+    @ApiModelProperty(value = "剩余金额(用于前端展示)")
+    @TableField("residual_amount")
+    private BigDecimal residualAmount;
 
     @ApiModelProperty(value = "订单金额(总金额)")
     @TableField("order_amount")
@@ -142,6 +159,14 @@
     @TableField("refund_amount")
     private BigDecimal refundAmount;
 
+    @ApiModelProperty(value = "累计服务费")
+    @TableField("service_charge")
+    private BigDecimal serviceCharge;
+
+    @ApiModelProperty(value = "累计电费")
+    @TableField("electrovalence")
+    private BigDecimal electrovalence;
+
     @ApiModelProperty(value = "退款状态(1=退款中,2=退款成功)")
     @TableField("refund_status")
     private Integer refundStatus;
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
index 29320fa..344daa0 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
@@ -70,6 +70,8 @@
     @ApiModelProperty(value = "申诉反馈")
     @TableField("feedback")
     private String feedback;
+    @TableField(exist = false)
+    private String uid;
 
     @ApiModelProperty(value = "反馈人id")
     @TableField("feedback_user_id")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/UploadRealTimeMonitoringDataQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/UploadRealTimeMonitoringDataQuery.java
new file mode 100644
index 0000000..33b0426
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/UploadRealTimeMonitoringDataQuery.java
@@ -0,0 +1,36 @@
+package com.ruoyi.order.api.query;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 上传实时监测数据
+ **/
+
+@Data
+public class UploadRealTimeMonitoringDataQuery {
+    private String transaction_serial_number; // 交易流水号
+    private String charging_pile_code; // 桩编码
+    private String charging_gun_code; // 抢号
+    private Integer charging_gun_status; // 状态(0:离线,1:故障,2:空闲,3:充电)
+    private Integer homing_status; // 枪是否归位(0:否,1:是,2:未知)
+    private Integer insertion_status; // 是否插枪(0:否,1:是)
+    private BigDecimal output_voltage; // 输出电压,精确到小数点后一位;待机置零
+    private BigDecimal output_current; // 输出电流,精确到小数点后一位;待机置零
+    private Integer gun_line_temperature; // 枪线温度,整形,偏移量-50;待机置零
+    private String gun_line_code; // 枪线编码,没有置零
+    private Integer soc; // SOC待机置零;交流桩置零
+    private Integer battery_temperature; // 电池组最高温度,整形,偏移量-50 ºC;待机置零;交流桩置零
+    private Integer cumulative_charging_time; // 累计充电时间,单位:min;待机置零
+    private Integer time_remaining; // 剩余时间,单位:min;待机置零、交流桩置零
+    private BigDecimal charging_degree; // 充电度数,精确到小数点后四位;待机置零
+    private BigDecimal loss_of_charging_degree; // 计损充电度数,精确到小数点后四位;待机置零,未设置计损比例时等于充电度数
+    private BigDecimal paid_amount; // 已充金额,精确到小数点后四位;待机置零(电费+服务费)*计损充电度数
+    private Integer hardware_fault; // 硬件故障(1:急停按钮动作故障;2:无可用整流模块;3:出风口温度过高;4:交流防雷故障;5:交直流模块 DC20 通信中断;6:绝缘检测模块 FC08 通信中断;7:电度表通信中断;8:读卡器通信中断;9:RC10 通信中断;10:风扇调速板故障;11:直流熔断器故障;12:高压接触器故障;13:门打开)
+    private Date create_time;
+
+}
+
+
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingOrderGroup.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingOrderGroup.java
new file mode 100644
index 0000000..ada209c
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingOrderGroup.java
@@ -0,0 +1,13 @@
+package com.ruoyi.common.core.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+@Data
+public class ChargingOrderGroup {
+    @ApiModelProperty("充电量")
+    BigDecimal chargingCapacity;
+    @ApiModelProperty("站点")
+    Integer siteId;
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingPercentProvinceDto.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingPercentProvinceDto.java
new file mode 100644
index 0000000..08b4f8c
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/dto/ChargingPercentProvinceDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.common.core.dto;
+
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class ChargingPercentProvinceDto {
+    String provinceCode;
+    LocalDate date1;
+    LocalDate date2;
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
index 42de42e..690629f 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java
@@ -56,6 +56,15 @@
         }
         return R.ok(list);
 	}
-
+	
+	
+	/**
+	 * 修改会员明细
+	 * @param appUserVipDetail
+	 */
+	@PostMapping("/updateAppUserVipDetail")
+	public void updateAppUserVipDetail(@RequestBody TAppUserVipDetail appUserVipDetail){
+		appUserVipDetailService.updateById(appUserVipDetail);
+	}
 	
 }
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 e073766..d49f395 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
@@ -11,6 +11,9 @@
 import com.ruoyi.chargingPile.api.query.SiteQuery;
 import com.ruoyi.chargingPile.api.vo.*;
 import com.ruoyi.chargingPile.domain.SiteMenu;
+import com.ruoyi.chargingPile.dto.ChargingPercentBack;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.chargingPile.service.*;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.GeodesyUtil;
@@ -18,6 +21,8 @@
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.other.api.feignClient.RoleSiteClient;
 import com.ruoyi.other.api.feignClient.UserSiteClient;
 import com.ruoyi.system.api.domain.SysUser;
@@ -33,8 +38,11 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalTime;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author zhibing.pu
@@ -72,6 +80,9 @@
 	@Autowired
 	private TAccountingStrategyDetailService accountingStrategyDetailService;
 
+	@Resource
+	private ChargingOrderClient chargingOrderClient;
+
 
 	/**
 	 * 小程序扫一扫
@@ -105,6 +116,112 @@
 		PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList);
 		return AjaxResult.success(list);
 	}
+	@GetMapping("/getSiteList/byUserId")
+	@ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"})
+	public R<List<GetSiteListDTO>> getSiteListByUserId(@RequestParam("userId") Long userId){
+		PageInfo<GetSiteListDTO> list = siteService.getSiteList1(userId);
+		return R.ok(list.getRecords());
+	}
+
+
+
+	@GetMapping("/map/getSiteList")
+	@ApiOperation(value = "获取站点", tags = {"管理后台-数据分析-电站分析"})
+	public R<List<GetSiteListDTO>> getMapSiteList(GetSiteList siteList){
+		siteList.setPageCurr(1);
+		siteList.setPageCurr(99999);
+		PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList);
+		return R.ok(list.getRecords());
+	}
+
+
+	@GetMapping("/map/getPercent")
+	@ApiOperation(value = "获取该充电站的利用率", tags = {"管理后台-数据分析-电站分析"})
+	public R getPercent(Integer siteId){
+		BigDecimal bigDecimal = new BigDecimal("0");
+		//获取该站点的总充电度数
+		List<TChargingOrder> chargingOrders = chargingOrderClient.getList(siteId).getData();
+		for (TChargingOrder chargingOrder : chargingOrders) {
+			bigDecimal = bigDecimal.add(chargingOrder.getChargingCapacity());
+		}
+		//获取该站点的所有充电桩
+		List<TChargingPile> chargingPiles = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, siteId).list();
+		BigDecimal bigDecimal1 = new BigDecimal("0");
+		for (TChargingPile chargingPile : chargingPiles) {
+			bigDecimal1 = bigDecimal1.add(chargingPile.getRatedPower());
+		}
+		BigDecimal multiply = bigDecimal1.multiply(new BigDecimal("24"));
+
+		BigDecimal divide = bigDecimal.divide(multiply, 0, BigDecimal.ROUND_HALF_UP);
+
+
+		return R.ok(divide);
+	}
+
+
+
+
+	@PostMapping("/map/getPercentByprovinceCode")
+	@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);
+		}
+
+
+
+		GetSiteList siteList = new GetSiteList();
+		siteList.setProvinceCode(chargingPercentProvinceDto.getProvinceCode());
+		siteList.setPageCurr(1);
+		siteList.setPageCurr(9999);
+		ChargingPercentBack chargingPercentBack = new ChargingPercentBack();
+
+		//通过省编码获取充电站id
+		List<GetSiteListDTO> records = siteService.getSiteList(siteList).getRecords();
+		List<Integer> collect = records.stream().map(GetSiteListDTO::getId).collect(Collectors.toList());
+		// 通过时间段获取和充电桩id获取各个充电站的充电订单
+		List<ChargingOrderGroup> data = chargingOrderClient.getBySiteIdAndTime(chargingPercentProvinceDto).getData();
+		// 计算利用率展示
+		for (ChargingOrderGroup datum : data) {
+			List<TChargingPile> chargingPiles = chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, datum.getSiteId()).list();
+			BigDecimal bigDecimal1 = new BigDecimal("0");
+			for (TChargingPile chargingPile : chargingPiles) {
+				bigDecimal1 = bigDecimal1.add(chargingPile.getRatedPower());
+			}
+
+			long daysBetween = ChronoUnit.DAYS.between(chargingPercentProvinceDto.getDate1(), chargingPercentProvinceDto.getDate2()) + 1;
+			BigDecimal multiply = bigDecimal1.multiply(new BigDecimal("24")).multiply(BigDecimal.valueOf(daysBetween));
+			//得到利用率
+			BigDecimal divide = datum.getChargingCapacity().divide(multiply, 0, BigDecimal.ROUND_HALF_UP);
+			//如果利用率大于等于10
+			if (divide.compareTo(BigDecimal.valueOf(10))>=0){
+				chargingPercentBack.setCount1(chargingPercentBack.getCount1()+1);
+			}
+
+			//如果利用率大于等于5小于10
+			if (divide.compareTo(BigDecimal.valueOf(5))>=0 && divide.compareTo(BigDecimal.valueOf(10))<0){
+				chargingPercentBack.setCount2(chargingPercentBack.getCount2()+1);
+			}
+			//如果利用率大于等于1小于5
+			if (divide.compareTo(BigDecimal.valueOf(1))>=0 && divide.compareTo(BigDecimal.valueOf(5))<0){
+				chargingPercentBack.setCount3(chargingPercentBack.getCount3()+1);
+			}
+			//如果利用率小于1
+			if (divide.compareTo(BigDecimal.valueOf(1))<0){
+				chargingPercentBack.setCount4(chargingPercentBack.getCount4()+1);
+			}
+
+		}
+		return R.ok(chargingPercentBack);
+	}
+
+
 	@GetMapping("/getSiteList1")
 	@ApiOperation(value = "获取站点列表 不分页", tags = {"管理后台-活动费用统计"})
 	public AjaxResult<List<Site>> getSiteList1(){
@@ -162,7 +279,7 @@
 		return AjaxResult.success(chargingPileService.getChargingGunList(siteId,type));
 	}
 
-	@ApiOperation(value = "获取站点下充电枪数量统计", tags = {"小程序-站点管理-站点详情"})
+	@ApiOperation(value = "获取站点下充电枪数量统计", tags = {"小程序-站点管理-站点详情","管理后台-数据分析-电站分析"})
 	@GetMapping("/getChargingGunCount")
 	public AjaxResult<Map<String,ChargingGunCountVO>> getChargingGunCount(@RequestParam(value = "siteId")@ApiParam(value = "站点id", required = true)Integer siteId){
 		return AjaxResult.success(chargingGunService.getChargingGunCount(siteId));
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
index ffc0dfa..5234673 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyDetailController.java
@@ -1,23 +1,23 @@
 package com.ruoyi.chargingPile.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.chargingPile.api.vo.StrategyPriceVO;
 import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO;
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyService;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Objects;
@@ -77,6 +77,19 @@
     public AjaxResult<StrategyPriceVO> queryPrice(@RequestParam("siteId") Integer siteId) {
         return AjaxResult.ok(accountingStrategyDetailService.queryPrice(siteId));
     }
-
+    
+    
+    /**
+     * 获取当前有效的计费模板
+     * @param accountingStrategyId
+     * @return
+     */
+    @PostMapping("/getNowData")
+    public R<TAccountingStrategyDetail> getNowData(@RequestParam("accountingStrategyId") Integer accountingStrategyId){
+        TAccountingStrategyDetail one = accountingStrategyDetailService.getOne(new LambdaQueryWrapper<TAccountingStrategyDetail>()
+                .eq(TAccountingStrategyDetail::getAccountingStrategyId, accountingStrategyId)
+                .last(" and DATE_FORMAT(now(), '%H:%i') between start_time and end_time"));
+        return R.ok(one);
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
index 08e5674..22746d3 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
@@ -26,6 +26,8 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.Arrays;
 import java.util.List;
 
@@ -149,5 +151,10 @@
     public R<TParkingRecord> getRecordById(@RequestParam("id") Long id){
         return R.ok(parkingRecordService.getById(id));
     }
+    @PostMapping(value = "/getRecordAmount")
+    public R<BigDecimal> getRecordAmount(@RequestParam("sixBefore") LocalDate sixBefore){
+        BigDecimal sum =  parkingRecordService.getSum(sixBefore);
+        return R.ok();
+    }
 }
 
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 dbe9c26..433728e 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
@@ -1,8 +1,18 @@
 package com.ruoyi.chargingPile.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.chargingPile.api.model.TParkingLot;
+import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import com.ruoyi.chargingPile.dto.ParkingRecordPageQuery;
+import com.ruoyi.chargingPile.service.TParkingLotService;
+import com.ruoyi.chargingPile.service.TParkingRecordService;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
 
 /**
  * <p>
@@ -15,6 +25,39 @@
 @RestController
 @RequestMapping("/t-parking-record")
 public class TParkingRecordController {
+    @Resource
+    private TParkingRecordService parkingRecordService;
+    @Resource
+    private TParkingLotService parkingLotService;
+
+    @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "列表")
+    @PostMapping(value = "/page")
+    public R<Page<TParkingRecord>> page(@RequestBody ParkingRecordPageQuery query) {
+        Page<TParkingRecord> page = parkingRecordService.lambdaQuery().ge(query.getStart() != null, TParkingRecord::getCreateTime, query.getStart())
+                .le(query.getEnd() != null, TParkingRecord::getCreateTime, query.getEnd())
+                .like(query.getLicensePlate() != null, TParkingRecord::getLicensePlate, query.getLicensePlate())
+                .eq(query.getStatus() != null, TParkingRecord::getStatus, query.getStatus())
+                .eq(query.getOutParkingType() != null, TParkingRecord::getOutParkingType, query.getOutParkingType())
+                .page(Page.of(query.getPageCurr(), query.getPageSize()));
+
+        for (TParkingRecord record : page.getRecords()) {
+            record.setName(parkingLotService.getById(record.getParkingLotId()).getName());
+            record.setUid(record.getId().toString());
+        }
+        return R.ok(page);
+    }
+
+    @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "出场")
+    @GetMapping(value = "/out")
+    public R out(Long id) {
+        TParkingRecord byId = parkingRecordService.getById(id);
+        byId.setStatus(2);
+        parkingRecordService.updateById(byId);
+        return R.ok();
+
+    }
+
+
 
 }
 
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ChargingPercentBack.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ChargingPercentBack.java
new file mode 100644
index 0000000..5ea0ad0
--- /dev/null
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ChargingPercentBack.java
@@ -0,0 +1,14 @@
+package com.ruoyi.chargingPile.dto;
+
+import lombok.Data;
+import org.apache.poi.hpsf.Decimal;
+
+import java.math.BigDecimal;
+
+@Data
+public class ChargingPercentBack {
+    private Long count1 = 0L;
+    private Long count2= 0L;
+    private Long count3= 0L;
+    private Long count4= 0L;
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ParkingRecordPageQuery.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ParkingRecordPageQuery.java
new file mode 100644
index 0000000..0062f60
--- /dev/null
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/dto/ParkingRecordPageQuery.java
@@ -0,0 +1,16 @@
+package com.ruoyi.chargingPile.dto;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class ParkingRecordPageQuery extends BasePage {
+    LocalDate start;
+    LocalDate end;
+    String licensePlate;
+    Integer status;
+    Integer outParkingType;
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java
index 0876ee7..248c63f 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java
@@ -2,6 +2,10 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.chargingPile.api.model.TParkingRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
 
 /**
  * <p>
@@ -13,4 +17,5 @@
  */
 public interface TParkingRecordMapper extends BaseMapper<TParkingRecord> {
 
+    BigDecimal getSum(@Param("sixBefore") LocalDate sixBefore);
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
index b24a0eb..15cf0c5 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
@@ -28,7 +28,8 @@
 	 * @return
 	 */
 	PageInfo<GetSiteListDTO> getSiteList(GetSiteList siteList);
-	
+	PageInfo<GetSiteListDTO> getSiteList1(Long userId);
+
 	
 	/**
 	 * 添加站点信息
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java
index 1a1b349..2af1069 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java
@@ -3,6 +3,9 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.chargingPile.api.model.TParkingRecord;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +16,5 @@
  */
 public interface TParkingRecordService extends IService<TParkingRecord> {
 
+    BigDecimal getSum(LocalDate sixBefore);
 }
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 1a3a90f..38e0916 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
@@ -107,10 +107,46 @@
 		}
 		return pageInfo.setRecords(list);
 	}
-	
-	
-	
-	
+
+
+	@Override
+	public PageInfo<GetSiteListDTO> getSiteList1(Long userId) {
+		GetSiteList siteList = new GetSiteList();
+		siteList.setPageCurr(1);
+		siteList.setPageSize(9999);
+		Set<Integer> ids = null;
+		//校验合作商权限
+		SysUser sysUser = sysUserClient.getSysUser(userId).getData();
+		Integer roleType = sysUser.getRoleType();
+		Integer objectId = sysUser.getObjectId();
+		//合作商
+		if(roleType == 2){
+			ids = partnerService.authSite(objectId, SiteMenu.SITE_LIST);
+		}else{
+			//非管理员需要根据角色和用户配置查询允许的站点数据
+			if(!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+				List<Integer> data = userSiteClient.getSiteIds(sysUser.getUserId()).getData();
+				List<Integer> data1 = roleSiteClient.getSiteIds(sysUser.getRoleId()).getData();
+				data.addAll(data1);
+				ids = new HashSet<>(data);
+			}
+		}
+		PageInfo<GetSiteListDTO> pageInfo = new PageInfo<>(siteList.getPageCurr(), siteList.getPageSize());
+		List<GetSiteListDTO> list = this.baseMapper.getSiteList(pageInfo, siteList, ids);
+		for (GetSiteListDTO getSiteListDTO : list) {
+			Integer siteId = getSiteListDTO.getId();
+			getSiteListDTO.setAuthAccountingStrategy(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_ACCOUNTING_STRATEGY));
+			//平台账号才有此权限
+			getSiteListDTO.setAuthPartner(roleType == 1 ? true : false);
+			getSiteListDTO.setAuthUpdate(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_UPDATE));
+			getSiteListDTO.setAuthDelete(roleType == 1 ? true : partnerService.authMenu(objectId, siteId, SiteMenu.SITE_DELETE));
+		}
+		return pageInfo.setRecords(list);
+	}
+
+
+
+
 	/**
 	 * 添加站点信息
 	 * @param site
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 a567303..d497796 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
@@ -40,6 +40,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.MathContext;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -304,8 +305,13 @@
 		chargeMonitoring.setNotCharged(total.size() - charging.size());
 		chargeMonitoring.setRatedPower(ratedPower.setScale(4, RoundingMode.HALF_EVEN));
 		chargeMonitoring.setRealTimePower(realTimePower.setScale(4, RoundingMode.HALF_EVEN));
-		chargeMonitoring.setDemandPowerSatisfactionRate(realTimePower.divide(ratedPower).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN));
-		
+		if(ratedPower.equals(BigDecimal.ZERO)){
+			chargeMonitoring.setDemandPowerSatisfactionRate(BigDecimal.ZERO);
+		}else{
+			chargeMonitoring.setDemandPowerSatisfactionRate(realTimePower.divide(ratedPower, new MathContext(2, RoundingMode.HALF_EVEN))
+					.multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN));
+		}
+
 		List<String> dates = new ArrayList<>();
 		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MMM-dd");
 		Calendar calendar = Calendar.getInstance();
@@ -325,8 +331,12 @@
 		List<Double> data = chargingOrderAccountingStrategyClient.getDailyChargingDegree(6, siteIds).getData();
 		List<Double> value2 = new ArrayList<>();
 		for (Double datum : data) {
-			Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
-			value2.add(datum1);
+			if(list.size() == 0){
+				value2.add(0D);
+			}else{
+				Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24))).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
+				value2.add(datum1);
+			}
 		}
 		Map<String, Object> utilizationTrend = new HashMap<>();
 		utilizationTrend.put("date", dates);
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
index 12d98fa..73fccbb 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java
@@ -6,6 +6,9 @@
 import com.ruoyi.chargingPile.service.TParkingRecordService;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +20,8 @@
 @Service
 public class TParkingRecordServiceImpl extends ServiceImpl<TParkingRecordMapper, TParkingRecord> implements TParkingRecordService {
 
+    @Override
+    public BigDecimal getSum(LocalDate sixBefore) {
+        return this.baseMapper.getSum(sixBefore);
+    }
 }
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
index 1ef7f1a..defbedf 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml
@@ -23,5 +23,8 @@
     <sql id="Base_Column_List">
         id, app_user_id, license_plate, vehicle_color, charging_order_id, parking_lot_id, in_parking_time, out_parking_time, parking_duration, order_amount, status, out_parking_type, create_time
     </sql>
+    <select id="getSum" resultType="java.math.BigDecimal">
+        select sum(timeout_amount) from t_parking_record where   in_parking_time >= #{sixBefore}
+    </select>
 
 </mapper>
diff --git a/ruoyi-service/ruoyi-integration/pom.xml b/ruoyi-service/ruoyi-integration/pom.xml
index 0ee4a2f..4c146a8 100644
--- a/ruoyi-service/ruoyi-integration/pom.xml
+++ b/ruoyi-service/ruoyi-integration/pom.xml
@@ -164,8 +164,11 @@
             <artifactId>huaweicloud-sdk-bundle</artifactId>
             <version>3.1.87</version>
         </dependency>
-
-
+    
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-order</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/PlatformStartChargingReplyController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/PlatformStartChargingReplyController.java
new file mode 100644
index 0000000..b5224d7
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/PlatformStartChargingReplyController.java
@@ -0,0 +1,35 @@
+package com.ruoyi.integration.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.integration.api.model.PlatformStartChargingReply;
+import com.ruoyi.integration.mongodb.service.PlatformStartChargingReplyService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/31 15:09
+ */
+@RestController
+@RequestMapping("/platformStartChargingReply")
+public class PlatformStartChargingReplyController {
+	
+	@Resource
+	private PlatformStartChargingReplyService platformStartChargingReplyService;
+	
+	/**
+	 * 根据订单编号查询远程启机应答结果
+	 * @param code
+	 * @return
+	 */
+	@PostMapping("/getPlatformStartChargingReply")
+	public R<List<PlatformStartChargingReply>> getPlatformStartChargingReply(@RequestParam("code") String code){
+		List<PlatformStartChargingReply> platformStartChargingReply = platformStartChargingReplyService.getPlatformStartChargingReply(code);
+		return R.ok(platformStartChargingReply);
+	}
+}
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 7928fbe..aedff15 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
@@ -10,6 +10,7 @@
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -51,6 +52,14 @@
         List<UploadRealTimeMonitoringData> list = uploadRealTimeMonitoringDataService.getDataByOrderCode(code);
         return R.ok(list);
     }
+
+
+    @PostMapping(value = "/getAll")
+    public R<List<UploadRealTimeMonitoringData>> getAll(@RequestParam("values") Set<String> values,@RequestParam("page") Integer page, @RequestParam("size")Integer size){
+        List<UploadRealTimeMonitoringData> list = uploadRealTimeMonitoringDataService.getDataAll(values,page,size);
+        return R.ok(list);
+    }
+
     
 }
 
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/PlatformStartChargingReplyService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/PlatformStartChargingReplyService.java
index da31586..c07b517 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/PlatformStartChargingReplyService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/PlatformStartChargingReplyService.java
@@ -2,6 +2,17 @@
 
 import com.ruoyi.integration.api.model.PlatformStartChargingReply;
 import com.ruoyi.integration.mongodb.base.BaseService;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 public interface PlatformStartChargingReplyService extends BaseService<PlatformStartChargingReply> {
+	
+	/**
+	 * 根据订单编号查询远程启机应答数据
+	 * @param code
+	 * @return
+	 */
+	List<PlatformStartChargingReply> getPlatformStartChargingReply(String code);
+	
 }
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 c63f3f5..e142505 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
@@ -5,6 +5,7 @@
 import com.ruoyi.integration.mongodb.base.BaseService;
 
 import java.util.List;
+import java.util.Set;
 
 public interface UploadRealTimeMonitoringDataService extends BaseService<UploadRealTimeMonitoringData> {
 	
@@ -14,5 +15,6 @@
 	 * @return
 	 */
 	List<UploadRealTimeMonitoringData> getDataByOrderCode(String code);
-	
+	List<UploadRealTimeMonitoringData> getDataAll(Set<String> values, Integer page, Integer size);
+
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStartChargingReplyServiceImpl.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStartChargingReplyServiceImpl.java
index fcbe760..78fa5c2 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStartChargingReplyServiceImpl.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/PlatformStartChargingReplyServiceImpl.java
@@ -5,6 +5,8 @@
 import com.ruoyi.integration.mongodb.service.PlatformStartChargingReplyService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -29,4 +31,18 @@
     public List<PlatformStartChargingReply> findAll() {
         return mongoTemplate.findAll(PlatformStartChargingReply.class);
     }
+    
+    
+    /**
+     * 根据订单编号查询远程启机应答数据
+     * @param code
+     * @return
+     */
+    @Override
+    public List<PlatformStartChargingReply> getPlatformStartChargingReply(String code) {
+        Query query = new Query();
+        query.addCriteria(Criteria.where("transaction_serial_number").is(code));
+        List<PlatformStartChargingReply> platformStartChargingReplies = mongoTemplate.find(query, PlatformStartChargingReply.class);
+        return platformStartChargingReplies;
+    }
 }
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 adfda0b..89cf4d0 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
@@ -6,6 +6,8 @@
 import com.ruoyi.integration.iotda.constant.IotConstant;
 import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.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;
@@ -13,6 +15,7 @@
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Set;
 
 @Service
 public class UploadRealTimeMonitoringDataServiceImpl implements UploadRealTimeMonitoringDataService {
@@ -53,4 +56,21 @@
                 , UploadRealTimeMonitoringData.class);
         return uploadRealTimeMonitoringData;
     }
+
+    @Override
+    public List<UploadRealTimeMonitoringData> getDataAll(Set<String> values, Integer page, Integer size) {
+        Query query = new Query();
+        if (!values.isEmpty()){
+            query.addCriteria(Criteria.where("transaction_serial_number").in(values));
+        }
+        // 设置分页
+        Pageable pageable = PageRequest.of(page, size);
+        query.with(pageable);
+
+        List<UploadRealTimeMonitoringData> uploadRealTimeMonitoringData = mongoTemplate.find(
+                query.with(Sort.by("create_time"))
+                , UploadRealTimeMonitoringData.class);
+        return uploadRealTimeMonitoringData;
+    }
+
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
index 31a7501..f28993e 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/rocket/listener/UploadRealTimeMonitoringDataMessageListener.java
@@ -5,12 +5,16 @@
 import com.ruoyi.integration.mongodb.service.UploadRealTimeMonitoringDataService;
 import com.ruoyi.integration.rocket.model.UploadRealTimeMonitoringDataMessage;
 import com.ruoyi.integration.rocket.util.EnhanceMessageHandler;
+import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
 import org.apache.rocketmq.spring.core.RocketMQListener;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
 
 @Slf4j
 @Component
@@ -24,6 +28,15 @@
 
     @Autowired
     private UploadRealTimeMonitoringDataService uploadRealTimeMonitoringDataService;
+    
+    @Resource
+    private ChargingOrderClient chargingOrderClient;
+    
+    
+    
+    
+    
+    
     @Override
     protected void handleMessage(UploadRealTimeMonitoringDataMessage message) throws Exception {
         // 此时这里才是最终的业务处理,代码只需要处理资源类关闭异常,其他的可以交给父类重试
@@ -33,6 +46,9 @@
         BeanUtils.copyProperties(message,uploadRealTimeMonitoringData);
         uploadRealTimeMonitoringDataService.create(uploadRealTimeMonitoringData);
         // 业务处理
+        UploadRealTimeMonitoringDataQuery query = new UploadRealTimeMonitoringDataQuery();
+        BeanUtils.copyProperties(uploadRealTimeMonitoringData, query);
+        chargingOrderClient.chargeMonitoring(query);
     }
 
     @Override
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index 9c19079..ca25338 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
@@ -2,6 +2,8 @@
 import com.google.common.collect.Lists;
 
 import java.math.BigDecimal;
+import java.time.DayOfWeek;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 
@@ -9,6 +11,7 @@
 import com.ruoyi.account.api.feignClient.AppUserCarClient;
 import com.ruoyi.account.api.feignClient.AppUserClient;
 import com.ruoyi.account.api.model.TAppUserCar;
+import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
 import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
@@ -19,14 +22,23 @@
 import com.ruoyi.chargingPile.api.model.TParkingRecord;
 import com.ruoyi.chargingPile.api.vo.SiteVO;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
+import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.BasePage;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
+import com.ruoyi.integration.api.model.ChargingOrderAndUploadRealTimeMonitoringDataDto;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
 import com.ruoyi.order.api.model.*;
 import com.ruoyi.order.api.query.ChargingOrderQuery;
 import com.ruoyi.order.api.query.TChargingCountQuery;
+import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import com.ruoyi.order.api.vo.ChargingOrderInfoVO;
 import com.ruoyi.order.api.vo.ChargingOrderVO;
 import com.ruoyi.order.api.vo.TCharingOrderVO;
@@ -37,12 +49,16 @@
 import com.ruoyi.order.dto.OrderEvaluateVo;
 import com.ruoyi.order.dto.*;
 import com.ruoyi.order.service.*;
+import com.ruoyi.order.util.PreviousSixMonths;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
 import com.ruoyi.payment.api.vo.AliQueryOrder;
+import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
+import jdk.nashorn.internal.runtime.ListAdapter;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
@@ -51,12 +67,17 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
+import java.time.YearMonth;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
 import java.util.*;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
- * 前端控制器
+ *  前端控制器
  * </p>
  *
  * @author xiaochen
@@ -73,20 +94,21 @@
     private TokenService tokenService;
     @Autowired
     private TOrderEvaluateService orderEvaluateService;
-
+    
     @Resource
     private WxPaymentClient wxPaymentClient;
-
+    
     @Resource
     private RedisService redisService;
-
+    
     @Resource
     private AliPaymentClient aliPaymentClient;
     @Resource
     private TShoppingOrderService shoppingOrderService;
-
-    @Autowired
+    
+    @Resource
     private AppUserClient appUserClient;
+    
 
     @Resource
     private TVipOrderService vipOrderService;
@@ -109,6 +131,9 @@
     private AppUserCarClient appUserCarClient;
     @Resource
     private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
+
+
+
 
     @ResponseBody
     @PostMapping(value = "/pay/order/list")
@@ -168,11 +193,12 @@
 //                    payOrderInfoDto3.setRefundAmount(new BigDecimal("0"));
 
 
-        }
+
+
+            }
         return R.ok();
 
     }
-
     @ResponseBody
     @GetMapping(value = "/pay/order/refund/detail")
     @ApiOperation(value = "退款信息", tags = {"管理后台-支付订单-订单信息"})
@@ -205,8 +231,10 @@
         payOrderChargingInfo.setChargingName(data1.getName());
         TChargingGun data2 = chargingGunClient.getChargingGunById(byId.getChargingGunId()).getData();
         payOrderChargingInfo.setGunName(data2.getName());
-        List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData();
-        payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate());
+        if (byId.getAppUserCarId()!=null) {
+            List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData();
+            payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate());
+        }
         return R.ok();
     }
 
@@ -219,6 +247,7 @@
     }
 
 
+
     @ResponseBody
     @PostMapping(value = "/pay/order/refund/list")
     @ApiOperation(value = "充电信息", tags = {"管理后台-支付订单-退款订单"})
@@ -226,6 +255,9 @@
         return chargingOrderService.getRefundList(chargingRefundDto);
 
     }
+
+
+
 
 
     @ResponseBody
@@ -264,7 +296,6 @@
         orderEvaluateService.addOrderEvaluate(dto);
         return AjaxResult.success();
     }
-
     /**
      * 查询用户最近一次充电记录使用的车辆
      *
@@ -276,18 +307,17 @@
         List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>()
                 .eq(TChargingOrder::getAppUserId, tokenService.getLoginUserApplet().getUserId())
                 .isNotNull(TChargingOrder::getAppUserCarId));
-        if (!list.isEmpty()) {
+        if (!list.isEmpty()){
             // 最近使用的车辆id
             Long size = list.get(0).getAppUserCarId();
             return R.ok(size);
-        } else {
+        }else{
             return R.ok(-1L);
         }
     }
 
     /**
      * 查询会员在本月有多少次享受了充电折扣
-     *
      * @param req
      * @return
      */
@@ -299,7 +329,6 @@
                 .between(TChargingOrder::getStartTime, req.getStartTime(), req.getEndTime())).size();
         return R.ok(size);
     }
-
     //用户订单数量
     @PostMapping(value = "/useOrderCount")
     public R<Long> useOrderCount(@RequestParam("userId") Long userId) {
@@ -314,9 +343,22 @@
         return R.ok(chargingOrderService.getById(orderId));
     }
 
+    @PostMapping(value = "/getList")
+    public R<List<TChargingOrder>> getList(@RequestParam("siteId") Integer siteId) {
+
+        List<TChargingOrder> list = chargingOrderService.lambdaQuery().eq(TChargingOrder::getSiteId, siteId).list();
+        return R.ok(list);
+    }
+
+    @PostMapping(value = "/getBySiteIdAndTime")
+    public R<List<ChargingOrderGroup>> getBySiteIdAndTime(@RequestBody ChargingPercentProvinceDto chargingPercentProvinceDto) {
+
+        List<ChargingOrderGroup> groups = chargingOrderService.chargingOrderGroup(chargingPercentProvinceDto);
+        return R.ok(groups);
+    }
+
     /**
      * 根据充电枪id获取正在进行中的订单
-     *
      * @param chargingGunId 充电枪id
      * @return
      */
@@ -326,8 +368,10 @@
                 .eq(TChargingOrder::getDelFlag, 0).eq(TChargingOrder::getStatus, 3));
         return R.ok(one);
     }
-
-
+    
+    
+    
+    
     @ResponseBody
     @GetMapping(value = "/getMyChargingOrderList")
     @ApiOperation(value = "获取充电记录列表", tags = {"小程序-充电记录"})
@@ -335,8 +379,8 @@
         Map<String, Object> orderList = chargingOrderService.getMyChargingOrderList(query);
         return AjaxResult.success(orderList);
     }
-
-
+    
+    
     @ResponseBody
     @GetMapping(value = "/getMyChargingOrderInfo")
     @ApiOperation(value = "获取充电记订单明细", tags = {"小程序-充电记录"})
@@ -344,8 +388,9 @@
         MyChargingOrderInfo myChargingOrderInfo = chargingOrderService.getMyChargingOrderInfo(id);
         return AjaxResult.success(myChargingOrderInfo);
     }
-
-
+    
+    
+    
     @ResponseBody
     @GetMapping(value = "/getNoInvoicedOrder")
     @ApiOperation(value = "获取未开票的订单数据", tags = {"小程序-充电发票"})
@@ -353,18 +398,18 @@
         List<MyChargingOrderList> list = chargingOrderService.getNoInvoicedOrder(query);
         return AjaxResult.success(list);
     }
-
-
+    
+    
+    
     @ResponseBody
     @PostMapping(value = "/paymentChargingOrder")
     @ApiOperation(value = "支付充电充值费用", tags = {"小程序-扫一扫"})
     public AjaxResult paymentChargingOrder(@RequestBody AddChargingOrder addChargingOrder) {
         return chargingOrderService.paymentChargingOrder(addChargingOrder);
     }
-
+    
     /**
      * 充电充值支付回调
-     *
      * @param request
      */
     @ResponseBody
@@ -404,6 +449,27 @@
             e.printStackTrace();
         }
     }
+    
+    
+    /**
+     * 远程启动失败后退款回调
+     * @param request
+     */
+    @ResponseBody
+    @PostMapping(value = "/chargingOrderALICallback")
+    public void chargingOrderStartupFailureWxRefund(HttpServletRequest request){
+        WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
+        if(null != data){
+            String out_refund_no = data.getOut_refund_no();
+            String refund_id = data.getRefund_id();
+            String tradeState = data.getTradeState();
+            String success_time = data.getSuccess_time();
+            chargingOrderService.chargingOrderStartupFailureWxRefund(out_refund_no, refund_id, tradeState, success_time);
+        }
+    }
+    
+    
+    
 
 
     @ResponseBody
@@ -417,8 +483,9 @@
         Object cacheObject = redisService.getCacheObject(key);
         return AjaxResult.success(cacheObject);
     }
-
-
+    
+    
+    
     @ResponseBody
     @GetMapping(value = "/getChargingDetails/{id}")
     @ApiOperation(value = "获取充电中页面数据", tags = {"小程序-扫一扫"})
@@ -440,5 +507,268 @@
     public AjaxResult stopCharging(@PathVariable String id) {
         return chargingOrderService.stopCharging(id);
     }
-}
 
+    @ResponseBody
+    @GetMapping(value = "/six/charge")
+    @ApiOperation(value = "电站收入分析", tags = {"后台-数据分析-平台收入分析"})
+    public R<List<SixChargingDto>> charge(Integer siteId) {
+        Long userId = SecurityUtils.getUserId();
+        //如果没传siteId,获取当前登陆人所有的siteIds
+        List<Integer> siteIds = new ArrayList<>();
+        if (siteId==null){
+            List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+            for (GetSiteListDTO datum : data) {
+                siteIds.add(datum.getId());
+            }
+        }else {
+            siteIds.add(siteId);
+        }
+        LocalDate sixBefore = PreviousSixMonths.get();
+        //通过siteIds进行sql查询统计
+        List<SixChargingDto> chargingDtos = chargingOrderService.charge(sixBefore, siteIds);
+
+        return R.ok(chargingDtos);
+
+    }
+
+    @ResponseBody
+    @GetMapping(value = "/six/circle")
+    @ApiOperation(value = "电站收入占比", tags = {"后台-数据分析-平台收入分析"})
+    public R<List<SixCircleDto>> circle() {
+        Long userId = SecurityUtils.getUserId();
+        //获取当前登录的siteIds
+        List<Integer> siteIds = new ArrayList<>();
+            List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+            for (GetSiteListDTO datum : data) {
+                siteIds.add(datum.getId());
+            }
+        //进行统计groupBySiteId
+        LocalDate sixBefore = PreviousSixMonths.get();
+
+        List<SixCircleDto> sixCircleDtos = chargingOrderService.circle(siteIds,sixBefore);
+        for (SixCircleDto sixCircleDto : sixCircleDtos) {
+            Site site = siteClient.getSiteByIds(Arrays.asList(sixCircleDto.getSiteId())).getData().get(0);
+            sixCircleDto.setSiteName(site.getName());
+        }
+        return R.ok(sixCircleDtos);
+
+    }
+
+
+    @ResponseBody
+    @GetMapping(value = "/six/shop")
+    @ApiOperation(value = "购物收入", tags = {"后台-数据分析-平台收入分析"})
+    public R<List<SixShopDto>> shop(Integer status) {
+        //count近6个月的数据
+        LocalDate sixBefore = PreviousSixMonths.get();
+        List<SixShopDto> sixShopDtos =  shoppingOrderService.sixBefore(sixBefore,status);
+        return R.ok(sixShopDtos);
+    }
+
+    @ResponseBody
+    @GetMapping(value = "/six/vip")
+    @ApiOperation(value = "vip收入", tags = {"后台-数据分析-平台收入分析"})
+    public R<List<SixVipDto>> vip() {
+        //count近6个月的数据
+        LocalDate sixBefore = PreviousSixMonths.get();
+        List<SixVipDto> vipDtos =  vipOrderService.sixBefore(sixBefore);
+        return R.ok(vipDtos);
+    }
+
+    @ResponseBody
+    @GetMapping(value = "/six/total")
+    @ApiOperation(value = "底部数据分类", tags = {"后台-数据分析-平台收入分析"})
+    public R<Map<String,BigDecimal>> total() {
+        //count近6个月的数据
+        LocalDate sixBefore = PreviousSixMonths.get();
+        Map<String,BigDecimal>  map = chargingOrderService.countAll(sixBefore);
+        BigDecimal data = parkingLotClient.getRecordAmount(sixBefore).getData();
+        map.put("parkingAmount",data);
+        BigDecimal data1 =   shoppingOrderService.getSumAmount(sixBefore);
+        map.put("shopAmount",data1);
+        BigDecimal data2 =   vipOrderService.getSumAmout(sixBefore);
+        map.put("vipAmount",data2);
+
+    return R.ok(map);
+    }
+
+    @Resource
+    private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient;
+    @ResponseBody
+    @PostMapping(value = "/watch/chargingOrder")
+    @ApiOperation(value = "监控订单", tags = {"管理后台-订单管理"})
+    public AjaxResult<TCharingOrderVO> watchChargingOrder(@RequestBody ChargingOrderQuery dto) {
+        Integer page = dto.getPageCurr();
+        Integer pageSize = dto.getPageSize();
+        List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData();
+        dto.setUserIds(data);
+        dto.setPageCurr(1);
+        dto.setPageSize(99999);
+        TCharingOrderVO res = chargingOrderService.chargingOrder(dto);
+        Map<String,TChargingOrder> map = new HashMap<>();
+        //吧list放入map中
+        for (ChargingOrderVO record : res.getList().getRecords()) {
+            map.put(record.getCode(),record);
+        }
+        Set<String> strings = map.keySet();
+
+
+        List<UploadRealTimeMonitoringData> data1 = uploadRealTimeMonitoringDataClient.getAll(strings, page, pageSize).getData();
+
+        List<ChargingOrderAndUploadRealTimeMonitoringDataDto> dtos = new ArrayList<>();
+        for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1) {
+            ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto();
+            BeanUtils.copyProperties(uploadRealTimeMonitoringData,dataDto);
+            BeanUtils.copyProperties(map.get(uploadRealTimeMonitoringData.getCharging_pile_code()),dataDto);
+            dtos.add(dataDto);
+        }
+
+
+        return AjaxResult.success(res);
+    }
+    
+    
+    
+    
+    /**
+     * 处理充电订单实时监控数据相关的业务逻辑
+     * @param query
+     */
+    @PostMapping("/chargeMonitoring")
+    public void chargeMonitoring(@RequestBody UploadRealTimeMonitoringDataQuery query){
+        chargingOrderService.chargeMonitoring(query);
+    }
+    
+
+
+
+
+//    @ResponseBody
+//    @PostMapping(value = "/charging/statistics")
+//    @ApiOperation(value = "统计", tags = {"管理后台-数据分析-充电运营分析"})
+//    public R<TCharingOrderVO> watchChargingOrder(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){
+//        List<Integer> siteIds =new ArrayList<>();
+//        if (statisticsQueryDto.getSiteId()==null) {
+//            Long userId = SecurityUtils.getUserId();
+//            //获取当前登录的siteIds
+//            List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData();
+//            for (GetSiteListDTO datum : data) {
+//                siteIds.add(datum.getId());
+//            }
+//        }else {
+//            siteIds.add(statisticsQueryDto.getSiteId());
+//        }
+//
+//
+//        LocalDate start = null;
+//        LocalDate end = null;
+//        if (statisticsQueryDto.getDayType()==1){
+//            start = LocalDate.now();
+//
+//        }else if (statisticsQueryDto.getDayType()==2){
+//            LocalDate today = LocalDate.now();
+//
+//            // 获取本周一的日期
+//            LocalDate mondayThisWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+//
+//            System.out.println("本周一是: " + mondayThisWeek);
+//        }
+//        else if (statisticsQueryDto.getDayType()==3){
+//            // 获取当前日期
+//            LocalDate today = LocalDate.now();
+//
+//            // 获取本月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 = LocalDate.of(currentYear, 1, 1);
+//            System.out.println("今年1月1日是: " + start);
+//        }else if (statisticsQueryDto.getDayType()==5){
+//
+//            // 获取今年1月1日的日期
+//            start = statisticsQueryDto.getStartTime();
+//            end = statisticsQueryDto.getEndTime();
+//        }
+//        List<TChargingOrder> list = chargingOrderService.lambdaQuery().ge(TChargingOrder::getStartTime, start).le(TChargingOrder::getEndTime, end).in(TChargingOrder::getSiteId, siteIds).list();
+//        List<Long> chargingOrderIds = list.stream().map(TChargingOrder::getId).collect(Collectors.toList());
+//        //上方饼图
+//         List<Map<String,BigDecimal>> maps =   chargingOrderService.getSumByType(chargingOrderIds);
+//
+//        if (statisticsQueryDto.getDayType()==1){
+//            List<Map<String,BigDecimal>> maps1 = chargingOrderService.getDateData(chargingOrderIds);
+//
+//        }else if (statisticsQueryDto.getDayType()==2){
+//            List<Map<String,BigDecimal>> maps1 = chargingOrderService.getWeekData(chargingOrderIds);
+//        }else if (statisticsQueryDto.getDayType()==3){
+//            List<Map<String,BigDecimal>> maps1 = chargingOrderService.getMonthData(chargingOrderIds);
+//        }else  if (statisticsQueryDto.getDayType()==4){
+//            List<Map<String,BigDecimal>> maps1 = chargingOrderService.getYearData(chargingOrderIds);
+//        }
+//
+//
+//
+//
+//
+//
+//    }
+
+    public static void main(String[] args) {
+        // 示例数据
+        List<TChargingOrder> list = getSampleData();
+        System.err.println(list);
+        List<Map<String, BigDecimal>> result = processData(list);
+
+        result.forEach(System.out::println);
+    }
+
+
+    private static List<TChargingOrder> getSampleData() {
+        // 这里可以替换为实际查询逻辑
+        List<TChargingOrder> list = new ArrayList<>();
+        // 示例数据
+        for (int i = 0; i < 24; i++) {
+            TChargingOrder order = new TChargingOrder();
+            order.setStartTime(LocalDateTime.now().minusHours(23 - i));
+            order.setOrderAmount(BigDecimal.valueOf(i + 1));
+            list.add(order);
+        }
+        return list;
+    }
+
+    private static List<Map<String, BigDecimal>> processData(List<TChargingOrder> list) {
+        Map<LocalDateTime, BigDecimal> hourlySum = new HashMap<>();
+
+        // 按每个小时分组并求和
+        for (TChargingOrder order : list) {
+            LocalDateTime hour = order.getStartTime().truncatedTo(ChronoUnit.HOURS);
+            BigDecimal amount = order.getOrderAmount();
+            hourlySum.merge(hour, amount, BigDecimal::add);
+        }
+
+        // 创建结果列表
+        List<Map<String, BigDecimal>> resultList = new ArrayList<>();
+        for (int i = 1; i <= 23; i++) {
+            LocalDateTime keyHour = LocalDateTime.now().withHour(i);
+            BigDecimal sum = BigDecimal.ZERO;
+
+            // 计算键之后的一小时的数据之和
+            for (int j = i + 1; j <= 23; j++) {
+                LocalDateTime nextHour = LocalDateTime.now().withHour(j);
+                sum = sum.add(hourlySum.getOrDefault(nextHour, BigDecimal.ZERO));
+            }
+
+            Map<String, BigDecimal> entry = new HashMap<>();
+            entry.put(String.valueOf(i), sum);
+            resultList.add(entry);
+        }
+
+        return resultList;
+    }
+
+}
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 e64f518..2a771c7 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
@@ -9,18 +9,19 @@
 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.TOrderAppeal;
+import com.ruoyi.order.api.model.*;
 import com.ruoyi.order.api.query.TOrderAppealQuery;
 import com.ruoyi.order.api.vo.TOrderAppealVO;
 import com.ruoyi.order.dto.ManageFeedbackDto;
 import com.ruoyi.order.dto.ManageOrderAppealQuery;
-import com.ruoyi.order.service.TOrderAppealService;
+import com.ruoyi.order.service.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 
 /**
  * <p>
@@ -38,6 +39,16 @@
     private final TokenService tokenService;
     @Resource
     private AppUserClient appUserClient;
+    @Resource
+    private TChargingOrderService chargingOrderService;
+    @Resource
+    private TShoppingOrderService shoppingOrderService;
+    @Resource
+    private TExchangeOrderService exchangeOrderService;
+
+    @Resource
+    private TVipOrderService vipOrderService;
+
 
     @Autowired
     public TOrderAppealController(TOrderAppealService orderAppealService, TokenService tokenService) {
@@ -53,9 +64,19 @@
                 .like(manageOrderAppealQuery.getPhone() != null, TOrderAppeal::getPhone, manageOrderAppealQuery.getPhone())
                 .eq(manageOrderAppealQuery.getOrderType() != null, TOrderAppeal::getOrderType, manageOrderAppealQuery.getOrderType())
                 .in(TOrderAppeal::getOrderType, 1, 2).page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize()));
+
+        for (TOrderAppeal record : page.getRecords()) {
+            record.setUid(record.getId().toString());
+        }
         return R.ok(page);
 
 
+    }
+    @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "删除")
+    @DeleteMapping (value = "/manage/delete")
+    public R<Page<TOrderAppeal>> delete(String ids) {
+        orderAppealService.removeBatchByIds(Arrays.asList(ids.split(",")));
+        return R.ok();
     }
 
     @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "后台-订单管理-订单申诉")
@@ -98,6 +119,20 @@
         orderAppeal.setAppUserId(appUserId);
         orderAppeal.setStatus(1);
         orderAppeal.setPhone(data.getPhone());
+
+        if (orderAppeal.getOrderType()==1){
+            TChargingOrder byId = chargingOrderService.getById(orderAppeal.getOrderId());
+            orderAppeal.setCode(byId.getCode());
+        }else if(orderAppeal.getOrderType()==2){
+            TShoppingOrder byId = shoppingOrderService.getById(orderAppeal.getOrderId());
+            orderAppeal.setCode(byId.getCode());
+        }else if(orderAppeal.getOrderType()==3){
+            TExchangeOrder byId = exchangeOrderService.getById(orderAppeal.getOrderId());
+            orderAppeal.setCode(byId.getCode());
+        }else if(orderAppeal.getOrderType()==4){
+            TVipOrder byId = vipOrderService.getById(orderAppeal.getOrderId());
+            orderAppeal.setCode(byId.getCode());
+        }
         orderAppealService.save(orderAppeal);
         return AjaxResult.success();
     }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingStatisticsQueryDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingStatisticsQueryDto.java
new file mode 100644
index 0000000..c75710d
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingStatisticsQueryDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.order.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+public class ChargingStatisticsQueryDto {
+    @ApiModelProperty("电站id")
+    private Integer siteId;
+    @ApiModelProperty("1今日2本周3本月4今年5自定义")
+    private Integer dayType;
+    @ApiModelProperty("开始时间")
+    private LocalDate startTime;
+    @ApiModelProperty("结束时间")
+    private LocalDate endTime;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
index db5a856..762d550 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
@@ -31,5 +31,7 @@
     private LocalDateTime endTime;
     @ApiModelProperty("支付时间")
     private LocalDateTime payTime;
+    private Integer refundStatus;
+    private Double finalAmount;
 
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PreChargeCheck.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PreChargeCheck.java
index 3620ddf..4ed552c 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PreChargeCheck.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PreChargeCheck.java
@@ -17,4 +17,8 @@
 	private Boolean insulationTesting;
 	@ApiModelProperty("电子锁锁止")
 	private Boolean electronicLockLock;
+	@ApiModelProperty("启动成功(1=启动中,2=启动成功,3=启动失败,退款)")
+	private Integer startupSuccess;
+	@ApiModelProperty("失败原因(0:无,1:设备编号不匹配,2:枪已在充电,3:设备故障,4:设备离线,5:未插枪桩在收到启充命令后,检测到未插枪则发送 0x33 报文回复充电失败。若在 60 秒(以收到 0x34 时间开始计算)内检测到枪重新连接,则补送 0x33 成功报文;超时或者离线等其他异常,桩不启充、不补发 0x33 报文)")
+	private Integer failureCause;
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixChargingDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixChargingDto.java
new file mode 100644
index 0000000..1d0784b
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixChargingDto.java
@@ -0,0 +1,19 @@
+package com.ruoyi.order.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class SixChargingDto {
+    private String month;
+    @ApiModelProperty("电费")
+    private BigDecimal electrovalence;
+    @ApiModelProperty("服务费")
+    private BigDecimal serviceCharge;
+
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixCircleDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixCircleDto.java
new file mode 100644
index 0000000..e87b6ed
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixCircleDto.java
@@ -0,0 +1,11 @@
+package com.ruoyi.order.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+@Data
+public class SixCircleDto {
+    Integer siteId;
+    BigDecimal paymentAmount;
+    String siteName;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixMonthTotal.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixMonthTotal.java
new file mode 100644
index 0000000..060b7bf
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixMonthTotal.java
@@ -0,0 +1,5 @@
+package com.ruoyi.order.dto;
+
+public class SixMonthTotal {
+
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixShopDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixShopDto.java
new file mode 100644
index 0000000..28ea1b6
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixShopDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SixShopDto {
+    private String month;
+    private Long count;
+    private BigDecimal paymentAmount;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixVipDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixVipDto.java
new file mode 100644
index 0000000..52df141
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/SixVipDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.order.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class SixVipDto {
+    private String month;
+    private String vipName;
+    private Integer vipId;
+    private BigDecimal paymentAmount;
+}
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 13d6c92..d9bad70 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
@@ -1,6 +1,8 @@
 package com.ruoyi.order.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TChargingOrderRefund;
@@ -11,6 +13,8 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -54,6 +58,24 @@
 
 	List<TChargingOrderRefund> getRefundList(@Param("pageInfo")PageInfo<TChargingOrderRefund> pageInfo,@Param("data")  ChargingRefundDto chargingRefundDto);
 
+    List<ChargingOrderGroup> chargingOrderGroup(@Param("chargingPercentProvinceDto")ChargingPercentProvinceDto chargingPercentProvinceDto);
+
+    List<SixChargingDto> charge(@Param("sixBefore")LocalDate sixBefore,@Param("siteIds") List<Integer> siteIds);
+
+	List<SixCircleDto> circle(@Param("siteIds")List<Integer> siteIds,@Param("sixBefore")LocalDate sixBefore);
+
+	Map<String, BigDecimal> countAll(@Param("sixBefore")LocalDate sixBefore);
+
+    List<Map<String, BigDecimal>> getSumByType(@Param("chargingOrderIds")List<Long> chargingOrderIds);
+
+    List<Map<String, BigDecimal>> getDateData(List<Long> chargingOrderIds);
+
+	List<Map<String, BigDecimal>> getWeekData(List<Long> chargingOrderIds);
+
+	List<Map<String, BigDecimal>> getMonthData(List<Long> chargingOrderIds);
+
+	List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds);
+
 	List<ChargingOrderListVO> chargingList(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
 	List<ChargingOrderListVO> chargingList1( @Param("req")ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2);
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TShoppingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TShoppingOrderMapper.java
index ca946f5..4dd50d6 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TShoppingOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TShoppingOrderMapper.java
@@ -6,9 +6,12 @@
 import com.ruoyi.order.api.query.ShoppingOrderQuery;
 import com.ruoyi.order.api.query.TActivityStatisticsQuery;
 import com.ruoyi.order.api.vo.TActivityStatisticslVO;
+import com.ruoyi.order.dto.SixShopDto;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -38,4 +41,7 @@
 
     List<TShoppingOrder> pageList(@Param("pageInfo")PageInfo<TShoppingOrder> pageInfo, @Param("req")ShoppingOrderQuery query, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2);
 
+    List<SixShopDto> sixBefore(@Param("sixBefore")LocalDate sixBefore,@Param("status") Integer status);
+
+    BigDecimal getSumAmount(@Param("sixBefore")LocalDate sixBefore);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java
index 5f85ad8..67c387d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderMapper.java
@@ -6,9 +6,12 @@
 import com.ruoyi.order.api.model.TVipOrder;
 import com.ruoyi.order.api.query.ShoppingOrderQuery;
 import com.ruoyi.order.api.query.VipShoppingOrderQuery;
+import com.ruoyi.order.dto.SixVipDto;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -25,4 +28,7 @@
     List<TVipOrder> pageList(@Param("pageInfo")PageInfo<TVipOrder> pageInfo, @Param("req") VipShoppingOrderQuery query, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2);
 
 
+    List<SixVipDto> sixBefore(@Param("sixBefore")LocalDate sixBefore);
+
+    BigDecimal getSumAmout(@Param("sixBefore")LocalDate sixBefore);
 }
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 7640c10..ff03857 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
@@ -2,12 +2,15 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.BasePage;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TChargingOrderRefund;
 import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
 import com.ruoyi.order.api.vo.ChargingOrderVO;
 import com.ruoyi.order.api.vo.TCharingOrderVO;
@@ -15,6 +18,8 @@
 import com.ruoyi.order.vo.ChargingOrderListInfoVO;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -73,6 +78,18 @@
 	
 	
 	/**
+	 * 充电启动失败后的退款回调处理
+	 * @param out_refund_no
+	 * @param refund_id
+	 * @param tradeState
+	 * @param success_time
+	 * @return
+	 */
+	AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time);
+
+
+
+	/**
 	 * 获取充电中的详情
 	 * @param id
 	 * @return
@@ -93,7 +110,32 @@
 
     R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto);
 
+    List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto);
+
+	List<SixChargingDto> charge(LocalDate sixBefore, List<Integer> siteIds);
+
+	List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore);
+
+	Map<String, BigDecimal> countAll(LocalDate sixBefore);
+
+    List<Map<String, BigDecimal>> getSumByType(List<Long> chargingOrderIds);
+
+	List<Map<String, BigDecimal>> getDateData(List<Long> chargingOrderIds);
+
+	List<Map<String, BigDecimal>> getWeekData(List<Long> chargingOrderIds);
+
+	List<Map<String, BigDecimal>> getMonthData(List<Long> chargingOrderIds);
+
+	List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds);
+
     ChargingOrderTimeVO chargingList(ChargingListQuery dto);
 
 	ChargingOrderListInfoVO chargingInfo(String uid);
+
+
+	/**
+	 * 处理充电订单实时监控数据相关的业务逻辑
+	 * @param query
+	 */
+	void chargeMonitoring(UploadRealTimeMonitoringDataQuery query);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java
index 4615b05..0412e97 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderService.java
@@ -8,13 +8,12 @@
 import com.ruoyi.order.api.query.TActivityStatisticsQuery;
 import com.ruoyi.order.api.vo.TActivityStatisticslVO;
 import com.ruoyi.order.api.vo.TActivityVO;
-import com.ruoyi.order.dto.GetMyShoppingOrderList;
-import com.ruoyi.order.dto.GetNoInvoicedOrder;
-import com.ruoyi.order.dto.MyShoppingOrderInfo;
-import com.ruoyi.order.dto.MyShoppingOrderList;
+import com.ruoyi.order.dto.*;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -78,4 +77,7 @@
 
     PageInfo<TShoppingOrder> pageList(ShoppingOrderQuery query);
 
+    List<SixShopDto> sixBefore(LocalDate sixBefore, Integer status);
+
+    BigDecimal getSumAmount(LocalDate sixBefore);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java
index 7090ba3..88ab8e6 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderService.java
@@ -4,6 +4,11 @@
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.order.api.model.TVipOrder;
 import com.ruoyi.order.api.query.VipShoppingOrderQuery;
+import com.ruoyi.order.dto.SixVipDto;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.List;
 
 /**
  * <p>
@@ -16,4 +21,8 @@
 public interface TVipOrderService extends IService<TVipOrder> {
 
     PageInfo<TVipOrder> pageList(VipShoppingOrderQuery query);
+
+    List<SixVipDto> sixBefore(LocalDate sixBefore);
+
+    BigDecimal getSumAmout(LocalDate sixBefore);
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
index 413fa9b..f242070 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderAccountingStrategyServiceImpl.java
@@ -71,21 +71,21 @@
 			map2.put("name", "峰");
 			BigDecimal value2 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 2)
 					.map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map1.put("value", value2.setScale(2, RoundingMode.HALF_EVEN));
+			map2.put("value", value2.setScale(2, RoundingMode.HALF_EVEN));
 			datas.add(map2);
 			
 			Map<String, Object> map3 = new HashMap<>();
 			map3.put("name", "平");
 			BigDecimal value3 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 3)
 					.map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map1.put("value", value3.setScale(2, RoundingMode.HALF_EVEN));
+			map3.put("value", value3.setScale(2, RoundingMode.HALF_EVEN));
 			datas.add(map3);
 			
 			Map<String, Object> map4 = new HashMap<>();
 			map4.put("name", "谷");
 			BigDecimal value4 = list1.stream().filter(s -> orderIds.contains(s.getChargingOrderId()) && s.getType() == 4)
 					.map(TChargingOrderAccountingStrategy::getChargingCapacity).reduce(BigDecimal.ZERO, BigDecimal::add);
-			map1.put("value", value4.setScale(2, RoundingMode.HALF_EVEN));
+			map4.put("value", value4.setScale(2, RoundingMode.HALF_EVEN));
 			datas.add(map4);
 			list2.add(datas);
 		}
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 db24942..b992b12 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
@@ -2,6 +2,7 @@
 
 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.service.impl.ServiceImpl;
 import com.ruoyi.account.api.feignClient.AppUserCarClient;
 import com.ruoyi.account.api.feignClient.AppUserClient;
@@ -10,29 +11,33 @@
 import com.ruoyi.account.api.model.TAppUserCar;
 import com.ruoyi.account.api.model.TAppUserVipDetail;
 import com.ruoyi.account.api.vo.GetAppUserVipDetail;
+import com.ruoyi.chargingPile.api.feignClient.AccountingStrategyDetailClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient;
 import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient;
 import com.ruoyi.chargingPile.api.feignClient.SiteClient;
 import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
 import com.ruoyi.chargingPile.api.model.TChargingGun;
 import com.ruoyi.chargingPile.api.model.TChargingPile;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.ChargingOrderGroup;
+import com.ruoyi.common.core.dto.ChargingPercentProvinceDto;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.BasePage;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient;
+import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient;
 import com.ruoyi.integration.api.feignClient.SendMessageClient;
 import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
 import com.ruoyi.integration.api.model.ChargingHandshake;
 import com.ruoyi.integration.api.model.PlatformStartCharging;
+import com.ruoyi.integration.api.model.PlatformStartChargingReply;
 import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
-import com.ruoyi.order.api.model.TChargingOrder;
-import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
-import com.ruoyi.order.api.model.TChargingOrderRefund;
-import com.ruoyi.order.api.model.TOrderEvaluate;
+import com.ruoyi.order.api.model.*;
 import com.ruoyi.order.api.query.ChargingOrderQuery;
+import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
 import com.ruoyi.order.api.vo.ChargingOrderListVO;
 import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
 import com.ruoyi.order.api.vo.ChargingOrderVO;
@@ -40,11 +45,17 @@
 import com.ruoyi.order.dto.*;
 import com.ruoyi.order.mapper.TChargingOrderMapper;
 import com.ruoyi.order.service.TChargingOrderAccountingStrategyService;
+import com.ruoyi.order.service.TChargingOrderRefundService;
 import com.ruoyi.order.service.TChargingOrderService;
 import com.ruoyi.order.service.TOrderEvaluateService;
+import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TGoods;
 import com.ruoyi.order.vo.ChargingOrderListInfoVO;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
 import com.ruoyi.payment.api.feignClient.WxPaymentClient;
+import com.ruoyi.payment.api.model.RefundReq;
+import com.ruoyi.payment.api.model.RefundResp;
+import com.ruoyi.payment.api.model.WxPaymentRefundModel;
 import com.ruoyi.payment.api.vo.*;
 import io.seata.spring.annotation.GlobalTransactional;
 import io.swagger.annotations.ApiModelProperty;
@@ -55,11 +66,13 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.*;
 import java.util.stream.Collectors;
 
 /**
@@ -87,7 +100,7 @@
 	@Resource
 	private ChargingPileClient chargingPileClient;
 
-	
+
 	@Resource
 	private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService;
 	
@@ -101,6 +114,8 @@
 	private AliPaymentClient aliPaymentClient;
 	
 
+
+
 	@Resource
 	private AppUserVipDetailClient appUserVipDetailClient;
 	
@@ -112,15 +127,28 @@
 	
 	@Resource
 	private ChargingHandshakeClient chargingHandshakeClient;
-	
+
 	@Resource
 	private SendMessageClient sendMessageClient;
-	
+
 	@Resource
 	private TOrderEvaluateService orderEvaluateService;
-	
-	
-	
+
+
+	@Resource
+	private AccountingStrategyDetailClient accountingStrategyDetailClient;
+
+	@Resource
+	private PlatformStartChargingReplyClient platformStartChargingReplyClient;
+
+	@Resource
+	private TChargingOrderRefundService chargingOrderRefundService;
+
+	//计数器
+	private Map<String, Integer> counter_map = new HashMap<>();
+
+
+
 
 	/**
 	 * 获取小程序充电记录列表数据
@@ -420,6 +448,7 @@
 	 * @return
 	 */
 	@Override
+	@GlobalTransactional(rollbackFor = Exception.class)
 	public AjaxResult chargingOrderCallback(Integer paymentType, String out_trade_no, String transaction_id, String attach) {
 		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, out_trade_no));
 		if(chargingOrder.getRechargePaymentStatus() == 2){
@@ -427,37 +456,191 @@
 		}
 		chargingOrder.setRechargePaymentStatus(2);
 		chargingOrder.setRechargeSerialNumber(transaction_id);
+		chargingOrder.setStatus(2);
 		this.updateById(chargingOrder);
+
 		//添加安全检测数据到缓存中,每步安全检测完成后需要更新缓存数据
 		PreChargeCheck preChargeCheck = new PreChargeCheck();
 		preChargeCheck.setElectronicLockLock(false);
 		preChargeCheck.setInsulationTesting(false);
 		preChargeCheck.setSecureConnectionDetection(false);
+		preChargeCheck.setStartupSuccess(1);
 		String key = "AQJC_" + chargingOrder.getChargingGunId();
 		redisService.setCacheObject(key, preChargeCheck);
 		
 		//根据当前充值的金额和计费模板算出充电的金额
 		BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
 		//计算充电金额,会员需要将折扣金额加入到充电总金额中
-		
-//		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
-//		if(){
-//			appUser.getVipId()
-//		}
-//
-//
-//		//调用远程启动充电消息
-//		PlatformStartCharging platformStartCharging = new PlatformStartCharging();
-//		platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
-//		platformStartCharging.setCharging_pile_code();
-//		platformStartCharging.setCharging_gun_code();
-//		platformStartCharging.setCard_number();
-//		platformStartCharging.setAccount_balance()
-//		sendMessageClient.platformStartCharging(platformStartCharging);
+		TChargingGun chargingGun = chargingGunClient.getChargingGunById(chargingOrder.getChargingGunId()).getData();
+		TAccountingStrategyDetail strategyDetail = accountingStrategyDetailClient.getNowData(chargingGun.getAccountingStrategyId()).getData();
+		//总单价
+		BigDecimal totalUnitPrice = strategyDetail.getServiceCharge().add(strategyDetail.getElectrovalence());
+		//计算能充电的度数
+		BigDecimal degrees = rechargeAmount.divide(totalUnitPrice);
+		//计算电费金额和服务费
+		BigDecimal serviceCharge = strategyDetail.getServiceCharge().multiply(degrees);
+		BigDecimal electrovalence = strategyDetail.getElectrovalence().multiply(degrees);
+
+		//再处理会员折扣
+		BigDecimal discount = BigDecimal.ZERO;
+		TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+		if(null != appUser.getVipId()){
+			GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+			getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+			getAppUserVipDetail.setVipId(appUser.getVipId());
+			TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+			if(data.getChargeNum() > 0){
+				discount = serviceCharge.multiply(data.getDiscount().divide(new BigDecimal(10)));
+				data.setChargeNum(data.getChargeNum() - 1);
+				appUserVipDetailClient.updateAppUserVipDetail(data);
+			}
+		}
+		electrovalence = electrovalence.add(discount);
+
+
+		TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData();
+		//调用远程启动充电消息
+		PlatformStartCharging platformStartCharging = new PlatformStartCharging();
+		platformStartCharging.setTransaction_serial_number(chargingOrder.getCode());
+		platformStartCharging.setCharging_pile_code(chargingPile.getCode());
+		platformStartCharging.setCharging_gun_code(chargingGun.getCode());
+		//使用订单id作为逻辑卡号
+		platformStartCharging.setCard_number(chargingOrder.getId().toString());
+		platformStartCharging.setAccount_balance(electrovalence);
+		sendMessageClient.platformStartCharging(platformStartCharging);
+		//异步线程检测远程启动的应答结果。如果失败,则需要全额退款
+		String code = chargingOrder.getCode();
+		//执行5分钟的定时任务检测
+		ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+		scheduler.scheduleAtFixedRate(()->{
+			List<PlatformStartChargingReply> data = platformStartChargingReplyClient.getPlatformStartChargingReply(code).getData();
+			if(data.size() != 0){
+				PlatformStartChargingReply platformStartChargingReply = data.get(1);
+				Integer startup_result = platformStartChargingReply.getStartup_result();
+				Integer failure_cause = platformStartChargingReply.getFailure_cause();
+				Integer counter = counter_map.get(code);
+				PreChargeCheck preChargeCheck1 = redisService.getCacheObject(key);
+				//状态为5的时候,硬件会间隔60秒后再次检测,依然未插枪,则不启动充电
+				//因这里是间隔5秒执行检测,所以累计次数在30次以上
+				if(failure_cause == 5 && null == counter || counter < 35){
+					counter++;
+					counter_map.put(code, counter);
+					//启动失败
+					preChargeCheck1.setStartupSuccess(3);
+					preChargeCheck1.setFailureCause(failure_cause);
+					redisService.setCacheObject(key, preChargeCheck1);
+					return;
+				}
+				//清除计时器中的无效数据
+				counter_map.remove(code);
+				//开始处理退款
+				TChargingOrder order = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
+				if(0 == startup_result){
+					//启动失败
+					preChargeCheck1.setStartupSuccess(3);
+					preChargeCheck1.setFailureCause(failure_cause);
+					//启动失败后取消订单,退款操作
+					refund(code);
+					order.setStatus(5);
+					order.setEndMode(0);
+				}else{
+					preChargeCheck1.setStartupSuccess(2);
+					order.setStatus(3);
+					order.setStartTime(LocalDateTime.now());
+				}
+				this.updateById(order);
+				redisService.setCacheObject(key, preChargeCheck1);
+				//提前结束定时任务
+				scheduler.shutdown();
+			}
+		}, 5, 300, TimeUnit.SECONDS);
 		return AjaxResult.success();
 	}
 	
 	
+	/**
+	 * 启动失败后的退款,取消订单
+	 * @param code
+	 */
+	public void refund(String code){
+		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
+		if(chargingOrder.getStatus() == 2){
+			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
+			BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+			//构建退款明细
+			TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
+			chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + (Math.random() * 1000));
+			chargingOrderRefund.setRefundAmount(rechargeAmount);
+			chargingOrderRefund.setRefundStatus(1);
+			chargingOrderRefund.setPayType(rechargePaymentType);
+			chargingOrderRefund.setRefundStatus(1);
+			chargingOrderRefund.setCode(code);
+			chargingOrderRefund.setRefundTitle("充电失败");
+			chargingOrderRefund.setRefundContent("充电失败");
+			chargingOrderRefund.setRefundReason("充电失败");
+			chargingOrderRefund.setRefundRemark("全额退款");
+			chargingOrderRefund.setRefundTotalAmount(rechargeAmount);
+			chargingOrderRefund.setPayAmount(rechargeAmount);
+			if(1 == rechargePaymentType){
+				WxPaymentRefundModel model = new WxPaymentRefundModel();
+				model.setOut_trade_no(chargingOrder.getCode());
+				model.setOut_refund_no(chargingOrderRefund.getRefundCode());
+				model.setReason("充电失败,取消充电订单");
+				model.setNotify_url("http://127.0.0.1:9000/order/t-charging-order/chargingOrderStartupFailureWxRefund");
+				WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+				amount.setRefund(rechargeAmount.multiply(new BigDecimal(100)).intValue());
+				amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
+				amount.setCurrency("CNY");
+				model.setAmount(amount);
+				R<String> orderR = wxPaymentClient.refundOrderR(model);
+				if(200 == orderR.getCode()){
+					chargingOrderRefundService.save(chargingOrderRefund);
+				}
+			}
+			if(2 == rechargePaymentType){
+				RefundReq dto = new RefundReq();
+				dto.setOutTradeNo(chargingOrder.getCode());
+				dto.setOutRequestNo(chargingOrderRefund.getCode());
+				dto.setRefundAmount(rechargeAmount.toString());
+				dto.setRefundReason("充电失败,取消充电订单");
+				RefundResp resp = aliPaymentClient.refund(dto).getData();
+				if(null != resp){
+					SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
+					AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
+					if(success.isSuccess()){
+						chargingOrderRefundService.save(chargingOrderRefund);
+					}
+				}
+			}
+
+		}
+	}
+
+
+	/**
+	 * 启动失败后微信退款的回调处理
+	 * @param out_refund_no
+	 * @param refund_id
+	 * @param tradeState
+	 * @param success_time
+	 * @return
+	 */
+	public AjaxResult chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time){
+		if("SUCCESS".equals(tradeState)){
+			TChargingOrderRefund one = chargingOrderRefundService.getOne(new LambdaQueryWrapper<TChargingOrderRefund>().eq(TChargingOrderRefund::getRefundCode, out_refund_no));
+			one.setRefundSerialNumber(refund_id);
+			one.setRefundStatus(2);
+			one.setRefundTime(LocalDateTime.parse(success_time, DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
+			chargingOrderRefundService.updateById(one);
+		}
+		return AjaxResult.success();
+	}
+
+
+
+
 	/**
 	 * 获取充电中的详情
 	 * @param id
@@ -479,6 +662,7 @@
 		chargingDetails.setName(site.getName() + "-" + chargingPile.getName());
 		chargingDetails.setCode(one.getCode());
 		chargingDetails.setStatus(one.getStatus());
+		chargingDetails.setChargingCost(one.getResidualAmount());
 		UploadRealTimeMonitoringData data = uploadRealTimeMonitoringDataClient.chargingOrderInfo(one.getCode()).getData();
 		if(null != data){
 			chargingDetails.setChargeCurrent(data.getOutput_current());
@@ -489,7 +673,6 @@
 			chargingDetails.setRemainingChargeTime(data.getTime_remaining());
 			chargingDetails.setChargedDegrees(data.getCharging_degree());
 			chargingDetails.setChargedTime(data.getCumulative_charging_time());
-			chargingDetails.setChargingCost(data.getPaid_amount());
 		}
 		ChargingHandshake chargingHandshake = chargingHandshakeClient.getDataByOrderCode(one.getCode()).getData();
 		if(null != chargingHandshake && null != data && null != one.getAppUserCarId()){
@@ -520,21 +703,18 @@
 		chargingOrder.setEndMode(1);
 		this.updateById(chargingOrder);
 		//调用硬件停止充电,停止成功后开始计算费用退款
-		
-		
-		
 		// todo 待完善
 		return AjaxResult.success();
 	}
 
-	
-	
+
+
 	public void endCharge(){
-	
+
 	}
-	
-	
-	
+
+
+
 
     @Override
     public TCharingOrderVO chargingOrder(ChargingOrderQuery dto) {
@@ -654,6 +834,52 @@
 		pageInfo.setRecords(list);
 
 		return R.ok(pageInfo);
+	}
+
+	@Override
+	public List<ChargingOrderGroup> chargingOrderGroup(ChargingPercentProvinceDto chargingPercentProvinceDto) {
+
+		return this.baseMapper.chargingOrderGroup(chargingPercentProvinceDto);
+	}
+
+	@Override
+	public List<SixChargingDto> charge(LocalDate sixBefore, List<Integer> siteIds) {
+		return this.baseMapper.charge(sixBefore,siteIds);
+	}
+
+	@Override
+	public List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore) {
+		return this.baseMapper.circle(siteIds,sixBefore);
+	}
+
+	@Override
+	public Map<String, BigDecimal> countAll(LocalDate sixBefore) {
+		return this.baseMapper.countAll(sixBefore);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getSumByType(List<Long> chargingOrderIds) {
+		return this.baseMapper.getSumByType(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getDateData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getDateData(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getWeekData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getWeekData(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getMonthData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getMonthData(chargingOrderIds);
+	}
+
+	@Override
+	public List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds) {
+		return this.baseMapper.getYearData(chargingOrderIds);
 	}
 
 
@@ -878,4 +1104,14 @@
 
 		return null;
 	}
+
+
+	/**
+	 * 处理充电订单实时监控数据相关的业务逻辑
+	 * @param query
+	 */
+	@Override
+	public void chargeMonitoring(UploadRealTimeMonitoringDataQuery query) {
+		// todo 需完善
+	}
 }
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 cad99dd..1ea0979 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
@@ -44,6 +44,7 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -405,6 +406,7 @@
     public AjaxResult cancelShoppingOrderWxRefund(String out_refund_no, String refund_id, String refund_status, String success_time) {
         if("SUCCESS".equals(refund_status)){
             TShoppingOrderRefund one = shoppingOrderRefundService.getOne(new LambdaQueryWrapper<TShoppingOrderRefund>().eq(TShoppingOrderRefund::getRefundCode, out_refund_no));
+            one.setRefundStatus(2);
             one.setRefundSerialNumber(refund_id);
             one.setRefundTime(LocalDateTime.parse(success_time, DateTimeFormatter.ofPattern("yyyy-MM-DDTHH:mm:ss+TIMEZONE")));
             shoppingOrderRefundService.updateById(one);
@@ -533,4 +535,16 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public List<SixShopDto> sixBefore(LocalDate sixBefore, Integer status) {
+        return this.baseMapper.sixBefore(sixBefore,status);
+    }
+
+    @Override
+    public BigDecimal getSumAmount(LocalDate sixBefore) {
+        return this.baseMapper.getSumAmount(sixBefore);
+    }
+
+
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
index bce2fae..c96a21f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TVipOrderServiceImpl.java
@@ -5,6 +5,7 @@
 import com.ruoyi.order.api.model.TShoppingOrder;
 import com.ruoyi.order.api.model.TVipOrder;
 import com.ruoyi.order.api.query.VipShoppingOrderQuery;
+import com.ruoyi.order.dto.SixVipDto;
 import com.ruoyi.order.mapper.TVipOrderMapper;
 import com.ruoyi.order.service.TVipOrderService;
 import com.ruoyi.other.api.domain.TVip;
@@ -12,6 +13,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
 import javax.annotation.Resource;
 import java.util.List;
 
@@ -52,4 +55,14 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public List<SixVipDto> sixBefore(LocalDate sixBefore) {
+        return this.baseMapper.sixBefore(sixBefore);
+    }
+
+    @Override
+    public BigDecimal getSumAmout(LocalDate sixBefore) {
+        return this.baseMapper.getSumAmout(sixBefore);
+    }
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/PreviousSixMonths.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/PreviousSixMonths.java
new file mode 100644
index 0000000..809b978
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/PreviousSixMonths.java
@@ -0,0 +1,20 @@
+package com.ruoyi.order.util;
+
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.temporal.TemporalAdjusters;
+
+public class PreviousSixMonths {
+    public static LocalDate get() {
+        // 获取当前日期
+        LocalDate currentDate = LocalDate.now();
+
+        // 计算六个月前的日期
+        LocalDate sixMonthsAgo = currentDate.minusMonths(6);
+
+        // 调整为该月的第一天
+        LocalDate firstDayOfSixMonthsAgo = sixMonthsAgo.with(TemporalAdjusters.firstDayOfMonth());
+        return firstDayOfSixMonthsAgo;
+
+    }
+}
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 916ea2b..ae55626 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
@@ -24,6 +24,7 @@
         <result column="recharge_payment_type" property="rechargePaymentType" />
         <result column="recharge_payment_status" property="rechargePaymentStatus" />
         <result column="recharge_serial_number" property="rechargeSerialNumber" />
+        <result column="residual_amount" property="residualAmount" />
         <result column="order_amount" property="orderAmount" />
         <result column="app_coupon_id" property="appCouponId" />
         <result column="coupon_discount_amount" property="couponDiscountAmount" />
@@ -96,10 +97,10 @@
             and t1.charging_gun_id = #{req.gunId}
         </if>
         <if test="startTime1 != null and startTime1!=''">
-            and (t1.start_time between #{startTime1} and #{startTime2})
+            and (t1.start_time between #{startTime1} and #{startTime2}
         </if>
         <if test="endTime1 != null and endTime1!=''">
-            and (t1.end_time between #{endTime1} and #{endTime2})
+            and (t1.end_time between #{endTime1} and #{endTime2}
         </if>
     </select>
     <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto">
@@ -233,78 +234,189 @@
 
 
     </select>
-    <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
-        select t1.* from t_charging_order t1
-        where 1=1
-        <if test="null != req.code and req.code!=''">
-            and t1.code  LIKE CONCAT('%',#{req.code},'%')
-        </if>
-        <if test="null != req.carIds and req.carIds.size()>0" >
-            and t1.app_user_car_id in
-            <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="null != req.userIds and req.userIds.size()>0" >
-            and t1.app_user_id in
-            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="req.orderType != null ">
-            and t1.order_type = #{req.orderType}
-        </if>
-        <if test="req.status != null ">
-            and t1.status = #{status}
-        </if>
-        <if test="req.status != null ">
-            and t1.status = #{req.status}
-        </if>
-        <if test="req.siteId != null ">
-            and t1.site_id = #{req.siteId}
-        </if>
-        <if test="startTime1 != null and startTime1!=''">
-            and (t1.start_time between #{startTime1} and #{startTime2})
-        </if>
-        <if test="endTime1 != null and endTime1!=''">
-            and (t1.end_time between #{endTime1} and #{endTime2})
-        </if>
+    <select id="chargingOrderGroup" resultType="com.ruoyi.common.core.dto.ChargingOrderGroup">
+        SELECT SUM(charging_capacity) ,site_id
+        FROM t_charging_order
+        GROUP BY site_id
+        <where>
+            <if test="chargingPercentProvinceDto.date1 != null">
+                AND create_time &gt;= #{chargingPercentProvinceDto.date1}
+            </if>
+            <if test="chargingPercentProvinceDto.date2 != null">
+                AND create_time &lt;= #{chargingPercentProvinceDto.date2}
+            </if>
+            <if test="chargingPercentProvinceDto.provinceCode != null">
+                AND province_code = #{chargingPercentProvinceDto.provinceCode}
+            </if>
+        </where>
+
+
     </select>
-    <select id="chargingList1" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO">
-        select t1.* from t_charging_order t1
-        where 1=1
-        <if test="null != req.code and req.code!=''">
-            and t1.code  LIKE CONCAT('%',#{req.code},'%')
-        </if>
-        <if test="null != req.carIds and req.carIds.size()>0" >
-            and t1.app_user_car_id in
-            <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="null != req.userIds and req.userIds.size()>0" >
-            and t1.app_user_id in
-            <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")">
-                #{item}
-            </foreach>
-        </if>
-        <if test="req.orderType != null ">
-            and t1.order_type = #{req.orderType}
-        </if>
-        <if test="req.status != null ">
-            and t1.status = #{status}
-        </if>
-        <if test="req.status != null ">
-            and t1.status = #{req.status}
-        </if>
-        <if test="req.siteId != null ">
-            and t1.site_id = #{req.siteId}
-        </if>
-        <if test="startTime1 != null and startTime1!=''">
-            and (t1.start_time between #{startTime1} and #{startTime2})
-        </if>
-        <if test="endTime1 != null and endTime1!=''">
-            and (t1.end_time between #{endTime1} and #{endTime2})
-        </if>
+    <select id="charge" resultType="com.ruoyi.order.dto.SixChargingDto">
+        SELECT
+            DATE_FORMAT( subquery.create_time, '%m' ) AS MONTH,
+	SUM(electrovalence) AS electrovalence,
+	SUM(service_charge) AS service_charge
+        FROM
+            (
+            SELECT
+            create_time,
+            electrovalence,
+            service_charge
+            FROM
+            t_charging_order
+            <where>
+                del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status)
+                <if test="sixBefore != null">
+                    AND create_time &gt;= #{sixBefore}
+                </if>
+                <if test="siteIds != null and siteIds.size() > 0">
+                    AND site_id IN
+                    <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
+                        #{siteId}
+                    </foreach>
+                </if>
+            </where>
+            ) AS subquery
+        GROUP BY
+            DATE_FORMAT( subquery.create_time, '%m' )
+
+
     </select>
+    <select id="circle" resultType="com.ruoyi.order.dto.SixCircleDto">
+        SELECT
+            site_id as siteId,SUM(payment_amount) as paymentAmount
+        FROM
+            t_charging_order
+        <where>
+            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status)
+            <if test="siteIds != null and siteIds.size() > 0">
+                AND site_id IN
+                <foreach collection="siteIds" item="siteId" open="(" separator="," close=")">
+                    #{siteId}
+                </foreach>
+            </if>
+            <if test="sixBefore != null">
+                AND create_time &gt;= #{sixBefore}
+            </if>
+        </where>
+        GROUP BY
+            site_id
+
+
+    </select>
+    <select id="countAll" resultType="java.util.Map">
+        select sum(electrovalence),sum(service_charge),sum(commission_amount),sum(sharing_amount)
+        from t_charging_order
+        where create_time &gt;= #{sixBefore} and del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status)
+    </select>
+    <select id="getSumByType" resultType="java.util.Map">
+        SELECT
+            type,
+            SUM( charging_capacity ) as charging_capacity ,
+            SUM( period_service_price ) as period_electric_price,
+            SUM(period_electric_price+period_service_price) as total_amount
+        FROM
+            t_charging_order_accounting_strategy
+        <where>
+            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
+                AND charging_order_id IN
+                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
+                    #{chargingOrderId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+            type
+    </select>
+    <select id="getDateData" resultType="java.util.Map">
+        SELECT
+            DATE_FORMAT( create_time, '%Y-%m-%d %H' ) as time,
+	SUM(service_charge) as servicecharge,
+	SUM(electrovalence) as electrovalence
+        FROM
+            t_charging_order
+        <where>
+            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and DATE(create_time) = CURDATE()
+            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
+                AND id IN
+                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
+                    #{chargingOrderId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+            time
+        ORDER BY
+            time
+
+    </select>
+    <select id="getWeekData" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
+        SUM(service_charge) as servicecharge,
+        SUM(electrovalence) as electrovalence
+        FROM
+        t_charging_order
+        <where>
+            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and YEARWEEK(DATE_FORMAT(create_time, '%Y-%m-%d'), 1) = YEARWEEK(NOW(), 1)
+            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
+                AND id IN
+                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
+                    #{chargingOrderId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+        time
+        ORDER BY
+        time
+
+    </select>
+    <select id="getMonthData" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
+        SUM(service_charge) as servicecharge,
+        SUM(electrovalence) as electrovalence
+        FROM
+        t_charging_order
+        <where>
+            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and MONTH(create_time) = MONTH(NOW())  AND YEAR(create_time) = YEAR(NOW())
+            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
+                AND id IN
+                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
+                    #{chargingOrderId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+        time
+        ORDER BY
+        time
+
+    </select>
+    <select id="getYearData" resultType="java.util.Map">
+        SELECT
+        DATE_FORMAT( create_time, '%Y-%m-%d' ) as time,
+        SUM(service_charge) as servicecharge,
+        SUM(electrovalence) as electrovalence
+        FROM
+        t_charging_order
+        <where>
+            del_flag = 0 and recharge_payment_status = 2 and  ISNULL(refund_status) and YEAR(createTime) = YEAR(NOW())
+            <if test="chargingOrderIds != null and chargingOrderIds.size() > 0">
+                AND id IN
+                <foreach collection="chargingOrderIds" item="chargingOrderId" open="(" separator="," close=")">
+                    #{chargingOrderId}
+                </foreach>
+            </if>
+        </where>
+        GROUP BY
+        time
+        ORDER BY
+        time
+
+
+    </select>
+
 </mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
index c81d371..4aa2f35 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml
@@ -256,4 +256,40 @@
         and t1.payment_status = 2
         AND t1.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
     </select>
+    <select id="sixBefore" resultType="com.ruoyi.order.dto.SixShopDto">
+        SELECT
+            DATE_FORMAT( subquery.create_time, '%m' ) AS MONTH,
+	count(1) AS orderNum,
+	SUM(payment_amount) AS paymentAmount
+        FROM
+            (
+            SELECT
+            create_time,
+            payment_amount
+            FROM
+            t_shopping_order
+        <where>
+            WHERE del_flag = 0 and payment_status = 2 and ISNULL(refund_status) and status!=4
+            <if test="null != sixBefore">
+                and DATE_FORMAT(create_time, '%Y-%m-%d') &gt;= DATE_FORMAT(#{sixBefore}, '%Y-%m-%d')
+            </if>
+            <if test="null != status">
+                and status = #{status}
+            </if>
+        </where>
+
+            ) AS subquery
+        GROUP BY
+            DATE_FORMAT( subquery.create_time, '%m' );
+
+
+    </select>
+    <select id="getSumAmount" resultType="java.math.BigDecimal">
+        select sum(payment_amount)
+        from t_shopping_order
+        where del_flag = 0 and payment_status = 2 and ISNULL(refund_status) and status!=4
+        <if test="null != sixBefore">
+            and DATE_FORMAT(create_time, '%Y-%m-%d') &gt;= DATE_FORMAT(#{sixBefore}, '%Y-%m-%d')
+        </if>
+    </select>
 </mapper>
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 724cef3..70127f8 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
@@ -46,5 +46,46 @@
         </if>
         AND t1.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()}
     </select>
+    <select id="sixBefore" resultType="com.ruoyi.order.dto.SixVipDto">
+        SELECT
+            DATE_FORMAT(subquery.create_time, '%Y-%m') AS MONTH,
+    subquery.vip_id,
+    COUNT(1) AS orderNum,
+    SUM(subquery.payment_amount) AS paymentAmount
+        FROM (
+            SELECT
+            vip_id,
+            create_time,
+            payment_amount
+            FROM
+            t_vip_order
+        <where>
+            del_flag = 0 AND
+            payment_status = 2 AND
+            refund_amount IS NULL
+            <if test="sixBefore != null">
+                AND create_time &gt; #{sixBefore}
+            </if>
+        </where>
+            ) AS subquery
+        GROUP BY
+            DATE_FORMAT(subquery.create_time, '%Y-%m'),
+            subquery.vip_id;
+
+
+    </select>
+    <select id="getSumAmout" resultType="java.math.BigDecimal">
+        SELECT
+            SUM(payment_amount) AS paymentAmount
+        FROM
+            t_vip_order
+        WHERE
+            del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND
+            payment_status = 2 AND
+            refund_amount IS NULL
+            <if test="sixBefore != null">
+                AND create_time &gt; #{sixBefore}
+            </if>
+    </select>
 
 </mapper>

--
Gitblit v1.7.1