package com.bonus.bracelet.mapper;

import com.bonus.common.entity.bracelet.BraceletParamsDto;
import com.bonus.common.entity.bracelet.vo.CertificateVo;
import com.bonus.common.entity.bracelet.vo.PersonVo;
import com.bonus.common.entity.file.ResourceFileVo;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
 * @className:PersonMgeMapper
 * @author:cwchen
 * @date:2024-07-16-11:05
 * @version:1.0
 * @description:人员-mapper
 */
@Repository(value = "PersonMgeMapper")
public interface PersonMgeMapper {
    /**
     * 人员身份证号是否存在
     *
     * @param vo
     * @return List<Map < String, String>>
     * @author cwchen
     * @date 2024/7/16 13:15
     */
    @MapKey("id")
    List<Map<String, String>> personIsExist(PersonVo vo);

    /**
     * 新增人员
     *
     * @param vo
     * @return void
     * @author cwchen
     * @date 2024/7/16 14:26
     */
    void addPerson(PersonVo vo);

    /**
     * 修改人员
     *
     * @param vo
     * @return void
     * @author cwchen
     * @date 2024/7/16 14:35
     */
    void editPerson(PersonVo vo);

    /**
     * 人员详情
     *
     * @param dto
     * @return PersonVo
     * @author cwchen
     * @date 2024/7/16 15:15
     */
    PersonVo getPersonInfo(BraceletParamsDto dto);

    /**
     * 删除人员
     *
     * @param dto
     * @return void
     * @author cwchen
     * @date 2024/7/16 15:38
     */
    void delPerson(BraceletParamsDto dto);

    /**
     * 删除该人员对应的证书
     *
     * @param dto
     * @return void
     * @author cwchen
     * @date 2024/7/16 15:38
     */
    void delCertificate(BraceletParamsDto dto);

    /**
     * 获取改人员的证书id
     * @param dto
     * @return
     */
    List<CertificateVo> getCertificate(BraceletParamsDto dto);
    /**
     * 查询人员列表
     *
     * @param dto
     * @return List<PersonVo>
     * @author cwchen
     * @date 2024/7/16 15:45
     */
    List<PersonVo> getPersonLists(BraceletParamsDto dto);

    /**
     * 验证安全帽编号、马甲编码是否存在
     *
     * @param vo
     * @param type
     * @return int
     * @author cwchen
     * @date 2024/7/17 13:27
     */
    int codeIsExist(@Param("params") PersonVo vo, @Param("type") int type);

    /**
     * 根据人员id获取信息
     * @param memberId
     * @return
     */
    public PersonVo selectCertificateById(Integer memberId);

    /**
     * 根据人员id获取证书详细信息
     * @param memberId
     * @return
     */
    public List<ResourceFileVo> selectCertificateFile(Integer memberId);

    /**
     * 删除证书资源信息
     * @param vo
     */
    void delCertificateResourceFile( CertificateVo vo);

    /**
     * 获取高工证书id
     * @param filepath
     * @return
     */
    int getHighId(String filepath);

    /**
     * 删除高工证书信息
     * @param id
     */
    void delHigh(int id);

    /**
     * 获取电工证书id
     * @param filepath
     * @return
     */
    int getElectId(String filepath);

    /**
     * 删除电工证书信息
     * @param id
     */
    void delElect(int id);

    /**
     * 获取其他证书id
     * @param filepath
     * @return
     */
    int getElseId(String filepath);

    /**
     * 删除其他证书信息
     * @param id
     */
    void delElse(int id);

    /**
     * 删除高工证书资源信息
     * @param filePath
     * @param id
     */
    public void  delHighFile(@Param("filePath") String filePath,@Param("id") int id);

    /**
     * 删除电工证书资源信息
     * @param filePath
     * @param id
     */
    public void  delElectFile(@Param("filePath") String filePath,@Param("id") int id);

    /**
     * 删除其他证书资源信息
     * @param filePath
     * @param id
     */
    public void  delElseFile(@Param("filePath") String filePath,@Param("id") int id);

    /**
     * 新增证书信息
     * @param vo
     */
    public void insertCertificate(CertificateVo vo);
}
