package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.TencentMailUtil;
import com.ruoyi.system.mapper.TInvoiceMapper;
import com.ruoyi.system.model.TInvoice;
import com.ruoyi.system.query.TInvoiceQuery;
import com.ruoyi.system.service.TBillService;
import com.ruoyi.system.service.TInvoiceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
/**
*
* 开票管理 服务实现类
*
*
* @author xiaochen
* @since 2025-01-17
*/
@Service
public class TInvoiceServiceImpl extends ServiceImpl implements TInvoiceService {
@Autowired
TInvoiceToBillServiceImpl tInvoiceToBillService;
@Autowired
TBillService tBillService;
@Resource
TencentMailUtil mailUtil;
@Override
public PageInfo pageList(TInvoiceQuery query) {
PageInfo pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
List list = makeQuery(query);
pageInfo.setRecords(list);
pageInfo.setTotal(list.size());
return pageInfo;
}
@Override
public List makeQuery(TInvoiceQuery query) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(null != query.getTitleType(),TInvoice::getTitleType,query.getTitleType())
.like(StringUtils.isNotEmpty(query.getTitleName()),TInvoice::getTitleName,query.getTitleName())
.eq(null != query.getStatus(),TInvoice::getStatus,query.getStatus())
.ge(StringUtils.isNotEmpty(query.getInvoiceStartTime()),TInvoice::getInvoiceTime,query.getInvoiceStartTime())
.le(StringUtils.isNotEmpty(query.getInvoiceEndTime()),TInvoice::getInvoiceTime,query.getInvoiceEndTime())
.eq(StringUtils.isNotEmpty(query.getBusinessDeptId())&& ! "0".equals(query.getBusinessDeptId()),TInvoice::getBusinessDeptId,query.getBusinessDeptId())
.orderByDesc(TInvoice::getCreateTime);
return this.baseMapper.selectList(queryWrapper);
}
@Override
public Boolean uploadVoucher(TInvoiceQuery query, List