package com.securitycontrol.background.mapper;

import com.securitycontrol.entity.background.dto.ParamDto;
import com.securitycontrol.entity.background.vo.HumanManageVo;
import com.securitycontrol.entity.background.vo.UserAccessVo;
import com.securitycontrol.entity.system.vo.ResourceFileVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

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

/**
 * @author 黑子
 */
@Mapper
@Repository(value = "HumanManageMapper")
public interface HumanManageMapper {

    /**
     * 获取人员列表
     *
     * @param dto
     * @return List<HumanManageVo>
     * @description
     * @author cwchen
     * @date 2024/3/21 16:21
     */
    List<HumanManageVo> getHumanLists(ParamDto dto);

    /**
     * 新增/修改 人员
     *
     * @param vo
     * @description
     * @author cwchen
     * @date 2024/3/21 17:09
     */
    void addOrUpdatePersonnel(HumanManageVo vo);

    /**
     * 保存人员照片资源
     *
     * @param fileVo
     * @description
     * @author cwchen
     * @date 2024/3/21 17:10
     */
    void addFiles(ResourceFileVo fileVo);

    /**
     * 删除人员照片资源文件
     *
     * @param fileId
     * @description
     * @author cwchen
     * @date 2024/3/21 17:15
     */
    void delFile(String fileId);

    /**
     * 人员是否存在
     *
     * @param vo
     * @return List<Map < String>>
     * @description
     * @author cwchen
     * @date 2024/3/21 17:53
     */
    @MapKey("id")
    List<Map<String, String>> userIsExist(HumanManageVo vo);

    /**
     * 删除人员
     *
     * @param dto
     * @description
     * @author cwchen
     * @date 2024/3/21 20:37
     */
    void delPersonnelById(ParamDto dto);

    /**
     * 人员详情
     *
     * @param dto
     * @return HumanManageVo
     * @description
     * @author cwchen
     * @date 2024/3/21 20:40
     */
    HumanManageVo getPersonnelById(ParamDto dto);

    /**
     * 获取人员照片
     *
     * @param userId
     * @return List<ResourceFileVo>
     * @description
     * @author cwchen
     * @date 2024/3/21 20:42
     */
    List<ResourceFileVo> getFiles(String userId);

    /**
     * 获取人员出入记录
     *
     * @param dto
     * @return List<UserAccessVo>
     * @description
     * @author cwchen
     * @date 2024/3/22 9:33
     */
    List<UserAccessVo> getPersonnelAccessLists(ParamDto dto);

    /**
     * 绑定安全帽
     *
     * @param dto
     * @return
     */
    int bindDev(ParamDto dto);

    /**
     * 接触安全帽绑定
     *
     * @param dto
     * @return
     */
    int delBind(ParamDto dto);

    /**
     * 查询绑定记录
     *
     * @param dto
     * @return
     */
    int getBindHis(ParamDto dto);

    /**
     * 查询已绑定设备
     *
     * @param dto
     * @return
     */
    List<ParamDto> getBindDetail(ParamDto dto);

    /**
     * 修改成功
     *
     * @param dto
     * @return
     */
    int updateDev(ParamDto dto);

    /**
     * 人员详情
     *
     * @param dto
     * @return UserAccessVo
     * @description
     * @author cwchen
     * @date 2024/4/3 17:13
     */
    UserAccessVo getUserDeatail(ParamDto dto);

    /**
     * 获取人员出入场记录
     * @param value
     * @return String
     * @description
     * @author cwchen
     * @date 2024/4/3 17:44
     */
    String getUserAccessLists(String value);
}
