package jnpf.cultivate.service;

import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.base.vo.PageListVO;
import jnpf.model.cultivate.CultivatePage;
import jnpf.model.cultivate.dto.promotion.FtbCultivatePromotionCreatDto;
import jnpf.model.cultivate.dto.promotion.FtbCultivatePromotionDto;
import jnpf.model.cultivate.dto.promotion.FtbMapsOrgWisdomStatisticDTO;
import jnpf.model.cultivate.dto.promotion.FtbMapsPersonWisdomStatisticDTO;
import jnpf.model.cultivate.po.promotion.FtbCultivatePromotion;
import jnpf.model.cultivate.vo.promotion.FtbCultivateMapsOrgWisdomStatisticVO;
import jnpf.model.cultivate.vo.promotion.FtbCultivateMapsPersonWisdomStatisticVO;
import jnpf.model.cultivate.vo.promotion.FtbCultivatePromotionMemberVO;
import jnpf.model.cultivate.vo.promotion.FtbCultivatePromotionVO;

import java.util.List;

public interface FtbCultivatePromotionService extends IService<FtbCultivatePromotion> {


    /**
     * 获取晋升通道管理列表
     *
     * @param page
     * @param dto
     * @return
     */
    PageListVO<FtbCultivatePromotionVO> getList(CultivatePage page, FtbCultivatePromotionDto dto);


    /**
     * 根据id进行查询
     * @param promotionIds
     * @return
     */
    List<FtbCultivatePromotionVO> queryListByIds(List<String> promotionIds);

    /**
     *
     * 新增晋升通道
     * @param creatDto
     * @return
     */
    void add(FtbCultivatePromotionCreatDto creatDto);

    /**
     * 修改晋升通道
     * @param creatDto
     */
    void updatePromotion(FtbCultivatePromotionCreatDto creatDto);

    /**
     * 删除晋升通道
     *
     * @param id
     * @param flag
     * @return
     */
    boolean deleteById(String id, boolean flag);

    /**
     * 删除是需要进行成员列表获取
     * 获取启用该晋升通道的成员列表
     *
     * @param dto
     * @param page
     * @return
     */
    PageListVO<FtbCultivatePromotionMemberVO> getPromotionMbeList(FtbCultivatePromotionDto dto, CultivatePage page);
    /**
     * 添加晋升创意列表
     *
     * @param creatDto 晋升创意数据传输对象列表
     */
    void addList(List<FtbCultivatePromotionCreatDto> creatDto);

    /**
     * 执行职位删除前的验证
     *
     * @param postRankId 待删除的职位ID列表
     */
    void postLevelDeletionVerification(List<String> postRankId);

    /**
     * 验证晋升操作的合法性
     *
     * @param postId 岗位ID
     * @param gradeId 职级ID
     */
    void VerifyPromotion(String postId, String gradeId);

    /**
     * 组织列表统计
     *
     * @param statisticDTO 统计参数数据传输对象
     * @return 返回组织智慧统计信息的分页列表
     */
    PageListVO<FtbCultivateMapsOrgWisdomStatisticVO> organizationListStatistics(FtbMapsOrgWisdomStatisticDTO statisticDTO);

    /**
     * 人员列表统计
     *
     * @param personWisdomStatisticDTO 人员智慧统计参数数据传输对象
     * @return 返回人员智慧统计信息的分页列表
     */
    PageListVO<FtbCultivateMapsPersonWisdomStatisticVO> personListStatistics(FtbMapsPersonWisdomStatisticDTO personWisdomStatisticDTO);
}
