package org.dromara.ems.info.service;

import org.dromara.ems.info.domain.SparePartsInventory;
import org.dromara.ems.info.domain.SparePartsInventoryExportVO;

import java.util.List;

/**
 * 备件库记录主Service接口
 * 
 * @author Yinq
 * @date 2025-06-05
 */
public interface ISparePartsInventoryService 
{
    /**
     * 查询备件库记录主
     * 
     * @param objid 备件库记录主主键
     * @return 备件库记录主
     */
    public SparePartsInventory selectSparePartsInventoryByObjid(Long objid);

    /**
     * 查询备件库记录主列表
     * 
     * @param sparePartsInventory 备件库记录主
     * @return 备件库记录主集合
     */
    public List<SparePartsInventory> selectSparePartsInventoryList(SparePartsInventory sparePartsInventory);

    /**
     * 查询备件库记录导出列表（包含动态列）
     * 
     * @param sparePartsInventory 备件库记录主
     * @return 备件库记录导出列表
     */
    public List<SparePartsInventoryExportVO> selectSparePartsInventoryExportList(SparePartsInventory sparePartsInventory);

    /**
     * 新增备件库记录主
     * 
     * @param sparePartsInventory 备件库记录主
     * @return 结果
     */
    public int insertSparePartsInventory(SparePartsInventory sparePartsInventory);

    /**
     * 修改备件库记录主
     * 
     * @param sparePartsInventory 备件库记录主
     * @return 结果
     */
    public int updateSparePartsInventory(SparePartsInventory sparePartsInventory);

    /**
     * 批量删除备件库记录主
     * 
     * @param objids 需要删除的备件库记录主主键集合
     * @return 结果
     */
    public int deleteSparePartsInventoryByObjids(Long[] objids);

    /**
     * 删除备件库记录主信息
     * 
     * @param objid 备件库记录主主键
     * @return 结果
     */
    public int deleteSparePartsInventoryByObjid(Long objid);

    /**
     * 导入备件库记录主数据
     *
     * @param recordList 记录数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importSparePartsInventory(List<SparePartsInventory> recordList, Boolean isUpdateSupport, String operName);

    /**
     * 导入备件库记录主数据（支持动态列）
     *
     * @param exportList 导入数据列表（包含动态列）
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importSparePartsInventoryWithDynamicColumns(List<SparePartsInventoryExportVO> exportList, Boolean isUpdateSupport, String operName);

    /**
     * 查询备件库记录主详细信息（包含盘点数据）
     * 
     * @param objid 备件库记录主主键
     * @return 备件库记录主VO
     */
    public SparePartsInventoryExportVO selectSparePartsInventoryWithChecksByObjid(Long objid);

    /**
     * 新增备件库记录主（包含动态列）
     * 
     * @param sparePartsInventoryVO 备件库记录主VO
     * @return 结果
     */
    public int insertSparePartsInventoryWithDynamicColumns(SparePartsInventoryExportVO sparePartsInventoryVO);

    /**
     * 修改备件库记录主（包含动态列）
     * 
     * @param sparePartsInventoryVO 备件库记录主VO
     * @return 结果
     */
    public int updateSparePartsInventoryWithDynamicColumns(SparePartsInventoryExportVO sparePartsInventoryVO);

    /**
     * 获取所有盘点名称
     * 
     * @return 盘点名称列表
     */
    public List<String> getAllCheckNames();
}
