| | |
| | | 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.common.core.web.page.PageInfo; |
| | | 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 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); |
| | | |
| | | shopBalanceStatements.forEach(s->s.setVariableAmount(s.getVariableAmount().multiply(new BigDecimal(s.getChangeDirection())))); |
| | | Map<Integer, BigDecimal> shopCommissionMap = shopBalanceStatements.stream() |
| | | .collect(Collectors.groupingBy( |
| | | ShopBalanceStatement::getType, |
| | | Collectors.reducing( |
| | | BigDecimal.ZERO, |
| | | ShopBalanceStatement::getVariableAmount, |
| | | BigDecimal::add |
| | | ) |
| | | )); |
| | | |
| | | BigDecimal totalCommission = shopCommissionMap.getOrDefault(1,BigDecimal.ZERO); |
| | | BigDecimal totalSubordinateCommission = shopCommissionMap.getOrDefault(2,BigDecimal.ZERO); |
| | | BigDecimal totalServiceCharge = shopCommissionMap.getOrDefault(3,BigDecimal.ZERO); |
| | | shopCommissionStatisticsVO.setTotalCommission(totalCommission); |
| | | shopCommissionStatisticsVO.setTotalSubordinateCommission(totalSubordinateCommission); |
| | | shopCommissionStatisticsVO.setTotalServiceCharge(totalServiceCharge); |
| | | BigDecimal totalAmount = totalCommission.add(totalSubordinateCommission).add(totalServiceCharge); |
| | | shopCommissionStatisticsVO.setTotalAmount(totalAmount); |
| | | |
| | | IPage<ShopBalanceStatement> statementIPage = this.baseMapper.queryShopBalanceStatementPage(page, shopBalanceStatement); |
| | | for (ShopBalanceStatement record : statementIPage.getRecords()) { |
| | | if (record.getChangeDirection() == -1){ |
| | | // 减少 |
| | | record.setVariableAmountString("-¥"+record.getVariableAmount()); |
| | | }else{ |
| | | record.setVariableAmountString("+¥"+record.getVariableAmount()); |
| | | } |
| | | } |
| | | shopCommissionStatisticsVO.setStatementIPage(statementIPage); |
| | | return shopCommissionStatisticsVO; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取余额明细列表 |
| | | * @param type |
| | | * @param pageNum |
| | | * @param pageSize |
| | | * @return |
| | | */ |
| | | @Override |
| | | public PageInfo<ShopBalanceStatement> shopCommissionStatisticslist(Integer shopId, Integer type, Integer pageNum, Integer pageSize) { |
| | | PageInfo<ShopBalanceStatement> pageInfo = new PageInfo<>(pageNum, pageSize); |
| | | return this.baseMapper.shopCommissionStatisticslist(pageInfo, shopId, type); |
| | | } |
| | | } |