package com.securitycontrol.background.mapper;

import com.securitycontrol.entity.background.dto.ParamDto;
import com.securitycontrol.entity.background.vo.ProjectVo;
import com.securitycontrol.entity.background.vo.SignProVo;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author：cwchen
 * @date：2024-04-01-19:26
 * @version：1.0
 * @description：项目工程/单项工程-数据库访问层
 */
@Repository(value = "ISignProMapper")
public interface ISignProMapper {


    /**
     * 获取项目列表
     *
     * @param dto
     * @return List<ProjectVo>
     * @description
     * @author cwchen
     * @date 2024/4/1 20:02
     */
    List<ProjectVo> getProLists(ParamDto dto);

    /**
     * 项目工程是否存在
     *
     * @param vo
     * @param type
     * @return int
     * @description
     * @author cwchen
     * @date 2024/4/2 10:24
     */
    int isProject(ProjectVo vo);

    /**
     * 新增/修改 项目
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/4/2 10:36
     */
    void addOrUpdateProject(ProjectVo vo);

    /**
     * 项目详情
     *
     * @param dto
     * @return ProjectVo
     * @description
     * @author cwchen
     * @date 2024/4/2 10:48
     */
    ProjectVo getProjectById(ParamDto dto);

    /**
     * 项目包含是否单项工程
     *
     * @param dto
     * @return int
     * @description
     * @author cwchen
     * @date 2024/4/2 10:53
     */
    int isHasChildPro(ParamDto dto);

    /**
     * 删除项目
     *
     * @param dto
     * @description
     * @author cwchen
     * @date 2024/4/2 10:53
     */
    void delProjectById(ParamDto dto);

    /**
     * 单项工程列表
     *
     * @param dto
     * @return List<SignProVo>
     * @description
     * @author cwchen
     * @date 2024/4/2 13:18
     */
    List<SignProVo> getSignProLists(ParamDto dto);

    /**
     * 单项工程是否存在
     *
     * @param vo
     * @return int
     * @description
     * @author cwchen
     * @date 2024/4/2 13:36
     */
    int isSignPro(SignProVo vo);

    /**
     * 新增/修改 单项工程
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/4/2 13:36
     */
    void addOrUpdateSignProject(SignProVo vo);

    /**
     * 单项工程详情
     *
     * @param dto
     * @return SignProVo
     * @description
     * @author cwchen
     * @date 2024/4/2 13:49
     */
    SignProVo getSignProById(ParamDto dto);

    /**
     * 单项工程是否包含标段工程
     *
     * @param dto
     * @return int
     * @description
     * @author cwchen
     * @date 2024/4/2 13:49
     */
    int isHasBidChildPro(ParamDto dto);

    /**
     * 删除单项工程
     * @param dto
     * @description
     * @author cwchen
     * @date 2024/4/2 13:49
     */
    void delSignProById(ParamDto dto);
}
