package com.boman.web.core.service.attendance;

import com.alibaba.fastjson.JSONObject;
import com.boman.domain.dto.AjaxResult;
import com.boman.domain.dto.ClockOnDto;
import com.boman.domain.dto.FormDataDto;

import java.util.List;
import java.util.Map;

/**
  * @author shiqian
  * @date 2021年06月03日 15:44
  **/
public interface AttendanceService {

    /**
     * 功能描述: 根据tableName和userId查找当月考勤
     *
     * @param tableName tableName
     * @param userId  userId
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    AjaxResult attendanceRecord(String tableName, Long userId);


    /**
     * 根据tableName和userId查找当月考勤详细记录
     * @param dto
     * @return
     */
    AjaxResult detailedRecord(FormDataDto dto);

    /**
     * 功能描述: 显示是上班打卡还是下班打卡
     *
     * @param tableName tableName
     * @param userName  userName
     * @return java.lang.String
     */
    String showAttendanceType(String tableName, String userName);


    List<JSONObject> checkAttendanceType(String tableName, String userName);

    /**
     * 功能描述: 查询该人的一天打卡时间
     *
     * @param tableName tableName
     * @param userName  userName
     * @return com.boman.domain.dto.AjaxResult
     */
    JSONObject attendanceTime(String tableName, String userName);


    /**
     * 功能描述: 打卡
     *
     * @param dto     dto
     * @return com.alibaba.fastjson.JSONObject
     */
    JSONObject clockOn(ClockOnDto dto);

    /**
     * 按月统计人员考勤信息
     * @param map
     * @return
     */
    AjaxResult statisticsByMonth(Map<String, Object> map);

    /**
     * 查询用户某月的上班打卡时间
     * @param date
     * @param userId
     * @return
     */
    AjaxResult findDate(String date,Long userId);

    /**
     * 请假通过后,修改考勤表对应时间的是否请假
     * @return
     */
    AjaxResult updateAttendance(FormDataDto dto);
}
