package com.starry.admin.modules.clerk.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.starry.admin.modules.clerk.module.entity.PlayClerkWagesInfoEntity;
import com.starry.admin.modules.clerk.module.vo.PlayClerkWagesInfoQueryVo;
import com.starry.admin.modules.clerk.module.vo.PlayClerkWagesInfoReturnVo;
import java.time.LocalDate;
import java.util.List;

/**
 * 店员工资结算信息Service接口
 *
 * @author admin
 * @since 2024-05-31
 */
public interface IPlayClerkWagesInfoService extends IService<PlayClerkWagesInfoEntity> {

    /**
     * 根据店员ID查询店员工资结算信息
     *
     * @param clerkId
     *            店员ID
     * @return 店员工资结算信息
     */
    PlayClerkWagesInfoEntity selectCurrentPeriodWagesByClerkId(String clerkId);

    /**
     * 根据店员ID查询店员往期工资
     *
     * @param clerkId
     *            店员ID
     * @return 店员工资结算信息
     */
    List<PlayClerkWagesInfoEntity> selectHistoricalWagesByClerkId(String clerkId);

    /**
     * 获取最后一次统计
     *
     * @param clerkId
     *            店员ID
     * @return 上次结算时间
     */
    PlayClerkWagesInfoEntity getLastSettlement(String clerkId);

    /**
     * 获取最后一次统计
     *
     * @param clerkId
     *            店员ID
     * @return 上次结算时间
     */
    LocalDate getLastSettlementTime(String clerkId);

    /**
     * 查询店员工资结算信息
     *
     * @param id
     *            店员工资结算信息主键
     * @return 店员工资结算信息
     */
    PlayClerkWagesInfoEntity selectPlayClerkWagesInfoById(String id);

    /**
     * 分页查询工资统计信息
     *
     * @param vo
     *            统计统计查询对象
     * @return 查询工资统计信息
     */
    IPage<PlayClerkWagesInfoReturnVo> selectHistoricalByPage(PlayClerkWagesInfoQueryVo vo);

    /**
     * 查询店员工资结算信息列表
     *
     * @param playClerkWagesInfo
     *            店员工资结算信息
     * @return 店员工资结算信息集合
     */
    IPage<PlayClerkWagesInfoEntity> selectPlayClerkWagesInfoByPage(PlayClerkWagesInfoEntity playClerkWagesInfo);

    /**
     * 新增店员工资结算信息
     *
     * @param playClerkWagesInfo
     *            店员工资结算信息
     * @return 结果
     */
    boolean create(PlayClerkWagesInfoEntity playClerkWagesInfo);

    /**
     * 修改店员工资结算信息
     *
     * @param playClerkWagesInfo
     *            店员工资结算信息
     * @return 结果
     */
    boolean update(PlayClerkWagesInfoEntity playClerkWagesInfo);

    /**
     * 批量删除店员工资结算信息
     *
     * @param ids
     *            需要删除的店员工资结算信息主键集合
     * @return 结果
     */
    int deletePlayClerkWagesInfoByIds(String[] ids);

    /**
     * 删除店员工资结算信息信息
     *
     * @param id
     *            店员工资结算信息主键
     * @return 结果
     */
    int deletePlayClerkWagesInfoById(String id);
}
