package pwc.taxtech.atms.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import pwc.taxtech.atms.dpo.RevenueDetailDto;
import pwc.taxtech.atms.dto.revenueDetail.RevenueDetailParam;
import pwc.taxtech.atms.dto.revenueDetail.RevenueDetailResult;
import pwc.taxtech.atms.vat.dao.TrialBalanceFinalMapper;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;

@Service
public class RevenueDetailService extends BaseService {

    @Resource
    private TrialBalanceFinalMapper trialBalanceFinalMapper;


    /**
     * @param param
     * @return
     */
    public PageInfo<RevenueDetailResult> queryPage(RevenueDetailParam param) {
        Page page = PageHelper.startPage(param.getPageInfo().getPageIndex(), param.getPageInfo().getPageSize());
        List<RevenueDetailDto> dataList = trialBalanceFinalMapper.queryBalanceWithRevenueConfig(param.getAccountCode(), param.getAccountName(), param.getType(), param.getProfitCenterCode(), param.getProfitCenterName(), param.getTaxOn(), param.getProductCode(), param.getProductName(), param.getCategory(), param.getProjectId(), param.getPeriod(), param.getQueryDate());
        PageInfo<RevenueDetailResult> pageInfo = new PageInfo<>(dataList.stream()
                .map(o -> beanUtil.copyProperties(o, new RevenueDetailResult())).collect(Collectors.toList()));
        pageInfo.setTotal(page.getTotal());
        return pageInfo;
    }


}