package com.ruoyi.ccdi.project.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedPurchaseQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedRecruitmentQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectExtendedTransferQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiProjectIncreaseLendingQueryDTO;
import com.ruoyi.ccdi.project.domain.excel.CcdiProjectIncreaseLendingExcel;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseListItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedPurchaseSupplierVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedRecruitmentListItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectExtendedTransferListItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityDetailVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyAssetLiabilityListItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectFamilyDebtItemVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiProjectIncreaseLendingListItemVO;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 项目专项核查Mapper
 */
@Mapper
public interface CcdiProjectSpecialCheckMapper {

    /**
     * 查询员工家庭资产负债列表
     *
     * @param projectId 项目ID
     * @return 列表数据
     */
    List<CcdiProjectFamilyAssetLiabilityListItemVO> selectFamilyAssetLiabilityList(@Param("projectId") Long projectId);

    /**
     * 查询员工家庭资产负债详情
     *
     * @param projectId 项目ID
     * @param staffIdCard 员工身份证号
     * @return 详情结果
     */
    CcdiProjectFamilyAssetLiabilityDetailVO selectFamilyAssetLiabilityDetail(
        @Param("projectId") Long projectId,
        @Param("staffIdCard") String staffIdCard
    );

    /**
     * 查询员工家庭资产明细
     *
     * @param projectId 项目ID
     * @param staffIdCard 员工身份证号
     * @param spouseIdCard 配偶身份证号
     * @return 资产明细
     */
    List<CcdiProjectFamilyAssetItemVO> selectFamilyAssetItemsByScope(
        @Param("projectId") Long projectId,
        @Param("staffIdCard") String staffIdCard,
        @Param("spouseIdCard") String spouseIdCard
    );

    /**
     * 查询员工家庭负债明细
     *
     * @param projectId 项目ID
     * @param staffIdCard 员工身份证号
     * @param spouseIdCard 配偶身份证号
     * @return 负债明细
     */
    List<CcdiProjectFamilyDebtItemVO> selectFamilyDebtItemsByScope(
        @Param("projectId") Long projectId,
        @Param("staffIdCard") String staffIdCard,
        @Param("spouseIdCard") String spouseIdCard
    );

    /**
     * 查询专项核查采购拓展列表
     *
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    Page<CcdiProjectExtendedPurchaseListItemVO> selectExtendedPurchasePage(
        @Param("page") Page<CcdiProjectExtendedPurchaseListItemVO> page,
        @Param("query") CcdiProjectExtendedPurchaseQueryDTO queryDTO
    );

    /**
     * 查询专项核查采购拓展详情
     *
     * @param projectId 项目ID
     * @param purchaseId 采购事项ID
     * @return 详情
     */
    CcdiProjectExtendedPurchaseDetailVO selectExtendedPurchaseDetail(
        @Param("projectId") Long projectId,
        @Param("purchaseId") String purchaseId
    );

    /**
     * 查询专项核查采购供应商明细
     *
     * @param projectId 项目ID
     * @param purchaseId 采购事项ID
     * @return 供应商明细
     */
    List<CcdiProjectExtendedPurchaseSupplierVO> selectExtendedPurchaseSuppliers(
        @Param("projectId") Long projectId,
        @Param("purchaseId") String purchaseId
    );

    /**
     * 查询专项核查招聘拓展列表
     *
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    Page<CcdiProjectExtendedRecruitmentListItemVO> selectExtendedRecruitmentPage(
        @Param("page") Page<CcdiProjectExtendedRecruitmentListItemVO> page,
        @Param("query") CcdiProjectExtendedRecruitmentQueryDTO queryDTO
    );

    /**
     * 查询专项核查招聘拓展详情
     *
     * @param projectId 项目ID
     * @param recruitId 招聘项目编号
     * @return 详情
     */
    CcdiProjectExtendedRecruitmentDetailVO selectExtendedRecruitmentDetail(
        @Param("projectId") Long projectId,
        @Param("recruitId") String recruitId
    );

    /**
     * 查询专项核查调动拓展列表
     *
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    Page<CcdiProjectExtendedTransferListItemVO> selectExtendedTransferPage(
        @Param("page") Page<CcdiProjectExtendedTransferListItemVO> page,
        @Param("query") CcdiProjectExtendedTransferQueryDTO queryDTO
    );

    /**
     * 查询项目新增贷款列表
     *
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    Page<CcdiProjectIncreaseLendingListItemVO> selectIncreaseLendingPage(
        @Param("page") Page<CcdiProjectIncreaseLendingListItemVO> page,
        @Param("query") CcdiProjectIncreaseLendingQueryDTO queryDTO
    );

    /**
     * 查询项目新增贷款导出列表
     *
     * @param queryDTO 查询条件
     * @return 导出列表
     */
    List<CcdiProjectIncreaseLendingExcel> selectIncreaseLendingExportList(
        @Param("query") CcdiProjectIncreaseLendingQueryDTO queryDTO
    );

    /**
     * 查询专项核查调动拓展详情
     *
     * @param projectId 项目ID
     * @param id 主键ID
     * @return 详情
     */
    CcdiProjectExtendedTransferDetailVO selectExtendedTransferDetail(
        @Param("projectId") Long projectId,
        @Param("id") Long id
    );
}
