package cn.estsh.i3plus.ext.mes.pcn.api.busi;

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOuterPackage;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOuterPackageDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesPackageExt;
import cn.estsh.i3plus.pojo.mes.bean.MesPackage;
import cn.estsh.i3plus.pojo.mes.bean.MesPackageDetail;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @Author: wangjie
 * @CreateDate: 2021/01/19 15:06 下午
 * @Description:
 **/
public interface IPackageExtService {

    /**
     * 根据产品条码查询包装条码明细信息
     * @param organizeCode 组织代码
     * @param serialNumber 产品条码
     * @return 包装条码明细信息
     */
    @ApiOperation(value = "根据产品条码查询包装条码明细信息", notes = "根据产品条码查询包装条码明细信息")
    MesPackageDetail getPackageDetailBySn(String organizeCode, String serialNumber);

    /**
     * 根据产品条码查询包装条码明细信息
     * @param organizeCode 组织代码
     * @param serialNumber 产品条码
     * @return 包装条码明细信息
     */
    @ApiOperation(value = "根据产品条码查询包装条码明细信息", notes = "根据产品条码查询包装条码明细信息")
    MesPackageDetail getPackageDetailByProductSn(String organizeCode, String serialNumber);

    /**
     * 根据产品条码查询包装条码明细信息
     * @param organizeCode 组织代码
     * @param serialNumber 产品条码
     * @return 包装条码明细信息
     */
    @ApiOperation(value = "根据产品条码查询无效的包装条码明细信息", notes = "根据产品条码查询无效的包装条码明细信息")
    MesPackageDetail getPackageDetailOnValidBySn(String organizeCode, String serialNumber);

    /**
     * 根据包装条码查询包装条码明细信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 包装条码明细信息
     */
    @ApiOperation(value = "根据包装条码查询包装条码明细信息", notes = "根据包装条码查询包装条码明细信息")
    MesPackageDetail getPackageDetailByPackNo(String organizeCode, String packageNo);

    /**
     * 根据包装条码、工单号查询包装条码明细信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 包装条码明细信息
     */
    @ApiOperation(value = "根据包装条码、工单号查询包装条码明细信息", notes = "根据包装条码查询包装条码明细信息")
    MesOuterPackageDetail getBigPackageDetailByPackNoAndWorkOrderNo(String organizeCode, String packageNo,String workOrderNo);

    /**
     * 根据大包装条码查询包装条码明细信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 大包装条码明细信息
     */
    @ApiOperation(value = "根据包装条码查询包装条码明细信息", notes = "根据包装条码查询包装条码明细信息")
    List<MesOuterPackageDetail> getBigPackageDetailByPackNo(String organizeCode, String packageNo);

    /**
     * 根据包装条码查询包装条码明细集合信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 包装条码明细信息
     */
    @ApiOperation(value = "根据包装条码查询包装条码明细集合信息", notes = "根据包装条码查询包装条码明细集合信息")
    List<MesPackageDetail> getPackageDetailListByPackNo(String organizeCode, String packageNo);

    /**
     * 根据包装条码查询包装条码信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 包装条码信息
     */
    @ApiOperation(value = "根据包装条码查询包装条码信息", notes = "根据包装条码查询包装条码信息")
    MesPackageExt getPackageByPackNo(String organizeCode, String packageNo);
    /**
     * 根据包装条码查询包装条码信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 包装条码信息
     */
    @ApiOperation(value = "根据包装条码查询包装条码信息", notes = "根据包装条码查询包装条码信息")
    MesOuterPackage getBigPackageByPackNo(String organizeCode, String packageNo);

    /**
     * 根据包装条码查询包装条码信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 包装条码信息
     */
    @ApiOperation(value = "根据包装条码查询包装条码信息", notes = "根据包装条码查询包装条码信息")
    MesPackage getPackageByPackageNo(String organizeCode, String packageNo);

    /**
     * 根据容器条码查询包装条码信息
     * @param organizeCode 组织代码
     * @param ctNo 容器条码
     * @return 包装条码信息
     */
    @ApiOperation(value = "根据容器条码查询包装条码信息", notes = "根据容器条码查询包装条码信息")
    MesPackage getPackageByCtNo(String organizeCode, String ctNo);

    /**
     * 根据包装条码查询包装条码信息
     * @param organizeCode 组织代码
     * @param packageNo 包装条码
     * @return 包装条码信息
     */
    @ApiOperation(value = "根据包装条码查询有效或无效的包装条码信息", notes = "根据包装条码查询有效或无效的包装条码信息")
    MesPackageExt getPackageOnValidByPackNo(String organizeCode, String packageNo);

    /**
     * 根据工单号获取包装条码集合
     * @param organizeCode 组织代码
     * @param workOrderNo 工单号
     * @return 包装条码集合
     */
    @ApiOperation(value = "根据工单号获取包装条码集合", notes = "根据工单号获取包装条码集合")
    List<MesPackageExt> getPackageListByWorkOrderNo(String organizeCode, String workOrderNo);

    /**
     * 根据最终工单号获取包装条码集合
     * @param organizeCode 组织代码
     * @param lastWorkOrderNo 最终工单号
     * @return 包装条码集合
     */
    @ApiOperation(value = "根据最终工单号获取包装条码集合", notes = "根据最终工单号获取包装条码集合")
    List<MesPackageExt> getPackageListByLastWorkOrderNo(String organizeCode, String lastWorkOrderNo);



}
