package cn.iocoder.yudao.module.attendance.service.business;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.attendance.api.business.dto.AttendanceBusinessCreateReqDTO;
import cn.iocoder.yudao.module.attendance.controller.admin.business.vo.AttendanceBusinessPageReqVO;
import cn.iocoder.yudao.module.attendance.controller.admin.business.vo.AttendanceBusinessSaveReqVO;
import cn.iocoder.yudao.module.attendance.dal.dataobject.business.AttendanceBusinessDO;

import javax.validation.Valid;
import java.time.LocalDate;

/**
 * 出差信息 Service 接口
 *
 * @author zhaopq
 */
public interface AttendanceBusinessService {

    /**
     * 创建出差信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createBusiness(@Valid AttendanceBusinessSaveReqVO createReqVO);

    /**
     * 审批完成添加出差信息
     *
     * @param businessCreateReqDTO 出差信息
     * @return 编号
     */
    Long createBusinessInfoAfterAudit(AttendanceBusinessCreateReqDTO businessCreateReqDTO);

    /**
     * 更新出差信息
     *
     * @param updateReqVO 更新信息
     */
    void updateBusiness(@Valid AttendanceBusinessSaveReqVO updateReqVO);

    /**
     * 删除出差信息
     *
     * @param id 编号
     */
    void deleteBusiness(Long id);

    /**
     * 获得出差信息
     *
     * @param id 编号
     * @return 出差信息
     */
    AttendanceBusinessDO getBusiness(Long id);

    /**
     * 获得出差信息分页
     *
     * @param pageReqVO 分页查询
     * @return 出差信息分页
     */
    PageResult<AttendanceBusinessDO> getBusinessPage(AttendanceBusinessPageReqVO pageReqVO);

    AttendanceBusinessDO selectByDateAndEmployeeId(LocalDate date, Long employeeId);


}