package org.springblade.modules.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.servlet.http.HttpServletResponse;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.modules.project.pojo.dto.*;
import org.springblade.modules.project.pojo.entity.ProjectInfo;
import org.springblade.modules.project.pojo.vo.*;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @Param
 * @Author wangwl
 * @Date 2024/4/8 11:59
 **/
public interface IProjectInfoService extends BaseService<ProjectInfo> {
    Long add(ProjectInfoDTO dto);

    PageVO<ProjectInfoVO> page2(ProjectInfoPageDTO dto);

    ProjectInfoDetailVO detail(Long id);

    void update2(ProjectInfoDetailVO dto);

    ProjectAndPlanDetailVO detail2(Long id);

    void updateFinished(ProjectAndPlanDetailVO vo);

    void delete(ProjectInfoPageDTO dto);

    DataProjectStatVO dataProjectStat(DataStatDTO dto);

    DataInvestStatVO dataInvestStat(DataStatDTO dto);

    DataScheduleStatVO dataScheduleStat(DataStatDTO dto);

    String dataEndDate();

    void saveWarning(ProjectWarningDTO dto);

    IPage<pageWarningVO> pageWarning(pageWarningDTO dto);

    ProjectWarningDTO detailWarning();

    void repealWarning(ProjectRepealDTO dto);

    R importProject(MultipartFile file);

    ResponseEntity<FileSystemResource> buildReport(Integer year, Integer quarter, HttpServletResponse response);

    R<List<Integer>> getProjectYear();
}
