| | |
| | | package com.ruoyi.other.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.other.api.domain.Shop; |
| | | import com.ruoyi.other.mapper.ShopBalanceStatementMapper; |
| | | import com.ruoyi.other.api.domain.ShopBalanceStatement; |
| | | import com.ruoyi.other.api.domain.ShopPoint; |
| | | import com.ruoyi.other.mapper.ShopBalanceStatementMapper; |
| | | import com.ruoyi.other.service.ShopBalanceStatementService; |
| | | import com.ruoyi.other.service.ShopService; |
| | | import com.ruoyi.other.vo.ShopCommissionStatisticsVO; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Service |
| | | public class ShopBalanceStatementServiceImpl extends ServiceImpl<ShopBalanceStatementMapper, ShopBalanceStatement> implements ShopBalanceStatementService { |
| | | @Resource |
| | | private ShopBalanceStatementMapper shopBalanceStatementMapper; |
| | | @Resource |
| | | private ShopService shopService; |
| | | |
| | | |
| | | @Override |
| | | public ShopCommissionStatisticsVO shopCommissionStatistics(IPage<ShopBalanceStatement> page, ShopBalanceStatement shopBalanceStatement) { |
| | | List<ShopBalanceStatement> latestChangeByType = shopBalanceStatementMapper.findLatestChangeByType(shopBalanceStatement); |
| | | ShopCommissionStatisticsVO shopCommissionStatisticsVO = new ShopCommissionStatisticsVO(); |
| | | for (ShopBalanceStatement sp : latestChangeByType) { |
| | | switch (sp.getType()) { |
| | | case 1: |
| | | shopCommissionStatisticsVO.setTotalCommission(sp.getBalance()); |
| | | break; |
| | | case 2: |
| | | shopCommissionStatisticsVO.setTotalSubordinateCommission(sp.getBalance()); |
| | | break; |
| | | case 3: |
| | | shopCommissionStatisticsVO.setTotalServiceCharge(sp.getBalance()); |
| | | break; |
| | | } |
| | | } |
| | | shopCommissionStatisticsVO.setTotalAmount(shopCommissionStatisticsVO.getTotalCommission() |
| | | .add(shopCommissionStatisticsVO.getTotalSubordinateCommission()) |
| | | .add(shopCommissionStatisticsVO.getTotalServiceCharge())); |
| | | List<ShopBalanceStatement> shopBalanceStatements = this.baseMapper.selectShopBalanceStatementList(shopBalanceStatement); |
| | | |
| | | Map<Integer, BigDecimal> shopCommissionMap = shopBalanceStatements.stream() |
| | | .collect(Collectors.groupingBy( |
| | | ShopBalanceStatement::getType, |
| | | Collectors.reducing( |
| | | BigDecimal.ZERO, |
| | | ShopBalanceStatement::getVariableAmount, |
| | | BigDecimal::add |
| | | ) |
| | | )); |
| | | |
| | | BigDecimal totalCommission = shopCommissionMap.get(1); |
| | | BigDecimal totalSubordinateCommission = shopCommissionMap.get(2); |
| | | BigDecimal totalServiceCharge = shopCommissionMap.get(3); |
| | | |
| | | BigDecimal totalAmount = totalCommission.add(totalSubordinateCommission).add(totalServiceCharge); |
| | | shopCommissionStatisticsVO.setTotalAmount(totalAmount); |
| | | |
| | | IPage<ShopBalanceStatement> statementIPage = this.baseMapper.queryShopBalanceStatementPage(page, shopBalanceStatement); |
| | | shopCommissionStatisticsVO.setStatementIPage(statementIPage); |