package com.fastbee.project.service;

import com.fastbee.common.core.domain.entity.SysDept;
import com.fastbee.project.domain.Project;
import com.fastbee.project.domain.vo.ProjectLoginBaseInfo;
import com.fastbee.system.domain.SysDistrict;

import java.util.List;
import java.util.Map;

/**
 * 项目Service接口
 *
 * @author kerwincui
 * &#064;date  2024-09-26
 */
public interface IProjectService
{
    /**
     * 查询项目
     *
     * @param projectId 项目主键
     * @return 项目
     */
    Project selectProjectByProjectId(Long projectId);

    /**
     * 查询项目列表
     *
     * @param project 项目
     * @return 项目集合
     */
    List<Project> selectProjectList(Project project);

    /**
     * 新增项目
     *
     * @param project 项目
     * @return 结果
     */
    int insertProject(Project project);

    /**
     * 修改项目
     *
     * @param project 项目
     * @return 结果
     */
    int updateProject(Project project);

    /**
     * 删除项目
     *
     * @param projectId 需要删除的项目主键集合
     * @return 结果
     */
    int deleteProjectByProjectIds(Long projectId);



    /**
     * 获取管理员所管理的项目id以及子项目id列表
     */
    ProjectLoginBaseInfo selectProjectByUserId(Long userId);


    /**
     * 查询管理员可管理项目下拉框列表
     * @return 项目列表
     */
    List<Project> selectAdminProjectList();

    /**
     * 查询项目管理机构的当前管理的行政区划树状列表
     * @return 行政区域列表
     */
    List<SysDistrict> getProjectAreaTree(Long deptId,Integer startLevel,Integer isDeptHold);

    List<SysDistrict>  getProjectAreaTreeAll(Long deptId, Integer startLevel);

}
