package net.lab1024.sa.admin.module.business.wms.base.item.service;

import java.math.BigDecimal;
import java.util.List;

import net.lab1024.sa.admin.module.business.wms.base.item.domain.entity.ItemEntity;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemAddForm;
import net.lab1024.sa.admin.module.business.wms.base.item.domain.form.ItemUpdateForm;
import net.lab1024.sa.base.common.domain.ResponseDTO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 物料信息 Service
 *
 * @author 霍锦
 * @since 2024-11-25 17:08:18
 * copyright 友仓
 */
public interface ItemService {

    /**
     * 添加
     *
     * @param addForm 入参
     * @return ResponseDTO<String>
     */
    ResponseDTO<String> add(ItemAddForm addForm);

    /**
     * 更新
     *
     * @param updateForm 入参
     * @return ResponseDTO<String>
     */
    ResponseDTO<String> update(ItemUpdateForm updateForm);

    /**
     * 批量删除
     *
     * @param idList 入参
     * @return ResponseDTO<String>
     */
    ResponseDTO<String> batchDelete(List<Long> idList);

    /**
     * 单个删除
     *
     * @param itemId 入参
     * @return ResponseDTO<String>
     */
    ResponseDTO<String> delete(Long itemId);

    /**
     * 物料导入
     *
     * @param file 上传文件
     * @return ResponseDTO<String>
     */
    ResponseDTO<String> importItems(MultipartFile file);

    /**
     * 创建物料
     *
     * @param itemCode   物料编码
     * @param itemName   物料名称
     * @param unit       包装单位
     * @param packFactor 包装系数
     * @param itemType   物料类型
     * @return ItemEntity
     */
    ItemEntity createItem(String itemCode, String itemName, String unit, BigDecimal packFactor, String itemType);

}
