package cn.iocoder.yudao.module.archive.service.borrow; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.archive.controller.admin.borrow.vo.ArchiveBorrowPageReqVO; import cn.iocoder.yudao.module.archive.controller.admin.borrow.vo.ArchiveBorrowReturnReqVO; import cn.iocoder.yudao.module.archive.controller.admin.borrow.vo.ArchiveBorrowSaveReqVO; import cn.iocoder.yudao.module.archive.dal.dataobject.borrow.ArchiveBorrowDO; import java.util.List; import java.util.Map; /** * 档案借阅单 Service 接口 * * @author 超级管理员 */ public interface ArchiveBorrowService { /** * 创建借阅单(草稿) * * @param createReqVO 创建信息 * @return 借阅单编号 */ Long createBorrow(ArchiveBorrowSaveReqVO createReqVO); /** * 更新借阅单(仅草稿或已驳回可修改) * * @param updateReqVO 更新信息 */ void updateBorrow(ArchiveBorrowSaveReqVO updateReqVO); /** * 删除借阅单(仅草稿可删除) * * @param id 借阅单编号 */ void deleteBorrow(Long id); /** * 获得借阅单 * * @param id 借阅单编号 * @return 借阅单 */ ArchiveBorrowDO getBorrow(Long id); /** * 获得借阅单分页 * * @param reqVO 查询条件 * @return 借阅单分页 */ PageResult getBorrowPage(ArchiveBorrowPageReqVO reqVO); /** * 获得逾期借阅单分页(借出中 且 归还期限已过) * * @param reqVO 查询条件 * @return 借阅单分页 */ PageResult getOverdueBorrowPage(ArchiveBorrowPageReqVO reqVO); /** * 提交借阅审批 * * @param id 借阅单编号 * @param processDefinitionKey 流程定义 key,为空时自动取档案借阅审批分类下最新的已发布流程 */ void submitBorrow(Long id, String processDefinitionKey); /** * 获得档案借阅审批可用的流程定义列表 * * @return 流程定义列表(key / name) */ List> getApproveProcessDefinitionList(); /** * 归还登记(仅借出中可登记) * * @param returnReqVO 归还信息 */ void returnBorrow(ArchiveBorrowReturnReqVO returnReqVO); /** * 回写借阅单审批结果(BPM 监听器调用) * * @param id 借阅单编号 * @param bpmResult BPM 审批结果 * @param reason 驳回原因 */ void updateBorrowAuditStatus(Long id, Integer bpmResult, String reason); }