package com.njcn.rdms.module.project.service.performance;

import com.njcn.rdms.framework.common.pojo.PageResult;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceMonthlyResultRespVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetCreateReqVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetExcelUpdateReqVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetImportZipReqVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetImportZipRespVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetPageReqVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetPrefillRespVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetRespVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetResponseRecordRespVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetSignOffReqVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetStatusActionReqVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetStatusDictRespVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetStatusLogRespVO;
import com.njcn.rdms.module.project.controller.admin.performance.vo.PerformanceSheetStatusTransitionRespVO;

import java.util.Collection;
import java.util.List;

public interface PerformanceSheetService {

    PageResult<PerformanceSheetRespVO> getSheetPage(PerformanceSheetPageReqVO reqVO);

    PerformanceSheetRespVO getSheet(Long id);

    Long createSheet(PerformanceSheetCreateReqVO reqVO);

    void updateExcel(Long id, PerformanceSheetExcelUpdateReqVO reqVO);

    void deleteSheet(Long id);

    void send(Long id);

    void resend(Long id);

    void confirm(Long id, PerformanceSheetStatusActionReqVO reqVO);

    void reject(Long id, PerformanceSheetStatusActionReqVO reqVO);

    PerformanceSheetImportZipRespVO importZip(PerformanceSheetImportZipReqVO reqVO) throws Exception;

    Long signOff(PerformanceSheetSignOffReqVO reqVO);

    PerformanceDownloadFile download(Long id);

    PerformanceDownloadFile batchDownload(Collection<Long> ids);

    PerformanceDownloadFile exportByCondition(PerformanceSheetPageReqVO reqVO);

    List<PerformanceSheetStatusLogRespVO> getStatusLogs(Long id);

    List<PerformanceSheetResponseRecordRespVO> getResponseRecords(Long id);

    PerformanceSheetPrefillRespVO getPrefillData(Long employeeId, String periodMonth);

    PerformanceMonthlyResultRespVO getMonthlyResult(Long employeeId, String periodMonth);

    List<PerformanceSheetStatusDictRespVO> getStatusDict();

    List<PerformanceSheetStatusTransitionRespVO> getStatusTransitions();
}
