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

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOrderJob;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesWorkCenterExt;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesOrderJobModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;

import java.util.List;

/**
 * @Author: xiangming.liao
 * @CreateDate: 2021/01/18 15:56
 * @Description:
 **/
public interface IMesOrderJobService {

    /**
     * 按条件查找创建、点检中的单据作业
     *
     * @param orderJob
     * @return
     */
    List<MesOrderJobModel> queryMesOrderJob(MesOrderJobModel orderJob);

    /**
     * 按条件分页查找创建、点检中的单据作业
     *
     * @param orderJob
     * @return
     */
    ListPager<MesOrderJobModel> queryMesOrderJobByPager(MesOrderJobModel orderJob, Pager pager);

    /**
     * 修改单据作业状态
     *
     * @param id
     * @param orderStatus
     * @return
     */
    int orderJobUpdateOrderStatus(long id, Integer orderStatus, String organizeCode, String modifyUser, String closeReason);

    /**
     * 查询单据作业
     *
     * @param mesOrderJob
     * @return
     */
    List<MesOrderJob> findMesOrderJob(MesOrderJob mesOrderJob);

    /**
     * 根据id批量修改单据状态
     *
     * @param idsStr
     * @param orderStatus
     * @param organizeCode
     * @param modifyUser
     * @return
     */
    @ApiOperation(value = "根据id批量修改单据状态", notes = "根据id批量修改单据状态")
    int updateOrderStatusByIds(String[] idsStr, Integer orderStatus, String organizeCode, String modifyUser);

    /**
     * 查询产线当前班次
     *
     * @param workCenterCode
     * @param organizeCode
     * @return
     */
    @ApiOperation(value = "查询产线当前班次", notes = "查询产线当前班次")
    MesWorkCenterExt getWorkCenter(String workCenterCode, String organizeCode);


    /**
     * @return void
     * @Description: 提交，完成单据
     * @Param [orderNo, modifyUser, organizeCode]
     * @Date 2021/6/21 10:59
     **/
    @ApiOperation(value = "提交，完成单据", notes = "提交，完成单据")
    void doCommitOrderJob(String orderNo, Integer orderType, String modifyUser, String organizeCode);
}
