package com.changhu.module.assessmentCriteria.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.changhu.common.db.enums.EnterprisesUnitType;
import com.changhu.common.pojo.vo.SelectNodeVo;
import com.changhu.module.assessmentCriteria.pojo.params.*;
import com.changhu.module.assessmentCriteria.pojo.queryParams.CkProjectPagerQueryParams;
import com.changhu.module.assessmentCriteria.pojo.vo.AssessmentCriteriaRuleVo;
import com.changhu.module.assessmentCriteria.pojo.vo.CkProjectDetailTableVo;
import com.changhu.module.assessmentCriteria.pojo.vo.CkProjectPagerVo;
import com.changhu.support.mybatisplus.pojo.params.PageParams;

import java.util.List;

/**
 * @author 20252
 * @createTime 2024/11/6 上午10:07
 * @desc AssessmentCriteriaService...
 */
public interface AssessmentCriteriaService {

    /**
     * 根据类型获取考核标准列表
     *
     * @param type 类型
     * @return 结果
     */
    List<SelectNodeVo<Long>> assessmentCriteriaListByType(EnterprisesUnitType type);

    /**
     * 根据考核项目获取考核规则
     *
     * @param ckProjectId 考核项目id
     * @return 结果
     */
    List<AssessmentCriteriaRuleVo> assessmentCriteriaRulesByCkProjectId(Long ckProjectId);

    /**
     * 考核项目分页查询
     *
     * @param queryParams 查询参数
     * @return 查询结果
     */
    Page<CkProjectPagerVo> ckProjectPagerVoPager(PageParams<CkProjectPagerQueryParams, CkProjectPagerVo> queryParams);

    /**
     * 新增或修改考核项目
     *
     * @param params 参数
     */
    void saveOrUpdateCkProject(CkProjectSaveOrUpdateParams params);

    /**
     * 删除考核项目
     *
     * @param ckProjectId 考核项目id
     */
    void deleteCkProjectById(Long ckProjectId);

    /**
     * 考核项目详情
     *
     * @param ckProjectId 考核项目id
     * @return 结果
     */
    List<CkProjectDetailTableVo> ckProjectDetail(Long ckProjectId);

    /**
     * 新增或修改考核分组
     *
     * @param params 参数
     */
    void saveOrUpdateCkGroup(CkGroupSaveOrUpdateParams params);

    /**
     * 新增或修改考核项
     *
     * @param params 参数
     */
    void saveOrUpdateCkItem(CkItemSaveOrUpdateParams params);

    /**
     * 新增或修改考核标准
     *
     * @param params 参数
     */
    void saveOrUpdateCkStandard(CkStandardSaveOrUpdateParams params);

    /**
     * 提交考核记录
     *
     * @param params 参数
     */
    void submitAssessmentRecord(AssessmentRecordParams params);
}
