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

import com.prolog.cs.biz.inbound.dto.PageParam;
import com.prolog.cs.biz.inbound.dto.failure.ExceptionLineQueryDTO;
import com.prolog.cs.biz.inbound.dto.failure.ExceptionLineQueryVO;
import com.prolog.cs.biz.inbound.dto.failure.ExceptionLinesDTO;
import com.prolog.framework.authority.core.dto.UserDTO;
import com.prolog.framework.core.pojo.Page;

import java.util.Date;
import java.util.List;

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

public interface ExceptionLinesService {

	/**
	 * @Description
	 * @Date 2021-03-24 add ExceptionLinesDTO
	 */
	public Object add(ExceptionLinesDTO exceptionLinesDTO);

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

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

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

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

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

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

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

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

	/**
	 * 根据头表id保存异常行信息
	 * 
	 * @param exceptionLineList
	 * @param masterId
	 * @param userDTO
	 * @param now
	 * @return
	 */
	public Object saveList(List<ExceptionLinesDTO> exceptionLineList, String masterId, UserDTO userDTO, Date now,boolean otherOp);

	/**
	 * 条件分页查询(包含额外字段)
	 * 
	 * @param queryVO
	 * @return
	 */
	public Page<ExceptionLineQueryDTO> findList(ExceptionLineQueryVO queryVO);

	/**
	 * 主键id查详情
	 * @param pkId
	 * @return
	 */
	public ExceptionLineQueryDTO infoByPkId(String pkId);

	public Object cancel(List<ExceptionLinesDTO> exceptionLineList);

	public Object rejectLotNo(List<ExceptionLinesDTO> exceptionLineList);

	public Object hasInstock(String batchId, String warehouseId);
}
