package pwc.taxtech.atms.service.impl;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import pwc.taxtech.atms.CommonIT;
import pwc.taxtech.atms.common.util.DataBaseTableUtil;
import pwc.taxtech.atms.common.util.DateUtils;
import pwc.taxtech.atms.constant.enums.EnumTbImportType;
import pwc.taxtech.atms.entity.Organization;
import pwc.taxtech.atms.entity.OrganizationExample;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;

/**
 * @Auther: Gary J Li
 * @Date: 21/03/2019 11:37
 * @Description:
 */
public class AnalysisTest extends CommonIT {

    private static final Logger logger = LoggerFactory.getLogger(DataInitTest.class);

    @Autowired
    private AnalysisJobServiceImpl analysisJobService;

    @Test
    public void analysisExpectedTax() {
        Integer period = DateUtils.getPeriodNow();
        OrganizationExample e = new OrganizationExample();
        //e.createCriteria().andIsActiveEqualTo(true);
        List<Organization> orgs = organizationMapper.selectByExample(e);
        logger.info(String.format("开始分析%s预期返还税数据", period));
        analysisJobService.analysisExpectedTax(orgs, period, EnumTbImportType.CoverImport.getCode());

    }

    @Test
    public void analysisFee() {
        Integer period = DateUtils.getPeriodNow();
        OrganizationExample e = new OrganizationExample();
        //e.createCriteria().andIsActiveEqualTo(true);
        List<Organization> orgs = organizationMapper.selectByExample(e);
        logger.info(String.format("开始分析%s费用数据", period));
        analysisJobService.analysisFee(orgs, period, EnumTbImportType.CoverImport.getCode());
    }

    @Test
    public void analysisFileManagement() {
        Integer period = DateUtils.getPeriodNow();
        OrganizationExample e = new OrganizationExample();
        // e.createCriteria().andIsActiveEqualTo(true);
        List<Organization> orgs = organizationMapper.selectByExample(e);

        logger.info(String.format("开始分析%s文档管理数据", period));
        analysisJobService.analysisFileManagement(orgs, period, EnumTbImportType.CoverImport.getCode());
    }

    @Test
    public void analysisMaster() {
        Integer period = DateUtils.getPeriodNow();
        OrganizationExample e = new OrganizationExample();
        //e.createCriteria().andIsActiveEqualTo(true);
        List<Organization> orgs = organizationMapper.selectByExample(e);
        logger.info(String.format("开始分析%s机构数据", period));
        analysisJobService.analysisMaster(orgs, period, EnumTbImportType.CoverImport.getCode());
    }

    @Test
    public void analysisSales() {
        Integer period = DateUtils.getPeriodNow();
        OrganizationExample e = new OrganizationExample();
        //e.createCriteria().andIsActiveEqualTo(true);
        List<Organization> orgs = organizationMapper.selectByExample(e);
        logger.info(String.format("开始分析%s申报表数据", period));
        analysisJobService.analysisSales(orgs, period, EnumTbImportType.CoverImport.getCode());
    }


    @Test
    public void analysisTax() {
        Integer period = DateUtils.getPeriodNow();
        OrganizationExample e = new OrganizationExample();
        //e.createCriteria().andIsActiveEqualTo(true);
        List<Organization> orgs = organizationMapper.selectByExample(e);
        logger.info(String.format("开始分析%s返还后税数据", period));
        analysisJobService.analysisTax(orgs, period, EnumTbImportType.CoverImport.getCode());
    }

    @Test
    public void analysisTaxReturnEnd() {
        Integer period = DateUtils.getPeriodNow();
        OrganizationExample e = new OrganizationExample();
        //e.createCriteria().andIsActiveEqualTo(true);
        List<Organization> orgs = organizationMapper.selectByExample(e);
        logger.info(String.format("开始分析%s返还后税数据", period));
        analysisJobService.analysisTaxReturnEnd(orgs, period, EnumTbImportType.CoverImport.getCode());
    }

   /* @Autowired
    private EbsApiServiceImpl ebsApiService;
    @Test
    private void ebsTest(){
        ebsApiService.queryRemoteServerThenUpdateCF();
    }*/
}