package com.xisc.pm.infra.mapper;

import com.xisc.pm.domain.entity.PmCmdSlab;
import com.xisc.pm.domain.entity.PmPdSlabInfo;
import com.xisc.pm.domain.vo.MmPlateVO;
import com.xisc.pm.domain.vo.QdToLineupResultHeatVO;
import com.xisc.pm.domain.vo.QdToLineupResultHeattreatVO;
import com.xisc.pm.domain.vo.QdToLineupResultRollingVO;
import com.xisc.pm.domain.vo.QdToLineupResultUTVO;
import com.xisc.pm.domain.vo.QdToPoOrderVO;
import com.xisc.pm.domain.vo.QdToPoOrderVO1;
import io.choerodon.mybatis.common.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * 板坯信息表(PmPdSlabInfo)应用服务
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024-08-12 14:59:21
 */
public interface PmPdSlabInfoMapper extends BaseMapper<PmPdSlabInfo> {
    /**
     * 基础查询
     *
     * @param pmPdSlabInfo 查询条件
     * @return 返回值
     */
    List<PmPdSlabInfo> selectList(PmPdSlabInfo pmPdSlabInfo);

    /**
     * 通过PONO上下限查询PM_PD_SLAB_INFO表
     * @param ponoLowerLimit
     * @param ponoUpperLimit
     * @return
     */
    List<PmCmdSlab> selectListByPono(String ponoLowerLimit, String ponoUpperLimit);

    /**
     * 根据合同号，读取合同制程跟踪表[合同跟踪]查找其对应的全程工序途径码顺序号whole_backlog_no
     * @param orderNoAxis
     * @return
     */
    String selectWholeBacklogNo(String orderNoAxis);

    /**
     * 根据查到的合同号，读取MES合同主表
     * @param orderNoAxis
     * @return
     */
    QdToPoOrderVO1 selectMesOrderMain(String orderNoAxis);

    /**
     * 根据产线号与查到的合同号，读取合同处理加热工艺标准 (QD_TO_LINEUP_RESULT_HEAT)/ QD_TO_LINEUP_RESULT_ROLLING[质量模块]
     * @param orderNoList
     * @param mscLineNo
     * @return
     */
    List<QdToLineupResultRollingVO> selectQdRolllingList(List<String> orderNoList, String mscLineNo);
    
    
    List<QdToLineupResultHeatVO> selectQdHeatList(List<String> orderNoList, String mscLineNo, BigDecimal moldThick);

    /**
     * 根据产线号与查到的合同号，读取合同处理加热工艺标准 (QD_TO_LINEUP_RESULT_HEAT)/ QD_TO_LINEUP_RESULT_ROLLING[质量模块]
     * @param orderNoList
     * @param mscLineNo
     * @return
     */
    List<QdToLineupResultHeattreatVO> selectReultHeatTreat(List<String> orderNoList, String mscLineNo);

    /**
     * 根据当前记录的临时命令板坯号，查询钢板主数据表（MM_PLATE）[轧钢数据]
     * @param tmpSlabNo
     * @return
     */
    MmPlateVO selectMmplate(String tmpSlabNo);

    /**
     * 根据材料号（临时命令板坯号/临时命令板坯号前七位/000），查询厚板热处理实绩表MM_HTMRSLT中有无生产流水号（a）
     * @param tmpSlabNo
     * @return
     */
    Long selectMmHtmrslt(String tmpSlabNo);

    /**
     * 根据合同号与产线号，查询合同产线工艺参数表（PM_CONT_MSC_TECH）中whole_backlog含有'PA'的合同是否存在（b）
     * @param orderNo
     * @param mscLineNo
     * @return
     */
    int selectPmContMscTech(String orderNo, String mscLineNo);

    /**
     * 根据合同号与产线号，查询合同工艺参数表_厚板_精整(QD_TO_LINEUP_RESULT_SIZING）中的走查模式代码ult_check_code
     * @param orderNo
     * @param mscLineNo
     * @return
     */
    List<String> selectUltCheckCode(String orderNo, String mscLineNo);

    /**
     * 根据合同号与产线号，查询合同工艺参数表_厚板_精整(QD_TO_LINEUP_RESULT_SIZING）中的走查模式代码ult_pd_code
     * @param orderNo
     * @param mscLineNo
     * @return
     */
    List<String> selectUltPdCodeList(String orderNo, String mscLineNo);

    /**
     * 根据轴合同号读取[质量模块]MES合同主表，shot_flag取值为1
     * @param orderNo
     * @return
     */
    String selectShotFlag(String orderNo);

    /**
     * 钢板号=临时命令板坯号tmp_slab_no”，读取探伤实绩表（MM_UST_RSLT）中的UST_VALUE_LAST。检查：是否存在UST_VALUE_LAST取值为“1-FAIL”
     * @param tmpSlabNo
     * @return
     */
    String selectMmUstRslt(String tmpSlabNo);

    /**
     *根据钢板号关联MM_PLATE，用MM_PLATE中的板坯号去MM_SLAB读取
     * @param slabNo
     * @return
     */
    String selectOrgOrderNo(String slabNo);

    /**
     * 读取合同处理精准工艺标准（QD_TO_LINEUP_RESULT_SIZING）中的ULT_CODE，记为ult_code
     * @param orgOrderNo
     * @return
     */
    String selectUltCode0(String orgOrderNo);

    /**
     * 根据轴合同号与产线号，读取合同处理精准工艺标准（QD_TO_LINEUP_RESULT_SIZING）中的ULT_CODE，记为ult_code1;
     * @param orderNo
     * @param mscLineNo
     * @return
     */
    String selectUltCode1(String orderNo, String mscLineNo);

    /**
     * 根据命令板坯号查询钢板对应pono
     *
     * @param ponoSlabNoList
     * @param tenantId
     * @return
     */
    List<MmPlateVO> selectPlatePonoList(@Param(value = "ponoSlabNoList") List<String> ponoSlabNoList, @Param(value = "tenantId")Long tenantId);

    /**
     * 根据合同号查询
     *
     * @param orderNoList
     * @param tenantId
     * @return
     */
    List<QdToPoOrderVO> selectQdToPoOrderByOrderList( @Param(value = "orderNoList")List<String> orderNoList,  @Param(value = "tenantId")Long tenantId);

    /**
     * 根据合同号查询
     *
     * @param orderNoList
     * @param tenantId
     * @return
     */
    List<QdToLineupResultUTVO> selectUtCheckCodeByOrderNo(@Param(value = "orderNoList")List<String> orderNoList, @Param(value = "tenantId")Long tenantId);
}

