package com.xjrsoft.module.textbook.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseService;
import com.xjrsoft.module.textbook.dto.*;
import com.xjrsoft.module.textbook.entity.Textbook;
import com.xjrsoft.module.textbook.entity.TextbookClassRelation;
import com.xjrsoft.module.textbook.vo.*;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.List;

/**
* @title: 教材管理
* @Author dzx
* @Date: 2023-12-25
* @Version 1.0
*/

public interface ITextbookService extends MPJBaseService<Textbook> {
    /**
    * 新增
    *
    * @param textbook
    * @return
    */
    Boolean add(Textbook textbook);

    /**
    * 更新
    *
    * @param textbook
    * @return
    */
    Boolean update(Textbook textbook);

    /**
    * 删除
    *
    * @param ids
    * @return
    */
    Boolean delete(List<Long> ids);

    /**
     * 分页查询
     * @param page
     * @param dto
     * @return
     */
    Page<TextbookPageVo> getPage(Page<TextbookPageDto> page, TextbookPageDto dto);

    /**
     * 添加教材教辅规则
     * @param dataId
     * @return
     */
    Boolean dataHandleAddTextbookNode(Long dataId);

    /**
     * 添加作业本规则
     * @param dataId
     * @return
     */
    Boolean dataHandleAddExerciseBookNode(Long dataId);

    /**
     *
     * @param id
     * @return
     */
    List<TextbookSubscriptionRecordVo> subscriptionList(Long id);

    /**
     * 根据书号查询最新一条信息
     * @param issn
     * @return
     */
    TextbookVo getInfoByissn(String issn);

    /**
     * 教材管理入库
     * @param dto
     * @return
     */
    Boolean deliverWarehouse(AddTextbookWarehouseRecordDto dto);

    /**
     * 入库记录
     * @param id
     * @return
     */
    List<TextbookWarehouseRecordListVo> warehouseList(Long id);


    List<TextbookClassRelation> getClassRelation(Long id);

    /**
     * 入库记录
     * @param id
     * @return
     */
    List<TextbookIssueRecordListVo> issueList(Long id);

    /**
     * 领取记录
     * @param id
     * @return
     */
    List<WfTextbookClaimListVo> claimList(Long id);

    /**
     * 台账到处集合
     * @param dto
     * @return
     */
    List<TextbookStandingExportQueryVo> listTextbookStandingExportQuery(TextbookStandingExportQuerytDto dto);

    /**
     * 教材征订导出集合
     * @param dto
     * @return
     */
    List<TextbookSubscriptionExportQueryVo> listTextbookSubscriptionExportQuery(TextbookSubscriptionExportQueryDto dto);

    ByteArrayOutputStream listTextbookClaimExportQuery(TextbookClaimExportQueryDto dto);

    Boolean excelImport(InputStream inputStream);
}
