package com.huatek.busi.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import com.alibaba.dubbo.config.annotation.Service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.huatek.busi.common.SiteConstants;
import com.huatek.busi.dto.ReadTableCurrentDto;
import com.huatek.busi.dto.ReadTableVisualization;
import com.huatek.busi.mapper.ReadTableVisualizationMapper;
import com.huatek.busi.service.ReadTableVisualizationService;
import com.huatek.busi.vo.ReadTableCurrentVo;
import com.huatek.busi.vo.ReadTableVisualizationVo;
import com.huatek.torch.frame.exception.OwlException;

/**
 * 读表、拍照数据
 * 
 * @author buck_guo
 * @date 2019/09/10
 */
@Component
@Service(interfaceClass = ReadTableVisualizationService.class)
@Transactional(rollbackFor = Exception.class)
public class ReadTableVisualizationServiceImpl implements ReadTableVisualizationService {

    @Autowired
    private ReadTableVisualizationMapper readTableVisualizationMapper;

    @Override
    public PageInfo<ReadTableVisualizationVo>
        findReadTableVisualizationPageData(ReadTableVisualization readTableVisualizatio) {
        return PageHelper.startPage(readTableVisualizatio.getPage(), readTableVisualizatio.getLimit()).doSelectPageInfo(
            () -> readTableVisualizationMapper.findReadTableVisualizationPageData(readTableVisualizatio));
    }

    @Override
    public PageInfo<ReadTableCurrentVo> findReadTableCurrentPageData(ReadTableCurrentDto readTableCurrentDto) {
        if (StringUtils.isEmpty(readTableCurrentDto.getType())) {
            readTableCurrentDto.setType(SiteConstants.BYQ);
        }
        if (SiteConstants.BYQ.equals(readTableCurrentDto.getType())) {
            return PageHelper.startPage(readTableCurrentDto.getPage(), readTableCurrentDto.getLimit()).doSelectPageInfo(
                () -> readTableVisualizationMapper.findTransformerReadTableCurrentPageData(readTableCurrentDto));
        }
        if (SiteConstants.GIS.equals(readTableCurrentDto.getType())) {
            return PageHelper.startPage(readTableCurrentDto.getPage(), readTableCurrentDto.getLimit()).doSelectPageInfo(
                () -> readTableVisualizationMapper.findGisReadTableCurrentPageData(readTableCurrentDto));
        }
        if (SiteConstants.BLQ.equals(readTableCurrentDto.getType())) {
            return PageHelper.startPage(readTableCurrentDto.getPage(), readTableCurrentDto.getLimit()).doSelectPageInfo(
                () -> readTableVisualizationMapper.findArresterReadTableCurrentPageData(readTableCurrentDto));
        }
        throw new OwlException("参数错误");
    }
}
