package com.foreverwin.mesnac.production.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.foreverwin.mesnac.meapi.model.ShopOrder;
import com.foreverwin.mesnac.production.model.StepOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 描述: sfc过站
 * 作者: philip
 * 时间: 2021-6-29 15:56
 */
@Repository
public interface SfcCrossMapper extends BaseMapper {

    /**
     * 查找绑定的物料条码的SFC数量
     * @param dataField
     * @param dataAttr
     * @return
     */
    List<Sfc> findBindingBarcode(@Param("dataField") String dataField,
                                 @Param("dataAttr") String dataAttr,
                                 @Param("site") String site,
                                 @Param("statusBoList") List<String> statusBoList);


    /**
     * 根据工艺路线查找下面所有的工序, 按照Sequence进行排序
     * @param routerBo
     * @return
     */
    List<StepOperation> findRouterOperationByRouterBo(@Param("site") String site, @Param("routerBo") String routerBo, @Param("locale") String locale);
    

    /**
     * 查询某条产线和给定状态的工单列表
     * @param plannedWorkCenterBo
     * @param customStatus
     * @return
     */
    List<ShopOrder> findShopOrderListByStatus(@Param("plannedWorkCenterBo") String plannedWorkCenterBo,
                                              @Param("status") String customStatus);


    /**
     * 查找工艺路线的最后一道工序
     * @param sfcBo
     * @return
     */
    List<StepOperation> findRouterLastOperationByRouterBo(@Param("sfcBo") String sfcBo);

    List<StepOperation> getResourceBySfc(@Param("site") String site, @Param("sfc") String sfc);

    Map<String, Object> querySfcData(@Param("site")String site, @Param("locale")String locale, @Param("dto")SfcDto sfcDto);

    Map<String, Object> getSfcInfo(@Param("site")String site, @Param("sfc")String sfc, @Param("operation")String operation);

    String getSfcDispatch(@Param("site") String site, @Param("sfc") String sfc, @Param("operation") String operation, @Param("stepId") String stepId,@Param("resrce")String resrce);

    List<SfcDto> getSfcListByResrce(@Param("site") String site, @Param("resrce") String resrce,@Param("locale") String locale);

    SfcDto getInfoBySfc(@Param("sfc")Sfc sfc);

    Integer resourceCheck(@Param("site")String site,@Param("resrce")String resrce, @Param("dateTime")LocalDateTime dateTime);
}
