package com.ruoyi.ibs.customerselect.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.ibs.customerselect.domain.CustBaseInfo;
import com.ruoyi.ibs.customerselect.domain.CustInfoDeleteFromAnchor;
import com.ruoyi.ibs.customerselect.domain.CustInfoUpdateFromAnchor;
import com.ruoyi.ibs.customerselect.domain.ListSelectForUser;
import com.ruoyi.ibs.grid.domain.dto.CustManageInfo;
import com.ruoyi.ibs.list.domain.CustInfoBusiness;
import com.ruoyi.ibs.list.domain.SysGroupCustomer;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 客户基本信息Mapper接口
 * 
 * @author ruoyi
 * @date 2024-09-11
 */
public interface CustInfoBusinessMapper extends BaseMapper<CustInfoBusiness>
{
    /**
     * 查询企业客户基本信息列表
     * 
     * @param sysCustomerBasedata 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustInfoBusiness> selectCustInfoBusinessList(CustBaseInfo sysCustomerBasedata);

    public List<CustInfoBusiness> selectCustInfoBusinessListHead(CustBaseInfo sysCustomerBasedata);

    public List<CustInfoBusiness> selectCustInfoBusinessListOps(CustBaseInfo sysCustomerBasedata);

    /**
     * 使用行政区划查询客户数量
     *
     * @param gridId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long selectBusinessNumByAdmin(@Param("gridId")Long gridId, @Param("userDept")Long userDept);


    /**
     * 使用机构id查询客户数量
     *
     * @param headDeptId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long getBusinessNumByDeptId(Long headDeptId);

    /**
     * 使用经理id查询客户数量
     *
     * @param UserId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long getBusinessNumByUserId(String UserId);


    /**
     * 使用行政区划查询未分配客户信息列表
     *
     * @param custManageInfo 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustInfoBusiness> selectCustInfoBusinessByAdminList(CustManageInfo custManageInfo);

    /**
     * 使用行政区划查询未分配客户信息列表
     *
     * @param custManageInfo 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustInfoBusiness> selectunDisCustByAdminList(CustManageInfo custManageInfo);

    /**
     * 使用虚拟网格查询未分配客户信息列表
     *
     * @param custManageInfo 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustInfoBusiness> selectCustInfoBusinessByVirtualList(CustManageInfo custManageInfo);

    /**
     * 使用虚拟网格查询未分配客户信息列表
     *
     * @param custManageInfo 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustInfoBusiness> selectunDisCustByVirtualList(CustManageInfo custManageInfo);

    /**
     * 查询企业客户基本信息
     *
     * @param id 企业客户基本信息主键
     * @return 企业客户基本信息
     */
    public CustInfoBusiness selectCustInfoBusinessById(Long id);

    /**
     * 查询企业客户基本信息列表
     *
     * @param custInfoBusiness 企业客户基本信息
     * @return 企业客户基本信息集合
     */
    public List<CustInfoBusiness> selectCustInfoBusinessListBykeyword(@Param("keyword") String keyword);

    /**
     * 查询企业客户基本信息列表
     *
     * @param custInfoBusiness 企业客户基本信息
     * @return 企业客户基本信息集合
     */
    public List<CustInfoBusiness> selectCustInfoBusinessListBykeywordBranchAndManager(@Param("keyword") String keyword,@Param("deptId")Long deptId,@Param("outletsId")Long outletsId,@Param("userId")Long userId,@Param("opsDept") String opsDept);

    /**
     * 新增企业客户基本信息
     *
     * @param custInfoBusiness 企业客户基本信息
     * @return 结果
     */
    public int insertCustInfoBusiness(CustInfoBusiness custInfoBusiness);

    /**
     * 修改企业客户基本信息
     *
     * @param custInfoBusiness 企业客户基本信息
     * @return 结果
     */
    public int updateCustInfoBusiness(CustInfoBusiness custInfoBusiness);

    public int updateCustInfoBusinessLabel(CustInfoBusiness custInfoBusiness);

    /**
     * 删除企业客户基本信息
     *
     * @param id 企业客户基本信息主键
     * @return 结果
     */
    public int deleteCustInfoBusinessById(Long id);

    /**
     * 批量删除企业客户基本信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCustInfoBusinessByIds(Long[] ids);

    /**
     * 查询企业客户基本信息
     *
     * @param custId 企业客户基本信息主键
     * @return 企业客户基本信息
     */
    public CustInfoBusiness selectCustInfoBusinessByCustId(String custId);

    /**
     * 根据统信码查询企业客户基本信息
     * @param socialCreditCode
     * @return
     */
    public CustInfoBusiness selectCustInfoBusinessBySocialCreditCode(String socialCreditCode);

    public List<CustInfoBusiness>  selectCustInfoBusinessLists(CustInfoBusiness custInfoBusiness);

    /**
     * 使用证件号查询客户数量
     *
     * @param LegalId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public Long getBusinessNumByLegalId(String LegalId);

    /**
     * 锚点更新客户信息
     *
     * @param custInfoUpdateFromAnchor 管户信息
     * @return 结果
     */
    public int updateBusinessByAnchor(CustInfoUpdateFromAnchor custInfoUpdateFromAnchor);

    /**
     * 锚点新增客户信息
     *
     * @param custInfoUpdateFromAnchor 客户信息
     * @return 结果
     */
    public int insertBusinessByAnchor(CustInfoUpdateFromAnchor custInfoUpdateFromAnchor);

    /**
     * 锚点删除客户信息
     *
     * @param custInfoDeleteFromAnchor 客户信息
     * @return 结果
     */
    public int deleteBusinessByAnchor(CustInfoDeleteFromAnchor custInfoDeleteFromAnchor);

    /**
     * 获取客群客户经营者名称
     *
     * @param listSelectForUser 清单名称或者活动名称关键词
     * @return 客户经理
     */
    public String getLpNameByCustId(ListSelectForUser listSelectForUser);

    /**
     * 使用客户号查询客户证件号
     *
     * @param custId 企业客户基本信息
     * @return 客户基本信息集合
     */
    public String getBusiIdcByCustId(String custId);

    /**
     * 使用查询行政网格客户信息列表
     *
     * @param custManageInfo 企业客户基本信息
     * @return 客户基本信息集合
     */
    public List<CustManageInfo> selectBusinessInfoByManage(CustManageInfo custManageInfo);

    /**
     * 查询企业客户基本信息
     *
     * @param id 企业客户基本信息主键
     * @return 企业客户基本信息
     */
    public CustInfoBusiness selectCustInfoBusinessByCustNameAndCustIdc(@Param("custName") String custName,@Param("custIdc") String custIdc);

    /**
     * 查询企业客户基本信息
     *
     * @param custId
     * @return 企业客户基本信息
     */
    public CustInfoBusiness selectCustInfoBusinessCustId(@Param("custId") String custId);

    Long countByCode(@Param("code") String code, @Param("deptCode") String deptCode);

    public int insertCustomersToBusinessByScCode(List<SysGroupCustomer> sysGroupCustomers);

    List<CustInfoBusiness> selectRecord(String socialCreditCode);
}
