From a17f15e196a89ab8a35fc8344384a6996c0864aa Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期一, 12 八月 2024 17:02:37 +0800 Subject: [PATCH] 电站详情完成 --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java | 69 ++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 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 741455f..8011eb8 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,13 +1,25 @@ package com.ruoyi.chargingPile.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +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.TAccountingStrategyDetailService; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.other.api.domain.TVip; +import com.ruoyi.other.api.feignClient.VipClient; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.time.LocalTime; +import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * <p> @@ -20,8 +32,65 @@ @Service public class TAccountingStrategyDetailServiceImpl extends ServiceImpl<TAccountingStrategyDetailMapper, TAccountingStrategyDetail> implements TAccountingStrategyDetailService { + @Autowired + private TAccountingStrategyMapper accountingStrategyMapper; + @Autowired + private VipClient vipClient; + @Override public List<TAccountingStrategyDetailVO> queryAccountingStrategyDetailByStrategyId(Integer strategyId) { return this.baseMapper.queryAccountingStrategyDetailByStrategyId(strategyId); } + + @Override + public List<TAccountingStrategyDetailVO> queryStrategyBySiteIdAndTime(Integer siteId) { + TAccountingStrategy accountingStrategy = accountingStrategyMapper.selectOne(Wrappers.lambdaQuery(TAccountingStrategy.class) + .eq(TAccountingStrategy::getSiteId, siteId) + .last("limit 1")); + if(Objects.isNull(accountingStrategy)){ + throw new ServiceException("未查询到计费策略"); + } + List<TAccountingStrategyDetailVO> list = this.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId()); + // 获取当前时间段的计费策略明细 + TAccountingStrategyDetailVO 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(accountingStrategy.getDiscount()); + // 获取后一次的计费策略明细 + TAccountingStrategyDetailVO accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) + .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); + accountingStrategyDetailNext.setDiscount(accountingStrategy.getDiscount()); + list = new ArrayList<>(); + list.add(accountingStrategyDetailVO); + list.add(accountingStrategyDetailNext); + return list; + } + + @Override + public StrategyPriceVO queryPrice(Integer siteId) { + TAccountingStrategy accountingStrategy = accountingStrategyMapper.selectOne(Wrappers.lambdaQuery(TAccountingStrategy.class) + .eq(TAccountingStrategy::getSiteId, siteId) + .last("limit 1")); + if(Objects.isNull(accountingStrategy)){ + throw new ServiceException("未查询到计费策略"); + } + + StrategyPriceVO strategyPriceVO = new StrategyPriceVO(); + + List<TAccountingStrategyDetailVO> list = this.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId()); + // 获取当前时间段的计费策略明细 + TAccountingStrategyDetailVO accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) + .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); + strategyPriceVO.setDiscountAmount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()) + .subtract(accountingStrategyDetailVO.getServiceCharge().multiply(accountingStrategy.getDiscount())).setScale(2, BigDecimal.ROUND_HALF_UP)); + // 查询最高抵扣的会员 + TVip maximumDeduction = vipClient.getVipInfoByType(1).getData(); + strategyPriceVO.setMaxDiscountAmount(maximumDeduction.getMaximumDeduction()); + // 查询最低起步价会员 + TVip monthlyCard = vipClient.getVipInfoByType(2).getData(); + strategyPriceVO.setVipStartPrice(monthlyCard.getMonthlyCard()); + // 查询最高折扣的会员 + TVip monthlyCardDiscount = vipClient.getVipInfoByType(3).getData(); + strategyPriceVO.setServiceFeeDiscount(monthlyCardDiscount.getMonthlyCardDiscount()); + return strategyPriceVO; + } } -- Gitblit v1.7.1