package com.hw.mes.service;

import java.util.List;

import com.hw.mes.domain.MesBaseAttachInfo;
import com.hw.mes.domain.MesProductOrder;
import com.hw.mes.domain.MesProductPlan;

/**
 * 生产派工Service接口
 *
 * @author xins
 * @date 2024-02-21
 */
public interface IMesProductPlanService
{
    /**
     * 查询生产派工
     *
     * @param planId 生产派工主键
     * @return 生产派工
     */
    public MesProductPlan selectMesProductPlanByPlanId(Long planId);

    /**
     * 查询生产派工列表
     *
     * @param mesProductPlan 生产派工
     * @return 生产派工集合
     */
    public List<MesProductPlan> selectMesProductPlanList(MesProductPlan mesProductPlan);

    /**
     * 新增生产派工
     *
     * @param mesProductPlan 生产派工
     * @return 结果
     */
    public int insertMesProductPlan(MesProductPlan mesProductPlan);

    /**
     * 修改生产派工
     *
     * @param mesProductPlan 生产派工
     * @return 结果
     */
    public int updateMesProductPlan(MesProductPlan mesProductPlan);

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

    /**
     * 删除生产派工信息
     *
     * @param planId 生产派工主键
     * @return 结果
     */
    public int deleteMesProductPlanByPlanId(Long planId);


    /**
     * 查询生产派工列表Join product_order和base_material
     *
     * @param mesProductPlan 生产派工
     * @return 生产派工
     */
    public List<MesProductPlan> selectMesProductPlanJoinList(MesProductPlan mesProductPlan);

    /**
     * 获取派工编号
     *
     * @return 生产派工
     */
    public String getDispatchCode();

    /**
     * 生产工单新增生产派工List
     *
     * @param mesProductPlanList 生产派工
     * @return 结果
     */
    public int orderAddMesProductPlanList(List<MesProductPlan> mesProductPlanList);

    /**
     * 获取生产派工图纸List列表
     * @param planId
     * @return
     */
    public List<MesBaseAttachInfo> getDispatchDrawingList(Long planId);

    /**
     * 工单撤回
     *
     * @param mesProductOrder 生产工单
     * @return 结果
     */
    public int productOrderRecall(MesProductOrder mesProductOrder);

}
