package com.sw.mes.mcs.service;

import com.sw.mes.core.response.Result;
import com.sw.mes.fb.checkout.dto.PointDto;
import com.sw.mes.fls.dto.ProductAssemblyConfigDto;
import com.sw.mes.mcs.dto.GainTrayNoResultDto;
import com.sw.mes.mcs.dto.NoDetectionDto;
import com.sw.mes.mcs.dto.SquareBindingDto;
import com.sw.mes.mcs.dto.SquareRankDto;
import com.sw.mes.mcs.utils.ResultDto;
import com.sw.mes.wms.dto.SquareResultDto;

/**
 * @Author: GaoXinJian
 * @Date: 2022-01-10 13:25
 */
public interface MesToMcsService {
//    /**
//     * 圆棒托盘绑定接口
//     *
//     *
//     * 截断完成，FLS将圆棒抓取至托盘，并将绑定信息发送给MES；
//     * MES接收到信息后，将绑定信息及晶段基础信息发送至MCS
//     * （托盘RFID、晶段SN、掺杂剂、导电型号、晶段类型
//     * （标棒、非标、返切等）、晶段规格（223、247、295等）、单晶朝向）等）
//     *
//     * @param crystalTrayBindInfoDto 圆棒托盘绑定接口Dto
//     * @return mcs返回结果
//     */
//    ResultDto crystalTrayBindInfo(CrystalTrayBindInfoDto crystalTrayBindInfoDto);
//
//    /**
//     * 圆棒评级结果下发
//     *
//     *
//     * 托盘流转至检验区，MCS根据检验线点位将晶段上下检验信息发送给MES
//     * @param rankResultDto 晶段检验过点上传接口dto
//     * @return string
//     */
//    ResultDto rankResult(RankResultDto rankResultDto);
//
//    /**
//     * 订单水位下发
//     *
//     *
//     * 订单水位变动后，MES将新的水位设置发送至MCS
//     * @param orderConfigDtoList
//     * @return
//     */
//    ResultDto orderConfig(List<OrderConfigDto> orderConfigDtoList);
//
//    /**
//     * 拼棒托盘绑定
//     *
//     *
//     * 拼棒完成FLS将托盘号、拼棒SN上传MES后，MES将托盘绑定信息上传MCS
//     * @param spellBindingDto
//     * @return
//     */
//    ResultDto spellBinding(SpellBindingDto spellBindingDto);
//
//    /**
//     * 分选口规格配置信息下发接口
//     *
//     * 分选口配置更改时,MES将分选口的规格配置下发MCS
//     *
//     * @param blankConfigDto
//     * @return
//     */
//    ResultDto blankConfig(List<BlankConfigDto> blankConfigDtoList);

    /**
     * 方棒绑定信息下发接口
     *
     * 方棒检测线上线时FLS将托盘绑定信息下发给MES，MES将SN、托盘号、方棒信息、尺寸是否抽检等下发给MCS系统进行绑定以控制其后续工序流转
     * @param squareBindingDto
     * @return
     */
    ResultDto squareBinding(SquareBindingDto squareBindingDto);

    /**
     * 方棒评级结果下发
     *
     * MES根据检测数据，得到评级结果，并将结果发送至MCS：
     * 1、 正常，评级结果
     * 2、 异常：返修返切、复检
     *
     * @param squareRankDto
     * @return
     */
    ResultDto squareRank(SquareRankDto squareRankDto);
    Result squareRankResultMcs(SquareResultDto squareResultDto);
    Result squareRankResultWms(SquareResultDto squareResultDto);

    ResultDto squareRank1(SquareRankDto squareRankDto);

    ResultDto getFbSectionNo(PointDto pointDto);

    ResultDto sendFbSectionAndIp(PointDto pointDto);

    /**
     * 打托配置下发接口
     *
     * MES将自动打托工位配置信息下发MCS、FLS，FLS根据规格控制托盘流向 打托工位配置下发
     * @param productAssemblyConfigDto
     * @return
     */
    ResultDto productAssemblyConfigOut(ProductAssemblyConfigDto productAssemblyConfigDto);

    /**
     * 方棒检验从mcs获取托盘编号
     *
     * @return
     */
    GainTrayNoResultDto gainTrayNo();

    ResultDto noDetection(NoDetectionDto noDetectionDto);
}
