/*
 * Author: wangjian
 * 生成Service
 */
package com.tofly.watermeter.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tofly.watermeter.custom.dto.UserBalanceDto;
import com.tofly.watermeter.custom.entity.dto.UpdateClientDto;
import com.tofly.watermeter.custom.entity.meterRead.AppRead;
import com.tofly.watermeter.custom.entity.meterRead.ReadSearch;
import com.tofly.watermeter.custom.entity.meterRead.readstatic.AuditMap;
import com.tofly.watermeter.custom.entity.meterRead.readstatic.ReadCollect;
import com.tofly.watermeter.entity.Cbqydbm;
import com.tofly.watermeter.entity.Qfcbplandetails;

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

/**
 * 抄表计划详情表；
 *
 * @author wangjieliu
 * @date Fri Nov 05 00:00:00 CST 2021
 */
public interface QfcbplandetailsService extends IService<Qfcbplandetails> {

    List<Map> downloadUserInfo();

    List<Map> getQyCollect(String isGeneral);

    List<Map> qydPlanCollect(String isGeneral, String qybm);

    IPage<AppRead> appDwonData(Page page , String isGeneral,String type,String zone);

    void initCbData();

    /**
     * 抄表数据生成
     */
    boolean initData();

    void initCbDataByMonth(Integer month , String monthPlan);
    void initCbDataByHbByMonth(String monthPlan);
    void initFrontThreeDataByMonth(String monthPlan);

    void initCbDataByHb();

    void initFrontThreeData();

    void initFrontThreeYearData();

    void initFrontThreeYearDataByMonth(String monthPlan);

    List<ReadCollect> getOffline(String yearMonth, String cbry, String qybm, String qydbm, String isGeneral , HttpServletResponse respons, String templateFlag);

    IPage<AuditMap> getOfflineInfo(Page page, ReadSearch search , HttpServletResponse response);

    AppRead getOfflineByYhbh(String yearMonth, String yhbh, String isGeneral , Long cbryId , String soleSign);

    void savePlanBatch(List<Qfcbplandetails> detailsList);

    void savePlanCbryBatch(List<Qfcbplandetails> detailsList);

    Map appCollect(String isGeneral, String yearMonth);


    void initCbslEveyDay();

    AppRead queryOfflineByYhbh(String cbrq, String yhbh);

    /**
     * 通过客户编号获取抄表数据
     * @param page page
     * @param client 客户编号
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return page
     */
    Page getClientMeterReading(Page page,String client,String startDate, String endDate);

    /**
     * 获取用户余额
     * @param clientCode 用户编号
     * @return list
     */
    List<UserBalanceDto> getUserBalance(String clientCode);

    /**
     * 获取缴费信息
     * @param page page
     * @param client 客户编号
     * @param type 查询类型 0 缴费 1欠费
     * @return page
     */
    Page getPaymentInfo(Page page,String client,Integer type);

    /**
     * 修改用户手机号
     * @return boolean
     */
    boolean updateUserPhone(UpdateClientDto dto);

    /**
     * 获取水表厂家线下
     * @return list
     */
    List<Map> getVendorInfo();

    /**
     * 获取用户基本信息
     * @param clientCode 用户编号
     * @return list
     */
    Map getBasicInformation(String clientCode);

    /**
     * 获取用户账单
     * @param clientCode 用户编号
     * @return page
     */
    Page getBillInfo(Page page,String clientCode,Integer type);

    /**
     * 获取账单总和
     * @return map
     */
    Map getBillTotal(String code,Integer type);

    /**
     * 获取当前用户区域
     * @return list
     */
    List<Map> getUserZone(String isGeneral);
}