From bf97fa0e67a01dbb0b9df0bed5c81f8f50bf538c Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期六, 24 八月 2024 16:57:30 +0800 Subject: [PATCH] 计费修改 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java | 38 +++++++++++++++++--------------------- 1 files changed, 17 insertions(+), 21 deletions(-) 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 979620c..7afe685 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 @@ -4,14 +4,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; +import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.vo.StrategyPriceVO; import com.ruoyi.chargingPile.api.vo.TAccountingStrategyDetailVO; import com.ruoyi.chargingPile.mapper.TAccountingStrategyDetailMapper; import com.ruoyi.chargingPile.mapper.TAccountingStrategyMapper; +import com.ruoyi.chargingPile.service.ISiteService; import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.VipClient; @@ -45,6 +48,8 @@ @Autowired private TokenService tokenService; @Autowired + private ISiteService siteService; + @Autowired private AppUserClient appUserClient; @Override public List<TAccountingStrategyDetailVO> queryAccountingStrategyDetailByStrategyId(Integer strategyId) { @@ -53,9 +58,8 @@ @Override public List<TAccountingStrategyDetailVO> queryStrategyBySiteIdAndTime(Integer siteId) { - TAccountingStrategy accountingStrategy = accountingStrategyMapper.selectOne(Wrappers.lambdaQuery(TAccountingStrategy.class) - .eq(TAccountingStrategy::getSiteId, siteId) - .last("limit 1")); + Site site = siteService.getById(siteId); + TAccountingStrategy accountingStrategy = accountingStrategyMapper.selectById(site.getAccountingStrategyId()); if(Objects.isNull(accountingStrategy)){ throw new ServiceException("未查询到计费策略"); } @@ -64,28 +68,23 @@ Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); - if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){ + if(Objects.nonNull(appUser)){ // 查询会员信息 TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); TAccountingStrategyDetailVO accountingStrategyDetailVO; TAccountingStrategyDetailVO accountingStrategyDetailNext; + // 获取当前时间段的计费策略明细 + accountingStrategyDetailVO = list.stream().filter(detail -> DateUtils.string2LocalTime(detail.getStartTime() + ":00").compareTo(LocalTime.now()) <= 0 + && DateUtils.string2LocalTime(detail.getEndTime() + ":00").compareTo(LocalTime.now()) > 0) + .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); + // 获取后一次的计费策略明细 + accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) + .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); if(Objects.nonNull(vip) && vip.getType() == 2){ - // 获取当前时间段的计费策略明细 - accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) - .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(vip.getDiscount())); - // 获取后一次的计费策略明细 - accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) - .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(vip.getDiscount())); }else { - // 获取当前时间段的计费策略明细 - accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) - .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(accountingStrategy.getDiscount())); - // 获取后一次的计费策略明细 - accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) - .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(accountingStrategy.getDiscount())); } list = new ArrayList<>(); @@ -127,19 +126,16 @@ @Override public Boolean isStrategy24Hour(List<TAccountingStrategyDetail> accountingStrategyDetails) { - String START_OF_DAY = "00:00:00"; - String END_OF_DAY = "24:00:00"; List<TAccountingStrategyDetail> sortedDetails = accountingStrategyDetails.stream() .sorted(Comparator.comparing(TAccountingStrategyDetail::getStartTime)) .collect(Collectors.toList()); - boolean isFirstElementValid = sortedDetails.isEmpty() || !START_OF_DAY.equals(sortedDetails.get(0).getStartTime()); - boolean isLastElementValid = sortedDetails.isEmpty() || !END_OF_DAY.equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime()); + boolean isFirstElementValid = sortedDetails.isEmpty() || !sortedDetails.get(0).getStartTime().equals(sortedDetails.get(sortedDetails.size() - 1).getEndTime()); boolean isTimeContinuous = sortedDetails.stream() .skip(1) .allMatch(detail -> detail.getStartTime().equals(sortedDetails.get(sortedDetails.indexOf(detail) - 1).getEndTime())); - return isFirstElementValid || isLastElementValid || !isTimeContinuous; + return isFirstElementValid || !isTimeContinuous; } } -- Gitblit v1.7.1