package cn.iocoder.yudao.module.crm.dal.mysql.quotation; import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; import cn.iocoder.yudao.module.crm.controller.admin.quotation.vo.CrmSaleQuotationPageReqVO; import cn.iocoder.yudao.module.crm.dal.dataobject.quotation.CrmSaleQuotationDO; import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; import cn.iocoder.yudao.module.crm.enums.quotation.CrmSaleQuotationStatusEnum; import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * CRM 销售报价单 Mapper * * @author 芋道源码 */ @Mapper public interface CrmSaleQuotationMapper extends BaseMapperX { default CrmSaleQuotationDO selectByNo(String no) { return selectOne(CrmSaleQuotationDO::getNo, no); } default PageResult selectPage(CrmSaleQuotationPageReqVO pageReqVO, Long userId) { return selectPage(pageReqVO, userId, null); } /** * 分页查询(带客户权限过滤) * * @param pageReqVO 查询条件 * @param userId 用户ID * @param permittedCustomerIds 有权限的客户ID列表(null表示不限制) */ default PageResult selectPage(CrmSaleQuotationPageReqVO pageReqVO, Long userId, List permittedCustomerIds) { MPJLambdaWrapperX query = new MPJLambdaWrapperX<>(); // 拼接数据权限的查询条件 CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_SALE_QUOTATION.getType(), CrmSaleQuotationDO::getId, userId, pageReqVO.getSceneType()); // 拼接自身的查询条件 query.selectAll(CrmSaleQuotationDO.class) .likeIfPresent(CrmSaleQuotationDO::getNo, pageReqVO.getNo()) .likeIfPresent(CrmSaleQuotationDO::getName, pageReqVO.getName()) .eqIfPresent(CrmSaleQuotationDO::getCustomerId, pageReqVO.getCustomerId()) .eqIfPresent(CrmSaleQuotationDO::getBusinessId, pageReqVO.getBusinessId()) .eqIfPresent(CrmSaleQuotationDO::getStatus, pageReqVO.getStatus()) .orderByDesc(CrmSaleQuotationDO::getId); // 客户权限过滤 if (permittedCustomerIds != null) { if (CollUtil.isEmpty(permittedCustomerIds)) { return PageResult.empty(); } query.in(CrmSaleQuotationDO::getCustomerId, permittedCustomerIds); } return selectJoinPage(pageReqVO, CrmSaleQuotationDO.class, query); } default PageResult selectPageByCustomerId(CrmSaleQuotationPageReqVO pageReqVO) { return selectPage(pageReqVO, new LambdaQueryWrapperX() .eq(CrmSaleQuotationDO::getCustomerId, pageReqVO.getCustomerId()) .likeIfPresent(CrmSaleQuotationDO::getNo, pageReqVO.getNo()) .likeIfPresent(CrmSaleQuotationDO::getName, pageReqVO.getName()) .orderByDesc(CrmSaleQuotationDO::getId)); } default PageResult selectPageByBusinessId(CrmSaleQuotationPageReqVO pageReqVO) { return selectPage(pageReqVO, new LambdaQueryWrapperX() .eq(CrmSaleQuotationDO::getBusinessId, pageReqVO.getBusinessId()) .likeIfPresent(CrmSaleQuotationDO::getNo, pageReqVO.getNo()) .likeIfPresent(CrmSaleQuotationDO::getName, pageReqVO.getName()) .orderByDesc(CrmSaleQuotationDO::getId)); } default List selectListByCustomerId(Long customerId) { return selectList(CrmSaleQuotationDO::getCustomerId, customerId); } default List selectListByBusinessId(Long businessId) { return selectList(CrmSaleQuotationDO::getBusinessId, businessId); } default Long selectCountByBusinessId(Long businessId) { return selectCount(CrmSaleQuotationDO::getBusinessId, businessId); } default Long selectCountByCustomerId(Long customerId) { return selectCount(CrmSaleQuotationDO::getCustomerId, customerId); } }