package jnpf.attendance.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.entity.attendance.AttendanceBalanceRecordEntity;
import jnpf.model.attendance.vo.attendance.AttendanceLeaveRulesVo;
import jnpf.model.attendance.vo.attendance.AttendancePublicHolidayBalance;
import jnpf.model.attendance.vo.attendance.LeaveConsumptionDetailVo;

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

/**
 * @author panpan
 * @description 用户余额获取记录表 Service接口
 * @version V2.0
 */
public interface AttendanceUserBalanceRecordService extends IService<AttendanceBalanceRecordEntity> {

    /**
     * 回滚用户余额记录
     * @param balanceId 假日类型Id（ftb_attendance_leave_rules）（存休时为空）
     * @param needRetirementLeave 需回滚的数据
     * @param leaveName 请假类型名称
     * @param isPublicHoliday 是否是公休触发--公休已单独处理日志这边不记录对应的日志
     */
    void rollbackUserBalanceRecord(List<AttendancePublicHolidayBalance> needRetirementLeave,String balanceId,String leaveName,boolean isPublicHoliday);

    /**
     * 需要转存劵的用户余额记录 （存休不能触发）
     * @param ruleIds 假日类型Id（ftb_attendance_leave_rules）
     * @param userIds 用户id
     */
    void needRetirementBalance(List<String> ruleIds,List<String> userIds);

    /**
     * 请假模拟消费
     * @param userLeaveDetail 假日类型对象
     * @param userId 用户id
     * @param balance 余额
     * @return  未抵扣的余额
     */
    LeaveConsumptionDetailVo leaveSimulationConsumption(String userId , BigDecimal balance, AttendanceLeaveRulesVo userLeaveDetail) ;

    /**
     * 请假消费劵
     * @param userLeaveDetail 假日类型（ftb_attendance_leave_rules）（存休时为空）
     * @param userId 用户id
     * @param balance 余额
     * @return  未抵扣的余额
     */
    LeaveConsumptionDetailVo leaveConsumption(String userId , BigDecimal balance, AttendanceLeaveRulesVo userLeaveDetail,Date startTime, Date endTime,String applyId) ;

}