package com.tofly.xrtygis.custom.service.dma.impl;

import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.common.core.util.DateUtil;
import com.tofly.xrtygis.custom.mapper.AreaSubTableMapper;
import com.tofly.xrtygis.custom.service.dma.AreaSubTableService;
import com.tofly.xrtygis.em.Constant;
import com.tofly.xrtygis.em.ExcelExportFileTypeEnum;
import com.tofly.xrtygis.strategy.ExcelStrategyContext;
import com.tofly.xrtygis.util.ExcelUtil;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * @author 20126
 */
@Service
@AllArgsConstructor
public class AreaSubTableServiceImpl implements AreaSubTableService {

    private final AreaSubTableMapper areaSubTableMapper;

    private final ExcelStrategyContext excelStrategyContext;

    /**
     * 获取全部片区信息
     *
     * @return list
     */
    @Override
    public List<Map> getArea() {
        return areaSubTableMapper.getArea();
    }

    /**
     * 获取抄表本信息
     *
     * @param cbpqbm 抄表片区编码
     * @return list
     */
    @Override
    public List<Map> getCopybook(String cbpqbm) {
        return areaSubTableMapper.getCopybook(cbpqbm);
    }

    /**
     * 查询区域分表信息
     *
     * @param page page
     * @param cbb  抄表本编码
     * @param cbpq 抄表片区
     * @param dto  模糊条件
     * @return page
     */
    @Override
    public Page getSubTable(Page page,String cbb, String dto) {
        return areaSubTableMapper.getSubTable(page, cbb, dto);
    }

    /**
     * excel导出
     *
     * @param response 上传
     * @param cbb      抄表本
     * @param cbpq     抄表片区
     * @param dto      模糊查询条件
     */
    @Override
    public void exportSubTable(HttpServletResponse response,String cbb, String dto) {
        List<Map> mapList = areaSubTableMapper.exportSubTable(cbb, dto);

        // 根据templateServiceType,templateFlag获取对应模板数据
        ExcelExportFileTypeEnum excelExportFileTypeEnum = ExcelExportFileTypeEnum.getExcelExportFileTypeEnum("exportSubTableService", "1");
        if (null == excelExportFileTypeEnum) {
            return;
        }
        //将查询的结果转json字符串的格式，因为导出的时候只能传一个字符串
        String resultListToString = JSONArray.toJSONString(mapList);
        // 从模型类型枚举根据templateServiceType获取策略对应模板数据
        List<Map<String, Object>> dataList = excelStrategyContext.getExportData("exportSubTableService","1", resultListToString);
        ExcelUtil.export(dataList.get(0), excelExportFileTypeEnum, Constant.FILE_PATH_TEST_EXPORT_EXCEL, response);
    }

    /**
     * 获取客户用水量
     *
     * @param khbh  客户编号
     * @param start 开始时间
     * @param end   结束时间
     * @return page
     */
    @Override
    public Page getUseWater(Page page,String khbh, String start, String end) {
        Page<Map> useWater;
        if (start != null && end != null){
            useWater = areaSubTableMapper.getUseWater(page, khbh, DateUtil.formatDate(start, "yyyy-MM-dd HH:mm:ss"), DateUtil.formatDate(end, "yyyy-MM-dd HH:mm:ss"));
        }else {
            useWater = areaSubTableMapper.getUseWater(page, khbh, null,null);
        }
        return useWater;
    }
}
