package com.hxhq.business.service;

import java.util.List;
import com.hxhq.business.domain.Study;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hxhq.business.dto.home.HomeCountDto;
import com.hxhq.business.dto.study.StudyListDto;
import com.hxhq.business.form.common.SignForm;
import com.hxhq.business.form.study.StudySaveForm;
import com.hxhq.business.form.study.StudySearchForm;

/**
 * 试验Service接口
 *
 * @author hxhq
 * @date 2025-12-24
 */
public interface IStudyService extends IService<Study>
{
    /**
     * 查询试验列表
     *
     * @param form 试验
     * @return 试验集合
     */
    public List<StudyListDto> queryList(StudySearchForm form);

    /**
     * 查询非试验列表
     *
     * @param form 试验
     * @return 试验集合
     */
    public List<StudyListDto> queryNonList(StudySearchForm form);

    /**
     * 查询麻精药列表
     *
     * @param form 试验
     * @return 试验集合
     */
    public List<StudyListDto> queryDrugList(StudySearchForm form);

    /**
     * 赋值表单数量
     * @param list
     * @return
     */
    List<StudyListDto> initFormCount(List<StudyListDto> list);

    /**
     * 获取表单数量
     * @param idList
     * @return
     */
    List<StudyListDto> queryFormCountList(List<Long> idList);

    /**
     * 保存
     * @param form
     */
    void saveInfo(StudySaveForm form);

    /**
     * 删除
     * @param form
     */
    void del(StudySaveForm form);

    /**
     * 归档
     * @param form
     */
    void gd(StudySaveForm form);

    /**
     * 检查锁定
     * @param study
     */
    void checkSd(Study study);

    /**
     * 锁定
     * @param form
     */
    void sd(StudySaveForm form);

    /**
     * 解锁
     * @param form
     */
    void js(StudySaveForm form);

    /**
     * 解档
     * @param form
     */
    void jd(StudySaveForm form);

    /**
     * 借阅
     * @param form
     */
    void jy(StudySaveForm form);

    /**
     * 检查密码
     * @param sign
     */
    void checkPassword(SignForm sign);

    /**
     * 获取首页统计数量
     * @return
     */
    HomeCountDto queryHomeCount();

    // region 档案相关

    /**
     * 查询档案列表
     * @param form
     * @return
     */
    List<StudyListDto> queryArchiveList(StudySearchForm form);

    /**
     * 同意拒绝归档
     * @param form
     */
    void doGd(StudySaveForm form);

    /**
     * 同意拒绝解档
     * @param form
     */
    void doJd(StudySaveForm form);

    /**
     * 同意拒绝借阅
     * @param form
     */
    void doJy(StudySaveForm form);

    /**
     * 归还
     * @param form
     */
    void gh(StudySaveForm form);

    // endregion

}
