package com.dsk.biz.service;

import com.dsk.biz.domain.BusinessInfo;
import com.dsk.biz.domain.bo.BusinessAddDto;
import com.dsk.biz.domain.bo.BusinessListDto;
import com.dsk.biz.domain.bo.CustomerBusinessSearchDto;
import com.dsk.biz.domain.vo.BusinessBrowseVo;
import com.dsk.biz.domain.vo.BusinessLikeProjectNameListVo;
import com.dsk.biz.domain.vo.BusinessListVo;
import com.dsk.biz.domain.vo.CustomerBusinessListVo;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 项目详情Service接口
 *
 * @date 2023-05-17
 */
public interface IBusinessInfoService
{
    /**
     * 查询项目详情
     *
     * @param id 项目详情主键
     * @return 项目详情
     */
    public BusinessInfo selectBusinessInfoById(Integer id);

    /**
     * 查询项目建设内容
     *
     * @param id 项目详情主键
     * @return
     */
    BusinessInfo getConstruction(Integer id);

    /**
     * 查询项目详情列表
     *
     * @param dto 项目详情
     * @return 项目详情集合
     */
    public TableDataInfo<BusinessListVo> selectBusinessInfoList(BusinessListDto dto, PageQuery pageQuery);

    /**
     * 查询项目速览
     * @param businessId
     * @return
     */
    BusinessBrowseVo browse(Integer businessId);

    /**
     * 查询所有项目名称(支持模糊查询)
     * @return
     */
    List<BusinessLikeProjectNameListVo> selectProjectName(BusinessListDto dto,PageQuery pageQuery);

    /**
     * 项目批量导入
     */
    AjaxResult batchUpload(MultipartFile file);

    /**
     * 新增项目详情
     *
     * @param dto 项目详情
     * @return 结果
     */
    public boolean insertBusinessInfo(BusinessAddDto dto);

    /**
     * 修改项目详情
     *
     * @param businessInfo 项目详情
     * @return 结果
     */
    public int updateBusinessInfo(BusinessInfo businessInfo);

    /**
     * 批量删除项目详情
     *
     * @param ids 需要删除的项目详情主键集合
     * @return 结果
     */
    public int deleteBusinessInfoByIds(Long[] ids);

    /**
     * 删除项目详情信息
     *
     * @param id 项目详情主键
     * @return 结果
     */
    public int deleteBusinessInfoById(Long id);

    int selectCountByStatusAndCustomerId(Integer status,String customerId);

    TableDataInfo<CustomerBusinessListVo> selectCustomerBusinessList(CustomerBusinessSearchDto dto, PageQuery pageQuery);

}
