/*
 * 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.BwsbazTemp;
import com.tofly.watermeter.custom.entity.Statistic;
import com.tofly.watermeter.custom.entity.StatisticResult;
import com.tofly.watermeter.entity.Bwrksbdatail;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

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

/**
 * 入库水表明细表
 *
 * @author admin
 * @date Wed Mar 10 00:00:00 CST 2021
 */
public interface BwrksbdatailMapper extends BaseMapper<Bwrksbdatail> {
    //    String getStateName(@Param("sbzt") String sbzt);
    int insertBatch(@Param("sbList") List<Bwrksbdatail> sbList, @Param("sbAll") Bwrksbdatail sbAll);

    void updateAzSb(@Param("list") List<BwsbazTemp> tempList, @Param("user") Long user);

//    String getGspqName(@Param("gspq") String gspq);

    Bwrksbdatail getById(@Param("sbId") Long sbId);

    String getVendor(@Param("id") Long id);

    String getCoordinateX(@Param("sbbh") String sbbh);
    String getCoordinateY(@Param("sbbh") String sbbh);

    String getCal(@Param("id") Long id);
    String getType(@Param("id") Long id);
    String getState(@Param("id") Long id);
    String turnOver(@Param("id") Long id);
    String getCodeById(@Param("id") Long id);
    /**
     * 根据水表ID查询厂家、口径、类型、状态
     *
     * @param sbId
     * @return
     */
    Bwrksbdatail getSbById(@Param("sbId") Long sbId);

    Long getNumAndQz(Long rkId);

    Bwrksbdatail getSbXq(@Param("sbbh") String sbbh);

    Bwrksbdatail getByYhbh(@Param("yhbh") String yhbh);

    IPage<Map> getInstall(Page page, @Param("sta") Statistic statistic ,
                          @Param("cj") List<String> cjList,@Param("kj") List<String> kjList,@Param("lx") List<String> lxList);

    IPage<Map> getCkSb(Page page, @Param("sta") Statistic statistic ,
                       @Param("cj") List<String> cjList,@Param("kj") List<String> kjList,@Param("lx") List<String> lxList);

    /**
     * 厂家汇总数量统计
     * （如果是按照月份查询，那么还会对月份进行分组，如果按照具体时间，则只会对厂家分组查询）
     * @param statistic 查询条件
     * @param cjList 厂家查询条件集合
     * @param kjList 口径查询条件集合
     * @param lxList 类型查询条件集合
     * @return 集合
     */
    List<StatisticResult> getMonthCj(@Param("sta") Statistic statistic , @Param("cj") List<String> cjList,
                                     @Param("kj") List<String> kjList, @Param("lx") List<String> lxList);
    /**
     * 分具体厂家、口径、类型数量统计
     * （如果是按照月份查询，那么还会对月份进行分组，如果按照具体时间，则只会对厂家分组查询）
     * @param statistic 查询条件
     * @param cjList 厂家查询条件集合
     * @param kjList 口径查询条件集合
     * @param lxList 类型查询条件集合
     * @return 集合
     */
    List<StatisticResult> getMonthSpecific(@Param("sta") Statistic statistic , @Param("cj") List<String> cjList,
                                           @Param("kj") List<String> kjList, @Param("lx") List<String> lxList);


    IPage<Bwrksbdatail> getHbInfo(Page page, @Param("sta") Statistic statistic);

    List<Long> getUserIdByName(@Param("userName") String userName);

    IPage<Map> getScrapInfo(@Param("cj") Long cj, @Param("kj") Long kj, @Param("lx") Long lx, @Param("state") String state);

    void updateGdZt(@Param("gdId") Long gdId, @Param("zt") int zt);

    /**
     * 根据水表编号获取水表部分信息
     *
     * @param number 水表编号
     * @return list
     */
    @Select("select BW_KHDZ                                                       khdz,\n" +
            "               (select CNAME from TF_YWPN_SYSCHILDCODE_D where ID = BW_SBCJ) sbcj,\n" +
            "               BW_SBCJ,\n" +
            "               (select CNAME from TF_YWPN_SYSCHILDCODE_D where ID = BW_SBLX) sblx,\n" +
            "               BW_SBLX,\n " +
            "               (select CNAME from TF_YWPN_SYSCHILDCODE_D where ID = BW_SBKJ) sbkj,\n" +
            "               BW_SBKJ,\n" +
            "               X,\n" +
            "               Y\n" +
            "        from TF_YWPN_BWRKSBDATAIL_W b\n" +
            "                 left join TF_YWPN_WATERMETER_W w on b.BW_SBBH = w.SID\n" +
            "        where BW_SBBH = #{number,jdbcType=VARCHAR} and bw_sbzt in (57,59)")
    Map<String, Object> numberGetInfo(@Param("number") String number);

    @Select("select distinct BW_SBBH from TF_YWPN_BWRKSBDATAIL_W where BW_SBBH like ${str} order by BW_SBBH")
    List<String> likeNumber(@Param("str") String str);

    @Select("select ID from TF_YWPN_DMATABLE_W where SCH = #{code}")
    List getDmaTable(@Param("code") String code);


}
