package com.ruoyi.other.service.impl;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.vo.ShopCommissionStatisticsVO;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-11-20
|
*/
|
@Service
|
public class ShopBalanceStatementServiceImpl extends ServiceImpl<ShopBalanceStatementMapper, ShopBalanceStatement> implements ShopBalanceStatementService {
|
|
|
@Override
|
public ShopCommissionStatisticsVO shopCommissionStatistics(IPage<ShopBalanceStatement> page, ShopBalanceStatement shopBalanceStatement) {
|
ShopCommissionStatisticsVO shopCommissionStatisticsVO = new ShopCommissionStatisticsVO();
|
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.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;
|
}
|
}
|