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

import cn.estsh.i3plus.ext.mes.pojo.model.jx.*;
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 IJxOqcReportFormService {

    /**
     * 出货检验结果明细报表
     * @param model 查询条件
     * @param pager 分页条件
     * @return 出货检验结果明细报表
     */
    @ApiOperation(value = "出货检验结果明细报表", notes = "出货检验结果明细报表")
    ListPager<JxOqcCheckReportModel> queryOqcCheckReportPager(JxOqcCheckReportModel model, Pager pager);

    /**
     * 出货检验结果明细不合格不良结果修改
     * @param model 查询条件
     * @return 出货检验结果明细报表
     */
    @ApiOperation(value = "出货检验结果明细不合格不良结果修改", notes = "出货检验结果明细不合格不良结果修改")
    void updateOqcCheckReport(JxOqcCheckReportModel model);

    /**
     * 出货检验项目明细报表
     * @param model 查询条件
     * @param pager 分页条件
     * @return 出货检验项目明细报表
     */
    @ApiOperation(value = "出货检验项目明细报表", notes = "出货检验项目明细报表")
    ListPager<JxOqcCheckDetailReportModel> queryOqcCheckDetailReportPager(JxOqcCheckDetailReportModel model, Pager pager);

    /**
     * 出货检验项目明细报表批量确认
     * @param idStr id数组
     * @param userName 操作人
     */
    @ApiOperation(value = "出货检验项目明细报表批量确认", notes = "出货检验项目明细报表批量确认")
    void updateOqcCheckDetailConfirmUser(String[] idStr, String userName);

    /**
     * 出货检验质量预警
     * @param model 查询条件
     * @return 出货检验质量预警
     */
    @ApiOperation(value = "出货检验质量预警", notes = "出货检验质量预警")
    JxOqcCheckQualityEarlyWarningReportModel queryOqcCheckQualityEarlyWarningReport(JxOqcCheckQualityEarlyWarningReportModel model);

    /**
     * 出货总检明细报表
     * @param model 查询条件
     * @param pager 分页条件
     * @return 出货总检明细报表
     */
    @ApiOperation(value = "出货总检明细报表", notes = "出货总检明细报表")
    ListPager<JxOqcLastCheckDetailReportModel> queryOqcLastCheckDetailReportPager(JxOqcLastCheckDetailReportModel model, Pager pager);

    /**
     * 出货检验缺件确认
     * @param model 查询条件
     * @param pager 分页条件
     * @return 出货检验缺件确认
     */
    @ApiOperation(value = "出货检验缺件确认", notes = "出货检验缺件确认")
    ListPager<JxOqcCheckFreConfirmReportModel> queryOqcCheckFreConfirmReportPager(JxOqcCheckFreConfirmReportModel model, Pager pager);

    /**
     * 出货检验缺件确认明细
     * @param model 查询条件
     * @return 出货检验缺件确认明细
     */
    @ApiOperation(value = "出货检验缺件确认明细", notes = "出货检验缺件确认明细")
    List<JxOqcCheckFreConfirmDetailReportModel> queryOqcCheckFreConfirmDetailReport(JxOqcCheckFreConfirmDetailReportModel model);

    /**
     * 出货检验月报日报
     * @param model 查询条件
     * @return 出货检验月报日报
     */
    @ApiOperation(value = "出货检验月报日报", notes = "出货检验月报日报")
    JxOqcCheckStatisticsReportModel queryOqcCheckStatisticsReport(JxOqcCheckStatisticsReportModel model);

    /**
     * 查询出货检验单分页集合
     * @param model 查询条件
     * @param pager 分页条件
     * @return 出货检验单分页集合
     */
    @ApiOperation(value = "查询出货检验单分页集合", notes = "查询出货检验单分页集合")
    ListPager<JxOqcCheckReportModel> queryOqcCheckPager(JxOqcCheckReportModel model, Pager pager);


    /**
     * 查询出货检验单履历分页集合
     * @param model 查询条件
     * @param pager 分页条件
     * @return 出货检验单履历分页集合
     */
    //@ApiOperation(value = "查询出货检验单履历分页集合", notes = "查询出货检验单履历分页集合")
    //ListPager queryOqcCheckTravelPager(SxQmsOqcCheckTravel travel, Pager pager);

    /**
     * 出货检验单产品明细查询
     * @param model 查询条件
     * @return
     */
    @ApiOperation(value = "出货检验单产品明细查询", notes = "出货检验单产品明细查询")
    List<JxOqcPackageDetailModel> queryOqcPackageDetailList(JxOqcCheckReportModel model);

    /**
     * 出货检验产品结果变更
     * @param model 变更数据
     * @param userName 操作人
     */
    @ApiOperation(value = "出货检验产品结果变更", notes = "出货检验产品结果变更")
    void updateOqcPackageDetailResult(JxOqcBatchModel model, String userName);

    /**
     * 出货检验单结果变更
     * @param model 变更数据
     * @param userName 操作人
     */
    @ApiOperation(value = "出货检验单结果变更", notes = "出货检验单结果变更")
    void updateOqcCheckResult(JxOqcCheckReportModel model, String userName);

    /**
     * 出货检验单项目明细备注修改
     * @param detail 出货检验单项目明细数据
     * @param userName 操作人
     */
    @ApiOperation(value = "出货检验单项目明细备注修改", notes = "出货检验单项目明细备注修改")
    void updateOqcCheckDetailRemark(JxOqcCheckDetailReportModel detail, String userName);

    /**
     * 出货检验单结果变更
     * @param model 变更数据
     * @param userName 操作人
     */
    @ApiOperation(value = "出货检验单项目更新检测数量", notes = "出货检验单项目更新检测数量")
    void updateOqcCheckReportOqcQty(JxOqcCheckReportModel model, String userName);

    @ApiOperation(value = "出货检验单项目明细更新", notes = "出货检验单项目明细更新")
    void updateOqcCheckDetailEdit(JxOqcCheckDetailReportModel model);

}
