From 71153ebbd5bb6cf17069b0e8afd4fd9e4680ac1f Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期五, 01 十一月 2024 17:57:51 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java                                       |   13 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                                     |   52 +++--
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/BmsDemandAndChargerExportationController.java            |   46 +++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java                                                |    2 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java                                             |    2 
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java      |   37 ++++
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java            |   21 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java                                                  |    5 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java                                                  |    5 
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java                         |   16 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java                                    |   19 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java                                              |    2 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java                                    |   82 ++++++--
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java                                                        |    2 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java                                             |    7 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml                                                      |   15 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java                                        |   49 +++++
 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java           |   27 +++
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java |   17 +
 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/BmsDemandAndChargerExportationService.java          |   12 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java                        |   10 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java                                                       |   14 +
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java                           |    7 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java                                 |   32 ++-
 ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java                                            |    2 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml                                                              |   24 ++
 26 files changed, 425 insertions(+), 95 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java
index 7507994..37afe31 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java
@@ -27,7 +27,7 @@
     @ApiModelProperty(value = "开通会员预计可省")
     private BigDecimal money;
     @ApiModelProperty(value = "额外赠送优惠券X张")
-    private Integer couponCount;
+    private Integer couponCount = 0;
     @ApiModelProperty(value = "超时占位费说明")
     private String spaceChargeExplain;
     @ApiModelProperty(value = "添加车辆最高可得积分 车辆信息为空 展示提示语")
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java
new file mode 100644
index 0000000..e723828
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java
@@ -0,0 +1,37 @@
+package com.ruoyi.integration.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.dto.MongoChargingOrderQuery;
+import com.ruoyi.integration.api.feignClient.BmsDemandAndChargerExportationClient;
+import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient;
+import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringPageData;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 充电桩服务降级处理
+ * 
+ * @author ruoyi
+ */
+@Component
+public class BmsDemandAndChargerExportationFallbackFactory implements org.springframework.cloud.openfeign.FallbackFactory<BmsDemandAndChargerExportationClient>
+{
+    private static final Logger log = LoggerFactory.getLogger(BmsDemandAndChargerExportationFallbackFactory.class);
+
+    @Override
+    public BmsDemandAndChargerExportationClient create(Throwable throwable) {
+        log.error("调用充电桩实时监测数据失败:{}", throwable.getMessage());
+        return new BmsDemandAndChargerExportationClient() {
+    
+            @Override
+            public R<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode) {
+                return R.fail("获取充电中bms数据失败:" + throwable.getMessage());
+            }
+        };
+    }
+}
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java
new file mode 100644
index 0000000..9130248
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java
@@ -0,0 +1,27 @@
+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.BmsDemandAndChargerExportationFallbackFactory;
+import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation;
+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/11/1 16:06
+ */
+@FeignClient(contextId = "BmsDemandAndChargerExportationClient", value = ServiceNameConstants.INTEGRATION_SERVICE, fallbackFactory = BmsDemandAndChargerExportationFallbackFactory.class)
+public interface BmsDemandAndChargerExportationClient {
+	
+	
+	/**
+	 * 获取充电中bms数据
+	 * @param orderCode
+	 * @return
+	 */
+	@PostMapping("/bmsDemandAndChargerExportation/getBmsDemandAndChargerExportation")
+	R<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(@RequestParam("orderCode") String orderCode);
+
+}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
index 275a7ff..7326756 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java
@@ -10,6 +10,8 @@
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * 会员服务降级处理
  * 
@@ -41,6 +43,11 @@
             }
 
             @Override
+            public R<List<TVip>> getVipList() {
+                return R.fail("查询会员集合失败:" + throwable.getMessage());
+            }
+
+            @Override
             public R<TVip> getInfo1(Integer id) {
                 return R.fail("根据会员id 获取会员信息:" + throwable.getMessage());
             }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
index e958ad7..c0a07e8 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java
@@ -12,6 +12,8 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.util.List;
+
 /**
  * 会员服务
  * @author ruoyi
@@ -41,4 +43,7 @@
 
     @PostMapping(value = "/t-app-user/user/give/vip")
     R giveVip(@RequestBody GiveVipDto giveVipDto);
+
+    @GetMapping(value = "/vip/getVipList")
+    R<List<TVip>> getVipList();
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
index f270637..a1ef53b 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java
@@ -70,7 +70,11 @@
     @ApiModelProperty(value = "站点名称")
     @TableField(exist = false)
     private List<String> siteNames;
-
+    
+    @TableField(exist = false)
+    private Long number;
+    
+    
     public SysRole()
     {
 
@@ -203,6 +207,14 @@
         this.siteNames = siteNames;
     }
     
+    public Long getNumber() {
+        return number;
+    }
+    
+    public void setNumber(Long number) {
+        this.number = number;
+    }
+    
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
index 4c2f434..ebe7214 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java
@@ -112,6 +112,8 @@
 				List<String> collect = sites.stream().map(Site::getName).collect(Collectors.toList());
 				record.setSiteNames(collect);
 			}
+			long count = sysUserRoleService.count(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getRoleId, record.getRoleId()));
+			record.setNumber(count);
 		}
 		return AjaxResult.success(page);
 	}
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
index da2a033..879ca16 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
@@ -46,17 +46,18 @@
         TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
                 .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
                 .isNull(TAppUser::getWxOpenid)
+                .eq(TAppUser::getStatus,1)
                 .last("LIMIT 1"));
         if(Objects.isNull(appUser)){
             // 先使用openId和当前手机号进行查询
             appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
                     .eq(TAppUser::getWxOpenid, appletUserDecodeData.getOpenId())
                     .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber())
+                    .eq(TAppUser::getStatus,1)
                     .last("LIMIT 1"));
             if(Objects.isNull(appUser)){
                 appUser = new TAppUser();
                 appUser.setPhone(appletUserDecodeData.getPhoneNumber());
-                appUser.setInviteUserId(inviteUserId);
             }
         }
         if(Objects.nonNull(appUser.getStatus())){
@@ -71,7 +72,9 @@
                     break;
             }
         }
-
+        if(Objects.nonNull(inviteUserId)){
+            appUser.setInviteUserId(inviteUserId);
+        }
         appUser.setAvatar(StringUtils.hasLength(appUser.getAvatar())?appUser.getAvatar():"http://221.182.45.100:8090/2024-10-26/logo.png");
         appUser.setName(StringUtils.hasLength(appUser.getName())?appUser.getName():RptUtils.around(appletUserDecodeData.getPhoneNumber(),3,4));
         appUser.setCity(appletUserDecodeData.getCity());
@@ -90,17 +93,18 @@
         TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
                 .eq(TAppUser::getPhone, phone)
                 .isNull(TAppUser::getAliOpenid)
+                .eq(TAppUser::getStatus,1)
                 .last("LIMIT 1"));
         if(Objects.isNull(appUser)){
             // 先使用openId和当前手机号进行查询
             appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class)
                     .eq(TAppUser::getAliOpenid, response.getOpenId())
                     .eq(TAppUser::getPhone, phone)
+                    .eq(TAppUser::getStatus,1)
                     .last("LIMIT 1"));
             if(Objects.isNull(appUser)){
                 appUser = new TAppUser();
                 appUser.setPhone(phone);
-                appUser.setInviteUserId(inviteUserId);
             }
         }
         if(Objects.nonNull(appUser.getStatus())){
@@ -115,6 +119,9 @@
                     break;
             }
         }
+        if(Objects.nonNull(inviteUserId)){
+            appUser.setInviteUserId(inviteUserId);
+        }
         appUser.setAliOpenid(response.getOpenId());
         appUser.setAvatar(StringUtils.hasLength(appUser.getAvatar())?appUser.getAvatar():"http://221.182.45.100:8090/2024-10-26/logo.png");
         appUser.setName(StringUtils.hasLength(appUser.getName())?appUser.getName():RptUtils.around(phone,3,4));
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
index 692caa6..0ee6f22 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TInviteUserServiceImpl.java
@@ -55,21 +55,24 @@
         getAppUserVipDetail.setVipId(user.getVipId());
         R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
         TAppUserVipDetail data1 = appUserVipDetail.getData();
-        String vipJson = data1.getVipJson();
-        TVip vip = JSON.parseObject(vipJson, TVip.class);
-
         // 查询邀请用户获得积分配置
         TIntegralRule integralRule = integralRuleClient.getSet().getData();
         JSONObject jsonObject = JSONObject.parseObject(integralRule.getInviteUsersToEarnPoints());
         TInviteUser inviteUser = new TInviteUser();
-        inviteUser.setAppUserId(beInvitedAppUserId);
-        inviteUser.setBeInvitedAppUserId(appUserId);
-        inviteUser.setCreateTime(LocalDateTime.now());
-        if(Objects.nonNull(vip) && vip.getDoubleIntegration() == 1){
-            inviteUser.setAward(jsonObject.getInteger("num1")*2);
+        if(Objects.nonNull(data1)){
+            String vipJson = data1.getVipJson();
+            TVip vip = JSON.parseObject(vipJson, TVip.class);
+            if(Objects.nonNull(vip) && vip.getDoubleIntegration() == 1){
+                inviteUser.setAward(jsonObject.getInteger("num1")*2);
+            }else {
+                inviteUser.setAward(jsonObject.getInteger("num1"));
+            }
         }else {
             inviteUser.setAward(jsonObject.getInteger("num1"));
         }
+        inviteUser.setAppUserId(beInvitedAppUserId);
+        inviteUser.setBeInvitedAppUserId(appUserId);
+        inviteUser.setCreateTime(LocalDateTime.now());
         this.save(inviteUser);
     }
 }
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 06a4e3f..8b3b6ac 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
@@ -1,10 +1,16 @@
 package com.ruoyi.chargingPile.controller;
 
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.feignClient.AppUserVipDetailClient;
 import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.api.vo.GetAppUserVipDetail;
 import com.ruoyi.chargingPile.api.dto.GetSiteListDTO;
 import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient;
 import com.ruoyi.chargingPile.api.model.*;
@@ -41,6 +47,7 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -100,7 +107,8 @@
 	private TokenService tokenService;
 	@Resource
 	private AppUserClient appUserClient;
-
+	@Resource
+	private AppUserVipDetailClient vipDetailClient;
 
 	/**
 	 * 根据站点id 查询所有充电桩
@@ -132,23 +140,30 @@
 			if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
 					&& DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
 				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
-				if(null != byId1.getDiscount()){
-					siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
-				}else{
-					// 获取当前登录用户id
-					Long userId = tokenService.getLoginUserApplet().getUserId();
-					// 根据id查询用户信息
-					TAppUser appUser = appUserClient.getUserById(userId).getData();
-					if(Objects.nonNull(appUser)){
-						TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+				// 获取当前登录用户id
+				Long userId = tokenService.getLoginUserApplet().getUserId();
+				// 根据id查询用户信息
+				TAppUser appUser = appUserClient.getUserById(userId).getData();
+				if(Objects.nonNull(appUser)){
+//					TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+					GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+					getAppUserVipDetail.setAppUserId(userId);
+					getAppUserVipDetail.setVipId(appUser.getVipId());
+					R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
+					TAppUserVipDetail data1 = appUserVipDetail.getData();
+					if(Objects.nonNull(data1)){
+						String vipJson = data1.getVipJson();
+						TVip vip = JSON.parseObject(vipJson, TVip.class);
 						if(Objects.nonNull(vip) && vip.getType() == 2){
 							siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence()));
 						}else {
-							siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+							siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
 						}
 					}else {
-						siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+						siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
 					}
+				}else {
+					siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
 				}
 			}
 		}
@@ -177,26 +192,45 @@
 			if(DateUtils.string2LocalTime(tAccountingStrategyDetail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0
 					&& DateUtils.string2LocalTime(tAccountingStrategyDetail.getEndTime() + ("23:59:59".equals(tAccountingStrategyDetail.getEndTime())?"":":00")).compareTo(LocalTime.now()) > 0){
 				siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
-				if(null != byId1.getDiscount()){
-					siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
-				}else{
-					// 获取当前登录用户id
-					Long userId = tokenService.getLoginUserApplet().getUserId();
-					// 根据id查询用户信息
-					TAppUser appUser = appUserClient.getUserById(userId).getData();
-					if(Objects.nonNull(appUser)){
-						TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+				// 获取当前登录用户id
+				Long userId = tokenService.getLoginUserApplet().getUserId();
+				// 根据id查询用户信息
+				TAppUser appUser = appUserClient.getUserById(userId).getData();
+				if(Objects.nonNull(appUser)){
+//					TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+					GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+					getAppUserVipDetail.setAppUserId(userId);
+					getAppUserVipDetail.setVipId(appUser.getVipId());
+					R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
+					TAppUserVipDetail data1 = appUserVipDetail.getData();
+					if(Objects.nonNull(data1)){
+						String vipJson = data1.getVipJson();
+						TVip vip = JSON.parseObject(vipJson, TVip.class);
 						if(Objects.nonNull(vip) && vip.getType() == 2){
 							siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence()));
-						}else {
-							siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+						}else{
+							siteInfoVO.setVipElectrovalence((tAccountingStrategyDetail.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).setScale(4, BigDecimal.ROUND_HALF_UP));
 						}
 					}else {
-						siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
+						siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
 					}
+				}else {
+					siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
 				}
 			}
 		}
+		List<TVip> vips = vipClient.getVipList().getData();
+		if(!CollectionUtils.isEmpty(vips)){
+			TVip tVip = vips.get(0);
+			JSONArray objects = JSONArray.parseArray(tVip.getCoupon());
+			Integer num = 0;
+			for (Object object : objects) {
+				JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(object));
+				Integer number1 = jsonObject.getInteger("number");
+				num += number1;
+			}
+			siteInfoVO.setCouponCount(num);
+		}
 		siteInfoVO.setChargingPileId(one.getId());
 		siteInfoVO.setName(byId.getName());
 		siteInfoVO.setNumber(one.getNumber().toString());
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
index 4a4feea..ab5661a 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingPileController.java
@@ -295,7 +295,7 @@
 				if(orders.size() > 0){
 					TChargingOrder chargingOrder = orders.get(0);
 					TChargingGun tChargingGun1 = new TChargingGun();
-					if(Arrays.asList(1, 2).contains(chargingOrder.getStatus())){
+					if(Arrays.asList(1, 2, 5).contains(chargingOrder.getStatus())){
 						tChargingGun1.setStatus(3);
 					}
 					if(Arrays.asList(3).contains(chargingOrder.getStatus())){
@@ -306,6 +306,11 @@
 					}
 					tChargingGun1.setId(tChargingGun.getId());
 					chargingGunService.updateById(tChargingGun1);
+				}else{
+					TChargingGun tChargingGun1 = new TChargingGun();
+					tChargingGun1.setId(tChargingGun.getId());
+					tChargingGun1.setStatus(3);
+					chargingGunService.updateById(tChargingGun1);
 				}
 			}
 		}
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 3a4d301..079b76d 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
@@ -308,14 +308,16 @@
 			getAppUserVipDetail.setVipId(appUser.getVipId());
 			R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
 			TAppUserVipDetail data1 = appUserVipDetail.getData();
-			String vipJson = data1.getVipJson();
-			TVip vip = JSON.parseObject(vipJson, TVip.class);
-			if(Objects.nonNull(vip) && vip.getType() == 2){
-				list.forEach(item -> {
-					if(Objects.nonNull(vip.getDiscount())){
-						item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal()));
-					}
-				});
+			if(Objects.nonNull(data1)){
+				String vipJson = data1.getVipJson();
+				TVip vip = JSON.parseObject(vipJson, TVip.class);
+				if(Objects.nonNull(vip) && vip.getType() == 2){
+					list.forEach(item -> {
+						if(Objects.nonNull(vip.getDiscount())){
+							item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal()));
+						}
+					});
+				}
 			}
 		}
 		pageInfo.setRecords(list);
@@ -405,12 +407,14 @@
 			getAppUserVipDetail.setVipId(appUser.getVipId());
 			R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
 			TAppUserVipDetail data1 = appUserVipDetail.getData();
-			String vipJson = data1.getVipJson();
-			TVip vip = JSON.parseObject(vipJson, TVip.class);
-			if(Objects.nonNull(vip) && vip.getType() == 2){
-				list.forEach(item -> {
-					item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal()));
-				});
+			if(Objects.nonNull(data1)){
+				String vipJson = data1.getVipJson();
+				TVip vip = JSON.parseObject(vipJson, TVip.class);
+				if(Objects.nonNull(vip) && vip.getType() == 2){
+					list.forEach(item -> {
+						item.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(item.getServiceCharge()).add(item.getElectrovalenceOriginal()));
+					});
+				}
 			}
 		}
 		return list;
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
index 57d3f7e..655485e 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -1,9 +1,13 @@
 package com.ruoyi.chargingPile.service.impl;
 
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.feignClient.AppUserVipDetailClient;
 import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserVipDetail;
+import com.ruoyi.account.api.vo.GetAppUserVipDetail;
 import com.ruoyi.chargingPile.api.model.Site;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategy;
 import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail;
@@ -15,6 +19,7 @@
 import com.ruoyi.chargingPile.service.ISiteService;
 import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService;
 import com.ruoyi.chargingPile.service.TChargingGunService;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.security.service.TokenService;
@@ -52,6 +57,8 @@
     private TChargingGunService chargingGunService;
     @Autowired
     private AppUserClient appUserClient;
+    @Resource
+    private AppUserVipDetailClient vipDetailClient;
     @Override
     public List<TAccountingStrategyDetailVO> queryAccountingStrategyDetailByStrategyId(Integer strategyId) {
         return this.baseMapper.queryAccountingStrategyDetailByStrategyId(strategyId);
@@ -72,7 +79,19 @@
         TAppUser appUser = appUserClient.getUserById(userId).getData();
         if(Objects.nonNull(appUser)){
             // 查询会员信息
-            TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+//            TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
+
+            GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+            getAppUserVipDetail.setAppUserId(userId);
+            getAppUserVipDetail.setVipId(appUser.getVipId());
+            R<TAppUserVipDetail> appUserVipDetail = vipDetailClient.getAppUserVipDetail(getAppUserVipDetail);
+            TAppUserVipDetail data1 = appUserVipDetail.getData();
+            TVip vip = null;
+            if(Objects.nonNull(data1)){
+                String vipJson = data1.getVipJson();
+                vip = JSON.parseObject(vipJson, TVip.class);
+            }
+
             TAccountingStrategyDetailVO accountingStrategyDetailVO;
             TAccountingStrategyDetailVO accountingStrategyDetailNext;
             // 获取当前时间段的计费策略明细
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 f7019e4..59484da 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
@@ -24,6 +24,7 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.domain.BasePojo;
 import com.ruoyi.common.core.web.page.PageInfo;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.SecurityUtils;
@@ -517,7 +518,7 @@
 			if(status == 5 || status == 6){
 				gunMonitoring.setStatus(3);
 			}
-			if(status == 4){
+			if(status == 4 || status == 7){
 				Integer id = gunMonitoring.getId();
 				TChargingOrder chargingOrder = chargingOrderClient.getOrderDetailByGunId(id).getData();
 				if(null != chargingOrder){
@@ -576,6 +577,13 @@
 					}
 				}
 			}
+			//test
+//			if (status==1||status==7){
+//				TFaultMessage one = faultMessageService.lambdaQuery().eq(TFaultMessage::getChargingGunId, gunMonitoring.getId()).orderByDesc(TFaultMessage::getCreateTime).last("limit 1").one();
+//				if (one!=null) {
+//					gunMonitoring.setFaultCause(one.getContent());
+//				}
+//			}
 		}
 		return pageInfo.setRecords(chargingGunMonitoring);
 	}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
index 1a3c63c..42bb861 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
@@ -53,7 +53,9 @@
 		TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
 		parkingRecord.setName(data.getName());
 		parkingRecord.setParkingLotId(data.getId());
-		parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEnterDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+		LocalDateTime parse = LocalDateTime.parse(order.getEnterDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ"));
+		parse.plusDays(8);
+		parkingRecord.setInParkingTime(parse);
 		parkingRecord.setStatus(1);
 		parkingRecord.setCreateTime(LocalDateTime.now());
 		parkingRecord.setSerialnumber(order.getId());
@@ -70,7 +72,9 @@
 		query.setLicensePlate(order.getPlate());
 		query.setStatus(1);
 		TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
-		parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+		LocalDateTime parse = LocalDateTime.parse(order.getLeaveDateTime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ"));
+		parse.plusDays(8);
+		parkingRecord.setOutParkingTime(parse);
 		parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime()));
 		parkingRecord.setOrderAmount(new BigDecimal(order.getReceivable()));
 		parkingRecord.setPayment(new BigDecimal(order.getPayment()));
@@ -104,7 +108,9 @@
 		TParkingLot data = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
 		parkingRecord.setName(data.getName());
 		parkingRecord.setParkingLotId(data.getId());
-		parkingRecord.setInParkingTime(LocalDateTime.parse(order.getEntertime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+		LocalDateTime parse = LocalDateTime.parse(order.getEntertime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ"));
+		parse.plusDays(8);
+		parkingRecord.setInParkingTime(parse);
 		parkingRecord.setStatus(1);
 		parkingRecord.setCreateTime(LocalDateTime.now());
 		parkingRecord.setSerialnumber(order.getId());
@@ -121,7 +127,9 @@
 		query.setLicensePlate(order.getPlatenumber());
 		query.setStatus(1);
 		TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
-		parkingRecord.setOutParkingTime(LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+		LocalDateTime parse = LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss.SSSZ"));
+		parse.plusDays(8);
+		parkingRecord.setOutParkingTime(parse);
 		parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime()));
 		parkingRecord.setOrderAmount(new BigDecimal(order.getMoney()));
 		parkingRecord.setPayment(new BigDecimal(order.getMoney()));
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/BmsDemandAndChargerExportationController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/BmsDemandAndChargerExportationController.java
new file mode 100644
index 0000000..2018927
--- /dev/null
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/BmsDemandAndChargerExportationController.java
@@ -0,0 +1,46 @@
+package com.ruoyi.integration.controller;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation;
+import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData;
+import com.ruoyi.integration.mongodb.service.BmsDemandAndChargerExportationService;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+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/11/1 15:52
+ */
+@RestController
+@RequestMapping("/bmsDemandAndChargerExportation")
+public class BmsDemandAndChargerExportationController {
+	
+	@Resource
+	private BmsDemandAndChargerExportationService bmsDemandAndChargerExportationService;
+	
+	/**
+	 * 获取充电中bms数据
+	 * @param orderCode
+	 * @return
+	 */
+	@PostMapping("/getBmsDemandAndChargerExportation")
+	public R<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(@RequestParam("orderCode") String orderCode){
+		List<BmsDemandAndChargerExportation> bmsDemandAndChargerExportation = bmsDemandAndChargerExportationService.getBmsDemandAndChargerExportation(orderCode);
+		if(bmsDemandAndChargerExportation.size() > 0){
+			BmsDemandAndChargerExportation uploadRealTimeMonitoringData = bmsDemandAndChargerExportation.get(0);
+			return R.ok(uploadRealTimeMonitoringData);
+		}
+		return R.ok();
+	}
+	
+	
+}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/BmsDemandAndChargerExportationService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/BmsDemandAndChargerExportationService.java
index 34e3749..96d429e 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/BmsDemandAndChargerExportationService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/BmsDemandAndChargerExportationService.java
@@ -2,6 +2,18 @@
 
 import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation;
 import com.ruoyi.integration.mongodb.base.BaseService;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
 
 public interface BmsDemandAndChargerExportationService extends BaseService<BmsDemandAndChargerExportation> {
+	
+	
+	/**
+	 * 获取bms数据
+	 * @param orderCode
+	 * @return
+	 */
+	List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode);
+	
 }
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java
index c8a9b50..fb6f731 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java
@@ -1,10 +1,14 @@
 package com.ruoyi.integration.mongodb.service.impl;
 
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.integration.iotda.constant.IotConstant;
 import com.ruoyi.integration.api.model.BmsDemandAndChargerExportation;
 import com.ruoyi.integration.mongodb.service.BmsDemandAndChargerExportationService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -28,4 +32,17 @@
     public List<BmsDemandAndChargerExportation> findAll() {
         return mongoTemplate.findAll(BmsDemandAndChargerExportation.class);
     }
+    
+    
+    @Override
+    public List<BmsDemandAndChargerExportation> getBmsDemandAndChargerExportation(String orderCode) {
+        Query query = new Query();
+        if(StringUtils.isNotEmpty(orderCode)){
+            query.addCriteria(Criteria.where("transaction_serial_number").is(orderCode));
+        }
+        List<BmsDemandAndChargerExportation> uploadRealTimeMonitoringData = mongoTemplate.find(
+                query.with(Sort.by(Sort.Order.desc("create_time")))
+                , BmsDemandAndChargerExportation.class);
+        return uploadRealTimeMonitoringData;
+    }
 }
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 53af2b7..4a14d46 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
@@ -197,6 +197,7 @@
                 payOrderInfoDto.setPayTime(byId.getCreateTime());
                 payOrderInfoDto.setRefundAmount(byId.getRefundAmount());
                 payOrderInfoDto.setRechargeAmount(byId.getRechargeAmount());
+                payOrderInfoDto.setFinalAmount(byId.getRechargeAmount().subtract(byId.getRefundAmount()));
                 return R.ok(payOrderInfoDto);
             case 2:
                 TShoppingOrder byId1 = shoppingOrderService.getById(orderId);
@@ -209,6 +210,7 @@
                 payOrderInfoDto1.setPayTime(byId1.getCreateTime());
                 payOrderInfoDto1.setRefundAmount(byId1.getRefundAmount());
                 payOrderInfoDto1.setRechargeAmount(byId1.getPaymentAmount());
+                payOrderInfoDto1.setFinalAmount(byId1.getPaymentAmount().subtract(byId1.getRefundAmount()));
                 return R.ok(payOrderInfoDto1);
             case 3:
                 TVipOrder byId2 = vipOrderService.getById(orderId);
@@ -221,6 +223,7 @@
                 payOrderInfoDto2.setPayTime(byId2.getCreateTime());
                 payOrderInfoDto2.setRefundAmount(byId2.getRefundAmount());
                 payOrderInfoDto2.setRechargeAmount(byId2.getPaymentAmount());
+                payOrderInfoDto2.setFinalAmount(byId2.getPaymentAmount().subtract(byId2.getRefundAmount()));
                 return R.ok(payOrderInfoDto2);
             //todo luo 停车场订单
 //                case 4:
@@ -1125,6 +1128,8 @@
         } else {
             siteIds.add(statisticsQueryDto.getSiteId());
         }
+
+
         List<Map<String,Object>> maps1 =  chargingOrderService.queryPower(siteIds);
 
 
@@ -1330,7 +1335,7 @@
         List<Map<String,Object>> badTop = orderEvaluateService.badTop(siteIds);
 
         //流量分析
-        List<Map<String,Object>> sourceMap = chargingOrderService.countBySource(siteIds);
+        List<Map<String,Object>> sourceMap = chargingOrderService.countBySource(siteIds,statisticsQueryDto);
         tCharingUserEvaluateVO.setGoodTop(goodTop);
         tCharingUserEvaluateVO.setBadTop(badTop);
         tCharingUserEvaluateVO.setFlow(sourceMap);
@@ -1355,8 +1360,48 @@
         }
         //直流可用率
         List<Map<String,Object>> equipmentMap1 = chargingOrderService.equipmentUserType1(siteIds,statisticsQueryDto);
+        for (Map<String, Object> result : equipmentMap1) {
+            Object percentObj = result.get("percent");
+            if (percentObj instanceof String) {
+                try {
+                    BigDecimal percent = new BigDecimal((String) percentObj);
+                    if (percent.compareTo(BigDecimal.ZERO) < 0) {
+                        result.put("percent", percent.negate().toString());
+                    }
+                } catch (NumberFormatException e) {
+                    // 处理转换异常
+                    result.put("percent", BigDecimal.ZERO); // 或者其他默认值
+                }
+            } else if (percentObj instanceof BigDecimal) {
+                BigDecimal percent = (BigDecimal) percentObj;
+                if (percent.compareTo(BigDecimal.ZERO) < 0) {
+                    result.put("percent", percent.negate().toString());
+                }
+            }
+        }
+
         //交流可用率
         List<Map<String,Object>> equipmentMap2= chargingOrderService.equipmentUserType2(siteIds,statisticsQueryDto);
+
+        for (Map<String, Object> result : equipmentMap2) {
+            Object percentObj = result.get("percent");
+            if (percentObj instanceof String) {
+                try {
+                    BigDecimal percent = new BigDecimal((String) percentObj);
+                    if (percent.compareTo(BigDecimal.ZERO) < 0) {
+                        result.put("percent", percent.negate().toString());
+                    }
+                } catch (NumberFormatException e) {
+                    // 处理转换异常
+                    result.put("percent", BigDecimal.ZERO); // 或者其他默认值
+                }
+            } else if (percentObj instanceof BigDecimal) {
+                BigDecimal percent = (BigDecimal) percentObj;
+                if (percent.compareTo(BigDecimal.ZERO) < 0) {
+                    result.put("percent", percent.negate().toString());
+                }
+            }
+        }
 
         //取出直流可用率和交流可用率的percent的平均值保留两位小数
 
@@ -1457,7 +1502,7 @@
 
 
 
-        List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds).ge( TChargingOrder::getCreateTime,min).le(BasePojo::getCreateTime,max).eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list();
+        List<TChargingOrder> list = chargingOrderService.lambdaQuery().in(!siteIds.isEmpty(), TChargingOrder::getSiteId, siteIds).ge( TChargingOrder::getCreateTime,min).le(BasePojo::getCreateTime,max).eq(TChargingOrder::getStatus,5).eq(statisticsQueryDto.getSiteId() != null, TChargingOrder::getSiteId, statisticsQueryDto.getSiteId()).list();
         //当日的订单总数
         int size = list.size();
         //计算list中paymentAmount的总和
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
index ae3424d..3379441 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
@@ -1,5 +1,6 @@
 package com.ruoyi.order.dto;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -25,6 +26,7 @@
     @ApiModelProperty("退款金额")
     private BigDecimal refundAmount;
     private BigDecimal rechargeAmount;
+    private BigDecimal finalAmount;
 
 
 }
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 ee99d41..a1322f4 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
@@ -110,7 +110,7 @@
 
 	List<Map<String, Object>> getLevelEvaluate(@Param("siteIds")List<Integer> siteIds);
 
-    List<Map<String, Object>> countBySource(@Param("siteIds")List<Integer> siteIds);
+    List<Map<String, Object>> countBySource(@Param("siteIds")List<Integer> siteIds,@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
 
 	List<Map<String, Object>> equipmentUserType1(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto);
 
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 c6ed1b2..13f6333 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
@@ -232,7 +232,7 @@
 
     SettlementTotalVO settlementTotal(String time);
 
-	List<Map<String, Object>> countBySource(List<Integer> siteIds);
+	List<Map<String, Object>> countBySource(List<Integer> siteIds,ChargingStatisticsQueryDto statisticsQueryDto);
 
 	List<Map<String, Object>> equipmentUserType1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto);
 
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 8e9c47b..3ac0e8a 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
@@ -187,6 +187,9 @@
 	
 	@Resource
 	private SecurityDetectionClient securityDetectionClient;
+	
+	@Resource
+	private BmsDemandAndChargerExportationClient bmsDemandAndChargerExportationClient;
 
 	//计数器
 	private Map<String, Integer> counter_map = new HashMap<>();
@@ -1108,7 +1111,7 @@
 				appUserIntegralChange.setCurrentIntegral(appUser1.getPoints() + num1);
 				appUserIntegralChange.setCreateTime(LocalDateTime.now());
 				appUserIntegralChange.setOrderCode(chargingOrder.getCode());
-				appUserIntegralChange.setExtension(chargingOrder.getId().toString());
+				appUserIntegralChange.setExtension(appUser.getId().toString());
 				appUserIntegralChangeClient.addAppUserIntegralChange(appUserIntegralChange);
 				
 				appUser1.setPoints(appUser1.getPoints() + num1);
@@ -1739,6 +1742,10 @@
 			chargingOrder.setChargingCapacity(query.getCharging_degree());
 			chargingOrder.setElectricity(query.getCharging_degree());
 			chargingOrder.setTotalElectricity(new BigDecimal(100 - query.getSoc()));
+			BmsDemandAndChargerExportation data = bmsDemandAndChargerExportationClient.getBmsDemandAndChargerExportation(chargingOrder.getCode()).getData();
+			if(null != data){
+				chargingOrder.setNeedElec(data.getBms_current_requirements());
+			}
 			this.updateById(chargingOrder);
 		}
 	}
@@ -1904,16 +1911,16 @@
 				serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
 			}
 			chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
-			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
-			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
-			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
-			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
+			chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc.setScale(2, RoundingMode.DOWN));
+			chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge.setScale(2, RoundingMode.DOWN));
+			chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice.setScale(2, RoundingMode.DOWN));
+			chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount.setScale(2, RoundingMode.DOWN));
 			chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
 			chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
 			
-			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
-			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
-			total = total.add(electrovalenc.add(originalServicePrice));
+			periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc.setScale(2, RoundingMode.DOWN));
+			periodServicePrice_total = periodServicePrice_total.add(originalServicePrice.setScale(2, RoundingMode.DOWN));
+			total = total.add(electrovalenc.add(originalServicePrice.setScale(2, RoundingMode.DOWN)));
 		}
 		
 		
@@ -1963,13 +1970,13 @@
 		if(null == chargingOrder.getEndMode()){
 			order.setEndMode(1);
 		}
-		order.setResidualAmount(rechargeAmount.subtract(total));
+		order.setResidualAmount(rechargeAmount.subtract(total).setScale(2, RoundingMode.DOWN));
 		order.setStartTime(LocalDateTime.parse(vo.getStart_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
 		order.setEndTime(LocalDateTime.parse(vo.getEnd_time(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SS")));
 		order.setStatus(5);
-		order.setOrderAmount(orderAmount);
-		order.setVipDiscountAmount(discountAmount);
-		order.setElectrovalence(periodElectricPrice_total);
+		order.setOrderAmount(orderAmount.setScale(2, RoundingMode.DOWN));
+		order.setVipDiscountAmount(discountAmount.setScale(2, RoundingMode.DOWN));
+		order.setElectrovalence(periodElectricPrice_total.setScale(2, RoundingMode.DOWN));
 		order.setChargingCapacity(vo.getTotal_electricity());
 		order.setElectricity(vo.getTotal_electricity());
 		
@@ -2035,8 +2042,8 @@
 		}
 		
 		order.setServiceCharge(periodServicePrice_total.setScale(2, RoundingMode.DOWN));
-		order.setPaymentAmount(payAmount);
-		order.setRefundAmount(refundAmount);
+		order.setPaymentAmount(payAmount.setScale(2, RoundingMode.DOWN));
+		order.setRefundAmount(refundAmount.setScale(2, RoundingMode.DOWN));
 		order.setRefundStatus(1);
 		this.updateById(order);
 		chargingOrder = this.getById(order.getId());
@@ -2050,8 +2057,8 @@
 				BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
 				BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(reduce, new MathContext(4, RoundingMode.HALF_EVEN)));
 				periodServicePrice = periodServicePrice.subtract(multiply);
-				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice);
-				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply);
+				chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice.setScale(2, RoundingMode.DOWN));
+				chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply.setScale(2, RoundingMode.DOWN));
 			}
 			chargingOrderAccountingStrategyService.updateBatchById(list);
 		}
@@ -2247,7 +2254,7 @@
 				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 					return R.fail("退款金额需小于支付金额");
 				}
-				if ((tChargingOrder.getRechargeAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
+				if ((tChargingOrder.getRechargeAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
 					tChargingOrder.setStatus(5);
 				}
 
@@ -2316,7 +2323,7 @@
 				if (tChargingOrder.getPaymentAmount().compareTo(payOrderQueryDto.getRefundAmount())==-1){
 					return R.fail("退款金额需小于支付金额");
 				}
-				if ((tChargingOrder.getPaymentAmount().subtract(payOrderQueryDto.getRefundAmount()).compareTo(tChargingOrder.getPaymentAmount()))==0){
+				if ((tChargingOrder.getPaymentAmount().subtract(tChargingOrder.getRefundAmount()).compareTo(payOrderQueryDto.getRefundAmount()))==0){
 					tChargingOrder.setStatus(5);
 				}
 
@@ -2882,8 +2889,8 @@
 	}
 
 	@Override
-	public List<Map<String, Object>> countBySource(List<Integer> siteIds) {
-		return this.baseMapper.countBySource(siteIds);
+	public List<Map<String, Object>> countBySource(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) {
+		return this.baseMapper.countBySource(siteIds,statisticsQueryDto);
 	}
 
 	@Override
@@ -3002,11 +3009,8 @@
 		if(null != order.getAppUserId()){
 			queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
 		}
-		if(null != order.getAppUserId()){
-			queryWrapper.eq(TChargingOrder::getAppUserId, order.getAppUserId());
-		}
 		if(null != order.getStatusList()){
-			queryWrapper.in(TChargingOrder::getAppUserId, order.getStatusList());
+			queryWrapper.in(TChargingOrder::getStatus, order.getStatusList());
 		}
 		if(null != order.getEndMode()){
 			queryWrapper.eq(TChargingOrder::getEndMode, order.getEndMode());
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 71bb06e..45f9f74 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
@@ -120,8 +120,8 @@
         1 as type,
         title,
         `status`,
-        order_amount,
-        payment_amount as payment_amount ,
+        recharge_amount as order_amount,
+        recharge_amount as payment_amount ,
         create_time,
         end_time,
         pay_time,
@@ -601,10 +601,10 @@
         </if>
         <if test="statisticsQueryDto.dayType ==5">
 
-            AND create_time >= #{statisticsQueryDto.startTime}
+            AND DATE(create_time) >= #{statisticsQueryDto.startTime}
 
 
-            AND create_time &lt;= #{statisticsQueryDto.endTime}
+            AND DATE(create_time) &lt;= #{statisticsQueryDto.endTime}
 
         </if>
 
@@ -940,6 +940,13 @@
                     #{siteId}
                 </foreach>
             </if>
+            <if test="statisticsQueryDto.dayType == 1">
+                AND DATE(create_time ) = CURDATE()
+            </if>
+            <if test="statisticsQueryDto.dayType != 1">
+                and DATE(create_time) >= #{statisticsQueryDto.startTime}
+                and DATE(create_time)  &lt;= #{statisticsQueryDto.endTime}
+            </if>
             group by source_name
 
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
index 2c4166f..8ebbd2f 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -93,6 +93,11 @@
         return R.ok(vipService.getById(id));
     }
 
+    @GetMapping(value = "/getVipList")
+    public R<List<TVip>> getVipList(){
+        return  R.ok(vipService.lambdaQuery().eq(TVip::getReveal, 1).list());
+    }
+
     /**
      * 远程调用
      * @param id
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
index 4351904..610e7a8 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/TGoodsMapper.xml
@@ -61,15 +61,29 @@
         WHERE `status` = 1 and del_flag = 0 and type = #{appGoodQuery.type}
         UNION ALL
         SELECT
-            id,name,redeem_points  as redeemPoints,inventory_quantity as inventory,payment_amount as originalPrice,payment_amount as preferentiaPrice,vip_payment_amount as vipPrice,2 as goodType,cover_picture as coverPicture,0 as underlyingSales
+            id,
+            NAME,
+            redeem_points AS redeemPoints,
+            inventory_quantity AS inventory,
+            payment_amount AS originalPrice,
+            payment_amount AS preferentiaPrice,
+            vip_payment_amount AS vipPrice,
+            2 AS goodType,
+            cover_picture AS coverPicture,
+            0 AS underlyingSales
         FROM
             t_coupon
-        WHERE `status`= 1 and del_flag = 0 and ways_to_obtain != #{appGoodQuery.type}
+        WHERE
+            `status` = 1
+          AND del_flag = 0 and ways_to_obtain != #{appGoodQuery.type}
+          AND (
+            validity_period_mode != 1
+        OR (validity_period_mode = 1 AND end_time >= NOW())
+            )
         ORDER BY
             CASE
-
-                WHEN `inventory` = 0 THEN
-                    0 ELSE 1
+                WHEN `inventory` = 0 THEN 0
+                ELSE 1
                 END DESC,
             `redeemPoints` ASC
     </select>

--
Gitblit v1.7.1