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

import com.prolog.cs.biz.inbound.dto.PageParam;
import com.prolog.cs.biz.inbound.dto.rcv.RcvHDTO;
import com.prolog.cs.biz.inbound.dto.rcv.RcvLinesDTO;
import com.prolog.cs.biz.inbound.dto.rqc.RqcLinesDTO;
import com.prolog.cs.biz.inbound.dto.task.TaskInstockDetailDTO;
import com.prolog.cs.biz.inbound.vo.InsockTaskRcvQueryVO;
import com.prolog.cs.biz.inbound.vo.task.TaskQueryVO;
import com.prolog.framework.authority.core.dto.UserDTO;
import com.prolog.framework.core.pojo.Page;

import java.util.List;

/**
 * @Description  
 * @Date 2021-03-24 
 */

public interface TaskInstockDetailService {

	/**
 	* @Description   
 	* @Date 2021-03-24 
 	* add TaskInstockDetailDTO 
 	*/
	public Object add(TaskInstockDetailDTO taskInstockDetailDTO);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* edit TaskInstockDetailDTO 
 	*/
	public Object edit(String pkId,TaskInstockDetailDTO taskInstockDetailDTO);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* delete TaskInstockDetailDTO 
 	*/
	public Object deletePkId(String pkId);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* delete TaskInstockDetailDTO 
 	*/
	public Object delIds(List<String> pkIdList);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* page condition search TaskInstockDetailDTO 
 	*/
	public Page<TaskInstockDetailDTO> findList(TaskInstockDetailDTO taskInstockDetailDTO,PageParam pageParam);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* batchAdd TaskInstockDetailDTO 
 	*/
	public Object batchAdd(List<TaskInstockDetailDTO> taskInstockDetailDTOList);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* batchEdit TaskInstockDetailDTO 
 	*/
	public Object batchEdit(List<TaskInstockDetailDTO> taskInstockDetailDTOList);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* condition search all TaskInstockDetailDTO 
 	*/
	public List<TaskInstockDetailDTO> findAll(TaskInstockDetailDTO taskInstockDetailDTO);

	/**
 	* @Description  
 	* @Date 2021-03-24 
 	* findOne TaskInstockDetailDTO 
 	*/
	public TaskInstockDetailDTO findByPkId(String pkId);

	public Object excuteTask(List<RcvLinesDTO> rcvLinesDTO, String mtlOwnerId, String warehouseId);

	Object excuteAssembleInstockPrintData(List<String> ids, UserDTO userDTO, Boolean reFlag);

	public Object excuteTask(List<RqcLinesDTO> rqcLinesList, String conclusion, boolean isAuto);

	public Object splitTask(List<TaskInstockDetailDTO> taskInstockDetailDTOList);

	public Object confirmSplitTask(TaskInstockDetailDTO taskInstockDetailDTO);

	public Page<TaskInstockDetailDTO> extractTaskWithNativeSql(TaskQueryVO queryVO, PageParam pageParam);

	public Page<RcvHDTO> extractRcvHWithNativeSql(InsockTaskRcvQueryVO rcvQueryVO, PageParam pageParam);

	public Object taskMerge(List<TaskInstockDetailDTO> taskInstockDetailDTOList);

	public Object excuteTask(List<RcvLinesDTO> rcvLinesDTO, String mtlOwnerId, String warehouseId, boolean isAuto);
	
	public List<TaskInstockDetailDTO> geTaskInstockDetailsByRcvLineId(List<String> rcvLineIdList);

}
