package com.dhcc.finance.main.dao;

import com.dhcc.finance.main.domain.CwBdRecordSerial;
import com.dhcc.finance.main.domain.CwBdRecordSerialExample;
import com.dhcc.finance.main.model.CwBdRecordSerialForVoucher;
import org.apache.ibatis.annotations.Param;

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

public interface CwBdRecordSerialMapper {
    long countByExample(CwBdRecordSerialExample example);

    int deleteByExample(CwBdRecordSerialExample example);

    int deleteByPrimaryKey(String id);

    int insert(CwBdRecordSerial record);

    int insertSelective(CwBdRecordSerial record);

    List<CwBdRecordSerial> selectByExample(CwBdRecordSerialExample example);

    CwBdRecordSerial selectByPrimaryKey(String id);

    int updateByExampleSelective(@Param("record") CwBdRecordSerial record, @Param("example") CwBdRecordSerialExample example);

    int updateByExample(@Param("record") CwBdRecordSerial record, @Param("example") CwBdRecordSerialExample example);

    int updateByPrimaryKeySelective(CwBdRecordSerial record);

    int updateByPrimaryKey(CwBdRecordSerial record);
    /**
     * 功能描述  批量插入
     * @param arrayList
     * @return int
     * @author huangpeng
     * @date 2019年7月15日 下午8:05:28
     * 修改日志
     */
	int insertForBatch(@Param("arrayList") List<CwBdRecordSerial> arrayList);
	/**
	 * 功能描述   更新
	 * @param reBatchNo
	 * @param pkVoucher
	 * @return int
	 * @author huangpeng
	 * @date 2019年7月15日 下午9:22:59
	 * 修改日志
	 */
	int updateRecordForSerialNo(CwBdRecordSerial record);
	/**
	 * 功能描述   根据批次号、交易码查询流水信息
	 * @param bathNo
	 * @return List<CwBdRecordSerial>
	 * @author huangpeng
	 * @date 2019年7月16日 上午9:48:38
	 * 修改日志
	 */
	List<CwBdRecordSerial> selectCwBdRecordSerialList(@Param("batchNo")String batchNo,@Param("tradeCode")String tradeCode);
	/**
	 * 功能描述
	 * @param serialNoList  流水list
	 * @return List<String>
	 * @author huangpeng
	 * @param tradeCode 
	 * @param flag 
	 * @date 2019年7月27日 下午5:00:22
	 * 修改日志
	 */
	List<CwBdRecordSerialForVoucher> searchPkVoucherList(@Param("list") List<String> serialNoList);
	
	/**
	 * 功能描述  根据批次号查询流水信息
	 * @param batchNo
	 * @return List<CwBdRecordSerial>
	 * @author huangpeng
	 * @date 2019年7月28日 下午2:17:46
	 * 修改日志
	 */
	List<String> selectCwBdRecordSerialByBatchNo(@Param("batchNo")String batchNo,@Param("tradecode")String tradecode,@Param("serialNo")String serialNo);
	/**
	 * 功能描述 根据流水号更新
	 *@param map
	 *@return int
	 *@author huangpeng
	 *@date 2019年8月9日 上午11:44:34
	 *修改日志:
	 */
	int updateRecordByserialNoForBatch(Map<String, Object> map);
	/**
	 * 功能描述  获取流水号list
	 *@param batchNo
	 *@param tradecode
	 *@return List<String>
	 *@author huangpeng
	 *@date 2019年8月21日 下午9:19:06
	 *修改日志:
	 */
	List<String> selectPKSerialNo(@Param("batchNo")String batchNo,@Param("tradecode")String tradecode);
	/**
	 * 功能描述  5的情况下 查询流水号是否记账
	 *@param serialPk
	 *@param tradeCode
	 *@return CwBdRecordSerial
	 *@author huangpeng
	 * @param string 
	 *@date 2019年8月23日 下午8:37:23
	 *修改日志:
	 */
	CwBdRecordSerial searchIsSignTypeForSerial(@Param("SerialNo")String serialPk,@Param("tradeCode") String tradeCode,
			@Param("batchNo")String batchNo);
	/**
	 * 功能描述
	 *@param pklist
	 *@return CwBdRecordSerial
	 *@author huangpeng
	 *@date 2019年11月27日 下午5:28:29
	 *修改日志:
	 */
	List<CwBdRecordSerial> searchIsSignBySerial(@Param("list")List<String> SerialNo);
	/**
	 * 功能描述
	 *@param map
	 *@return int
	 *@author huangpeng
	 *@date 2019年12月13日 下午4:36:19
	 *修改日志:
	 */
	int updateCwBdRecordSerialForRevse(Map<String, Object> map);
	/**
	 * 功能描述  查询凭证的接口，费用报销使用
	 *@param batchNo
	 *@return List<String>
	 *@author huangpeng
	 *@date 2019年12月17日 上午9:17:53
	 *修改日志:
	 */
	List<String> searchVoucherByBatchno(@Param("batchNo")String batchNo);


	/**
	 * @description: 批量插入记录表
	 * @param [cwBdRecordSerial]
	 * @return int
	 * @author lxj
	 * @date 2020-06-19 14:51
	 * @modify
	 */
	int insertCwBdRecordSerialByBatchNo(@Param("cwBdRecordSerial")CwBdRecordSerial cwBdRecordSerial, @Param("voucherType")String voucherType);

}