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

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOqcCheck;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOqcCheckDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOqcCheckPackageDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOqcCheckPackageIf;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.SxEpOqcManageModel;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @Author : wangjie
 * @CreateDate : 2022-02-15
 * @Modify:
 **/
public interface IJxOqcCheckService {

    /**
     * 根据出货检验单号获取出货检验单据信息
     * @param organizeCode 组织代码
     * @param oqcNo 出货检验单号
     * @return 物料信息
     */
    @ApiOperation(value = "根据出货检验单号获取出货检验单据信息", notes = "根据出货检验单号获取出货检验单据信息")
    MesOqcCheck getOqcCheckByOqcNo(String organizeCode, String oqcNo);

    /**
     * 根据工单号查询出货检验单据条码关联表
     * @param organizeCode 组织代码
     * @param workOrderNo 工单号
     * @return 出货检验单据条码关联表
     */
    @ApiOperation(value = "根据工单号查询出货检验单据条码关联表", notes = "根据工单号查询出货检验单据条码关联表")
    List<MesOqcCheckPackageDetail> getOqcCheckPackageDetailListByWorkOrderNo(String organizeCode, String workOrderNo);

    /**
     * 根据工单号查询出货检验单据主表集合数据
     * @param organizeCode 组织代码
     * @param workOrderNo 工单号
     * @return 出货检验单据主表集合数据
     */
    @ApiOperation(value = "根据工单号查询出货检验单据主表集合数据", notes = "根据工单号查询出货检验单据主表集合数据")
    List<MesOqcCheck> getOqcCheckListByWorkOrderNo(String organizeCode, String workOrderNo);

    /**
     * 根据工单号查询出货检验单据主表非拆机的一条数据
     * @param organizeCode 组织代码
     * @param workOrderNo 工单号
     * @return 出货检验单据主表非拆机的一条数据
     */
    @ApiOperation(value = "根据工单号查询出货检验单据主表非拆机的一条数据", notes = "根据工单号查询出货检验单据主表非拆机的一条数据")
    MesOqcCheck getUnTeardownOqcCheckByWorkOrderNo(String organizeCode, String workOrderNo);

    /**
     * 根据工单号,作业时间,班次查询出货检验单据组件创建时间最新的一条数据
     * @param organizeCode 组织代码
     * @param workOrderNo 工单号
     * @return 出货检验单据主表非拆机的一条数据
     */
    @ApiOperation(value = "根据工单号,作业时间,班次查询出货检验单据组件创建时间最新的一条数据", notes = "根据工单号,作业时间,班次查询出货检验单据组件创建时间最新的一条数据")
    MesOqcCheck getZjOqcCheckByWorkOrderNo(String organizeCode, String workOrderNo, String workTime, String shiftCode);

    /**
     * 根据工单号,作业时间,班次查询出货检验单据数据
     * @param organizeCode
     * @param workOrderNo
     * @param workTime
     * @param shiftCode
     * @return
     */
    @ApiOperation(value = "根据工单号,作业时间,班次查询出货检验单据数据", notes = "根据工单号,作业时间,班次查询出货检验单据数据")
    List<MesOqcCheck> getOqcCheckListByOrderAndTime(String organizeCode, String workOrderNo, String workTime, String shiftCode);

    /**
     * 根据出货检验单号获取出货检验单据检验项目信息集合
     * @param organizeCode
     * @param oqcNo
     * @return
     */
    @ApiOperation(value = "根据出货检验单号获取出货检验单据检验项目信息集合", notes = "根据出货检验单号获取出货检验单据检验项目信息集合")
    List<MesOqcCheckDetail> getOqcCheckDetailListByOqcNo(String organizeCode, String oqcNo);

    /**
     * 根据工单号,作业时间,班次获取出货检验单据条码关联数据
     * @param organizeCode 组织代码
     * @param workOrderNo 生产工单号
     * @param workTime 作业时间
     * @param shiftCode 班次代码
     * @return 出货检验单据条码关联数据
     */
    @ApiOperation(value = "根据工单号,作业时间,班次获取出货检验单据条码关联数据", notes = "根据工单号,作业时间,班次获取出货检验单据条码关联数据")
    List<MesOqcCheckPackageDetail> getOqcCheckPackageDetailListByOrderNoAndWorkTime(String organizeCode, String workOrderNo, String workTime, String shiftCode);

    /**
     * 根据检验单号获取出货检验单据条码关联数据
     * @param organizeCode 组织代码
     * @param oqcNo 检验单号
     * @return 出货检验单据条码关联数据
     */
    @ApiOperation(value = "根据检验单号获取出货检验单据条码关联数据", notes = "根据检验单号获取出货检验单据条码关联数据")
    List<MesOqcCheckPackageDetail> getOqcCheckPackageDetailListByOqcNo(String organizeCode, String oqcNo);

    /**
     * 根据检验单号获取出货检验单据条码关联中间表数据
     * @param organizeCode 组织代码
     * @param oqcNo 检验单号
     * @return 出货检验单据条码关联数据
     */
    @ApiOperation(value = "根据检验单号获取出货检验单据条码关联中间表数据", notes = "根据检验单号获取出货检验单据条码关联中间表数据")
    List<MesOqcCheckPackageIf> getOqcCheckPackageIfListByOqcNo(String organizeCode, String oqcNo);

    /**
     * 根据检验单号获取出货检验单据条码关联中间表数据
     * @param organizeCode 组织代码
     * @param workOrderNo 工单号
     * @param workTime 作业时间
     * @param shiftCode 班次代码
     * @return 出货检验单据条码关联数据
     */
    @ApiOperation(value = "根据工单号,作业时间,班次获取出货检验单据条码关联中间表", notes = "根据工单号,作业时间,班次获取出货检验单据条码关联中间表")
    List<MesOqcCheckPackageIf> getOqcCheckPackageIfListByOrderNoAndWorkTimeAndShiftCode(String organizeCode, String workOrderNo, String workTime, String shiftCode);

    /**
     * 根据生产工单号,产品条码查询出货检验单据主表集合数据
     * @param organizeCode 组织代码
     * @param workOrderNo 生产工单号
     * @param serialNumber 产品条码
     * @return 出货检验单据主表集合数据
     */
    @ApiOperation(value = "根据生产工单号,产品条码查询出货检验单据主表集合数据", notes = "根据生产工单号,产品条码查询出货检验单据主表集合数据")
    List<MesOqcCheck> getOqcCheckListBySn(String organizeCode, String workOrderNo, String serialNumber);

    /**
     * 根据生产工单号,产品条码查询出货检验单据主表集合数据
     * @param organizeCode 组织代码
     * @param workOrderNo 生产工单号
     * @param productSn 产品条码
     * @return 出货检验单据主表集合数据
     */
    @ApiOperation(value = "根据生产工单号,产品条码查询出货检验单据主表集合数据", notes = "根据生产工单号,产品条码查询出货检验单据主表集合数据")
    List<MesOqcCheck> getOqcCheckListByProductSn(String organizeCode, String workOrderNo, String productSn);

    /**
     * 根据工单号,产品条码查询出货检验单据条码关联数据
     * @param organizeCode 组织代码
     * @param workOrderNo  生产工单号
     * @param serialNumber 产品条码
     * @return
     */
    @ApiOperation(value = "根据工单号,产品条码查询出货检验单据条码关联数据", notes = "根据工单号,产品条码查询出货检验单据条码关联数据")
    MesOqcCheckPackageDetail getOqcCheckPackageDetailByOrderNoAndSn(String organizeCode, String workOrderNo, String serialNumber);

    /**
     * 根据工单号,产品条码查询出货检验单据条码关联数据
     * @param organizeCode 组织代码
     * @param workOrderNo  生产工单号
     * @param productSn 产品条码
     * @return
     */
    @ApiOperation(value = "根据工单号,产品条码查询出货检验单据条码关联数据", notes = "根据工单号,产品条码查询出货检验单据条码关联数据")
    MesOqcCheckPackageDetail getOqcCheckPackageDetailByOrderNoAndProductSn(String organizeCode, String workOrderNo, String productSn);

    /**
     * 根据工单号,包装条码查询出货检验单据条码关联数据
     * @param organizeCode 组织代码
     * @param workOrderNo  生产工单号
     * @param packageNo 包装条码
     * @return
     */
    @ApiOperation(value = "根据工单号,包装条码查询出货检验单据条码关联数据", notes = "根据工单号,包装条码查询出货检验单据条码关联数据")
    MesOqcCheckPackageDetail getOqcCheckPackageDetailByOrderNoAndPackageNo(String organizeCode, String workOrderNo, String packageNo);
}
