| | |
| | | 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; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDate; |
| | | import java.util.Collections; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | @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 -> { |
| | |
| | | |
| | | @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","quotationNo"); |
| | | 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 -> { |
| | |
| | | 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.getCurrentDeptId()); |
| | | 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 -> { |
| | |
| | | }).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) { |
| | | SalesQuotation salesQuotation = salesQuotationMapper.selectById(id); |
| | | if(salesQuotation==null) return false; |
| | | salesQuotationMapper.deleteById(id); |
| | | salesQuotationProductMapper.delete(new LambdaQueryWrapper<SalesQuotationProduct>().eq(SalesQuotationProduct::getSalesQuotationId, id)); |
| | | // 删除报价审批 |
| | | ApproveProcess one = approveProcessService.getOne(new LambdaQueryWrapper<ApproveProcess>() |
| | | .eq(ApproveProcess::getApproveType, 6) |
| | | .eq(ApproveProcess::getApproveReason, salesQuotation.getQuotationNo())); |
| | | if(one != null){ |
| | | approveProcessService.delByIds(Collections.singletonList(one.getId())); |
| | | } |
| | | return true; |
| | | } |
| | | |