package com.bonus.material.basic.service;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.basic.domain.BmQrBoxInfo;
import com.bonus.material.basic.domain.dto.BoxBindWarehouseDto;
import com.bonus.material.ma.domain.Machine;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Author ma_sh
 * @create 2024/12/10 17:26
 */
public interface BmQrBoxService {

    /**
     * 查询二维码标准箱管理列表
     */
    List<BmQrBoxInfo> selectBmQrBoxInfoList(BmQrBoxInfo bmQrBoxInfo);

    /**
     * 新增二维码标准箱管理
     * @param bmQrBoxInfo 标准箱信息
     */
    AjaxResult insertBmQrcodeInfo(BmQrBoxInfo bmQrBoxInfo);

    /**
     * BoxCode查询标准箱信息
     */
    AjaxResult getBoxInfoBindListByCode(BmQrBoxInfo bmQrBoxInfo);

    /**
     * APP -- 新购入库扫码 -- 确认入库
     * @param boxBindWarehouseDto 入库信息
     */
    AjaxResult appWarehouse(BoxBindWarehouseDto boxBindWarehouseDto);

    /**
     * 下载二维码标准箱
     */
    void download(BmQrBoxInfo bmQrBoxInfo, HttpServletResponse response);

    /**
     * 修改二维码标准箱管理
     * @param bmQrBoxInfo 标准箱信息
     */
    AjaxResult updateBmQrcodeInfo(BmQrBoxInfo bmQrBoxInfo);

    /**
     * APP - 移交标准箱
     */
    AjaxResult appTransfer(BmQrBoxInfo bmQrBoxInfo);

    /**
     * APP -- 移交驳回
     */
    AjaxResult appTransferReject(BmQrBoxInfo bmQrBoxInfo);

    /**
     * APP - 接收标准箱
     */
    AjaxResult appReceive(BmQrBoxInfo bmQrBoxInfo);

    /**
     * APP - 扫码创建标准箱
     */
    AjaxResult updateBmQrcodeInfoByCode(BmQrBoxInfo bmQrBoxInfo);

    /**
     * 通过QR_CODE 查询物资信息
     * @param qrCode 二维码编码
     */
    AjaxResult getMaInfoByQrCode(String qrCode);

    /**
     * APP - 扫码绑定物资
     */
    AjaxResult addQrcodeBoxBind(BmQrBoxInfo bmQrBoxInfo);

    /**
     * APP - 获取绑定物资列表
     */
    List<BmQrBoxInfo> getBoxBindList(BmQrBoxInfo bean);

    /**
     * 删除二维码标准箱管理
     */
    AjaxResult deleteById(BmQrBoxInfo bmQrBoxInfo);

    /**
     * 解除二维码标准箱绑定关系
     */
    AjaxResult unBindQrcodeBox(BmQrBoxInfo bmQrBoxInfo);

    /**
     * 查询二维码标准箱详情列表
     */
    List<BmQrBoxInfo> getList(BmQrBoxInfo bmQrBoxInfo);

    /**
     * app出库查询标准箱绑定详情
     * @param bmQrBoxInfo
     * @return
     */
    AjaxResult getBoxBindListByCode(BmQrBoxInfo bmQrBoxInfo);

    /**
     * APP -- 修饰入库 -- 扫码获取绑定物资信息
     * @param bmQrBoxInfo
     * @return
     */
    AjaxResult getBoxCodeList(BmQrBoxInfo bmQrBoxInfo);

    AjaxResult appBoxInput(BoxBindWarehouseDto boxBindWarehouseDto);

    /**
     * 查询标准箱信息
     * @param info
     * @return
     */
    AjaxResult getBoxInfo(BoxBindWarehouseDto info);

    /**
     * 标准箱信息详情查询
     * @param info
     * @return
     */
    AjaxResult getBoxDetails(BoxBindWarehouseDto info);

    /**
     * 根据编码查询信息
     * @param info
     * @return
     */
    AjaxResult getMaCodeList(BmQrBoxInfo info);

    /**
     * APP -- 编码绑定标准箱
     * @param machine
     * @return
     */
    AjaxResult addMaCodeBoxBind(Machine machine);

    /**
     * 查询移交库管员列表
     * @param bean
     * @return
     */
    List<BmQrBoxInfo> getBoxBindWsList(BmQrBoxInfo bean);
}
