package com.bonus.system.att.dao;

import com.bonus.system.att.entity.AttDataBean;
import com.bonus.system.att.entity.AttGroupBean;
import com.bonus.system.att.entity.AttGroupCheckOrgBean;
import com.bonus.system.basic.domain.SysTree;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

/**
 * 考勤组-数据访问层
 *
 * @author zys
 */
@Repository("attGroupDao")
public interface AttGroupDao {

    /**
     * 获取考勤组列表
     *
     * @param bean 参数
     * @return list bean
     */
    List<AttGroupBean> selectAttGroupList(AttGroupBean bean);

    /**
     * 查询组织选择列表
     *
     * @return list bean
     */
    List<AttGroupCheckOrgBean> selectOrgList();

    /**
     * 删除考勤组
     *
     * @param groupId 考勤组编号
     * @return 1|0
     */
    int deleteAttGroup(Long groupId);

    /**
     * 上传考勤组表
     *
     * @param bean 参数
     * @return 1|0
     */
    int insertAttGroup(AttGroupBean bean);

    /**
     * 上传考勤组设置表
     *
     * @param bean 参数
     * @return 1|0
     */
    int insertAttGroupSetting(AttGroupBean bean);

    /**
     * 上传考勤人员绑定表
     *
     * @param checkOrgList 参数
     * @return 1|0
     */
    int insertAttGroupPerson(List<AttGroupCheckOrgBean> checkOrgList);

    /**
     * 根据考勤组编号获取详细信息
     *
     * @param groupId 考勤组编号
     * @return bean
     */
    AttGroupBean selectAttGroupById(Long groupId);

    /**
     * 根据考勤组编号获取人员绑定情况
     *
     * @param groupId 考勤组编号
     * @return list bean
     */
    List<AttGroupCheckOrgBean> selectAttGroupUserById(Long groupId);

    /**
     * 删除考勤组绑定人员
     *
     * @param groupId 考勤组编号
     */
    void deleteAttGroupRelationPerson(Long groupId);

    void deleteAttGroupPersonByUserId(List<AttGroupCheckOrgBean> delList);

    /**
     * 修改考勤组
     *
     * @param bean 参数
     * @return 1|0
     */
    int updateAttGroup(AttGroupBean bean);

    /**
     * 修改考勤组设置表
     *
     * @param bean 参数
     * @return 1|0
     */
    int updateAttGroupSetting(AttGroupBean bean);

    /**
     * 查询人员是否绑定考勤组
     *
     * @param id 用户编号
     * @return 1|0
     */
    String getAttGroupPersonIsBind(long id);

    /**
     * 查询出可选中人员
     *
     * @return list bean
     */
    List<SysTree> getAttGroupCheckPerson(Long groupId);

    /**
     * 根据组织编号获取人员
     *
     * @param idList  组织编号
     * @param groupId 考勤组（当前考情组）
     * @return list bean
     */
    List<AttGroupCheckOrgBean> getUserByOrg(@Param("idList") ArrayList<String> idList, @Param("groupId") Long groupId);

    /**
     * 根据人员ID查询组织机构
     * @param bean
     * @param addList
     * @return List<AttDataBean>
     * @author cwchen
     * @date 2025/2/18 13:49
     */
    List<AttDataBean> getUserInfo(@Param("params") AttGroupBean bean, @Param("list") List<AttGroupCheckOrgBean> addList);
}
