package com.sunxung.factoring.service.sys.workingDayManage;

import com.sunxung.factoring.entity.sys.workingDayManage.WorkingDayManage;

import java.util.Date;
import java.util.List;

public interface WorkingDayManageService {

    /**
     * 根据yyyy-MM格式年月查询数据. <br/>
     *
     * @param yearMonth
     * @return
     */
    List<WorkingDayManage> findByMonth(String yearMonth);

    WorkingDayManage add(WorkingDayManage workingDay);

    WorkingDayManage update(WorkingDayManage workingDay);

    WorkingDayManage get(Long id);

    boolean delete(Long id);

    /**
     * 根据日期查询数据. <br/>
     *
     * @param dateTime
     * @return
     */
    WorkingDayManage getByDateTime(Date dateTime);

    /**
     * 获取一段日期范围内的工作日管理信息
     *
     * @param start 开始日期
     * @param end   结束日期
     * @return
     */
    List<WorkingDayManage> findByStartEndDate(Date start, Date end);

    /**
     * 添加指定时间段内工作日数据. <br/>
     *
     * @param begin
     * @param end
     */
    void addBetweenDates(String begin, String end);

    /**
     * 获取最大的年份. <br/>
     *
     * @return
     */
    String getMaxYear();

    /**
     * 获取指定日期的下一个工作日
     *
     * @return
     */
    Date getNextWorkDay(Date dateTime);

    /**
     * 获取指定日期的上一个工作日
     *
     * @return
     */
    Date getLastWorkDay(Date dateTime);

    /**
     * 根据指定日期，指定间隔获取对应工作日
     *
     * @param dateTime
     * @param interval
     * @return
     */
    Date getWorkDay(Date dateTime, Integer interval);
}
