package com.tofly.feesapi.cbgl.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.tofly.feesapi.bjgl.entity.YhCbkxx;
import com.tofly.feesapi.cbgl.entity.YyCblr;
import com.tofly.feesapi.cbgl.entity.dto.*;
import com.tofly.feesapi.cbgl.entity.vo.*;
import com.tofly.feesapi.common.core.dto.PageDto;
import com.tofly.feesapi.common.core.vo.PageResult;
import com.tofly.feesapi.common.core.vo.ResultVo;

import com.tofly.feesapi.mxcx.entity.dto.QftjSeachFilter;
import com.tofly.feesapi.sfgl.entity.dto.YyQfmxStatFilter;
import com.tofly.feesapi.sfgl.entity.vo.YyStat;
import com.tofly.feesapi.yhgl.entity.dto.YhKhjbxxInsert;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 * 抄表计划_抄表录入
 */
public interface YyCblrService extends IService<YyCblr> {

    YyCblr save(YhKhjbxxInsert insert, YhCbkxx cbkxx);

    PageResult<YyCblrSelect> getPage(PageDto pageDto, YyCblrFilter filter);

    PageResult<YyCblrSelect> lycbglfy(PageDto pageDto, YyCblrFilter filter);

    List<String> getCbkids(YyCblrFilter filter);

    YyCblrView getViewById(String yhbh, String cbkh);

    boolean update(YyCblrUpdate update);

    List<YyCblrSelect> getList(YyCblrFilter filter);

    List<YyCblrSelect> getListCbmx(YyCblrFilter filter);

    YyStat stat(YyQfmxStatFilter filter);

    /**
     * 抄表水量统计
     */
    List<CbSltjSelect> cbsltj(YyCblrtjFilter filter);

    /**
     * 生成抄表录入记录
     */
    void sccblr();

    /**
     * 抄表率统计
     */
    List<CbltjSelect> cbltj(YyCblrtjFilter filter);

    /**
     * 抄表异常明细
     */
    PageResult<YyCbycmxSelect> cbycmx(PageDto pageDto, YyCbycmxFilter filter);

    /**
     * 抄表异常明细
     */
    List<YyCbycmxSelect> cbycmx(YyCbycmxFilter filter);

    void updateJsbz(String cbkid);

    CblrCountSelect getPage2(PageDto pageDto, YyCblrFilter filter);

    /**
     *  根据用户编号查询抄表记录
     */
    List<YyCblrSelect> getCbjl(QftjSeachFilter filter);

    /**
     * 总分表水量、已抄数、总数合计
     */
    Map getZfCblrMap(String cbkid);

    /**
     * 子母表水量、已抄数、总数合计
     */
    Map getZmCblrMap(String cbkid);

    /**
     *  月末结算抄表,完成自动审核和自动算费
     */
    void cbymjz();

    void jtljlql();

    /**
     * 上传信息
     */
    ResultVo appUploadInfo(AppCblrUpload uploadInfo, Date date);

    Map<String, BigDecimal> getZbFbs();

    ZcbcssltjDto zcbcszsltj(QftjSeachFilter filter);

    TreeMap<String,List<CblrSflxSelect>> getSlfxtj(CblrSflxFilter filter);

    List<CblrSflxSelect> getSlfxtj1(CblrSflxFilter filter);


    /*水量分析报表*/
    PageResult<CblrSflxSelect> getSllxfxReport(PageDto pageDto, CblrSflxFilter filter);


}
