package com.ruoyi.web.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.web.domain.dto.person.PersonInfoAddRequest;
import com.ruoyi.web.domain.dto.person.PersonInfoEditRequest;
import com.ruoyi.web.domain.dto.person.PersonInfoListQueryRequest;
import com.ruoyi.web.domain.dto.person.PersonInfoQueryRequest;
import com.ruoyi.web.domain.entity.PersonInfo;
import com.ruoyi.web.domain.vo.PersonInfoVO;

import java.util.List;

/**
 * 人员信息接口
 */
public interface PersonInfoService extends IService<PersonInfo> {
    Integer addPersonInfo(PersonInfoAddRequest personInfoAddRequest);

    boolean deletePersonInfo(String ids);

    void editPersonInfo(PersonInfoEditRequest personInfoEditRequest);

    /**
     * 根据id获取人员包装类
     *
     * @param id
     * @return
     */
    PersonInfoVO getPersonInfoById(int id);

    /**
     * 根据系统用户 id列表 获取人员vo类列表
     *
     * @param userIds
     * @return
     */
    List<PersonInfoVO> getPersonInfoVOListByUserIds(List<Integer> userIds);

    /**
     * 通过人员获取人员包装类
     *
     * @param personInfo
     * @return
     */
    PersonInfoVO getPersonInfoVO(PersonInfo personInfo);


    /**
     * 获取人员列表
     *
     * @param personInfoListQueryRequest
     * @return
     */
    List<PersonInfoVO> getPersonInfoVOList(PersonInfoListQueryRequest personInfoListQueryRequest);

    /**
     * 分页获取人员列表
     * @param personInfoQueryRequest
     * @return
     */
    Page<PersonInfoVO> getListPersonInfoByPage(PersonInfoQueryRequest personInfoQueryRequest);


    /**
     * 获取查询条件
     * @param personInfoQueryRequest
     * @return
     */
    QueryWrapper<PersonInfo> getQueryWrapper(PersonInfoQueryRequest personInfoQueryRequest) ;

    /**
     * 解密身份证
     * @param idCard
     * @return
     */
    String decryptIdCard(String idCard);

    /**
     * 加密身份证
     * @param idCard
     * @return
     */
    String encryptIdCard(String idCard);

    /**
     * 根据人口id列表 获取 系统用户 id列表
     *
     * @param personIds
     * @return
     */
    List<Integer> getUserIdListByPersonIds(List<Integer> personIds);
}
