package com.foreverwin.mesnac.dispatch.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.foreverwin.mesnac.common.dto.SfcDispatchDto;
import com.foreverwin.mesnac.dispatch.model.SfcDispatch;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

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

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author Leon.L
 * @since 2021-06-02
 */
@Repository
public interface SfcDispatchMapper extends BaseMapper<SfcDispatch> {

    List<SfcDispatch> findSfcDispatch(@Param("site") String site, @Param("sfc") String sfc, @Param("operation") String operation, @Param("stepId") String stepId);

    /**
     * 查询派工生产批次数据
     *
     * @param paramMap
     * @return
     */
    List<SfcDispatchDto> findSfcDispatchList(Map paramMap);

    /**
     * 修改派工单状态
     *  @param site
     * @param dispatchNo
     * @param dispatchStatus
     * @param modifyUser
     * @param modifiedDateTime
     * @param workHour
     */
    void updateSfcDispatchStatus(@Param("site") String site,
                                 @Param("dispatchNo") String dispatchNo,
                                 @Param("dispatchStatus") String dispatchStatus,
                                 @Param("modifyUser") String modifyUser,
                                 @Param("modifiedDateTime") LocalDateTime modifiedDateTime, @Param("workHour")BigDecimal workHour);

    /**
     *
     * @param sfcDispatch
     * @param site
     * @return
     */
    SfcDispatchDto findResrceAndWorkCenterBySfc(@Param("sfcDispatch")SfcDispatchDto sfcDispatch, @Param("site") String site);

    SfcDispatchDto findSfcDispatchBySfc(@Param("site")String site, @Param("dto")SfcDispatchDto sfcDispatch);

    List<SfcDispatch> findSplitSfcDispatch(@Param("site") String site, @Param("sfc") String sfc, @Param("stepId") int stepId);

    /**
     * 批次拆分后 修改派工单数量
     *
     * @param site
     * @param sfc
     * @param currentSeq
     * @param splitQty
     */
    void updateSfcDispatchQty(@Param("site") String site, @Param("sfc") String sfc, @Param("currentSeq") int currentSeq, @Param("splitQty") Float splitQty);
}