/*
 * Copyright (c) 2024 codvision.com All Rights Reserved.
 */

package com.codvision.basic.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.codvision.basic.entity.Person;
import com.codvision.basic.entity.vo.PersonCountVO;
import com.codvision.basic.entity.vo.PersonPortraitVO;
import com.codvision.basic.entity.vo.PersonVO;
import com.codvision.webcore.bean.QueryPage;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * @author KX
 */
public interface PersonService extends IService<Person> {

    /**
     * 分页列表
     * @param queryPage 查询条件
     * @return 列表
     */
    IPage<PersonVO> getPageResult(QueryPage<Map<String, Object>> queryPage);

    /**
     * 根据地址Code统计人员数
     * @param addressCode 地址编码
     * @param addressType 地址类型
     * @return 人口统计
     */
    PersonCountVO getPersonCount(String addressCode, String addressType);

    /**
     * 根据地址编码查询人员列表
     * @param queryPage 查询条件
     * @return 人员列表
     */
    IPage<PersonVO> getPersonListByAddressCode(QueryPage<Map<String, Object>> queryPage);

    /**
     * 人员详情
     * @param id 人员id
     * @return 人员详情
     */
    PersonVO details(Integer id);

    /**
     * 新增人员
     * @param person 人员信息
     */
    void add(Person person);

    /**
     * 批量逻辑删除
     * @param personIds 人员id列表
     */
    void batchLogicDel(List<Integer> personIds);

    /**
     * 群体画像
     * @param personIds 人员id
     * @return 群体画像
     */
    List<PersonPortraitVO> getPersonPortrait(List<Integer> personIds);

    /**
     * 导入
     * @param file 文件
     * @return 请求序列号
     */
    String excelImport(MultipartFile file);

    /**
     * 导出
     * @param paramMap 参数
     */
    void excelExport(Map<String, Object> paramMap);
}
