package com.openhis.web.nenu.appservice;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.core.common.core.domain.R;
import com.openhis.web.nenu.dto.GfRatioApplicationDefinitionSelectDto;
import com.openhis.web.nenu.dto.GfRatioApplicationPrintDto;
import com.openhis.web.nenu.dto.GfRatioApplicationProcessDto;
import com.openhis.web.nenu.dto.GfRatioApplicationRecordDto;

/**
 * 公费医疗-比例调整申请记录 AppService
 *
 * @author Thanking
 * @date 2025-10-21
 */
public interface IGfRatioApplicationRecordAppService {

    /**
     * 查询比例调整申请记录分页
     *
     * @param searchParam 查询参数
     * @param printable 申请单是否可打印
     * @param searchKey 模糊查询关键字
     * @param pageNo 页码
     * @param pageSize 行数
     * @return 比例调整申请记录分页
     */
    R<IPage<GfRatioApplicationRecordDto>> getPage(GfRatioApplicationRecordDto searchParam, String printable,
        String searchKey, Integer pageNo, Integer pageSize);

    /**
     * 查询比例调整申请记录详情
     *
     * @param id ID
     * @return 比例调整申请记录详情
     */
    R<GfRatioApplicationRecordDto> getDetail(Long id);

    /**
     * 创建比例调整申请
     *
     * @param gfRatioApplicationRecordDto 比例调整申请记录Dto
     * @return 结果
     */
    R<?> add(GfRatioApplicationRecordDto gfRatioApplicationRecordDto);

    /**
     * 取消比例调整申请
     *
     * @param id ID
     * @return 结果
     */
    R<?> cancel(Long id);

    /**
     * 处理比例调整申请
     *
     * @param gfRatioApplicationProcessDto 比例调整申请处理Dto
     * @return 结果
     */
    R<?> process(GfRatioApplicationProcessDto gfRatioApplicationProcessDto);

    /**
     * 查询申请项目选择弹窗分页
     *
     * @param searchParam 查询参数
     * @param searchKey 模糊查询关键字
     * @param itemType 项目分类
     * @param pageNo 页码
     * @param pageSize 行数
     * @return 申请项目选择弹窗分页
     */
    R<IPage<GfRatioApplicationDefinitionSelectDto>> getDefinitionSelectPage(
        GfRatioApplicationDefinitionSelectDto searchParam, String searchKey, Integer itemType, Integer pageNo,
        Integer pageSize);

    /**
     * 查询申请单打印列表
     * 
     * @param ids 多个ID逗号拼接
     * @return 申请单打印列表
     */
    R<List<GfRatioApplicationPrintDto>> getPrintList(String ids);
}
