package com.yc.ship.module.resource.service.guidecheckin;


import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.resource.controller.admin.guidecheckin.vo.GuideCheckInPageReqVO;
import com.yc.ship.module.resource.controller.admin.guidecheckin.vo.GuideCheckInRespVO;
import com.yc.ship.module.resource.controller.admin.guidecheckin.vo.GuideCheckInSaveReqVO;
import com.yc.ship.module.resource.dal.dataobject.guidecheckin.GuideCheckInDO;

import javax.validation.Valid;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 导游出勤 Service 接口
 *
 * @author 管理员
 */
public interface GuideCheckInService {

    /**
     * 创建导游出勤
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String createGuideCheckIn(@Valid GuideCheckInSaveReqVO createReqVO);

    /**
     * 更新导游出勤
     *
     * @param updateReqVO 更新信息
     */
    void updateGuideCheckIn(@Valid GuideCheckInSaveReqVO updateReqVO);

    /**
     * 删除导游出勤
     *
     * @param id 编号
     */
    void deleteGuideCheckIn(String id);

    /**
     * 获得导游出勤
     *
     * @param id 编号
     * @return 导游出勤
     */
    GuideCheckInDO getGuideCheckIn(String id);

    /**
     * 获得导游出勤分页
     *
     * @param pageReqVO 分页查询
     * @return 导游出勤分页
     */
    PageResult<GuideCheckInRespVO> getGuideCheckInPage(GuideCheckInPageReqVO pageReqVO);
    
    /** 
     * &#064;Description //TODO 获取考勤数据
     * &#064;Author liuxlh
     * &#064;Date 2025/8/6 14:37
     * @Param [pageReqVO]
     * @return java.util.List<com.zshl.dispatch.ops.store.controller.admin.guidecheckin.vo.GuideCheckInRespVO>
     **/
    List<GuideCheckInRespVO> getGuideCheckInList(GuideCheckInPageReqVO pageReqVO);

    /** 
     * &#064;Description //TODO 获取导游或驾驶员是否请假
     * &#064;Author liuxlh
     * &#064;Date 2025/8/6 14:39
     * @Param [pageReqVO]
     * @return boolean true:请假，false:未请假
     **/
    boolean validateGuideOrDriverCheckIn(GuideCheckInPageReqVO pageReqVO);

    /**
     * &#064;Description 考勤统计（按月为单位YYYY-MM,id-导游id/驾驶员id）
     * &#064;Author liuxlh
     * &#064;Date 2025/8/12 14:39
     * @Param  [id-导游id/驾驶员id, dateM]
     **/
    public List<Map> checkInData(String id,Date dateM);
    /**
     * &#064;Description 考勤统计（按天为单位YYYY-MM-dd,id-导游id/驾驶员id）
     * &#064;Author liuxlh
     * &#064;Date 2025/8/12 14:39
     * @Param  [id-导游id/驾驶员id, dateM]
     **/
    public List<Map> checkInStatistics(String id,Date dateD);

}
