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.rqc.RqcReLinesDTO;
import com.prolog.cs.biz.inbound.dto.rqc.RqcRechekLinesDTO;
import com.prolog.cs.biz.inbound.dto.task.TaskQcDetailDTO;
import com.prolog.cs.biz.inbound.vo.RcvQueryVO;
import com.prolog.cs.biz.inbound.vo.task.TaskQcDetailQueryVO;
import com.prolog.framework.core.pojo.Page;

import java.util.List;

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

public interface TaskQcDetailService {

	/**
	 * @Description
	 * @Date 2021-03-24 add TaskQcDetailDTO
	 */
	public Object add(TaskQcDetailDTO taskQcDetailDTO);

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

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

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

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

	public Page<TaskQcDetailDTO> findList2(TaskQcDetailQueryVO taskQcDetailQueryVO);

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

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

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

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

	/**
	 * 收货质检
	 * 
	 * @param rcvLinesDTO
	 * @param warehouseId
	 * @param mtlOwnerId
	 * @param isAuto 
	 * @return
	 */
	public Object excuteTask(List<RcvLinesDTO> rcvLinesDTO, String mtlOwnerId, String warehouseId, boolean isAuto);

	public Object excuteTask2(List<RqcLinesDTO> rqcLinesList);

	/**
	 * 复检通过入质检
	 * 
	 * @param rqcRechekLinesList
	 * @param conclusion
	 * @param times
	 * @return
	 */
	public Object excuteTask33(List<RqcRechekLinesDTO> rqcRechekLinesList, String conclusion, int times);

	/**
	 * 复检通过入质检
	 *
	 * @param rqcReLinesList
	 * @param conclusion
	 * @param times
	 * @param isAuto
	 * @param regValue
	 * @return
	 */
	public Object excuteTask3(List<RqcReLinesDTO> rqcReLinesList, String conclusion, int times, boolean isAuto, String regValue, String warehouserId);

	/**
	 * 提取任务池任务
	 * @param taskQcDetailQueryVO
	 * @return
	 */
	public Page<TaskQcDetailDTO> extractTaskWithNativeSql(TaskQcDetailQueryVO taskQcDetailQueryVO);

	/**
	 * 条件分页
	 * @param taskQcDetailQueryVO
	 * @return
	 */
	public Page<TaskQcDetailDTO> findList(TaskQcDetailQueryVO taskQcDetailQueryVO);

	/**
	 * 提取待质检任务池的头表信息
	 * @param rcvQueryVO
	 * @param pageParam
	 * @return
	 */
	public Page<RcvHDTO> extractRcvHWithNativeSql(RcvQueryVO rcvQueryVO, PageParam pageParam);

	public Page<RcvHDTO> extractRcvHWithNativeSql1(RcvQueryVO rcvQueryVO, PageParam pageParam);

	public Object splitTask(List<TaskQcDetailDTO> taskQcDetailDTOList);

	public Object taskMerge(List<TaskQcDetailDTO> taskQcDetailDTOList);
	
	public void updateTaskToFinshed( List<RcvLinesDTO> rcvLinesDTO) ;

	public Page<RcvHDTO> extractRcvHWithNativeSqlNew(RcvQueryVO rcvQueryVO, PageParam pageParam);

	public Page<TaskQcDetailDTO> extractTaskWithNativeSqlNew(TaskQcDetailQueryVO taskQcDetailQueryVO);


}
