package com.xisc.pm.app.service;

import com.xisc.pm.api.dto.PmSteelCastHeatReqParamDTO;
import com.xisc.pm.domain.entity.PmHotDest;
import com.xisc.pm.domain.entity.PmSteelCastHeat;

import java.util.List;

/**
 * 炼钢连铸制造命令炉次表 (PmSteelCastHeat)应用服务
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024-08-15 08:20:13
 */
public interface PmSteelCastHeatService {

    /**
     * 查询
     *
     * @param pmSteelCastHeat 查询参数
     * @param tenantId        租户
     * @return
     */
    List<PmSteelCastHeat> list(PmSteelCastHeat pmSteelCastHeat, Long tenantId);

    /**
     * 计划接收
     *
     * @param tenantId 租户
     * @param dto      炼钢连铸制造命令炉次数据集合
     */
    void planReceive(Long tenantId, PmSteelCastHeatReqParamDTO dto);

    /**
     * 移动
     *
     * @param tenantId 租户
     * @param dto      参数
     */
    void planMove(Long tenantId, PmSteelCastHeatReqParamDTO dto);

    /**
     * 重引锭
     *
     * @param tenantId            租户
     * @param pmSteelCastHeatList 参数集合
     */
    void reIntroduce(Long tenantId, List<PmSteelCastHeat> pmSteelCastHeatList);

    /**
     * 热处理匹配
     *
     * @param tenantId            租户
     * @param pmSteelCastHeatList 参数集合
     */
    void heatTreatmentMatch(Long tenantId, List<PmSteelCastHeat> pmSteelCastHeatList);

    /**
     * 热处理下达
     *
     * @param tenantId            租户
     * @param pmSteelCastHeatList 参数集合
     */
    void heatTreatmentRelease(Long tenantId, List<PmSteelCastHeat> pmSteelCastHeatList);

    /**
     * 热处理修改
     *
     * @param tenantId            租户
     * @param pmHotDestList 参数集合
     */
    void heatTreatmentModify(Long tenantId, List<PmHotDest> pmHotDestList);

    /**
     * 解散到组矩、解散到组板
     *
     * @param tenantId 租户
     * @param dto      参数集合
     */
    void dissolution(Long tenantId, PmSteelCastHeatReqParamDTO dto);

    /**
     * 计划下达获取见证标记
     *
     * @param tenantId 租户
     * @param dto      参数集合
     * @return
     */
    List<PmSteelCastHeat> planAssignGetMark(Long tenantId, PmSteelCastHeatReqParamDTO dto);

    /**
     * 计划下达
     *
     * @param tenantId 租户
     * @param dto      参数
     * @return
     */
    List<PmSteelCastHeat> planAssign(Long tenantId, PmSteelCastHeatReqParamDTO dto);

    /**
     * 炉次回收
     *
     * @param tenantId 租户
     * @param dto      参数集合
     */
    void furnaceRecycle(Long tenantId, PmSteelCastHeatReqParamDTO dto);

    /**
     * 方坯计划下达
     *
     * @param tenantId
     * @param pmSteelCastHeatList
     * @return
     */
   List<PmSteelCastHeat> squarePlanAssign(Long tenantId, List<PmSteelCastHeat> pmSteelCastHeatList);

    /**
     * 获取热处理去向
     *
     * @param organizationId
     * @param pmSteelCastHeatList
     * @return
     */
    List<PmHotDest> getHotDestList(Long organizationId, List<PmSteelCastHeat> pmSteelCastHeatList);
}

