package com.xisc.pm.domain.repository;

import com.xisc.pm.domain.entity.PmContMscTech;
import com.xisc.pm.domain.entity.PmProCont;
import com.xisc.pm.domain.vo.QdOrderTechVO;
import org.hzero.mybatis.base.BaseRepository;

import java.util.List;
import java.util.Map;

/**
 * 合同产线工艺参数表资源库
 *
 * @author 曾俊 jun.zeng@hand-china.com 2024-07-29 16:24:25
 */
public interface PmContMscTechRepository extends BaseRepository<PmContMscTech> {

    /**
     * 
     * 通过订单编码和租户ID删除指定合同编码的工艺参数数据
     * 
     * @param orderNoList
     * @param tenantId
     * @return 返回删除数据条数
     */
    int deleteByOrderNoList(List<String> orderNoList, Long tenantId);
    
    /**
     * 通过订单编码和租户ID查询指定合同编码的工艺参数数据
     * @param orderNoList
     * @param tenantId
     * @return 返会属性数据
     */
    List<PmContMscTech> selectByOrderNoList(List<String> orderNoList, Long tenantId);

    /**
     * 通过合同单号和产线号查询工艺参数数据
     * @param orderNo
     * @param mscLineNo
     * @return 返回一条工艺参数数据
     */
    PmContMscTech selectByOrderNoAndMscLineNo(String orderNo, String mscLineNo);
    
    /**
     * 根据合同号和产线号从合同产线工艺参数表PM_CONT_MSC_TECH获取全程工序途径码
     * @param orderNo
     * @param mscLineNo
     * @return
     */
    PmContMscTech selectWholeBacklog(String orderNo, String mscLineNo);

    /**
     * 根据产线号，合同号集合查询工艺参数
     * @param orderNoList
     * @param mscLineNo
     * @param tenantId
     * @return
     */
    List<PmContMscTech> selectByOrderNoAndMscLineNo(List<String> orderNoList, String mscLineNo, Long tenantId);

    /**
     * 根据产线号，合同号集合查询工艺参数
     *
     * @param orderNoList
     * @param mscLineNoList
     * @param tenantId
     * @return
     */
    List<PmContMscTech> selectByOrderNoAndMscLineNo(List<String> orderNoList, List<String> mscLineNoList, Long tenantId);

    /**
     * 生产合同工艺参数
     * @param pmProConts
     * @param qdOrderTechVOs 
     * @return
     */
    List<PmContMscTech> createPmContMscTech(List<PmProCont> pmProConts , List<QdOrderTechVO> qdOrderTechVOs, Long tenantId, Map<String, String> qdToLineupResultSteelMap);

}
