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

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProduceSnTravelExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ProduceSnExtModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ep.EpProduceSnExtModel;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSnTravel;
import io.swagger.annotations.ApiOperation;

import java.util.List;

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

    /**
     * 插入条码履历
     * @param snModel 条码信息
     * @return 条码履历
     */
    @ApiOperation(value = "插入条码履历", notes = "插入条码履历")
    MesProduceSnTravelExt insertProduceSnTravelExt(ProduceSnExtModel snModel);

    /**
     * 插入EP条码履历
     * @param snModel 条码信息
     * @return 条码履历
     */
    @ApiOperation(value = "插入EP条码履历", notes = "插入EP条码履历")
    MesProduceSnTravelExt insertEpProduceSnTravelExt(EpProduceSnExtModel snModel);

    /**
     * 插入条码履历
     * @param produceSnExt 条码信息
     * @return 条码履历
     */
    @ApiOperation(value = "插入条码履历", notes = "插入条码履历")
    MesProduceSnTravelExt insertProduceSnTravelExt(MesProduceSnExt produceSnExt);

    /**
     * 根据工单号,生产线,工位查询条码履历集合
     * @param organizeCode 组织代码
     * @param workCenterCode 生产线代码
     * @param workCellCode 工位代码
     * @param workOrderNo 工单号
     * @return
     */
    @ApiOperation(value = "根据工单号,生产线,工位查询条码履历集合", notes = "根据工单号,生产线,工位查询条码履历集合")
    List<MesProduceSnTravelExt> getProduceSnTravelExtListByOrderNo(String organizeCode, String workCenterCode, String workCellCode, String workOrderNo);

    @ApiOperation(value = "根据过程编码,工位查询,工单号查询条码履历集合", notes = "根据工单号,生产线,工位查询条码履历集合")
    List<MesProduceSnTravelExt> getProduceSnTravelExtListByOrderNoAndProcessCode(String organizeCode, String processCode, String workCellCode, String workOrderNo);

    /**
     * 根据工单号,生产线,工位查询条码履历集合
     * @param organizeCode 组织代码
     * @param workCenterCode 生产线代码
     * @param workCellCode 工位代码
     * @param workOrderNo 工单号
     * @return
     */
    @ApiOperation(value = "根据最终工单号,生产线,工位查询条码履历集合", notes = "根据工单号,生产线,工位查询条码履历集合")
    List<MesProduceSnTravelExt> getProduceSnTravelExtListByLastOrderNo(String organizeCode, String workCenterCode, String workCellCode, String workOrderNo);

    /**
     * 根据工单号,生产线,工位查询条码履历集合
     * @param organizeCode 组织代码
     * @param workCenterCode 生产线代码
     * @param workCellCode 工位代码
     * @param workOrderNo 工单号
     * @param serialNumber 条码
     * @return
     */
    @ApiOperation(value = "根据工单号,生产线,工位,条码查询条码履历集合", notes = "根据工单号,生产线,工位,条码查询条码履历集合")
    MesProduceSnTravelExt getProduceSnTravelExtByOrderNoAndWoAndSn(String organizeCode, String workCenterCode, String workCellCode, String workOrderNo, String serialNumber);

}
