package com.dhcc.finance.main.dao;

import com.dhcc.finance.main.domain.CwBdGlorgbook;
import com.dhcc.finance.main.domain.CwBdGlorgbookExample;
import com.dhcc.finance.main.domain.CwBdRecordGlorgbook;
import com.dhcc.finance.main.model.CwBdGlorgbookAndOther;
import com.dhcc.finance.main.model.CwGlTransferWeb;
import org.apache.ibatis.annotations.Param;

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

public interface CwBdGlorgbookMapper {
    long countByExample(CwBdGlorgbookExample example);

    int deleteByExample(CwBdGlorgbookExample example);

    int deleteByPrimaryKey(String pkGlorgbook);

    int insert(CwBdGlorgbook record);

    int insertSelective(CwBdGlorgbook record);

    List<CwBdGlorgbook> selectByExample(CwBdGlorgbookExample example);

    CwBdGlorgbook selectByPrimaryKey(String pkGlorgbook);

    int updateByExampleSelective(@Param("record") CwBdGlorgbook record, @Param("example") CwBdGlorgbookExample example);

    int updateByExample(@Param("record") CwBdGlorgbook record, @Param("example") CwBdGlorgbookExample example);

    int updateByPrimaryKeySelective(CwBdGlorgbook record);

    int updateByPrimaryKey(CwBdGlorgbook record);

    /**
     * @param nameLike
     * @param pkAccperiodLike
     * @return List<CwBdGlorgbookAndOther>
     * @author huangpeng
     * @date 2019年3月30日 上午11:09:25 @修改日志：
     */
    List<CwBdGlorgbookAndOther> selectByOtherLike(@Param("nameLike") String nameLike,
                                                  @Param("pkAccperiodLike") String pkAccperiodLike);

    /**
     * 功能描述:根据科目名称查询账套
     *
     * @param subjname
     * @return CwBdGlorgbook
     * @author baiyc
     * @date 2019年4月29日 下午3:14:04
     * @修改日志:
     */
    CwBdGlorgbook selectBysubj(String subjname);

    /**
     * 功能描述：分期募集编号查询账套
     *
     * @param xtzxmbh
     * @return CwBdGlorgbook
     * @author dml
     * @date 2019年5月22日 下午5:00:28 @修改日志：
     */
    CwBdGlorgbook selectByXtzxmbh(@Param("xtzxmbh") String xtzxmbh);

    /**
     * 功能描述：查詢該子項目下賬套數量
     *
     * @param xtzxmbh
     * @return long
     * @author dml
     * @date 2019年6月8日 下午2:51:07
     * @修改日志：
     */
    long countByXtzxmbh(@Param("xtzxmbh") String xtzxmbh);

    /**
     * Title: searchCwBdGlorgbookNowDayNuANDSum <br/>
     * Description:查询帐套数据今日新增数目和总数
     *
     * @param NowDate
     * @return Map<String, Long>
     * @author lipeng
     * @date 2019年7月5日 下午2:18:10
     */
    Map<String, Long> searchCwBdGlorgbookNowDayNuANDSum(String NowDate);

    /**
     * 功能描述       查询新增账套接口
     *
     * @return List<CwBdGlorgbook>
     * @author huangpeng
     * @date 2019年7月13日 上午11:24:40
     * 修改日志
     */
    List<CwBdGlorgbook> searchCwBdGlorgbookForNewAdd();

    /**
     * 功能描述    校验:当前日期是否允许生成凭证
     *
     * @param xtzxmbh
     * @param makeDate
     * @return Long
     * @author huangpeng
     * @date 2019年7月25日 下午3:52:00
     * 修改日志
     */
    Long selectCwBdGlorgbookIsCreate(@Param("xtzxmbh") String xtzxmbh, @Param("makeDate") String makeDate);

    /**
     * Title: searchBdGlorgbooksbyXTzxmbh <br/>
     * Description: TODO 跟据信托子项目编号查询帐套主键信息<br/>
     *
     * @param XTZXMBH
     * @return CwBdGlorgbook
     * @author lipeng
     * @date 2019年8月6日 上午11:29:42
     */
    CwBdGlorgbook searchBdGlorgbooksbyXTzxmbh(String XTZXMBH);

    /**
     * 功能描述 查询结转主键是否使用在账套表
     *
     * @param pkTransfer
     * @return Long
     * @author huangpeng
     * @date 2019年8月24日 下午2:11:59
     * 修改日志:
     */
    Long searchCwBdGlorgbookofTransfer(@Param("pkTransfer") String pkTransfer);

    /**
     * 功能描述
     *
     * @param nameLike
     * @param period
     * @param userId
     * @return List<CwGlTransferWeb>
     * @author huangpeng
     * @date 2019年10月4日 下午3:14:09
     * 修改日志:
     */
    List<CwGlTransferWeb> searchCwBdGlorgbookofTransferDetail(@Param("nameLike") String nameLike,
                                                              @Param("period") String period, @Param("userId") String userId, @Param("istransfer") String istransfer);

    /**
     * 功能描述
     *
     * @param nameLike
     * @param period
     * @param userId
     * @return List<CwGlTransferWeb>
     * @author huangpeng
     * @date 2019年12月2日 下午9:46:44
     * 修改日志:
     */
    List<CwGlTransferWeb> searchCwBdGlorgbookofSettle(@Param("nameLike") String nameLike,
                                                      @Param("period") String period, @Param("userId") String userId);

    /**
     * 功能描述：查询需要跑批的账套
     *
     * @param
     * @return List<CwHsGlorgbook>
     * @author dml
     * @date 2019年11月27日 下午8:45:03
     * @修改日志：
     */
    List<CwBdGlorgbook> selectIsBatch();

    /**
     * 功能描述：批量查询是否建账
     *
     * @param cwBdRecordGlorgbookList
     * @return List<CwBdGlorgbook>
     * @author dml
     * @date 2020年3月9日 下午8:03:51
     * @修改日志：
     */
    List<CwBdGlorgbook> selectByXtzxmbhBatch(@Param("list") List<CwBdRecordGlorgbook> cwBdRecordGlorgbookList);

    /**
     * 功能描述:查询这些项目中当前会计期间不在制单日期所在的会计期间内的项目
     *
     * @param xtzxmbh
     * @param makeDate
     * @return List<CwBdGlorgbook>
     * @author likai
     * @data 2020年4月27日上午11:36:40
     * 修改日志
     */
    String selectIfExistPkCurrperiod(Map<String, Object> map);

    /**
     * 功能描述:查询不存在于账套表中的子项目
     *
     * @param map
     * @return String
     * @author likai
     * @data 2020年4月27日下午9:31:11
     * 修改日志
     */
    String selectIfExistGlorgbook(Map<String, Object> map);

    /**
     * 功能描述：批量新增账套信息
     *
     * @param cwBdGlorgbookList
     * @return int
     * @author dml
     * @date 2020年3月9日 下午9:06:00
     * @修改日志：
     */
    int insertCwBdGlorgbookBatch(@Param("list") List<CwBdGlorgbook> cwBdGlorgbookList);

    /**
     * 功能描述：根据项目编号查询账套信信息
     *
     * @param xtxmbh
     * @return CwBdGlorgbook
     * @author likai
     * @date 2020年5月13日 下午7:33:39
     * @修改日志：
     */
    CwBdGlorgbook searchGlorgbookByXtxmbh(@Param("xtxmbh") String xtxmbh);


    /**
     * @description: 获取摘要
     * @param [lcslywbh]
     * @return java.lang.String
     * @author liuxianjv
     * @date 2020-05-21 14:25
     */
    String getNCAbstracts(@Param("lcslywbh") String lcslywbh);
}