package com.dsk.cscec.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.CbCheckProjectCodeExistBo;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectDetailBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
import com.dsk.cscec.domain.vo.CbProjectInfoVo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;

import java.util.List;

/**
 * 项目维表(DProject)表服务接口
 *
 * @author sxk
 * @since 2023-12-10 15:34:51
 */
public interface IDProjectService extends IService<DProject> {
    /**
     * 获取所有项目列表数据
     *
     * @param projectSearchBo 查询实体
     * @param pageQuery       分页对象
     * @return 所有数据
     */
    TableDataInfo<ProjectSearchVo> queryProjectList(ProjectSearchBo projectSearchBo, PageQuery pageQuery);

    /**
     * 获取项目承接类型下拉列表
     *
     * @return 去重后的项目承接类型
     */
    List<String> queryIsInvestProject();

    /**
     * 获取合作项目明细
     *
     * @param cooperateProjectDetailSearchBo 查询实体
     * @param pageQuery                      分页对象
     * @return 所有数据
     */
    TableDataInfo<CooperateProjectDetailSearchVo> queryCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery);

    /**
     * 根据项目主键查询项目详情
     *
     * @param projectDetailBo 查询实体
     * @return 项目详情
     */
    ProjectDetailVo queryProjectDetail(ProjectDetailBo projectDetailBo);

    /**
     * 校验项目编码是否存在
     *
     * @param checkBo 待校验信息
     * @return 校验结果
     */
    String checkProjectCodeExist(CbCheckProjectCodeExistBo checkBo);

    /**
     * 获取工程项目信息
     *
     * @param projectId 项目ID
     * @return 工程项目信息
     */
    CbProjectInfoVo getCbProjectInfo(Long projectId);

    /**
     * 根据项目名称模糊查询项目列表
     *
     * @param projectName 项目名称
     * @return 项目列表
     */
    List<DProject> queryProjectNameList(String projectName);
}

