package pwc.taxtech.atms.vat.dao;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import pwc.taxtech.atms.MyVatMapper;
import pwc.taxtech.atms.vat.dpo.DataSourceCellDataDto;
import pwc.taxtech.atms.vat.dpo.DataSourceExtendDto;
import pwc.taxtech.atms.vat.entity.PeriodDataSource;
import pwc.taxtech.atms.vat.entity.PeriodDataSourceExample;

@Mapper
public interface PeriodDataSourceMapper extends MyVatMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    long countByExample(PeriodDataSourceExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int deleteByExample(PeriodDataSourceExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int deleteByPrimaryKey(Long id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int insert(PeriodDataSource record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int insertSelective(PeriodDataSource record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    List<PeriodDataSource> selectByExampleWithRowbounds(PeriodDataSourceExample example, RowBounds rowBounds);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    List<PeriodDataSource> selectByExample(PeriodDataSourceExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    PeriodDataSource selectByPrimaryKey(Long id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int updateByExampleSelective(@Param("record") PeriodDataSource record, @Param("example") PeriodDataSourceExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int updateByExample(@Param("record") PeriodDataSource record, @Param("example") PeriodDataSourceExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int updateByPrimaryKeySelective(PeriodDataSource record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table period_data_source
     *
     * @mbg.generated
     */
    int updateByPrimaryKey(PeriodDataSource record);

    void clearFormulaBlockWithPeriod(@Param("period") Integer period);

    void clearTaxRuleSettingWithPeriod(@Param("period") Integer period);

    void clearCellTemplateWithPeriod(@Param("period") Integer period, @Param("exceptReportTemplateIDs") String exceptReportTemplateIDs);

    void clearCellTemplateConfigWithPeriod(@Param("period") Integer period, @Param("exceptReportTemplateIDs") String exceptReportTemplateIDs);

    void clearTemplateWithPeriod(@Param("period") Integer period, @Param("exceptReportTemplateIDs") String exceptReportTemplateIDs);

    void clearTaxPayerReportWithPeriod(@Param("period") Integer period);

    void clearDataSourceWithPeriod(@Param("period") Integer period);

    void clearDataSourceDetailWithPeriod(@Param("period") Integer period);

    void clearCellDataSourceDataWithPeriod(@Param("period") Integer period);

    void clearCellDataWithPeriod(@Param("exceptReportTemplateIDs") String exceptReportTemplateIDs, @Param("period") Integer period);

    void clearReportWithPeriod(Integer period);

    void clearDataWithPeriod(@Param("exceptReportTemplateIDs") String exceptReportTemplateIDs, @Param("period") Integer period,@Param("projectId")String projectId);

    List<DataSourceExtendDto> getFormulaDataSource(Long reportID);

    List<DataSourceExtendDto> getManualDataSource(Long cellDataID);

    DataSourceCellDataDto getManualDataSource2(Long dataSourceID);

    int batchInsert(List<PeriodDataSource> list);
}