package com.fs.his.service;

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

import com.baomidou.mybatisplus.extension.service.IService;
import com.fs.his.domain.FsPrescribeRecord;
import com.fs.his.dto.FsPrescribeRecordRejectDto;
import com.fs.his.vo.FsPrescribeRecordRejectVo;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;

/**
 * 处方记录Service接口
 * 
 * @author fs
 * @date 2025-11-02
 */
public interface IFsPrescribeRecordService extends IService<FsPrescribeRecord>{
    /**
     * 查询处方记录
     * 
     * @param id 处方记录主键
     * @return 处方记录
     */
    FsPrescribeRecord selectFsPrescribeRecordById(Long id);

    /**
     * 查询处方记录列表
     * 
     * @return 处方记录集合
     */
    List<FsPrescribeRecord> selectFsPrescibeRecordList(FsPrescribeRecord prescribeRecord);

    /**
     * 新增处方记录
     * 
     * @return 结果
     */
    int insertFsPrescribeRecord(FsPrescribeRecord prescribeRecord);

    /**
     * 修改处方记录
     * 
     * @return 结果
     */
    int updateFsPrescribeRecord(FsPrescribeRecord prescribeRecord);

    /**
     * 批量删除处方记录
     * 
     * @param ids 需要删除的处方记录主键集合
     * @return 结果
     */
    int deleteFsPrescribeRecordByIds(Long[] ids);

    /**
     * 删除处方记录信息
     * 
     * @param id 处方记录主键
     * @return 结果
     */
    int deleteFsPrescribeRecordById(Long id);

    //获取处方单被拒方次数
    Long selectRefuseCount(Long prescribeId);

    List<FsPrescribeRecord> selectRecordListByPrescribeId(Long prescribeId);

    Map<String,Object> selectDoctorRefusePercentage(Long doctorId);

    /**
     * 统计拒方数量
     * @param rejectDto
     * @return
     */
    PageInfo<FsPrescribeRecordRejectVo> calculateRejectCount(FsPrescribeRecordRejectDto rejectDto);
}
