package com.ruoyi.approvalFlow.service;


import com.ruoyi.approvalFlow.domain.AuditItems;
import com.ruoyi.approvalFlow.domain.AuditPaths;
import com.ruoyi.approvalFlow.domain.dto.AppAuditItemDTO;
import com.ruoyi.approvalFlow.domain.vo.AppAuditItemVO;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.model.LoginUser;

import java.util.List;
import java.util.Map;

/**
 * 审批流配置主Service接口
 *
 * @author ruoyi
 * @date 2021-01-21
 */
public interface IAuditPathsService {
    /**
     * 查询审批流配置主
     *
     * @param id 审批流配置主ID
     * @return 审批流配置主
     */
    public AjaxResult selectAuditPathsById(Long id);

    /**
     * 查询审批流配置主列表
     *
     * @param auditPaths 审批流配置主
     * @return 审批流配置主集合
     */
    public List<AuditPaths> selectAuditPathsList(AuditPaths auditPaths);

    /**
     * 新增审批流配置主
     *
     * @param auditPaths 审批流配置主
     * @param loginUser
     * @return 结果
     */
    public AjaxResult insertAuditPaths(String auditPaths, String auditPathsLevels, LoginUser loginUser);

    /**
     * 修改审批流配置主
     *
     * @param auditPaths 审批流配置主
     * @return 结果
     */
    public int updateAuditPaths(AuditPaths auditPaths);

    /**
     * 批量删除审批流配置主
     *
     * @param ids 需要删除的审批流配置主ID
     * @return 结果
     */
    public AjaxResult deleteAuditPathsByIds(Long[] ids);

    /**
     * 删除审批流配置主信息
     *
     * @param id 审批流配置主ID
     * @return 结果
     */
    public int deleteAuditPathsById(Long id);

    /**
     * 查询条数审批流配置主信息
     *
     * @return 结果
     */
    public int selectCountAuditItems();

    /**
     * 根据id、actId 查询审批流
     *
     * @param auditItems 条件
     * @return 结果
     */
    AjaxResult projectEndQueryPendingVal(AuditItems auditItems);

    /**
     * 查询首页待审人员
     *
     * @param auditItems 查询条件
     * @return 结果
     */
    List<Map<String, Object>> selectAllAuditItems(AuditItems auditItems);

    /**
     * 审批通过
     *
     * @param auditItems 审核人、单据信息
     * @return 结果
     */
    AjaxResult approved(AuditItems auditItems);

    /**
     * 审批驳回
     *
     * @param auditItems 审核人、单据信息
     * @return 结果
     */
    AjaxResult approvalRejected(AuditItems auditItems);

    /**
     * 审批撤销
     *
     * @param auditItems 审核人、单据信息
     * @return 结果
     */
    AjaxResult revoke(AuditItems auditItems);

    /**
     * 仓库APP查看订单审批流
     *
     * @param auditItems 条件
     * @return 结果
     */
    List<AppAuditItemVO> selectOrderAuditItems(AppAuditItemDTO auditItems);

}
