package com.dhcc.finance.main.dao;

import com.dhcc.finance.main.domain.CwBdAccsubj;
import com.dhcc.finance.main.domain.CwBdAccsubjExample;
import com.dhcc.finance.main.domain.CwBdSubjscheme;
import com.dhcc.finance.main.model.CwBdAccsubjManage;
import com.dhcc.finance.main.model.CwBdSubjschemeAdd;

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

import org.apache.ibatis.annotations.Param;

public interface CwBdAccsubjMapper {
    long countByExample(CwBdAccsubjExample example);

    int deleteByExample(CwBdAccsubjExample example);

    int deleteByPrimaryKey(String pkAccsubj);

    int insert(CwBdAccsubj record);
    
    int inserts(@Param("records") List<CwBdAccsubj> records);


    int insertSelective(CwBdAccsubj record);

    List<CwBdAccsubj> selectByExample(CwBdAccsubjExample example);

    CwBdAccsubj selectByPrimaryKey(String pkAccsubj);

    int updateByExampleSelective(@Param("record") CwBdAccsubj record, @Param("example") CwBdAccsubjExample example);

    int updateByExample(@Param("record") CwBdAccsubj record, @Param("example") CwBdAccsubjExample example);

    int updateByPrimaryKeySelective(CwBdAccsubj record);

    int updateByPrimaryKey(CwBdAccsubj record);
    /**
     * 功能描述：查询节点和该节点下所有会计科目信息
     * @param example
     * @return List<CwBdAccsubj>
     * @author dml
     * @date 2019年3月22日 上午11:37:59
     * @修改日志：
     */
    List<CwBdAccsubj> selectByNode(@Param("pkSubjscheme") String pkSubjscheme ,@Param("pkAccsubj") String pkAccsubj);
    /**
     * 功能描述：逻辑删除某版本下所有会计科目 
     * @param record
     * @return int
     * @author dml
     * @date 2019年3月22日 下午3:22:16
     * @修改日志：
     */
    int updateByPkSubjscheme(CwBdSubjscheme cwBdSubjscheme);
    /**
     * 功能描述：查询全部会计科目及其相关联的全部会计科目辅助信息
     * @return List<CwBdAccsubjManage>
     * @author dml
     * @date 2019年3月23日 下午5:09:09
     * @修改日志：
     */
    List<CwBdAccsubjManage> selectAllAccassAndAccsubj(@Param("pkSubjscheme") String pkSubjscheme);
    /**
     * 功能描述：逻辑删除某节点所有会计科目
     * @param pkSubjscheme
     * @return int
     * @author dml
     * @date 2019年3月25日 下午5:38:30
     * @修改日志：
     */
    int updateSubjschemeBatch(Map<String, Object> map);
    /**
     * 功能描述：会计科目复制
     * @param cwBdSubjschemeAdd
     * @return int
     * @author dml
     * @date 2019年3月25日 下午7:28:59
     * @修改日志：
     */
    int insertCpCwBdAccsubj(CwBdSubjschemeAdd cwBdSubjschemeAdd);
    /**
     * 功能描述：查询现在正启用的版本下的所有科目
     * @return List<CwBdAccsubj>
     * @author dml
     * @date 2019年4月2日 下午4:02:33
     * @修改日志：
     */
    List<CwBdAccsubj> selectNowUseCwBdAccsubj();
    /**
     * 功能描述：复制完毕后刷新科目父节点
     * @param cwBdSubjschemeAdd
     * @return int
     * @author dml
     * @date 2019年4月23日 下午8:38:01
     * @修改日志：
     */
    int updateParentid(CwBdSubjschemeAdd cwBdSubjschemeAdd);
    /**
     * 功能描述  根据subjcode去查询信息
     * @param subjcode
     * @return CwBdAccsubj
     * @author huangpeng
     * @date 2019年7月16日 上午11:25:36
     * 修改日志
     */
    CwBdAccsubj selectCwBdAccsubjBySubcode(@Param("subjcode") String subjcode,@Param("pkSubjscheme") String pkSubjscheme);
    /** 
	 * 功能描述  查询凭证下包含的科目或者辅助项数量
	 *@param subjcode
	 *@return Long
	 *@author xuxiao
	 *@date 2019年8月20日 上午:10:20
	 *修改日志:
	 */
	Long selectIsExistsSubForVoucher(@Param("pkAccsubj") String pkAccsubj);

	/**
	 * 功能描述  查询科目的子级科目
	 *@param pkSrcaccsubj
	 *@param pkSubjscheme
	 *@return List<String>
	 *@author huangpeng
	 *@date 2019年11月6日 下午4:48:40
	 *修改日志:
	 */
	List<String> selectParentSubject(@Param("pkSrcaccsubj")String pkSrcaccsubj, @Param("pkSubjscheme")String pkSubjscheme);

}