package com.gunshi.project.ss.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gunshi.project.ss.entity.so.FundBudgetPageSo; import com.gunshi.project.ss.mapper.FundBudgetMapper; import com.gunshi.project.ss.model.FundBudget; import io.jsonwebtoken.lang.Collections; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Service @Slf4j @Transactional(rollbackFor = Exception.class) public class FundBudgetService extends ServiceImpl { public Page pageInfo(FundBudgetPageSo pageSo) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if(pageSo.getBudgetYear() != null){ queryWrapper.eq(FundBudget::getBudgetYear, pageSo.getBudgetYear()); } queryWrapper.orderByDesc(FundBudget::getBudgetYear); Page fundBudgetPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper); return fundBudgetPage; } public boolean saveData(FundBudget fundBudget) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(FundBudget::getBudgetYear, fundBudget.getBudgetYear()); FundBudget one = baseMapper.selectOne(queryWrapper); if(one != null){ throw new IllegalArgumentException("对不起,该年度预算已存在"); } if(fundBudget.getAnnualIncomeBudget() != null && fundBudget.getAnnualExpenditureBudget() != null){ BigDecimal budget_balance = fundBudget.getAnnualExpenditureBudget().subtract(fundBudget.getAnnualIncomeBudget()); fundBudget.setBudgetBalance(budget_balance); } fundBudget.setCreateTime(LocalDateTime.now()); boolean save = save(fundBudget); return save; } public boolean updateData(FundBudget fundBudget) { FundBudget byId = getById(fundBudget.getId()); if(byId == null){ throw new IllegalArgumentException("对不起,该数据不存在"); } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(FundBudget::getBudgetYear, fundBudget.getBudgetYear()) .ne(FundBudget::getId, fundBudget.getId()); FundBudget one = baseMapper.selectOne(queryWrapper); if(one != null){ throw new IllegalArgumentException("对不起,该年度预算已存在"); } boolean update = updateById(fundBudget); return update; } public FundBudget getByYear(Integer year) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(FundBudget::getBudgetYear, year); FundBudget one = baseMapper.selectOne(queryWrapper); return one; } public FundBudget stat(Integer year) { FundBudget fundBudget = new FundBudget(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if(year != null){ queryWrapper.eq(FundBudget::getBudgetYear, year); } List list = baseMapper.selectList(queryWrapper); if (Collections.isEmpty(list)){ return fundBudget; } fundBudget.setAnnualIncomeBudget(list.stream().map(FundBudget::getAnnualIncomeBudget).reduce(BigDecimal.ZERO,BigDecimal::add)); fundBudget.setAnnualExpenditureBudget(list.stream().map(FundBudget::getAnnualExpenditureBudget).reduce(BigDecimal.ZERO,BigDecimal::add)); fundBudget.setBudgetBalance(list.stream().map(FundBudget::getBudgetBalance).reduce(BigDecimal.ZERO,BigDecimal::add)); return fundBudget; } }