package com.sptg.estate.biz.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.sptg.common.core.beans.ResultBean;
import com.sptg.estate.api.dto.ProjectDto;
import com.sptg.estate.api.entity.Project;

import java.util.List;

/**
 * title: ProjectServiceImpl
 * package: com.sptg.estate.biz.security
 * description: 实施项目-服务层接口
 *
 *               
 *                     
 */
public interface ProjectServiceInterface extends IService<Project> {

    /**
     * 功能描述: 分页查询
     * @param projectDto
     * @return ResultBean<Page<Project>>
     *               
     *                      
     */
    ResultBean<Page<Project>> showList(ProjectDto projectDto);

    /**
     * 功能描述: 分页查询--小程序
     * @param projectDto
     * @return ResultBean<Page<Project>>
     *               
     *                      
     */
    ResultBean<Page<Project>> showListInstallation(ProjectDto projectDto);

    /**
     * 功能描述: 分页查询--小程序
     * @param projectDto
     * @return ResultBean<Page<Project>>
     *               
     *                      
     */
    ResultBean<Page<Project>> showListTest(ProjectDto projectDto);
    /**
     * 功能描述: 根据小区id获取项目信息
     * @param residentialId 小区id
     * @return ResultBean<Page<Project>>
     *               
     *                      
     */
    ResultBean<Project> findByResidentialId(Long residentialId);
    /**
     * 功能描述:检测小区关联的小区项目数量，一个小区只能创建一个项目
     * @param residentialId 小区id
     * @return  ResultBean<Boolean>
     *               
     *                      
     */
    ResultBean<Boolean> countByResidentialId(Long residentialId);

    /**
     * 功能描述:根据位置查询所属项目
     * @param projectDto{
     *         orgPosition : 位置 必填
     * }
     * @return ResultBean<Project>
     *             
     *                      
     */
    ResultBean<Project> findListByPosition(ProjectDto projectDto);
    /**
     * 功能描述:根据位置统计项目数量
     * @param orgPosition
     * @return ResultBean<Project>
     *               
     *                      
     */
    ResultBean<Integer> countByOrgPosition(String orgPosition);
    /**
     * 功能描述:添加项目信息--小程序端专用
     * @param dto
     * @return ResultBean<Project>
     *               
     *                      
     */
    ResultBean<Boolean> insertProjectAndContract(ProjectDto dto);
    /**
     * 功能描述:根基id集合查询数据
     * @param idList
     * @return ResultBean<Project>
     *               
     *                      
     */
    List<Project> findListByXqIds(List<Long> idList);
}
