package com.hw.mes.service;

import java.util.List;
import com.hw.mes.domain.MesProductOrder;

/**
 * 生产工单Service接口
 * 
 * @author Yinq
 * @date 2024-02-20
 */
public interface IMesProductOrderService 
{
    /**
     * 查询生产工单
     * 
     * @param productOrderId 生产工单主键
     * @return 生产工单
     */
    public MesProductOrder selectMesProductOrderByProductOrderId(Long productOrderId);

    /**
     * 查询生产工单列表
     * 
     * @param mesProductOrder 生产工单
     * @return 生产工单集合
     */
    public List<MesProductOrder> selectMesProductOrderList(MesProductOrder mesProductOrder);

    /**
     * 新增生产工单
     * 
     * @param mesProductOrder 生产工单
     * @return 结果
     */
    public int insertMesProductOrder(MesProductOrder mesProductOrder);

    /**
     * 修改生产工单
     * 
     * @param mesProductOrder 生产工单
     * @return 结果
     */
    public int updateMesProductOrder(MesProductOrder mesProductOrder);

    /**
     * 批量删除生产工单
     * 
     * @param productOrderIds 需要删除的生产工单主键集合
     * @return 结果
     */
    public int deleteMesProductOrderByProductOrderIds(Long[] productOrderIds);

    /**
     * 删除生产工单信息
     * 
     * @param productOrderId 生产工单主键
     * @return 结果
     */
    public int deleteMesProductOrderByProductOrderId(Long productOrderId);

    /**
     * 获取工单编号
     * @return orderCode
     */
    public String getOrderCode();

    /**
     * 锁库存
     *
     * @param mesProductOrder 生产工单
     * @return 结果
     */
    public int  productOrderLockInventory(MesProductOrder mesProductOrder);

    /**
     * 工单发布
     *
     * @param mesProductOrder 生产工单
     * @return 结果
     */
    public int productOrderPublish(MesProductOrder mesProductOrder);

    /**
     * 校验BOM是否被生产工单选择
     * @param materialBomId
     * @return
     */
    public Boolean verifyBOMIsProduction(Long materialBomId);
}
