package com.dhcc.finance.main.dao;

import java.util.Date;
import java.util.List;

import com.dhcc.finance.main.model.CwGlReportInfo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.dhcc.finance.main.model.ChroAccountExportParam;
import com.dhcc.finance.main.model.CwChroAccountInfo;
import com.dhcc.finance.main.model.CwGlReportInfo;

/**
 * 功能描述：财务报表相关DAO
 * @author dml
 * @date 2019年7月23日 下午2:20:42
 * @修改日志：
 */
public interface FinancialStatementsMapper {
	/**
	 * 功能描述：初始化资产负债表
	 * @param reportDate
	 * @return int
	 * @author dml
	 * @date 2019年7月28日 下午2:17:12
	 * @修改日志：
	 */
	int insertBalanceSheet(@Param("reportDate") String reportDate);
	/**
	 * 功能描述：初始化利润表
	 * @param reportDate
	 * @return int
	 * @author dml
	 * @date 2019年8月24日 下午4:06:00
	 * @修改日志：
	 */
	int insertProfitStatement(@Param("reportDate") String reportDate);
	/**
	 * 功能描述：初始化临时余额表-资产负债表【账套】
	 * @param reportDate
	 * @param pkGlorgbook
	 * @return int
	 * @author dml
	 * @date 2019年7月28日 下午2:19:26
	 * @修改日志：
	 */
	int insertBalanceTempZcfzbZt(@Param("reportDate") String reportDate,@Param("pkGlorgbook") String pkGlorgbook);
	/**
	 * 功能描述：初始化临时余额表-资产负债表【项目】
	 * @param reportDate
	 * @param xtxmbh
	 * @return int
	 * @author dml
	 * @date 2019年11月15日 上午10:14:01
	 * @修改日志：去掉参数@Param("list") List<String> xtxmList
	 */
	int insertBalanceTempZcfzbXtxm(@Param("reportDate") String reportDate);
	/**
	 * 功能描述：初始化临时余额表-利润表【账套】
	 * @param reportDate
	 * @param xtxmList
	 * @return int
	 * @author dml
	 * @date 2019年11月15日 下午2:31:23
	 * @修改日志：去掉@Param("list") List<String> pkGlorgbookList参数
	 */
	int insertBalanceTempLrbZt(@Param("reportDate") String reportDate);
	/**
	 * 功能描述：删除临时表数据
	 * @return int
	 * @author dml
	 * @date 2019年7月28日 下午2:47:34
	 * @修改日志：
	 */
	int deleteBalanceTemp();
	/**
	 * 功能描述：删除资产负债或者利润表数据
	 * @param reportDate
	 * @param pkGlorgbook
	 * @param reportType
	 * @return int
	 * @author dml
	 * @date 2019年7月28日 下午2:51:12
	 * @修改日志：
	 */
	int deleteCwGlReport(@Param("reportDate") String reportDate,@Param("reportType") String reportType);
	/**
	 * 功能描述：查询需要重跑的数据【账套】
	 * @param reportDate
	 * @param param
	 * @param reportType
	 * @param prepareDate
	 * @return List<String>
	 * @author dml
	 * @date 2019年11月14日 下午3:27:54
	 * @修改日志：
	 */
	List<String> selectIsInitZt(@Param("reportDate") String reportDate,@Param("param") String param,
			@Param("reportType") String reportType,@Param("period") String period,@Param("searchType") String searchType);
	/**
	 * 功能描述：临时余额表统计
	 * @return Long
	 * @author dml
	 * @date 2019年11月14日 下午9:41:05
	 * @修改日志：
	 */
	Long selectCountTemp();
	/**
	 * 功能描述：查询需要重跑的数据【项目】
	 * @param reportDate
	 * @param pkGlorgbook
	 * @param reportType
	 * @param prepareDate
	 * @return List<String>
	 * @author dml
	 * @date 2019年11月15日 上午10:03:50
	 * @修改日志：
	 */
	List<String> selectIsInitXtxm(@Param("reportDate") String reportDate,@Param("param") String param,
			@Param("reportType") String reportType,@Param("period") String period,@Param("searchType") String searchType);

	/**
	 * @param [reportDate]
	 * @return java.util.List<java.lang.Integer>
	 * @description: 获取资产负债表和利润表当前时间数据
	 * @author lxj
	 * @date 2020-07-20 14:27
	 * @modify
	 */
	List<Integer> getReportNum(String reportDate);

	/**
	 * @param [reportDate]
	 * @return java.math.BigDecimal
	 * @description: 校验资产负债表总数  资产 =负债+所有者权益
	 * @author lxj
	 * @date 2020-07-20 14:27
	 * @modify
	 */
	BigDecimal checkBalanceSheet(String reportDate);

	/**
	 * @param [reportDate]
	 * @return java.util.List<java.lang.String>
	 * @description: 校验资产负债表单条数据  资产 =负债+所有者权益
	 * @author lxj
	 * @date 2020-07-20 14:28
	 * @modify
	 */
	List<String> checkBalanceSheetSingle(String reportDate);

	/**
	 * @param [reportDate]
	 * @return java.math.BigDecimal
	 * @description: 校验利润表总数  期初未分配 = 上期期末未分配
	 * @author lxj
	 * @date 2020-07-20 14:28
	 * @modify
	 */
	BigDecimal checkIncomeStatements(String reportDate);

	/**
	 * @param [reportDate]
	 * @return java.util.List<java.lang.String>
	 * @description: 校验利润表单挑数据  期初未分配 = 上期期末未分配
	 * @author lxj
	 * @date 2020-07-20 14:28
	 * @modify
	 */
	List<String> checkIncomeStatementsSingle(String reportDate);

	/**
	 * @param [reportDate]
	 * @return java.math.BigDecimal
	 * @description: 校验资产负债表和利润表总数  期末未分配 =损益平准金+未分配利润
	 * @author lxj
	 * @date 2020-07-20 14:29
	 * @modify
	 */
	BigDecimal checkBalanceSheetAndIncomeStatements(String reportDate);

	/**
	 * @param [reportDate]
	 * @return java.util.List<java.lang.String>
	 * @description: 校验资产负债表和利润表单条数据  期末未分配 =损益平准金+未分配利润
	 * @author lxj
	 * @date 2020-07-20 14:29
	 * @modify
	 */
	List<String> checkBalanceSheetAndIncomeStatementsSingle(String reportDate);


    List<CwGlReportInfo> selectCwGlReportInfo(@Param("param") String param,@Param("reportDate") String reportDate,
                                              @Param("reportType") String reportType,@Param("searchType") String searchType);

	int updateBalanceSheetInfo(@Param("list") List<CwGlReportInfo> list,@Param("param") String param,@Param("reportDate") String reportDate,
							   @Param("updateTime") Date updateTime,@Param("updateUser") String updateUser);

	/**
     * 功能描述：查询模板地址
     * @param fileLocal
     * @return String
     * @author leiyu
     * @date 2020年7月17日 上午11:19:13
     * @修改日志：
     */
	String searchExportTemplate(String fileLocal);

	/**
	 * 功能描述：查询序时账数据
	 * @param chroAccountExportParam
	 * @return
	 * @author leiyu
	 * @date 2020年7月17日 上午11:12:13
	 */
	List<CwChroAccountInfo> selectChroAccountInfo(ChroAccountExportParam chroAccountExportParam);

}
