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

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesProdBindRecordExt;
import cn.estsh.i3plus.pojo.mes.bean.MesProdBindRecord;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author: wangjie
 * @CreateDate: 2021/01/18 11:22 上午
 * @Description:
 **/
public interface IJxProdBindRecordExtService {

    /**
     * 插入产品绑定记录拓展表(新事务，不回滚)
     *
     * @param prodBindRecordExt 绑定记录拓展
     */
    @ApiOperation(value = "插入产品绑定记录拓展表(新事务，不回滚)", notes = "插入产品绑定记录拓展表(新事务，不回滚)")
    @Transactional(propagation = Propagation.REQUIRES_NEW, noRollbackFor = {ImppBusiException.class, Exception.class})
    void insertProdBindRecordExtNoRollback(MesProdBindRecordExt prodBindRecordExt);

    /**
     * 根据生产工单号,工位代码查询产品绑定记录信息
     * @param organizeCode 组织代码
     * @param workOrderNo 生产工单号
     * @param workCellCode 工位代码
     * @param productSn 产品条码
     * @param thirdPartyPid 管理码关系表ID
     * @return 产品绑定记录信息
     */
    @ApiOperation(value = "根据生产工单号,工位代码查询产品绑定记录信息", notes = "根据生产工单号,工位代码查询产品绑定记录信息")
    List<MesProdBindRecordExt> getProdBindRecordExtListByPsOrMc(String organizeCode, String workOrderNo, String workCellCode, String productSn, String thirdPartyPid);

    /**
     * 根据部品条码查询产品绑定记录信息
     * @param organizeCode 组织代码
     * @param kpSn 部品条码
     * @return 产品绑定记录信息
     */
    @ApiOperation(value = "根据部品条码查询产品绑定记录信息", notes = "根据部品条码查询产品绑定记录信息")
    List<MesProdBindRecord> getProdBindRecordListByKpSn(String organizeCode, String kpSn);

}
