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.approve.pojo.ApproveProcess;
|
import com.ruoyi.approve.service.IApproveProcessService;
|
import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
|
import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
|
import com.ruoyi.approve.vo.ApproveProcessVO;
|
import com.ruoyi.common.utils.OrderUtils;
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.common.utils.bean.BeanUtils;
|
import com.ruoyi.common.utils.uuid.UUID;
|
import com.ruoyi.framework.security.LoginUser;
|
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.time.LocalDate;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Service
|
@Transactional(rollbackFor = Exception.class)
|
public class SalesQuotationServiceImpl extends ServiceImpl<SalesQuotationMapper, SalesQuotation> implements SalesQuotationService {
|
@Autowired
|
private SalesQuotationMapper salesQuotationMapper;
|
@Autowired
|
private SalesQuotationProductMapper salesQuotationProductMapper;
|
@Autowired
|
private SalesQuotationProductService salesQuotationProductService;
|
|
@Autowired
|
private ApproveProcessServiceImpl approveProcessService;
|
@Override
|
public IPage<SalesQuotationDto> listPage(Page page, SalesQuotationDto salesQuotationDto) {
|
IPage<SalesQuotationDto> salesQuotationDtoIPage = salesQuotationMapper.listPage(page, salesQuotationDto);
|
if(CollectionUtils.isEmpty(salesQuotationDtoIPage.getRecords())){
|
return salesQuotationDtoIPage;
|
}
|
salesQuotationDtoIPage.getRecords().forEach(record -> {
|
List<SalesQuotationProduct> products = salesQuotationProductMapper.selectBySalesQuotationId(record.getId());
|
record.setProducts(products);
|
});
|
return salesQuotationDtoIPage;
|
}
|
|
@Override
|
public boolean add(SalesQuotationDto salesQuotationDto) {
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
SalesQuotation salesQuotation = new SalesQuotation();
|
BeanUtils.copyProperties(salesQuotationDto, salesQuotation);
|
String quotationNo = OrderUtils.countTodayByCreateTime(salesQuotationMapper, "QT");
|
salesQuotation.setQuotationNo(quotationNo);
|
salesQuotation.setStatus("待审批");
|
salesQuotationMapper.insert(salesQuotation);
|
if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){
|
return true;
|
}
|
List<SalesQuotationProduct> 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);
|
// 报价审批
|
ApproveProcessVO approveProcessVO = new ApproveProcessVO();
|
approveProcessVO.setApproveType(6);
|
approveProcessVO.setApproveDeptId(loginUser.getTenantId());
|
approveProcessVO.setApproveReason(quotationNo);
|
approveProcessVO.setApproveUserIds(salesQuotationDto.getApproveUserIds());
|
approveProcessVO.setApproveUser(loginUser.getUserId());
|
approveProcessVO.setApproveTime(LocalDate.now().toString());
|
approveProcessVO.setPrice(salesQuotationDto.getTotalAmount());
|
try {
|
approveProcessService.addApprove(approveProcessVO);
|
}catch (Exception e){
|
log.error("SalesQuotationServiceImpl error:{}", e);
|
throw new RuntimeException("审批失败");
|
}
|
return true;
|
}
|
@Override
|
public boolean edit(SalesQuotationDto salesQuotationDto) {
|
SalesQuotation salesQuotation = new SalesQuotation();
|
BeanUtils.copyProperties(salesQuotationDto, salesQuotation);
|
ApproveGetAndUpdateVo vo = new ApproveGetAndUpdateVo();
|
if("拒绝".equals(salesQuotationDto.getStatus())){
|
vo.setApproveStatus(0);
|
salesQuotation.setStatus("待审批");
|
}
|
if(salesQuotationMapper.updateById(salesQuotation)!=1){
|
return false;
|
}
|
salesQuotationProductMapper.delete(new LambdaQueryWrapper<SalesQuotationProduct>().eq(SalesQuotationProduct::getSalesQuotationId, salesQuotationDto.getId()));
|
if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){
|
return true;
|
}
|
List<SalesQuotationProduct> 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);
|
// 修改报价审批
|
vo.setApproveUserIds(salesQuotationDto.getApproveUserIds());
|
vo.setApproveType(6);
|
vo.setApproveReason(salesQuotationDto.getQuotationNo());
|
approveProcessService.updateApproveUser(vo);
|
return true;
|
}
|
@Override
|
public boolean delete(Long id) {
|
salesQuotationMapper.deleteById(id);
|
salesQuotationProductMapper.delete(new LambdaQueryWrapper<SalesQuotationProduct>().eq(SalesQuotationProduct::getSalesQuotationId, id));
|
return true;
|
}
|
|
|
}
|