package com.xisc.pm.infra.mapper;

import com.xisc.pm.api.dto.PmCtCollectPoolReqDTO;
import com.xisc.pm.api.dto.PmCtCollectPoolResDTO;
import com.xisc.pm.domain.vo.CdAndQtCollectPoolVO;
import com.xisc.pm.domain.vo.CtMainVO;
import com.xisc.pm.domain.vo.QdToLineupResultSteelVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 组炉合同收池查询
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024/8/22 14:54
 */
public interface PmCtCollectPoolMapper {
    /**
     * 查询
     *
     * @param dto      查询参数
     * @param tenantId 租户
     * @return
     */
    List<PmCtCollectPoolResDTO> selectOrderAndBackLog(@Param(value = "dto") PmCtCollectPoolReqDTO dto, @Param(value = "tenantId") Long tenantId);

    /**
     * 查询
     *
     * @param dto         查询参数
     * @param tenantId    租户
     * @param orderNoList 合同号集合
     * @return
     */
    List<CdAndQtCollectPoolVO> selectList(@Param(value = "dto") PmCtCollectPoolReqDTO dto, @Param(value = "tenantId") Long tenantId,
                                          @Param(value = "orderNoList") List<String> orderNoList);

    /**
     * 查询合同炼钢工艺标准表数据
     *
     * @param orderNoList      合同集合
     * @param wholeBacklogList 主工序代码集合
     * @param dto              查询参数
     * @param tenantId         租户
     * @return
     */
    List<PmCtCollectPoolResDTO> selectListByQd(@Param(value = "orderNoList") List<String> orderNoList,
                                               @Param(value = "wholeBacklogList") List<String> wholeBacklogList,
                                               @Param(value = "dto") PmCtCollectPoolReqDTO dto,
                                               @Param(value = "tenantId") Long tenantId);

    List<CtMainVO> selectOverDevoByOrderNo(@Param(value = "orderNoList")List<String> orderNoList, @Param(value = "tenantId")Long tenantId);

    /**
     * 查询线膨胀系数
     *
     * @param orderNoList
     * @param mscLineNoList
     * @param tenantId
     * @return
     */
    List<QdToLineupResultSteelVO> selectQdToLineupResultSteelList(@Param(value = "orderNoList") List<String> orderNoList,
                                                                  @Param(value = "mscLineNoList") List<String> mscLineNoList,
                                                                  @Param(value = "tenantId") Long tenantId);
}
