package com.dhcc.finance.main.dao;

import com.dhcc.finance.main.domain.CwGlSettle;
import com.dhcc.finance.main.domain.CwGlSettleExample;
import com.dhcc.finance.main.domain.CwGlVoucher;
import com.dhcc.finance.main.model.CwGlSettleAndName;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

public interface CwGlSettleMapper {


	long countByExample(CwGlSettleExample example);

	int deleteByExample(CwGlSettleExample example);

	int deleteByPrimaryKey(String pkSettle);

	int insert(CwGlSettle record);

	int insertSelective(CwGlSettle record);

	List<CwGlSettle> selectByExample(CwGlSettleExample example);

	CwGlSettle selectByPrimaryKey(String pkSettle);

	int updateByExampleSelective(@Param("record") CwGlSettle record, @Param("example") CwGlSettleExample example);

	int updateByExample(@Param("record") CwGlSettle record, @Param("example") CwGlSettleExample example);

	int updateByPrimaryKeySelective(CwGlSettle record);

	int updateByPrimaryKey(CwGlSettle record);

	/**
	 * @param periodLike
	 * @return List<CwGlSettleAndName>
	 *@author huangpeng
	 * @param nameLike 
	 *@date 2019年4月2日 下午1:43:47
	 *@修改日志：
	 */
	List<CwGlSettleAndName> selectAllDateByPeriodLike(@Param("periodLike") String periodLike, @Param("nameLike")String nameLike,@Param("issettle") String issettle,
			@Param("settleUser") String settleUser,@Param("settleTime") String settleTime);

	/**
	 * 查询账套期间已记账的数量
	 * @param pkGlorgbook
	 * @param period
	 * @return long
	 *@author huangpeng
	 *@date 2019年4月25日 上午10:56:42
	 *@修改日志：
	 */
	long countIsSettle(@Param("pkGlorgbook")String pkGlorgbook,@Param("period")String period);
	/**
	 * 功能描述：批量跟新结账信息
	 * @param map
	 * @return int
	 * @author dml
	 * @date 2019年4月25日 上午10:49:10
	 * @修改日志：
	 */
	int updateCwGlSettleBatch(Map<String, Object> map);
	/**
	 * 功能描述：查询是否结账
	 * @param map
	 * @return List<CwGlSettle>
	 * @author dml
	 * @date 2019年4月25日 下午2:01:27
	 * @修改日志：
	 */
	Map<String, Long> selectIssettle(Map<String, Object> map);

	/**
	 * 获取当前账套最早未结账的期间
	 * @param pkGlorgbook
	 * @param period void
	 *@author huangpeng
	 *@date 2019年5月22日 上午11:45:59
	 *@修改日志：
	 */
	String selectNoSettleForPeriod(@Param("pkGlorgbook")String pkGlorgbook,@Param("period")String period);

    /**
     * 功能描述：记账统计
     * @param periodLike
     * @param nameLike
     * @param issettle
     * @param settleUser
     * @param settleTime
     * @return long
     * @author dml
     * @date 2019年8月28日 下午9:16:15
     * @修改日志：
     */
    long countSettleTotal(@Param("periodLike")String periodLike, @Param("nameLike")String nameLike, @Param("issettle")String issettle,
    		@Param("settleUser")String settleUser, @Param("settleTime")String settleTime);
    /** 功能描述：初始化结账数据
     * @return List<CwGlSettleAndName>
     * @author xuxiao
     * @date 2019年8月23日 上午11:23:19
     * @修改日志：
     */
    int insertForSettle(Map<String, Object> map);
    /**
     * 功能描述
     *@param nameLike
     *@return List<CwGlSettleAndName>
     *@author huangpeng
     *@date 2019年10月4日 下午3:52:46
     *修改日志:
     */
	List<CwGlSettleAndName> selectAllDateByName(@Param("nameLike")String nameLike);
	/**
	 * 功能描述  查询已经记账的最大期间
	 *@param pkGlorgbook
	 *@return String
	 *@author huangpeng
	 *@date 2019年11月9日 下午4:54:34
	 *修改日志:
	 */
	String selectMaxPeriod(@Param("pkGlorgbook")String pkGlorgbook);
	/**
	 * 功能描述
	 *@param result
	 *@return List<String>
	 *@author huangpeng
	 *@date 2019年12月25日 上午10:19:36
	 *修改日志:
	 */
	List<String> searchIsCount(@Param("list") List<CwGlVoucher> result);
}