package com.bonus.material.devchange.service;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.devchange.domain.*;
import com.bonus.material.toolLedger.domain.ToolLedgerEntity;

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

public interface DevChangeService {
    /**
     * 查询系统最大的特征值
     *
     * @return
     */
    AjaxResult getMaxFeature();

    /**
     * 查询数据列表集合
     *
     * @param devInfo
     * @return
     */
    List<DevChangeVo> selectDevInfoList(DevChangeVo devInfo);

    /**
     * 新增 数据变化
     *
     * @param vo
     * @return
     */
    AjaxResult addChangeInfo(CsDeviceChangeVo vo);

    /**
     * 查询工程 下拉选
     *
     * @param vo
     * @return
     */
    List<JjProjectVo> getProList(JjProjectVo vo);

    /**
     * 查询 流转台账记录
     *
     * @param vo
     * @return
     */
    List<CsDeviceChangeVo> getDevChangeList(CsDeviceChangeVo vo);

    /**
     * 查询设备出库单
     *
     * @param vo
     * @return
     */
    List<DevChangeVo> getDevDetails(CsDeviceChangeDetailsVo vo);

    /**
     * 电压等级下拉选
     *
     * @param vo
     * @return
     */
    List<Map<String, Object>> getVoltageLevel(JjProjectVo vo);

    AjaxResult updateDevChangeInfo(CsDeviceChangeVo vo);

    AjaxResult updateDevChangeInfo2(CsDeviceChangeVo vo);

    AjaxResult updateDevChangeInfo3(CsDeviceChangeVo vo);

    /**
     * 获取添加设备详情
     *
     * @param dto
     * @return
     */
    List<CsDeviceDetails> getDevDetailsInfo(CsDeviceDetails dto);

    /**
     * 新增出库申请
     *
     * @param csDeviceVo
     * @return
     */
    AjaxResult addDevDetails(CsDeviceVo csDeviceVo);

    /**
     * 修改出库申请
     *
     * @param csDeviceVo
     * @return
     */
    AjaxResult updateDevDetails(CsDeviceVo csDeviceVo);

    /**
     * 获取设备详情
     *
     * @param dto
     * @return
     */
    CsDeviceVo getDevDetailsById(CsDeviceDetails dto);

    /**
     * 删除出库申请
     *
     * @param csDeviceInfo
     * @return
     */
    AjaxResult deleteDevDetails(CsDeviceInfo csDeviceInfo);

    /**
     * 获取申请一级列表
     *
     * @param dto
     * @return
     */
    List<CsDeviceInfo> getList(CsDeviceInfo dto);

    /**
     * 获取待出库单子
     *
     * @param dto
     * @return
     */
    List<CsDeviceInfo> getOutboundList(CsDeviceInfo dto);

    /**
     * 审批
     *
     * @param csDeviceInfo
     * @return
     */
    AjaxResult approve(CsDeviceInfo csDeviceInfo);

    /**
     * 装备单个出库
     *
     * @param entity
     * @return
     */
    AjaxResult out(CsDeviceDetails entity);

    /**
     * 单个取消出库
     *
     * @param entity
     * @return
     */
    AjaxResult outCancel(CsDeviceDetails entity);

    AjaxResult outCancelAll(CsDeviceDetails entity);

    AjaxResult outAll(CsDeviceDetails entity);

    List<CsDeviceChange> getDevChangeRList(CsDeviceChange csDeviceChange);

    CsDeviceVo getOrderById(CsDeviceDetails dto);

    AjaxResult orderOut(CsDeviceDetails entity);

    AjaxResult orderOutAll(CsDeviceDetails entity);

    AjaxResult orderOutCancel(CsDeviceDetails entity);

    AjaxResult orderOutCancelAll(CsDeviceDetails entity);
}
