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.BillDetailDto;
import pwc.taxtech.atms.dto.billDetail.BillDetailParam;
import pwc.taxtech.atms.dto.billDetail.BillDetailResult;
import pwc.taxtech.atms.vat.dao.BillDetailMapper;
import pwc.taxtech.atms.vat.entity.BillDetail;

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

@Service
public class BillDetailService extends BaseService {

    @Resource
    private BillDetailMapper billDetailMapper;



    public PageInfo<BillDetailResult> queryPage(BillDetailParam param) {
        Page page = PageHelper.startPage(param.getPageInfo().getPageIndex(), param.getPageInfo().getPageSize());
        List<BillDetailDto> dataList = billDetailMapper.queryBillWithRevenueConf(param.getBillType(), param.getCustomer(), param.getBillNumber(), param.getRevenueCofId(), param.getBillContent(), param.getDepartment(), param.getBillTaxRat(), param.getBillDate(), param.getProjectId(), param.getPeriod(), param.getQueryDate());
        PageInfo<BillDetailResult> pageInfo = new PageInfo<>(dataList.stream()
                .map(o -> beanUtil.copyProperties(o, new BillDetailResult())).collect(Collectors.toList()));
        pageInfo.setTotal(page.getTotal());
        return pageInfo;
    }

    public List<String> queryBillTypeGroupBy(String projectId,Integer period){
        return billDetailMapper.queryBillTypeGroupBy(projectId,period);
    }

    public void updateBillDetail(BillDetail billDetail) {
        billDetailMapper.updateByPrimaryKeySelective(billDetail);
    }
}