package com.cf.imes.module.executor.service.rawgoods;

import java.util.*;
import javax.validation.*;

import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsPageReqVO;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO;
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
import com.cf.imes.framework.common.pojo.PageResult;

/**
 * 生产单设计商品表 order_raw_goods_{N} Service 接口
 *
 * @author 晨丰科技
 */
public interface RawGoodsService {

    /**
     * 创建生产单设计商品表 order_raw_goods_{N}
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createRawGoods(@Valid RawGoodsSaveReqVO createReqVO);

    /**
     * 更新生产单设计商品表 order_raw_goods_{N}
     *
     * @param updateReqVO 更新信息
     */
    void updateRawGoods(@Valid RawGoodsSaveReqVO updateReqVO);

    /**
     * 删除生产单设计商品表 order_raw_goods_{N}
     *
     * @param id 编号
     */
    void deleteRawGoods(Long id);

    /**
     * 获得生产单设计商品表 order_raw_goods_{N}
     *
     * @param id 编号
     * @return 生产单设计商品表 order_raw_goods_{N}
     */
    RawGoodsDO getRawGoods(Long id);

    /**
     * 获得生产单设计商品表 order_raw_goods_{N}分页
     *
     * @param pageReqVO 分页查询
     * @return 生产单设计商品表 order_raw_goods_{N}分页
     */
    PageResult<RawGoodsDO> getRawGoodsPage(RawGoodsPageReqVO pageReqVO);

    /**
     * 批量导入板材
     *
     * @param importRawGoods     导入生产单板材列表
     * @param orderId 生产单Id
     * @return 导入结果
     */
    RawGoodsImportRespVO importRawGoodsList(List<RawGoodsSaveReqVO> importRawGoods, Long orderId);

    /**
     * 获得生产单设计商品表 order_raw_goods_{N}
     *
     * @param orderId 编号
     * @return 生产单设计商品表 order_raw_goods_{N}
     */
    List<RawGoodsDO> getRawGoodsByOrder(Long orderId);

}