package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.sales.dto.SalesQuotationDto; import com.ruoyi.sales.mapper.SalesQuotationMapper; import com.ruoyi.sales.mapper.SalesQuotationProductMapper; import com.ruoyi.sales.pojo.SalesQuotation; import com.ruoyi.sales.pojo.SalesQuotationProduct; import com.ruoyi.sales.service.SalesQuotationProductService; import com.ruoyi.sales.service.SalesQuotationService; import org.springframework.beans.factory.annotation.Autowired; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @Service @Transactional(rollbackFor = Exception.class) public class SalesQuotationServiceImpl extends ServiceImpl implements SalesQuotationService { @Autowired private SalesQuotationMapper salesQuotationMapper; @Autowired private SalesQuotationProductMapper salesQuotationProductMapper; @Autowired private SalesQuotationProductService salesQuotationProductService; @Override public IPage listPage(Page page, SalesQuotationDto salesQuotationDto) { IPage salesQuotationDtoIPage = salesQuotationMapper.listPage(page, salesQuotationDto); if(CollectionUtils.isEmpty(salesQuotationDtoIPage.getRecords())){ return salesQuotationDtoIPage; } salesQuotationDtoIPage.getRecords().forEach(record -> { List products = salesQuotationProductMapper.selectBySalesQuotationId(record.getId()); record.setProducts(products); }); return salesQuotationDtoIPage; } @Override public boolean add(SalesQuotationDto salesQuotationDto) { SalesQuotation salesQuotation = new SalesQuotation(); BeanUtils.copyProperties(salesQuotationDto, salesQuotation); String quotationNo = salesQuotation.getQuotationNo(); salesQuotationMapper.insert(salesQuotation); // if(salesQuotationMapper.insert(salesQuotation)!=1){ // return false; // } if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){ return true; } List products = salesQuotationDto.getProducts().stream().map(product -> { SalesQuotationProduct salesQuotationProduct = new SalesQuotationProduct(); BeanUtils.copyProperties(product, salesQuotationProduct); salesQuotationProduct.setSalesQuotationId(salesQuotationMapper.selectOne(new LambdaQueryWrapper().eq(SalesQuotation::getQuotationNo, quotationNo)).getId()); return salesQuotationProduct; }).collect(Collectors.toList()); salesQuotationProductService.saveBatch(products); return true; } @Override public boolean edit(SalesQuotationDto salesQuotationDto) { SalesQuotation salesQuotation = new SalesQuotation(); BeanUtils.copyProperties(salesQuotationDto, salesQuotation); if(salesQuotationMapper.updateById(salesQuotation)!=1){ return false; } salesQuotationProductMapper.delete(new LambdaQueryWrapper().eq(SalesQuotationProduct::getSalesQuotationId, salesQuotationDto.getId())); if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){ return true; } List products = salesQuotationDto.getProducts().stream().map(product -> { SalesQuotationProduct salesQuotationProduct = new SalesQuotationProduct(); BeanUtils.copyProperties(product, salesQuotationProduct); salesQuotationProduct.setSalesQuotationId(salesQuotation.getId()); return salesQuotationProduct; }).collect(Collectors.toList()); salesQuotationProductService.saveBatch(products); return true; } @Override public boolean delete(Long id) { salesQuotationMapper.deleteById(id); salesQuotationProductMapper.delete(new LambdaQueryWrapper().eq(SalesQuotationProduct::getSalesQuotationId, id)); return true; } }