package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.base.vo.PageListVO;
import jnpf.entity.cultivate.CultivateIdentifyTable;
import jnpf.model.cultivate.dto.identify.*;
import jnpf.model.cultivate.v2.identify.req.V2IdentifyTableListReq;
import jnpf.model.cultivate.v2.identify.vo.V2IdentifyTableListVo;
import jnpf.model.cultivate.vo.identify.*;

import java.util.List;

/**
 * 实操鉴定表
 *
 * @author shitou
 * @email shitou@niujiekeji.com
 * @date 2023-12-19 11:10:53
 */
public interface CultivateIdentifyTableService extends IService<CultivateIdentifyTable> {

    /**
     * 鉴定表/列表
     *
     * @param req 帅选条件
     * @return
     */
    PageInfo<IdentifyTableListVo> getPageList(IdentifyTableListDto req);

    /**
     * 鉴定表/详情
     *
     * @param req 帅选条件
     * @return
     */
    IdentifyTableInfoVo getInfo(IdentifyTableInfoDto req) ;

    /**
     * 鉴定表/新增
     *
     * @param req 帅选条件
     */
    void saveData(IdentifyTableSaveDto req) ;

    /**
     * 鉴定表/修改
     *
     * @param req 帅选条件
     */
    void updateData(IdentifyTableUpdateDto req);

    /**
     * 鉴定表/删除
     *
     * @param req 帅选条件
     */
    IdentifyTableDeleteVo deleteData(IdentifyTableInfoDto req);

    /**
     * 查询鉴定表集合信息
     * @param ids
     * @return 返回鉴定记录id
     */
    List<IdentifyTableInfoApiVo> getTableListInfo(List<String> ids);

    /**
     * 组织列表统计方法
     * 该方法用于对组织的相关数据进行统计，具体统计内容和规则由参数statisticDTO指定
     *
     * @param statisticDTO 统计DTO对象，包含统计所需的参数和配置
     * @return 返回一个PageListVO对象，包含按照指定条件统计的组织数据
     */
    PageListVO<FtbCultivateIdentityOrgWisdomStatisticVO> organizationListStatistics(FtbIdentityOrgWisdomStatisticDTO statisticDTO);

    /**
     * 个人列表统计方法
     * 该方法用于对个人的相关数据进行统计，具体统计内容和规则由参数personWisdomStatisticDTO指定
     *
     * @param personWisdomStatisticDTO 统计DTO对象，包含统计所需的参数和配置
     * @return 返回一个PageListVO对象，包含按照指定条件统计的个人数据
     */
    PageListVO<FtbCultivateIdentityPersonWisdomStatisticVO> personListStatistics(FtbIdentityPersonWisdomStatisticDTO personWisdomStatisticDTO);
}

