package com.prolog.cs.biz.inbound.dao.task;

import com.prolog.cs.biz.inbound.dto.rcv.RcvHDTO;
import com.prolog.cs.biz.inbound.dto.rqc.WmsInRqcSampleDTO;
import com.prolog.cs.biz.inbound.dto.task.TaskQcDetailDTO;
import com.prolog.cs.biz.inbound.model.task.TaskQcDetail;
import com.prolog.cs.biz.inbound.vo.RcvQueryVO;
import com.prolog.cs.biz.inbound.vo.task.TaskQcDetailQueryVO;
import com.prolog.framework.dao.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Description
 * @Date 2021-03-24
 */
public interface TaskQcDetailMapper extends BaseMapper<TaskQcDetail> {

	/**
	 * 提取任务
	 * 
	 * @param taskQcDetailDTO
	 * @return
	 */
	List<TaskQcDetailDTO> findList(TaskQcDetailDTO taskQcDetailDTO);

	/**
	 * 条件分页
	 * 
	 * @param taskQcDetailDTO
	 * @return
	 */
	List<TaskQcDetailDTO> findList2(TaskQcDetailDTO taskQcDetailDTO);

	/**
	 * 提取待质检的rcv头表集合
	 * 
	 * @param rcvQueryVO
	 * @return
	 */
	List<RcvHDTO> extractRcvHWithNativeSql(RcvQueryVO rcvQueryVO);

	/**
	 * 提取待质检的rcv头表集合
	 *
	 * @param rcvQueryVO
	 * @return
	 */
	List<RcvHDTO> extractRcvHWithNativeSql1(RcvQueryVO rcvQueryVO);

	/**
	 * 打印单据
	 * 
	 * @param queryVo
	 * @return
	 */
	List<TaskQcDetailDTO> findList3(TaskQcDetailQueryVO queryVo);

	Long updateExcuterAndTimes(@Param("userName") String userName, @Param("taskIds") List<String> taskIds);

	Long updatePreNodeLineId(@Param("taskId") String taskId, @Param("userName") String userName);

	/**
	 * 提取任务(不过滤执行者)
	 * 
	 * @param taskQcDetailDTO
	 * @return
	 */
	List<TaskQcDetailDTO> findListWithNoExcuter(TaskQcDetailDTO taskQcDetailDTO);

	TaskQcDetailDTO findByPKId(String taskRqcId);

	List<Map<String, String>> queryDictInfo(@Param("typeCodes") List<String> typeCodes);

	void updateTaskToFinshed(@Param("rcvLineIds") List<String> rcvLineIdList);

	List<RcvHDTO> extractRcvHWithNativeSqlNew(RcvQueryVO rcvQueryVO);

	List<TaskQcDetailDTO> findListNew(TaskQcDetailDTO taskQcDetailDTO);

	WmsInRqcSampleDTO findSampleDhDTO(@Param("rcvLineId")String rcvLineId);

	WmsInRqcSampleDTO findSampleCjDTO(@Param("asnHeaderId")String asnHeaderId, @Param("itemId")String itemId, @Param("manufacturerLotNum")String manufacturerLotNum);
}
