package com.ruoyi.sales.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.sales.dto.InvoiceRegistrationDto;
|
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
|
import com.ruoyi.sales.dto.SalesLedgerDto;
|
import com.ruoyi.sales.excel.InvoiceRegisAndProductExcelDto;
|
import com.ruoyi.sales.mapper.InvoiceRegistrationMapper;
|
import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
|
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
|
import com.ruoyi.sales.pojo.InvoiceRegistration;
|
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
|
import com.ruoyi.sales.pojo.SalesLedgerProduct;
|
import com.ruoyi.sales.service.InvoiceRegistrationService;
|
import org.apache.commons.collections4.CollectionUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.ObjectUtils;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
public class InvoiceRegistrationServiceImpl extends ServiceImpl<InvoiceRegistrationMapper, InvoiceRegistration> implements InvoiceRegistrationService {
|
|
@Autowired
|
private InvoiceRegistrationMapper invoiceRegistrationMapper;
|
|
@Autowired
|
private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
|
|
@Autowired
|
private SalesLedgerProductMapper salesLedgerProductMapper;
|
|
/**
|
* 开票登记记录新增
|
* @param salesLedgerDto
|
* @return
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void invoiceRegistrationSave(SalesLedgerDto salesLedgerDto) {
|
InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
|
BeanUtils.copyProperties(salesLedgerDto, invoiceRegistration);
|
invoiceRegistration.setId(null);
|
invoiceRegistration.setCustomerId(salesLedgerDto.getCustomerId().intValue());
|
invoiceRegistration.setSalesLedgerId(salesLedgerDto.getId().intValue());
|
invoiceRegistrationMapper.insert(invoiceRegistration);
|
List<SalesLedgerProduct> productData = salesLedgerDto.getProductData();
|
if(CollectionUtils.isNotEmpty(productData)){
|
for (SalesLedgerProduct productDatum : productData) {
|
// 如果开票数为0 跳过
|
Integer currentInvoiceNum = productDatum.getCurrentInvoiceNum();
|
if(null == currentInvoiceNum || currentInvoiceNum == 0){
|
continue;
|
}
|
InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
|
BeanUtils.copyProperties(productDatum, invoiceRegistrationProduct);
|
invoiceRegistrationProduct.setId(null);
|
invoiceRegistrationProduct.setSalesLedgerId(salesLedgerDto.getId().intValue());
|
invoiceRegistrationProduct.setInvoiceRegistrationId(invoiceRegistration.getId());
|
invoiceRegistrationProduct.setInvoiceAmount(productDatum.getCurrentInvoiceAmount());
|
invoiceRegistrationProduct.setInvoiceNum(productDatum.getCurrentInvoiceNum());
|
invoiceRegistrationProduct.setSalesLedgerProductId(productDatum.getId().intValue());
|
invoiceRegistrationProductMapper.insert(invoiceRegistrationProduct);
|
salesLedgerProductMapper.updateById(productDatum);
|
}
|
}
|
}
|
|
/**
|
* 开票登记删除
|
* @param ids
|
* @return
|
*/
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int invoiceRegistrationDel(List<Integer> ids) {
|
int excuteNum = invoiceRegistrationMapper.deleteBatchIds(ids);
|
LambdaQueryWrapper<InvoiceRegistrationProduct> delWrapper = new LambdaQueryWrapper<>();
|
delWrapper.in(InvoiceRegistrationProduct::getInvoiceRegistrationId, ids);
|
invoiceRegistrationProductMapper.delete(delWrapper);
|
return excuteNum;
|
}
|
|
/**
|
* 开票记录修改
|
* @param invoiceRegistrationDto
|
* @return
|
*/
|
@Override
|
public void invoiceRegistrationUpdate(InvoiceRegistrationDto invoiceRegistrationDto) {
|
InvoiceRegistration invoiceRegistration = new InvoiceRegistration();
|
BeanUtils.copyProperties(invoiceRegistrationDto, invoiceRegistration);
|
// 开票登记修改
|
invoiceRegistrationMapper.updateById(invoiceRegistration);
|
List<InvoiceRegistrationProductDto> productDtoList = invoiceRegistrationDto.getProductDtoList();
|
// 开票产品登记修改
|
if(CollectionUtils.isNotEmpty(productDtoList)){
|
for (InvoiceRegistrationProductDto invoiceRegistrationProductDto : productDtoList) {
|
InvoiceRegistrationProduct invoiceRegistrationProduct = new InvoiceRegistrationProduct();
|
BeanUtils.copyProperties(invoiceRegistrationProductDto, invoiceRegistrationProduct);
|
invoiceRegistrationProductMapper.updateById(invoiceRegistrationProduct);
|
}
|
}
|
}
|
|
/**
|
* 开票登记分页查询
|
* @param page
|
* @param invoiceRegistrationDto
|
* @return
|
*/
|
@Override
|
public IPage<InvoiceRegistrationDto> invoiceRegistrationListPage(Page page, InvoiceRegistrationDto invoiceRegistrationDto) {
|
return invoiceRegistrationMapper.invoiceRegistrationListPage(page, invoiceRegistrationDto);
|
}
|
|
/**
|
* 开票登记产品查询
|
* @param invoiceRegistrationProductDto
|
* @return
|
*/
|
@Override
|
public List<InvoiceRegistrationProductDto> invoiceRegistrationProductList(InvoiceRegistrationProductDto invoiceRegistrationProductDto) {
|
return invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto);
|
}
|
|
/**
|
* 开票登记详情
|
* @param id
|
* @return
|
*/
|
@Override
|
public InvoiceRegistrationDto invoiceRegistrationDetail(Integer id) {
|
InvoiceRegistration invoiceRegistration = invoiceRegistrationMapper.selectById(id);
|
if(ObjectUtils.isEmpty(invoiceRegistration)){
|
throw new RuntimeException("开票登记信息查找失败");
|
}
|
InvoiceRegistrationDto invoiceRegistrationDto = new InvoiceRegistrationDto();
|
BeanUtils.copyProperties(invoiceRegistration, invoiceRegistrationDto);
|
QueryWrapper<InvoiceRegistrationProduct> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("invoice_registration_id", id);
|
List<InvoiceRegistrationProduct> invoiceRegistrationProductList = invoiceRegistrationProductMapper.selectList(queryWrapper);
|
List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductList.stream().map(item -> {
|
InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto();
|
BeanUtils.copyProperties(item, invoiceRegistrationProductDto);
|
return invoiceRegistrationProductDto;
|
}).collect(Collectors.toList());
|
invoiceRegistrationDto.setProductDtoList(invoiceRegistrationProductDtoList);
|
return invoiceRegistrationDto;
|
}
|
|
/**
|
* 开票登记导出
|
* @param response
|
* @param invoiceRegistrationDto
|
*/
|
@Override
|
public void invoiceRegistrationExport(HttpServletResponse response, InvoiceRegistrationDto invoiceRegistrationDto) {
|
List<InvoiceRegisAndProductExcelDto> invoiceRegisAndProductExcelDtoList = invoiceRegistrationMapper.invoiceRegisAndProductExcelDtoList();
|
ExcelUtil<InvoiceRegisAndProductExcelDto> util = new ExcelUtil<InvoiceRegisAndProductExcelDto>(InvoiceRegisAndProductExcelDto.class);
|
util.exportExcel(response, invoiceRegisAndProductExcelDtoList, "开票登记信息");
|
}
|
}
|