package com.hxhq.business.service;

import java.util.List;
import com.hxhq.business.domain.Gsp;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hxhq.business.domain.StudyFormFill;
import com.hxhq.business.domain.Template;
import com.hxhq.business.dto.gsp.GspDto;
import com.hxhq.business.dto.gsp.GspListDto;
import com.hxhq.business.form.gsp.*;
import com.hxhq.business.form.gyzj.SearchForm;

/**
 * 供试品管理Service接口
 *
 * @author HanLong
 * @date 2025-12-30
 */
public interface IGspService extends IService<Gsp>
{


    /**
     * 查询供试品管理列表
     *
     * @param form 供试品列表参数
     * @return 供试品管理集合
     */
    public List<Gsp> queryList(GspSearchListForm form);

    /**
     * 供试品详情
     * @param id    供试品id
     * @return
     */
    GspDto queryInfo(Long id);


    /**
     * 新增供试品
     * @param gspForm 供试品表单
     */
    void save(GspForm gspForm);

    /**
     * 编辑供试品
     * @param gspForm 供试品编辑表单
     */
    void edit(GspBjForm gspForm);

    /**
     * 审核编辑
     * @param form
     */
    void shbj(GspShbjForm form);

    /**
     * 钥匙发放
     * @param form
     */
    void ysff(GspYsffForm form);

    /**
     * 发放
     * @param form
     */
    void ff(FfGspForm form);

    /**
     * 批量发放
     * @param form
     */
    void plff(GspPlffForm form);

    /**
     * 修改库存
     * @param form
     */
    void xgkc(GspXgkcForm form);

    /**
     * 审核修改库存
     * @param form
     */
    void shxgkc(GspShxgkcForm form);

    /**
     * 批量锁定
     * @param form
     */
    void plsd(GspSdForm form);

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

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

    /**
     * 处置
     * @param form
     */
    void cz(GspCzForm form);

    /**
     * 批量处置
     * @param form
     */
    void plcz(GspPlczForm form);

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

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

    /**
     * 供试品归档
     * @param form
     */
    void gd(GspGdForm form);

    /**
     * 批量归档
     * @param form
     */
    void plgd(GspGdForm form);

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

    /**
     * 试验关联的供试品列表
     * @param form
     * @return 供试品列表
     */
    List<GspListDto> queryStudyList(GspSearchListForm form);

    /**
     * 同意归档
     * @param form
     */
    void agreeGd(GspGdForm form);

    /**
     * 拒绝归档
     * @param form
     */
    void refuseGd(GspGdForm form);

    /**
     * 同意解档
     * @param form
     */
    void agreeJd(GspGdForm form);

    /**
     * 拒绝解档
     * @param form
     */
    void refuseJd(GspGdForm form);

    /**
     * 同意借阅
     * @param form
     */
    void agreeJy(GspJyForm form);

    /**
     * 拒绝借阅
     * @param form
     */
    void refuseJy(GspJyForm form);

    /**
     * 档案确认归还
     * @param form
     */
    void archiveGh(GspGdForm form);

    /**
     * 借阅到期自动归还
     */
    public void autoJyExpireReturn();

    /**
     * 药剂存储
     * @param studyFormFill
     * @param template
     * @param remark
     */
    void storageResource(StudyFormFill studyFormFill, Template template, String remark);

}
