package com.xisc.pm.infra.mapper;

import com.xisc.pm.domain.entity.PmSlabPoolIn;
import com.xisc.pm.domain.vo.CtMainVO;
import com.xisc.pm.domain.vo.OrderNoRangeVO;
import com.xisc.pm.domain.vo.QdToLineupResultSizingVO;
import com.xisc.pm.domain.vo.QdToPoLineCombVO;
import com.xisc.pm.domain.vo.QdToPoOrderVO;
import com.xisc.pm.domain.vo.QeTjBetterToWorseVO;
import io.choerodon.mybatis.common.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 组炉收池表(PmSlabPoolIn)应用服务
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024-08-07 17:11:26
 */
public interface PmSlabPoolInMapper extends BaseMapper<PmSlabPoolIn> {
    /**
     * 基础查询
     *
     * @param pmSlabPoolIn 查询条件
     * @return 返回值
     */
    List<PmSlabPoolIn> selectList(PmSlabPoolIn pmSlabPoolIn);

    /**
     * 查询质量qd的QD_TO_PO_ORDER表
     *
     * @param newOrderNoList    合同号
     * @param hullSectionNoFrom 船体分段号起
     * @param hullSectionNoTo   船体分段号至
     * @param tenantId          租户
     * @return
     */
    List<QdToPoOrderVO> selectListByQdToPoOrder(@Param("newOrderNoList") List<String> newOrderNoList,
                                                @Param("hullSectionNoFrom") String hullSectionNoFrom,
                                                @Param("hullSectionNoTo") String hullSectionNoTo,
                                                @Param("tenantId") Long tenantId);

    /**
     * 合同处理精整工艺标准获取探伤代码
     *
     * @param newOrderNoList 合同号集合
     * @param tenantId       租户
     * @return
     */
    List<QdToLineupResultSizingVO> selectByQdToLineupResultSizing(@Param("newOrderNoList") List<String> newOrderNoList,
                                                                  @Param("tenantId") Long tenantId);

    /**
     * 根据合同号查询合同处理产线组合表QD_TO_PO_LINE_COMB
     *
     * @param orderNoList 合同号
     * @param tenantId    租户
     * @return
     */
    List<QdToPoLineCombVO> selectByQdToPoLineComb(@Param("orderNoList") List<String> orderNoList, @Param("tenantId") Long tenantId);

    /**
     * 根据合同号查询合同跟踪主表信息
     *
     * @param tenantId         租户
     * @param orderNoRangeList 合同范围集合
     * @return
     */
    List<CtMainVO> selectRemByCtMain(@Param("tenantId")Long tenantId, @Param("orderNoRangeList")List<OrderNoRangeVO> orderNoRangeList);

    /**
     * 内部钢种以优充次维护
     *
     * @param outSgNo  内部钢种
     * @param tenantId 租户
     * @return
     */
    List<QeTjBetterToWorseVO> queryQeTjBetterToWorse(@Param("outSgNo") String outSgNo, @Param("tenantId") Long tenantId);
    
    /**
     * 通过次级内部钢种查询
     * @param stNo
     * @param tenantId
     * @return
     */
    List<QeTjBetterToWorseVO> queryQeTjBetterByWorseStNo(@Param("stNo") String stNo, @Param("tenantId") Long tenantId);

    /**
     * 根据合同号查询ct_main
     *
     * @param orderNoList
     * @param tenantId
     * @return
     */
    List<CtMainVO> selectCtMainByOrderNoList(@Param("orderNoList")List<String> orderNoList, @Param("tenantId")Long tenantId);
}

