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

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tofly.watermeter.custom.entity.file.FileInfo;
import com.tofly.watermeter.custom.entity.meterRead.AppRead;
import com.tofly.watermeter.custom.entity.meterRead.ReadStatisticsDetail;
import com.tofly.watermeter.custom.entity.meterRead.readstatic.AuditMap;
import com.tofly.watermeter.entity.Qfcbqfmx;
import com.tofly.watermeter.entity.Readmeterhis;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 抄表业务抄表欠费明细表
 *
 * @author wangjieliu
 * @date Wed Apr 14 00:00:00 CST 2021
 */
public interface QfcbqfmxMapper extends BaseMapper<Qfcbqfmx> {
    String getAuditName(@Param("shbz") String shbz);

    String getCbbzName(@Param("cbbz") String cbbz);

    String getAuditResultName(@Param("result") String result);

    List<FileInfo> getFileByIds(@Param("fileIds") String fileIds);

    /**
     * 这个查询是由于抄表并发导致文件ID多个重复，所以加个抄表人员查询
     * @param fileIds
     * @return
     */
    List<FileInfo> getFileByIdsAndCbry(@Param("fileIds") String fileIds , @Param("cbry")Long cbry);

    String getDiffTimeStr(@Param("diffTime") String diffTime);

    String getcbbzName(@Param("cbbz") String cbbz);

//    List<Map> getReadAppPlan(Page page , @Param("search") ReadSearch search);

    boolean updateReadPlan(@Param("cwrq") String cwRq, @Param("list") List<String> yhbhList);

    List<Map> staPlanByCbb(@Param("list") List<String> cbbList, @Param("cwRq") String cwRq);

    /**
     * 抄表数据
     *
     * @return
     */
    IPage<AppRead> getListByYhbh(Page page, @Param("day") Integer day, @Param("monthPlan") String month,
                                 @Param("isGeneral") String isGeneral, @Param("cbry") Long cbry, @Param("planId") Long planId,@Param("type") String type,@Param("zone") String zone);

    /**
     * 查询客户基本信息
     *
     * @param byKhjbxxList 用户
     * @return
     */
    List<AppRead> getKhjbxx(@Param("list") List<Readmeterhis> byKhjbxxList,
                            @Param("monthPlan") String month, @Param("isGeneral") String isGeneral);

//    long getBeforeOne(@Param("yhbh") String yhbh);
//    long getBeforeTwo(@Param("yhbh") String yhbh);
//    long getBeforeThree(@Param("yhbh") String yhbh);

    boolean updateCb(@Param("list") List<Qfcbqfmx> collect);

    IPage<AuditMap> getAuditCbData(Page page, @Param("startTime") String startTime,
                                   @Param("cbpq") String cbpq, @Param("cbb") String cbb,
                                   @Param("cbry") String cbry, @Param("isDis") String isDis,
                                   @Param("isGeneral") String isGeneral);

    IPage<AuditMap> getOfflineInfo(Page page, @Param("cwyf") String cwyf,
                                   @Param("cbpqList") List<String> cbpq, @Param("cbbList") List<String> cbb,
                                   @Param("cbryList") List<String> cbry, @Param("isDis") String isDis,
                                   @Param("isGeneral") String isGeneral, @Param("state") String state,
                                   @Param("isEstimate") String isEstimate, @Param("issyn") String issyn,
                                   @Param("cbfsList") List<String> cbfsList,@Param("inputContent")String inputContent,
                                   @Param("isUpdate")String isUpdate);

    IPage<AuditMap> getOfflineInfo2(Page page, @Param("cwyf") String cwyf,
                                    @Param("cbpqList") List<String> cbpq, @Param("cbbList") List<String> cbb,
                                    @Param("cbryList") List<String> cbry, @Param("isDis") String isDis,
                                    @Param("isGeneral") String isGeneral, @Param("state") String state,
                                    @Param("isEstimate") String isEstimate, @Param("issyn") String issyn,
                                    @Param("cbfsList") List<String> cbfsList);

    IPage<AuditMap> cardUpdateTwo(Page page, @Param("cwyf") String cwyf, @Param("qybmList")List<String> qybmList,
                                  @Param("qydbmList")List<String> qydbmList, @Param("cbryList")List<String> cbryList,
                                  @Param("isGeneral")String isGeneral, @Param("state")String state,
                                  @Param("inputContent")String inputContent, @Param("isUpdate")String isUpdate);


    List<AuditMap> getOfflineInfoList(@Param("cwyf") String cwyf,
                                      @Param("cbpqList") List<String> cbpq, @Param("cbbList") List<String> cbb,
                                      @Param("cbryList") List<String> cbry, @Param("isDis") String isDis,
                                      @Param("isGeneral") String isGeneral, @Param("state") String state,
                                      @Param("isEstimate") String isEstimate, @Param("issyn") String issyn,
                                      @Param("cbfsList") List<String> cbfsList,@Param("inputContent")String inputContent ,
                                      @Param("isUpdate")String isUpdate);

    List<AuditMap> getOfflineInfoList2(@Param("cwyf") String cwyf,
                                       @Param("cbpqList") List<String> cbpq, @Param("cbbList") List<String> cbb,
                                       @Param("cbryList") List<String> cbry, @Param("isDis") String isDis,
                                       @Param("isGeneral") String isGeneral, @Param("state") String state,
                                       @Param("isEstimate") String isEstimate, @Param("issyn") String issyn,
                                       @Param("cbfsList") List<String> cbfsList);

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

    AppRead queryOfflineByYhbh(@Param("cbrq") String cbrq, @Param("yhbh") String yhbh);
    /**
     * 抄表查询
     *
     * @param page
     * @param qybm
     * @param qydbm
     * @param cbState
     * @param auditState
     * @return
     */
    IPage<ReadStatisticsDetail> getReadQuery(Page page, @Param("qybm") String qybm, @Param("qydbm") String qydbm,
                                             @Param("cb") String cbState, @Param("audit") String auditState, @Param("input") String input,
                                             @Param("cwyf") String cwyf , @Param("isGeneral") String isGeneral);


    int insertOrUpdate(@Param("list") List<Qfcbqfmx> list);

    Page<Map> getCustomerInfo(Page page, @Param("code") String code);

}
