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

import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOqcCheckDetail;
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.MesOutPutStatistics;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MissPartConfirmModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.OqcLastCheckModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.OqcLastCheckParamModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.OqcManageModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.bu.BuOutPutStatisticsModel;
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: wangjie
 * @CreateDate: 2021/01/19 15:06 下午
 * @Description:
 **/
public interface IOqcManageService {

    /**
     * 出货检验明细
     * @param organizeCode 工厂代码
     * @param oqcNo 检验单号
     * @param pager 分页信息
     * @return 出货检验明细
     */
    @ApiOperation(value = "出货检验明细", notes = "出货检验明细")
    ListPager<MesOqcCheckDetail> queryOqcDetail(String organizeCode, String oqcNo, Pager pager);

    /**
     * 重置
     * @param model 重置信息
     * @return 出货检验数据
     */
    @ApiOperation(value = "重置", notes = "重置")
    OqcManageModel resetOqcData(OqcManageModel model);

    /**
     * 总检验结果分页查询
     * @param model 查询信息
     * @param pager 分页信息
     * @return 总检验结果分页数据
     */
    @ApiOperation(value = "总检验结果分页查询", notes = "总检验结果分页查询")
    ListPager<OqcLastCheckModel> queryOqcLastCheckPager(OqcLastCheckModel model, Pager pager);

    /**
     * 修改总检验单结果
     * @param model 查询信息
     */
    @ApiOperation(value = "修改总检验单结果", notes = "修改总检验单结果")
    void updateOutPutStatisticsOqcCheck(OqcLastCheckParamModel model);

    /**
     * 查询缺件信息
     *
     * @param serialNumber 产品条码
     * @param organizeCode 组织代码
     * @return 缺件信息
     */
    @ApiOperation(value = "修改总检验单结果", notes = "修改总检验单结果")
    MissPartConfirmModel queryMissingPart(String serialNumber, String organizeCode, Pager pager);

    /**
     * 确认合格
     * @param idsStr 异常下线数据ID数组
     * @param organizeCode 组织代码
     * @param userInfo 操作人
     */
    @ApiOperation(value = "修改总检验单结果", notes = "修改总检验单结果")
    void updateErrorLineOff(Long[] idsStr, String organizeCode, String userInfo);

    /**
     * 根据条码查找工单信息
     *
     * @param serialNumber 产品条码
     * @param organizeCode 组织代码
     * @return 缺件信息
     */
    @ApiOperation(value = "根据产品条码获取缺件信息", notes = "根据产品条码获取缺件信息")
    MissPartConfirmModel getMissingPartAndWorkOrderBySn(String serialNumber, String organizeCode);

    /**
     * 根据条码查找工单信息
     * @param organizeCode 组织代码
     * @return 产量统计
     */
    @ApiOperation(value = "根据 工单号、物料号、班次、产线 查询产量统计数据", notes = "根据条码查找产量统计数据")
    List<MesOutPutStatistics> queryOutPutStatisticsList(OqcLastCheckModel model , String organizeCode);

    /**
     * 根据条码查找工单信息
     * @param organizeCode 组织代码
     * @return 产量统计
     */
    @ApiOperation(value = "根据 工单号、物料号、班次、产线 查询产量统计数据", notes = "根据条码查找产量统计数据")
    List<BuOutPutStatisticsModel> queryOutPutStatisticsModelList(OqcLastCheckModel model , String organizeCode);
}
