package com.ruoyi.account.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.account.pojo.AccountExpense;
import com.ruoyi.account.pojo.AccountIncome;
import com.ruoyi.account.pojo.BorrowInfo;
import com.ruoyi.account.mapper.BorrowInfoMapper;
import com.ruoyi.account.service.AccountExpenseService;
import com.ruoyi.account.service.AccountIncomeService;
import com.ruoyi.account.service.BorrowInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.service.ReceiptPaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
* 借款信息表 服务实现类
*
*
* @author 芯导软件(江苏)有限公司
* @since 2026-01-15 02:57:29
*/
@Service
@Slf4j
public class BorrowInfoServiceImpl extends ServiceImpl implements BorrowInfoService {
@Autowired
private BorrowInfoMapper borrowInfoMapper;
@Autowired
private AccountIncomeService accountIncomeService;
@Autowired
private AccountExpenseService accountExpenseService;
@Override
public AjaxResult listPage(Page page, BorrowInfo borrowInfo) {
LambdaQueryWrapper borrowInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
if(borrowInfo != null){
if(StringUtils.isNotEmpty(borrowInfo.getEntryDateStart()) && StringUtils.isNotEmpty(borrowInfo.getEntryDateEnd())){
borrowInfoLambdaQueryWrapper.ge(BorrowInfo::getBorrowDate, borrowInfo.getEntryDateStart());
borrowInfoLambdaQueryWrapper.le(BorrowInfo::getBorrowDate, borrowInfo.getEntryDateEnd());
}
if(borrowInfo.getStatus() != null){
borrowInfoLambdaQueryWrapper.eq(BorrowInfo::getStatus, borrowInfo.getStatus());
}
if(StringUtils.isNotEmpty(borrowInfo.getBorrowerName())){
borrowInfoLambdaQueryWrapper.like(BorrowInfo::getBorrowerName, borrowInfo.getBorrowerName());
}
}
return AjaxResult.success(borrowInfoMapper.selectPage(page, borrowInfoLambdaQueryWrapper));
}
@Override
public AjaxResult add(BorrowInfo borrowInfo) {
int insert = borrowInfoMapper.insert(borrowInfo);
if(insert > 0){
// 添加成功,进入收入管理
AccountIncome accountIncome = new AccountIncome();
accountIncome.setBusinessId(borrowInfo.getId());
accountIncome.setBusinessType(2);
accountIncome.setIncomeDate(DateUtils.toDate(borrowInfo.getBorrowDate()));
accountIncome.setIncomeType("2");
accountIncome.setIncomeMoney(borrowInfo.getBorrowAmount());
accountIncome.setIncomeDescribed("借款");
accountIncome.setIncomeMethod("3");
accountIncome.setInputTime(DateUtils.getNowDate());
accountIncome.setInputUser(borrowInfo.getBorrowerName());
accountIncomeService.save(accountIncome);
return AjaxResult.success("添加成功");
}
return AjaxResult.success("添加失败");
}
@Override
public AjaxResult updateBorrowInfo(BorrowInfo borrowInfo) {
int update = borrowInfoMapper.updateById(borrowInfo);
if(update > 0){
// 修改成功,修改收入管理
AccountIncome one = accountIncomeService.getOne(new LambdaQueryWrapper()
.eq(AccountIncome::getBusinessId, borrowInfo.getId())
.eq(AccountIncome::getBusinessType, 2)
.last("limit 1"));
if(one != null){
one.setIncomeMoney(borrowInfo.getBorrowAmount());
accountIncomeService.updateById(one);
}
// 是否为还款
if(borrowInfo.getStatus() != null && borrowInfo.getStatus() == 2){
// 新增支出记录
AccountExpense accountExpense = new AccountExpense();
accountExpense.setBusinessId(borrowInfo.getId());
accountExpense.setBusinessType(2);
accountExpense.setExpenseDate(DateUtils.toDate(borrowInfo.getRepayDate()));
accountExpense.setExpenseType("4");
accountExpense.setExpenseMoney(borrowInfo.getBorrowAmount());
accountExpense.setExpenseDescribed("还款");
accountExpense.setExpenseMethod("3");
accountExpense.setInputTime(DateUtils.getNowDate());
accountExpense.setInputUser(borrowInfo.getBorrowerName());
accountExpenseService.save(accountExpense);
}
return AjaxResult.success("修改成功");
}
return AjaxResult.success("修改失败");
}
@Override
public AjaxResult delete(List ids) {
int delete = borrowInfoMapper.deleteBatchIds(ids);
if(delete > 0){
// 删除成功,删除收入管理
accountIncomeService.remove(new LambdaQueryWrapper()
.in(AccountIncome::getBusinessId, ids)
.eq(AccountIncome::getBusinessType, 2));
// 删除支出管理
accountExpenseService.remove(new LambdaQueryWrapper()
.in(AccountExpense::getBusinessId, ids)
.eq(AccountExpense::getBusinessType, 2));
return AjaxResult.success("删除成功");
}
return AjaxResult.success("删除失败");
}
}