package com.sw.mes.outside.service;

import com.sw.mes.core.response.Result;
import com.sw.mes.outside.dto.*;
import com.sw.mes.yb.production.dto.LongCrystalDto;
import com.sw.mes.yb.production.dto.LongCrystalInfoDto;
import com.sw.mes.yb.production.dto.LongCrystalVO;
import com.sw.mes.yb.production.entity.LongCrystal;

import java.util.List;

public interface EapService {

    /**
     * 处理设备信号
     *
     * @param sendEapSignalDto 信号内容
     * @return 处理结果
     */
    Result sendEapSignal(SendEapSignalDto sendEapSignalDto, int source);

    /**
     * 修改，并重新生成单晶编号
     *
     * @param longCrystal
     * @param outputMode
     */
    void generateCrystalNo(LongCrystal longCrystal, Integer outputMode,String windUp);

    /**
     * 修改，并返回单晶编号
     */
    String generateCrystalNo(String crystalNo, LongCrystalInfoDto longCrystalInfoDto);

    /**
     * 拉晶情况: 接收EAP数据处理
     **/
    void crystalpullingHandler(ToMESData dto);

    /**
     * 拉晶情况: 接收EAP实时工序、圆棒长度信息
     **/
    void crystalpullingRealTime(ToMESData dto);

    /**
     * 工艺类型
     **/
    void processReceive(ToMESData dto);

    /**
     * 工时
     **/
    void workingHours(ToMESData dto);

    /**
     * 工艺工序
     **/
    void workingStep(ToMESData dto);

    /**
     * 接收扩肩成活率
     **/
    void shoulderSurvivalRate(ToMESData dto);

    /**
     * 接收引晶成活率
     **/
    void shoulderSeedingRate(ToMESData dto);

    /**
     * 扩断基础表
     **/
    void expansionBase(ToMESData dto);

    /**
     * 断苞基础表
     **/
    void brokenBractBase(ToMESData dto) throws Exception;

    /**
     * 成晶基础表
     **/
    void successCrystalBase(ToMESData dto);

    /**
     * 引断基础表
     **/
    void crystalBrokenBase(ToMESData dto);

    /**
     * 备料信号
     */
	void materialPrepareSignal(ToMESData dto);

    List<MaterialTaskDto> materialOperationList(MaterialOperationDto dto);

    void materialOperationAction(MaterialOperationActionDto dto);

    /**
     * 手动停炉
     *
     * @param equipmentCode 设备号
     */
    void manualShutdown(String equipmentCode,String abnormalCause);

    Result updateLastLongCrstalWeight(LongCrystalVO longCrystalVO);

    void surplusReceive(ToMESData dto);
    void delayed(ToMESData dto);

    RunTimeDto delayedData(RunTimeDto runTimeDto);

    void dismantlingStart(DismantlingDto dismantlingDto);

    void reportArgonToSap(String equipmentCode, String orderNo, String lotNo, String type);

    void accidentAnomaly(ToMESData dto);
}
