package com.hzs.member.base.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.detail.CuMemberAchieveLog;
import com.hzs.member.base.vo.CuMemberAchieveLogVO;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 注水业绩记录表 Mapper 接口
 */
public interface CuMemberAchieveLogMapper extends BaseMapper<CuMemberAchieveLog> {

    /**
     * 特殊业务-注水业绩记录查询
     **/
    List<CuMemberAchieveLogVO> queryMemberAchieveLogList(@Param("memberCode") String memberCode,
                                                         @Param("memberName") String memberName,
                                                         @Param("pkCountry") Integer pkCountry,
                                                         @Param("pkAwards") Integer pkAwards,
                                                         @Param("pkTeamCode") Integer pkTeamCode,
                                                         @Param("pkVertex") Integer pkVertex,
                                                         @Param("startDate") Date startDate,
                                                         @Param("endDate") Date endDate,
                                                         @Param("staDueDate") Date staDueDate,
                                                         @Param("endDueDate") Date endDueDate,
                                                         @Param("waterStatus") Integer waterStatus,
                                                         @Param("infusingWaterType") Integer infusingWaterType
    );

    /**
     * 根据历史期数查询历史业绩
     **/
    List<CuMemberAchieveLogVO> queryMemberAchieveHistoryList(@Param("calList") List<CuMemberAchieveLogVO> calList);

    /**
     * 特殊业务-注水业绩-审核列表
     **/
    List<CuMemberAchieveLogVO> queryTryAchieveLogList(@Param("approveStatus") Integer approveStatus,
                                                      @Param("businessNo") String businessNo);


    /**
     * 查询会员当期业绩
     **/
    List<CuMemberAchieveLogVO> searchList(@Param("tableName") String tableName,
                                          @Param("memberCode") String memberCode,
                                          @Param("pkMemberList") Set<Long> pkMemberList);

    /**
     * 查询单个会员当期业绩
     **/
    CuMemberAchieveLogVO searchOne(@Param("tableName") String tableName,
                                   @Param("pkMember") Long pkMember);

    /**
     * 查询最大审核次数
     **/
    Integer selectByMaxApproveNumber(@Param("pkMember") Long pkMember, @Param("approveStatus") int approveStatus);

    /**
     * 通过注水修改业绩
     **/
    boolean updateSearch(@Param("tableName") String tableName,
                         @Param("asumRealPv") BigDecimal asumRealPv,
                         @Param("bsumRealPv") BigDecimal bsumRealPv,
                         @Param("afirstPv") BigDecimal afirstPv,
                         @Param("bfirstPv") BigDecimal bfirstPv,
                         @Param("abalance") BigDecimal abalance,
                         @Param("bbalance") BigDecimal bbalance,
                         @Param("repASumPv") BigDecimal repASumPv,
                         @Param("repBSumPv") BigDecimal repBSumPv,
                         @Param("repABalance") BigDecimal repABalance,
                         @Param("repBBalance") BigDecimal repBBalance,
                         @Param("pkModified") Long pkModified,
                         @Param("pkMember") Long pkMember,
                         @Param("pkCountry") Integer pkCountry);

    /**
     * 校验是否存在未审核数据
     **/
    List<CuMemberAchieveLogVO> checkAchieveList(CuMemberAchieveLogVO memberAchieveLogVO);

}
