package jnpf.attendance.mapper;

import jnpf.base.mapper.SuperMapper;
import jnpf.entity.attendance.AttendanceMachineManage;
import org.apache.ibatis.annotations.Param;

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

/**
 * 考勤机管理mapper
 *
 * @author yanwenfu
 * @create 2024-09-10
 */
public interface AttendanceMachineManageMapper extends SuperMapper<AttendanceMachineManage> {

    /**
     * 查询考勤机绑定的考勤组
     * @param machineId 考勤机id
     * @return java.lang.String
     */
    String getGroupIdsByMachine(String machineId);

    /**
     * 查询总条数
     * @return int
     */
    int getTotal();

    /**
     * 查询名称数量
     * @param name 考勤机名称
     * @param id 考勤机id
     * @return int
     */
    int getMachineNameCount(@Param("name") String name, @Param("id") String id);

    /**
     * 查询mac数量
     * @param mac 考勤机mac
     * @param id 考勤机id
     * @return int
     */
    int getMachineMacCount(@Param("mac") String mac, @Param("id") String id);

    /**
     * 查询考勤机名称
     * @param mac mac地址
     * @return java.lang.String
     */
    String getMachineName(String mac);

    /** 获取数据库时间 */
    Date getDbTime();

    /**
     * 查询关联此考勤组的考勤机
     * @param groupId 考勤组id
     * @return java.util.List<jnpf.entity.attendance.AttendanceMachineManage>
     */
    List<AttendanceMachineManage> getRelationMachineByGroupId(String groupId);

    /**
     * 更新考勤机的考勤组关联
     * @param id 考勤机id
     * @param groupIds 考勤组关联
     * @return int
     */
    int updateRelationGroup(@Param("id") String id, @Param("groupIds") String groupIds);

    /**
     * 查询绑定了考勤机的考勤组
     * @return java.lang.String
     */
    String selectGroupBindMachine();

    /**
     * 查询考勤机列表
     * @param machineKind 考勤机类型(enCode)
     * @param keywords 关键词(mac, 设备名称)
     * @param scopeType 适配范围(1: 成员, 2: 组织)
     * @param scopeValueList 适配范围的值
     * @param bizType 业务类型
     * @return java.util.List<jnpf.entity.attendance.AttendanceMachineManage>
     */
    List<AttendanceMachineManage> getMachineList(@Param("machineKind") String machineKind, @Param("keywords") String keywords,
                                                 @Param("scopeType") Integer scopeType, @Param("list") List<String> scopeValueList, @Param("bizType") String bizType);
}
