package cn.ey.biz.module.external.api.datacenter.service;

import java.util.List;

import cn.ey.biz.module.external.api.datacenter.service.requestdto.ApDetailsAllReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.ApDetailsCountReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.ApDetailsPageReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.BillingAndCollectionReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.BookingDataReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.ContractEngReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.ContractVentorReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.EngagementUserRecordReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.ExpensesCompareReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.PcolibDimworklocationReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.PersonnelChargeReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.PersonnelChargeUseRecordResDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.PersonnelTimeMonthSumReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.PersonnelTimeWeeksSumReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.requestdto.PersonnelTimeYearsSumReqDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.ApPaymentDetailsCountResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.ApPaymentDetailsResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.BillingAndCollectionCountResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.BillingAndCollectionResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.BookingDataResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.ContractBillingCollectionDetailResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.ContractBillingCreatdetailResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.ContractEngDetailResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.ContractVentorQueryDetailResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.EngagementComparativeExpenseResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.EngagementComparatorResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.EngagementFinanceIndexSummaryResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.EngagementSingleIndexSummaryResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.EngagementSurplusExpenseResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.EngagementSurplusSerResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.EngagementUserRecordResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.ExpensesCompareResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.PcolibDimworklocationResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.PersonnelTimeMonthSumResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.PersonnelTimeWeeksSumResDTO;
import cn.ey.biz.module.external.api.datacenter.service.responsedto.PersonnelTimeYearsSumResDTO;

public interface IDataCenterService {
	
	/**
	 * 根据项目编号、时间范围查询AP付款列表 分页查
	 * @param request
	 * @return
	 */
	public List<ApPaymentDetailsResDTO> getApDetailsPage(ApDetailsPageReqDTO request);
	
	/**
	 * 根据项目编号查询某时间范围内的全部AP付款数据（导出用） 全量查
	 * @param request
	 * @return
	 */
	public List<ApPaymentDetailsResDTO> getApDetailsAll(ApDetailsAllReqDTO request);
	
	/**
	 * 根据项目编号查询AP付款数据起始时间、结束时间及总记录数
	 * @param request
	 * @return
	 */
	public ApPaymentDetailsCountResDTO getApDetailsCount(ApDetailsCountReqDTO request);
	
	/**
	 * 根据项目编号、时间范围查询开票及收款情况（分页）分页查
	 * @param request
	 * @return
	 */
	public List<BillingAndCollectionResDTO> getBillingAndCollectionPage(BillingAndCollectionReqDTO request);
	
	/**
	 * 根据项目编号查询某时间范围内全部的开票及收款情况数据（导出用） 全量查
	 * @param request
	 * @return
	 */
	public List<BillingAndCollectionResDTO> getBillingAndCollectionAll(BillingAndCollectionReqDTO request);
	
	/**
	 * 根据项目编号查询开票及收款情况的起始时间、结束时间及总记录数
	 * @param request
	 * @return
	 */
	public BillingAndCollectionCountResDTO getBillingAndCollectionCount(BillingAndCollectionReqDTO request);
	
	/**
	 * 根据项目编号查询人员使用记录（分页）
	 * @param request
	 * @return
	 */
	public PersonnelChargeUseRecordResDTO getPersonnelChargeUsageRecord(PersonnelChargeReqDTO request);
	
	/**
	 * 根据项目编号查询费用对比数据
	 * @param request
	 * @return
	 */
	public ExpensesCompareResDTO getExpensesCompareData(ExpensesCompareReqDTO request);
	
	/**
	 * 人员工时周汇总
	 * @param request
	 * @return
	 */
    List<PersonnelTimeWeeksSumResDTO> getPersonnelTimeWeeksSum (PersonnelTimeWeeksSumReqDTO req);
	
	/**
	 * 人员工时月汇总
	 * @param request
	 * @return
	 */
    List<PersonnelTimeMonthSumResDTO> getPersonnelTimeMonthSum(PersonnelTimeMonthSumReqDTO req);
	
	/**
	 * 人员工时年汇总
	 * @param request
	 * @return
	 */
    List<PersonnelTimeYearsSumResDTO> getPersonnelTimeYearsSum(PersonnelTimeYearsSumReqDTO req);
    
    /**
	 * booking_data增量明细
	 * @param request
	 * @return
	 */
    List<BookingDataResDTO> getbookingData(BookingDataReqDTO req);
    
    /**
     * 项目实际/计划比较人员接口-CCT/MMT
     * @param req
     * @return
     */
    List<EngagementComparatorResDTO> getEngagementComparator(String engagementCode);
    
    /**
     * 项目的剩余可用SER
     * @param req
     * @return
     */
    EngagementSurplusSerResDTO getEngagementSurplusSer(String engagementCode);
    
    /**
     * 项目人员实际使用记录
     * @param req
     * @return
     */
    List<EngagementUserRecordResDTO> getEngagementUserRecord(EngagementUserRecordReqDTO req);
    
    
    /**
     * 项目实际/计划比较费用接口-CCT/MMT
     * @param req
     * @return
     */
    List<EngagementComparativeExpenseResDTO> getEngagementComparativeExpense(String engagementCode);
    
    /**
     * 项目剩余可用费用

     * @param req
     * @return
     */
    EngagementSurplusExpenseResDTO getEngagementSurplusExpense(String engagementCode);
    
   /**
    * 合并财务指标
    * @param mbhbCurrencyname 目标货币类型主code
    * @param engagementCode 项目编号
    * @return
    */
    EngagementFinanceIndexSummaryResDTO getEngagementFinanceIndexSummary(String mbhbCurrencyname,List<String> engagementCode);
    
    /**
     * 单Code重点指标
     * @param engagementCode
     * @return
     */
    List<EngagementSingleIndexSummaryResDTO> getEngagementSingleIndexSummary(List<String> engagementCode);
    
    /**
     * cdi同步dimworklocation到公共码表库

     * @param 
     * @return
     */
    List<PcolibDimworklocationResDTO> getPcolibDimworklocation(PcolibDimworklocationReqDTO req);
    
    /**
     * cdi同步dimworklocation到公共码表库

     * @param 
     * @return
     */
    List<PcolibDimworklocationResDTO> getPcolibDimworklocation();
    

    
	/**
	 * 财务到合同的项目详情
	 * @param req
	 * @return
	 */
	 List<ContractEngDetailResDTO> getContractEngDetail(ContractEngReqDTO req);
	
	/**
	 * 财务到合同的项目（关闭或部分收款and_charge）详情
	 * @param req
	 * @return
	 */
	 List<ContractBillingCollectionDetailResDTO> getContractBillingCollectionDetail(ContractEngReqDTO req);
	
	/**
	 * 供应商明细数据
	 */
	List<ContractVentorQueryDetailResDTO> getContractVentorQueryDetail(ContractVentorReqDTO req);
	
	/**
	 * 获取创建时间为昨天的项目信息
	 */
	List<ContractBillingCreatdetailResDTO> getContractBillingCreatdetail(ContractEngReqDTO req);
    
    
    
    

}
