package com.bonus.material.codeCollection.service;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.codeCollection.domain.WsMaInfo;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * WsMaInfoService
 * 机具信息服务层接口（Service Layer）
 * 提供机具信息的增删改查、业务封装等功能
 * 返回 AjaxResult 用于标准响应封装
 */
public interface WsMaInfoService {

    /**
     * 根据主键 ID 查询单个机具信息
     *
     * @param id 主键ID
     * @return AjaxResult，包含状态码、消息、数据（WsMaInfo）
     */
    AjaxResult getById(Integer id);

    /**
     * 查询所有机具信息（无分页）
     *
     * @return 机具列表（List<WsMaInfo>）
     */
    List<WsMaInfo> getAll(WsMaInfo info);

    /**
     * 新增一条机具记录
     *
     * @param info 新增的 WsMaInfo 实体
     * @return AjaxResult，成功或失败信息
     */
    AjaxResult save(WsMaInfo info);

    /**
     * 更新一条已有机具信息记录
     *
     * @param info 待更新的 WsMaInfo 实体（必须含 ID）
     * @return AjaxResult，成功或失败信息
     */
    AjaxResult update(WsMaInfo info);

    /**
     * 根据主键 ID 删除记录
     *
     * @param id 要删除的主键 ID
     * @return AjaxResult，成功或失败信息
     */
    AjaxResult delete(Integer id);

    /**
     * 获取机具类型下拉选
     *
     * @return 机具类型集合
     */
    AjaxResult getMaTypeData();


    /**
     * 获取机具规格下拉选
     *
     * @return 机具规格集合
     */
    AjaxResult getMaModeData(Integer parentId);


    /**
     * 获取出厂厂家
     *
     * @return 出厂厂家集合
     */
    AjaxResult getSupplier();


    /**
     * 更新时间
     *
     * @return 条数
     */
    AjaxResult updateCheckTime(WsMaInfo info);

    /**
     * 查询小工具编码信息列表
     * @param info
     * @return
     */
    List<WsMaInfo> getGadgetList(WsMaInfo info);

    /**
     * 新增小工具编码信息
     * @param info
     * @return
     */
    AjaxResult addWsMaInfoData(WsMaInfo info);

    /**
     * 删除小工具编码信息
     * @param info
     * @return
     */
    AjaxResult delGadget(WsMaInfo info);

    /**
     * 根据ID获取小工具信息
     * @param id
     * @return
     */
    AjaxResult getGadgetInfo(Integer id);

    /**
     * 更新小工具信息
     * @param info
     * @return
     */
    AjaxResult updateGadgetInfo(WsMaInfo info);

    /**
     * 小工具导入模版下载
     * @param resp
     */
    void downLoadTemplate(HttpServletResponse resp);

    /**
     * 导入小工具信息
     * @param file
     * @return
     */
    AjaxResult importTbData(MultipartFile file);
}
