package com.jeeplus.test.cw.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.jeeplus.test.cw.workClientInfo.domain.CwWorkClientBase;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jeeplus.test.cw.workClientInfo.domain.CwWorkClientTemp;
import com.jeeplus.test.cw.workClientInfo.service.dto.CwWorkClientBaseDTO;
import com.jeeplus.test.cw.workClientInfo.service.dto.CwWorkClientContactDTO;
import com.jeeplus.test.cw.workClientInfo.service.dto.CwWorkClientTempDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Entity com.jeeplus.test.cw.workClientInfo.domain.CwWorkClientBase
 */
@Mapper
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(String[] idArray);

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

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

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

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

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




