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

import cn.estsh.i3plus.ext.mes.pojo.bean.MesUnbindProduceSn;
import cn.estsh.i3plus.ext.mes.pojo.bean.MesUnbindProduceSnTravel;
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;
import java.util.Map;

/**
 * @Author: xinwang.yi
 * @CreateDate: 2023/08/04 15:06 下午
 * @Description:
 **/
public interface ISxUnbindProduceSnService {

    /**
     * 解绑未下线已绑定的产品条码
     * @param organizeCode 工厂代码
     * @param userName 操作人
     * @param nowTime 操作时间
     * @param woStatus 工单状态
     * @param workOrderNoList 工单号集合
     */
    @ApiOperation(value = "解绑未下线已绑定的产品条码", notes = "解绑未下线已绑定的产品条码")
    void doUnbindProduceSn(String organizeCode, String userName, String nowTime, Integer woStatus, List<String> workOrderNoList);


    /**
     * 按条件分页查询工单条码信息
     * @param unbindProduceSn 查询条件
     * @param pager 分页条件
     * @return 工单条码集合
     */
    @ApiOperation(value = "按条件页查询解绑条码信息", notes = "按条件查询解绑条码信息")
    List<MesUnbindProduceSn> queryUnbindProduceSn(MesUnbindProduceSn unbindProduceSn);

    /**
     * 按条件分页查询解绑条码信息
     * @param unbindProduceSnTravel 查询条件
     * @param pager 分页条件
     * @return 解绑条码集合
     */
    @ApiOperation(value = "按条件分页查询解绑条码履历信息", notes = "按条件分页查询解绑条码履历信息")
    ListPager<MesUnbindProduceSnTravel> queryUnbindProduceSnTravelByPager(MesUnbindProduceSnTravel unbindProduceSnTravel, Pager pager);


    /**
     * 按条件分页查询解绑条码信息
     * @param produceSnList 条码集合
     * @param organizeCode 工厂代码
     * @return 解绑条码集合
     */
    @ApiOperation(value = "按条件分页查询解绑条码履历信息", notes = "按条件分页查询解绑条码履历信息")
    List<MesUnbindProduceSn> queryUnbindProduceSnBySn(List<String> produceSnList, String organizeCode);

    /**
     * 按条件分页查询解绑条码信息
     * @param produceSnList 条码集合
     * @param organizeCode 工厂代码
     * @return 解绑条码集合
     */
    @ApiOperation(value = "按条件分页查询解绑条码履历信息", notes = "按条件分页查询解绑条码履历信息")
    Map<String, MesUnbindProduceSn> queryUnbindProduceSnBySnMap(List<String> produceSnList, String organizeCode);

}
