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

import cn.estsh.i3plus.ext.mes.pojo.model.SxDefectModel;
import cn.estsh.i3plus.pojo.mes.bean.MesArea;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @Description :
 * @Reference :
 * @Author : dominic
 * @CreateDate : 2022/5/26 16:30
 * @Modify:
 **/
public interface IProcedureOnSiteService {

    /**
     * 查询区域
     *
     * @param organizeCode 工厂代码
     * @return 区域集合
     */
    @ApiOperation(value = "查询区域", notes = "查询区域")
    List<MesArea> findArea(String organizeCode);

    /**
     * 查询产线
     *
     * @param organizeCode 工厂代码
     * @param areaCode     区域代码
     * @return 产线集合
     */
    @ApiOperation(value = "查询产线", notes = "查询产线")
    List<MesWorkCenter> findWorkCenter(String organizeCode, String areaCode);

    /**
     * 获取启动状态的工单信息
     *
     * @param organizeCode   工厂代码
     * @param workCenterCode 产线代码
     * @return 工单集合
     */
    @ApiOperation(value = "获取启动状态的工单信息", notes = "获取启动状态的工单信息")
    List<MesWorkOrder> findWorkOrderByStatus(String organizeCode, String workCenterCode);

    /**
     * 获取物料名称
     *
     * @param organizeCode 工厂代码
     * @param partNo       物料编码
     * @return 物料名称
     */
    @ApiOperation(value = "获取物料名称", notes = "获取物料名称")
    String getPartName(String organizeCode, String partNo);

    /**
     * 按条件分页查询MES缺陷信息
     *
     * @param organizeCode 工厂代码
     * @return 缺陷集合
     */
    @ApiOperation("按条件分页查询MES缺陷信息")
    List<SxDefectModel> queryMesDefectByPager(String organizeCode);

    /**
     * 按规则生成条码
     *
     * @param organizeCode 工厂代码
     * @param userName     用户名
     * @param ruleCode     规则代码
     * @return 条码
     */
    @ApiOperation("按规则生成条码")
    String generateSerialNumber(String organizeCode, String userName, String ruleCode);
}
