package com.jeeplus.finance.workClientInfo.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jeeplus.finance.projectRecords.service.dto.CwProjectClientContactDTO;
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientTemp;
import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientBaseDTO;
import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientBillingDTO;
import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientContactDTO;
import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientTempDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.List;

/**
 * @Entity com.jeeplus.test.cw.workClientInfo.domain.CwWorkClientBase
 */
@Mapper
//@InterceptorIgnore(tenantLine = "true")
public interface CwWorkClientBaseMapper extends BaseMapper<CwWorkClientBase> {
    public IPage<CwWorkClientBaseDTO> findList(Page<CwWorkClientBaseDTO> page, @Param(Constants.WRAPPER) QueryWrapper<CwWorkClientBase> queryWrapper);
    public CwWorkClientBaseDTO queryById(@Param("id") String id);

    public List<CwWorkClientTempDTO>  queryUpdateLogList (@Param(Constants.WRAPPER) QueryWrapper<CwWorkClientTemp> queryWrapper);


    /**
     * 根据合同id查询对应客户信息的联系人信息
     * @param page
     * @param cwWorkClientContactDTO
     * @return
     */
    public IPage<CwWorkClientContactDTO> getContractClientList(Page<CwWorkClientContactDTO> page, @Param("cwWorkClientContactDTO")CwWorkClientContactDTO cwWorkClientContactDTO);

    // 查询客户是否被引用（合同-委托方）
    List<String> isUseByClientContacts(@Param("idArray") String[] idArray);

    // 查询客户是否被引用（合同-参与签约方）
    List<String> isUseByContactParty(@Param("noList")List<String> noList);

    // 查询客户是否被引用（项目-被服务单位）
    List<String> isUseByProject(@Param("idArray") String[] idArray);

    // 查询客户是否被引用（报告-被服务单位）
    List<String> isUseByReport(@Param("idArray") String[] idArray);

    // 查询客户是否被引用（发票-实际开票单位）
    List<String> isUseByInvoice(@Param("idArray") String[] idArray);

    // 根据客户的id数组查询客户的no(编号)集合
    List<String> getNoByIdArray(@Param("idArray") String[] idArray);

    public IPage<CwWorkClientBaseDTO> getInfoList(Page<CwWorkClientBaseDTO> page, @Param(Constants.WRAPPER) QueryWrapper<CwWorkClientBase> queryWrapper);

    List<CwWorkClientBillingDTO> getBilling(@Param("id") String id);

    List<CwWorkClientBaseDTO> getList(@Param("clientList") ArrayList<String> clientList);

    List<CwWorkClientBaseDTO> getContractClient(@Param("contractName") String contractName);
    /**
     * 根据合同名称查询对应客户信息的联系人信息
     * @return
     */
     List<CwProjectClientContactDTO> getContractClientListByName(@Param("contactName")String contactName);

}




