liyong
2026-04-21 03ffc2598a261d1dc19e77b559268bb84032a389
src/main/java/com/ruoyi/sales/service/impl/SalesQuotationServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.approve.vo.ApproveProcessVO;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.framework.security.LoginUser;
@@ -28,6 +29,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import java.util.stream.Collectors;
@@ -42,12 +44,11 @@
    @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())){
        if (CollectionUtils.isEmpty(salesQuotationDtoIPage.getRecords())) {
            return salesQuotationDtoIPage;
        }
        salesQuotationDtoIPage.getRecords().forEach(record -> {
@@ -59,14 +60,14 @@
    @Override
    public boolean add(SalesQuotationDto salesQuotationDto) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
//        LoginUser loginUser = SecurityUtils.getLoginUser();
        SalesQuotation salesQuotation = new SalesQuotation();
        BeanUtils.copyProperties(salesQuotationDto, salesQuotation);
        String quotationNo = OrderUtils.countTodayByCreateTime(salesQuotationMapper, "QT");
        String quotationNo = OrderUtils.countTodayByCreateTime(salesQuotationMapper, "QT", "quotation_no");
        salesQuotation.setQuotationNo(quotationNo);
        salesQuotation.setStatus("待审批");
        salesQuotationMapper.insert(salesQuotation);
        if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){
        if (CollectionUtils.isEmpty(salesQuotationDto.getProducts())) {
            return true;
        }
        List<SalesQuotationProduct> products = salesQuotationDto.getProducts().stream().map(product -> {
@@ -75,38 +76,39 @@
            salesQuotationProduct.setSalesQuotationId(salesQuotation.getId());
            return salesQuotationProduct;
        }).collect(Collectors.toList());
        salesQuotationProductService.saveBatch(products);
        salesQuotationProductService.saveOrUpdateBatch(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("审批失败");
        }
//        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())){
        if ("拒绝".equals(salesQuotationDto.getStatus())) {
            vo.setApproveStatus(0);
            salesQuotation.setStatus("待审批");
        }
        if(salesQuotationMapper.updateById(salesQuotation)!=1){
        if (salesQuotationMapper.updateById(salesQuotation) != 1) {
            return false;
        }
        salesQuotationProductMapper.delete(new LambdaQueryWrapper<SalesQuotationProduct>().eq(SalesQuotationProduct::getSalesQuotationId, salesQuotationDto.getId()));
        if(CollectionUtils.isEmpty(salesQuotationDto.getProducts())){
        if (CollectionUtils.isEmpty(salesQuotationDto.getProducts())) {
            return true;
        }
        List<SalesQuotationProduct> products = salesQuotationDto.getProducts().stream().map(product -> {
@@ -117,13 +119,33 @@
        }).collect(Collectors.toList());
        salesQuotationProductService.saveBatch(products);
        // 修改报价审批
        vo.setApproveUserIds(salesQuotationDto.getApproveUserIds());
        vo.setApproveType(6);
        vo.setApproveReason(salesQuotationDto.getQuotationNo());
        approveProcessService.updateApproveUser(vo);
//        // 修改报价审批
//        vo.setApproveUserIds(salesQuotationDto.getApproveUserIds());
//        vo.setApproveType(6);
//        vo.setApproveReason(salesQuotationDto.getQuotationNo());
//        approveProcessService.updateApproveUser(vo);
        return true;
    }
    @Override
    public BigDecimal detail(String type, String productName, String specification) {
        if (StringUtils.isEmpty(type)) return null;
        SalesQuotationProduct salesQuotationProduct = salesQuotationProductMapper.selectOne(new LambdaQueryWrapper<SalesQuotationProduct>()
                .eq(SalesQuotationProduct::getProduct, productName)
                .eq(SalesQuotationProduct::getSpecification, specification)
                .orderByDesc(SalesQuotationProduct::getCreateTime)
                .last("limit 1"));
        if (salesQuotationProduct == null) return null;
        switch (type) {
            case "一批商":
                return salesQuotationProduct.getUnitPrice();
            case "终端商":
                return salesQuotationProduct.getUnitPriceTwo();
            default:
                return salesQuotationProduct.getUnitPriceThree();
        }
    }
    @Override
    public boolean delete(Long id) {
        salesQuotationMapper.deleteById(id);