package com.xisc.pm.app.service;

import com.xisc.pm.api.dto.AssemblyStoveActualPerformanceDTO;
import com.xisc.pm.api.dto.FurnaceNumberDeterminationDTO;
import com.xisc.pm.api.dto.PmPdMscLineChangeDTO;
import com.xisc.pm.api.dto.PmPreSubstitutionDTO;
import com.xisc.pm.api.dto.PmProductionPlanReqDTO;
import com.xisc.pm.api.dto.PmProductionPlanResDTO;
import com.xisc.pm.api.dto.PmQueryIsSampleDTO;
import com.xisc.pm.api.dto.PmRemoveBoardsFromOrderDTO;
import com.xisc.pm.api.dto.PmRollingWasteCompositeDTO;
import com.xisc.pm.api.dto.PmTwoRollInterimRequestDTO;
import org.hzero.core.base.AopProxy;

import java.util.List;

/**
 * @author 蒋雨航 yuhang.jiang02@hand-china.com
 */
public interface ApiService extends AopProxy<ApiService> {

    /**
     * 代预替代成功接口
     */
    void successfulPreSubstitution(List<PmPreSubstitutionDTO> preSubstitutionDTOs, Long organizationId);

    /**
     * 炉次确定接口
     */
    void furnaceNumberDetermination(List<FurnaceNumberDeterminationDTO> dto, Long organizationId);

    /**
     * 组炉实绩数据接口
     */
    AssemblyStoveActualPerformanceDTO assemblyStoveActualPerformance(String orderNo, Long organizationId);

    /**
     * 二次开坯-余坯
     * 
     * @param pmTwoRollInterimRequest
     * @return
     */
    Boolean createTwoRollInterim(List<PmTwoRollInterimRequestDTO> requestList , Long organizationId);

    /**
     * 合同跟踪材料产线变更
     * 
     * @param changeRequest
     * @return
     */
    Boolean mscLineNoChange(List<PmPdMscLineChangeDTO> changeRequest , Long organizationId);

    /**
     * 钢板转板坯实现钢锭二次开坯
     * 
     * @param dto
     * @return
     */
    Boolean createIngotTwoRollInterim(List<PmTwoRollInterimRequestDTO> requestList,Long organizationId);

    /**
     * 轧制废料复合材料
     *
     * @param tenantId                       租户id
     * @param pmRollingWasteCompositeDTOList pm轧制废料复合dtolist
     *
     *
     */
    Void compositeChange(Long tenantId, List<PmRollingWasteCompositeDTO> pmRollingWasteCompositeDTOList);

    /**
     * 形成新试批接口
     * @param organizationId
     * @param ponoSlabNoList
     * @return
     */
    void newTestBatch(Long organizationId, List<String> ponoSlabNoList);

    /**
     * 脱合同删除组板信息
     *
     * @param tenantId
     * @param dtoList
     */
    void removeBoardsFromOrder(Long tenantId, List<PmRemoveBoardsFromOrderDTO> dtoList);

    /**
     * 代表班、奉送样查询
     *
     * @param dtoList
     * @param tenantId
     * @return
     */
    List<PmQueryIsSampleDTO> queryIsSample(List<PmQueryIsSampleDTO> dtoList, Long tenantId);

    /**
     * 查询产出计划信息
     *
     * @param dtoList
     * @param tenantId
     * @return
     */
    List<PmProductionPlanResDTO> queryProductionPlanInfo(List<PmProductionPlanReqDTO> dtoList, Long tenantId);
}
