package com.hxhq.business.service;

import java.util.Date;
import java.util.List;

import com.hxhq.business.domain.Gsp;
import com.hxhq.business.domain.GspFfjl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hxhq.business.domain.Mjy;
import com.hxhq.business.domain.MjyFfjl;
import com.hxhq.business.dto.gsp.GspFfjlListDto;
import com.hxhq.business.dto.mjy.FfjlDetailDto;
import com.hxhq.business.form.gsp.GspGdForm;
import com.hxhq.business.form.gsp.GspGhForm;
import com.hxhq.business.form.gsp.GspJyForm;
import com.hxhq.business.form.gsp.GspSearchListForm;
import com.hxhq.business.form.mjy.*;
import com.hxhq.system.api.domain.SysUser;

/**
 * 供试品发放记录Service接口
 *
 * @author hxhq
 * @date 2025-12-30
 */
public interface IGspFfjlService extends IService<GspFfjl>
{
    /**
     * 查询供试品发放记录列表
     *
     * @param form 供试品发放记录
     * @return 供试品发放记录集合
     */
    public List<GspFfjlListDto> queryList(GspSearchListForm form);

    /**
     * 详情
     *
     * @param gspId
     * @return
     */
    public GspFfjl queryLastInfoByGspId(Long gspId);

    /**
     * 发放
     * @param ckl    出库量
     * @param ckdw   出库单位
     * @param zytj   转移条件
     * @param remark 备注
     * @param mdIds  目标
     * @param gsp    供试品
     * @param lqr1   领取人1
     * @param lqr2   领取人2
     * @param ffr1   发放人1
     * @param ffr2  发放人2
     * @param time  发放时间
     */
    public void ff(String ckl, String ckdw, String zytj, String remark, String mdIds, Gsp gsp, SysUser lqr1, SysUser lqr2, SysUser ffr1, SysUser ffr2, Date time);

    /**
     * 归还
     * @param form      归还数据
     * @param gsp       供试品
     * @param ghr1      归还人1
     * @param ghr2      归还人2
     * @param jsr1      接收人1
     * @param jsr2      接收人2
     */
    void gh(GspGhForm form, Gsp gsp, SysUser ghr1, SysUser ghr2, SysUser jsr1, SysUser jsr2);

    /** 解档 */
    void jd(FfjlJdForm form);

    /** 批量归档 */
    void plgd(FfjlGdForm form);

    /** 归档 */
    void gd(FfjlGdForm form);

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

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

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


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


    /**
     * 加签
     *
     * @param form
     */
    public void jq(FfjlJqForm form);

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

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

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

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

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

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

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