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.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.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-11-20
|
*/
|
@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()));
|
|
IPage<ShopBalanceStatement> statementIPage = page(page, new LambdaQueryWrapper<ShopBalanceStatement>());
|
List<ShopBalanceStatement> records = statementIPage.getRecords();
|
List<Integer> shopIds = records.stream().map(ShopBalanceStatement::getShopId).collect(Collectors.toList());
|
List<Shop> shopList = shopService.listByIds(shopIds);
|
records.forEach(st -> {
|
shopList.stream().filter(shop -> shop.getId().equals(st.getShopId())).findFirst().ifPresent(shop -> {
|
st.setShopName(shop.getName());
|
st.setShopManagerName(shop.getShopManager());
|
st.setPhone(shop.getPhone());
|
});
|
});
|
shopCommissionStatisticsVO.setStatementIPage(statementIPage);
|
return shopCommissionStatisticsVO;
|
}
|
}
|