gunshi-project-ss/src/main/java/com/gunshi/project/ss/service/FundBudgetService.java

90 lines
3.9 KiB
Java
Raw Normal View History

2026-01-16 10:38:26 +08:00
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;
2026-02-08 13:56:19 +08:00
import io.jsonwebtoken.lang.Collections;
2026-01-16 10:38:26 +08:00
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDateTime;
2026-02-08 13:56:19 +08:00
import java.util.List;
2026-01-16 10:38:26 +08:00
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class FundBudgetService extends ServiceImpl<FundBudgetMapper, FundBudget> {
public Page<FundBudget> pageInfo(FundBudgetPageSo pageSo) {
LambdaQueryWrapper<FundBudget> queryWrapper = new LambdaQueryWrapper<>();
if(pageSo.getBudgetYear() != null){
queryWrapper.eq(FundBudget::getBudgetYear, pageSo.getBudgetYear());
}
2026-02-08 13:56:19 +08:00
queryWrapper.orderByDesc(FundBudget::getBudgetYear);
2026-01-16 10:38:26 +08:00
Page<FundBudget> fundBudgetPage = baseMapper.selectPage(pageSo.getPageSo().toPage(), queryWrapper);
return fundBudgetPage;
}
public boolean saveData(FundBudget fundBudget) {
LambdaQueryWrapper<FundBudget> 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());
2026-01-16 10:38:26 +08:00
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<FundBudget> 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<FundBudget> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(FundBudget::getBudgetYear, year);
FundBudget one = baseMapper.selectOne(queryWrapper);
return one;
}
2026-02-08 13:56:19 +08:00
public FundBudget stat(Integer year) {
FundBudget fundBudget = new FundBudget();
LambdaQueryWrapper<FundBudget> queryWrapper = new LambdaQueryWrapper<>();
if(year != null){
queryWrapper.eq(FundBudget::getBudgetYear, year);
}
List<FundBudget> 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;
}
2026-01-16 10:38:26 +08:00
}