puzhibing
2024-11-01 e0763a06c410c2dcd47c206c29288edd1ef41e26
Merge remote-tracking branch 'origin/master'
14个文件已修改
3个文件已添加
356 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysRole.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysRoleController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/BmsDemandAndChargerExportationController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/BmsDemandAndChargerExportationService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/mongodb/service/impl/BmsDemandAndChargerExportationServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 = "添加车辆最高可得积分 车辆信息为空 展示提示语")
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/BmsDemandAndChargerExportationFallbackFactory.java
New file
@@ -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());
            }
        };
    }
}
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/BmsDemandAndChargerExportationClient.java
New file
@@ -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);
}
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());
            }
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();
}
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)
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);
    }
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));
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,26 @@
            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();
                        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());
                        }
                // 获取当前登录用户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();
                    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().add(tAccountingStrategyDetail.getServiceCharge()).setScale(4, BigDecimal.ROUND_HALF_UP));
                }
            }
        }
@@ -177,26 +188,41 @@
            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();
                        if(Objects.nonNull(vip) && vip.getType() == 2){
                            siteInfoVO.setVipElectrovalence(vip.getDiscount().divide(new BigDecimal(10)).multiply(tAccountingStrategyDetail.getServiceCharge()).add(tAccountingStrategyDetail.getElectrovalence()));
                        }else {
                            siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
                        }
                    }else {
                        siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence());
                // 获取当前登录用户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();
                    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.getServiceCharge().multiply(byId1.getDiscount()).add(tAccountingStrategyDetail.getElectrovalence())).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());
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,16 @@
        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();
            String vipJson = data1.getVipJson();
            TVip vip = JSON.parseObject(vipJson, TVip.class);
            TAccountingStrategyDetailVO accountingStrategyDetailVO;
            TAccountingStrategyDetailVO accountingStrategyDetailNext;
            // 获取当前时间段的计费策略明细
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java
@@ -518,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){
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()));
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/BmsDemandAndChargerExportationController.java
New file
@@ -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();
    }
}
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);
}
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;
    }
}
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);
                }
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