package org.linlinjava.jz.db.dao;

import org.apache.ibatis.annotations.Param;
import org.linlinjava.jz.db.domain.HmEmployClock;
import org.linlinjava.jz.db.domain.HmEmployClockExample;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

public interface HmEmployClockMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    long countByExample(HmEmployClockExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int deleteByExample(HmEmployClockExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int deleteByPrimaryKey(Long id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int insert(HmEmployClock record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int insertSelective(HmEmployClock record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    HmEmployClock selectOneByExample(HmEmployClockExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    HmEmployClock selectOneByExampleSelective(@Param("example") HmEmployClockExample example, @Param("selective") HmEmployClock.Column ... selective);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    List<HmEmployClock> selectByExampleSelective(@Param("example") HmEmployClockExample example, @Param("selective") HmEmployClock.Column ... selective);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    List<HmEmployClock> selectByExample(HmEmployClockExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    HmEmployClock selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") HmEmployClock.Column ... selective);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    HmEmployClock selectByPrimaryKey(Long id);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int updateByExampleSelective(@Param("record") HmEmployClock record, @Param("example") HmEmployClockExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int updateByExample(@Param("record") HmEmployClock record, @Param("example") HmEmployClockExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int updateByPrimaryKeySelective(HmEmployClock record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table hm_employ_clock
     *
     * @mbg.generated
     */
    int updateByPrimaryKey(HmEmployClock record);

    long getHoursOfMonthClock(@Param("employRelationId") Long employRelationId, @Param("isRestday") Integer isRestday, @Param("isHoliday") Integer isHoliday, @Param("startTime") LocalDate startTime, @Param("endTime") LocalDate endTime);

    List<Map<String, Object>> queryByMonth(@Param("employRelationId") Long employRelationId, @Param("date") String date);
}