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

import com.prolog.cs.biz.inbound.dto.CargoChangeIn;
import com.prolog.cs.biz.inbound.dto.PageParam;
import com.prolog.cs.biz.inbound.dto.RcvCommonLine;
import com.prolog.cs.biz.inbound.dto.rcv.RcvHeadersDTO;
import com.prolog.cs.biz.inbound.dto.rcv.RcvLinesDTO;
import com.prolog.cs.biz.inbound.vo.RcvLineLotInfo;
import com.prolog.cs.biz.inbound.vo.RcvLinesQueryVO;
import com.prolog.framework.authority.core.dto.UserDTO;
import com.prolog.framework.core.pojo.Page;

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

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

public interface RcvLinesService {

	/**
	 * @Description
	 * @Date 2021-03-24 add RcvLinesDTO
	 */
	public Object add(RcvLinesDTO rcvLinesDTO);

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

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

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

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

	/**
	 * @param warehouseId
	 * @param mtlOwnerId
	 * @param userDTO
	 * @param masterId
	 * @Description
	 * @Date 2021-03-24 batchAdd RcvLinesDTO
	 */
	public Object batchAdd(List<RcvLinesDTO> rcvLinesDTOList, String masterId, UserDTO userDTO, String mtlOwnerId,
			String warehouseId, Map<String, Object> flowparam);

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

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

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

	public Object batchAdd(List<RcvLinesDTO> rcvLinesDTOList);

	public Object batchAdd(List<RcvLinesDTO> rcvLinesDTOList, String masterId, UserDTO userDTO, String mtlOwnerId,
			String warehouseId, CargoChangeIn cargoChangeIn);

	public List<RcvLinesDTO> searchByIdList(List<String> rcvLineIdList);

	public Object itemException(List<RcvLinesDTO> rcvLinesDTOList);

	public Object itemExceptionResult(List<RcvLinesDTO> rcvLinesDTOList);

	public Object testStrategy(List<RcvLinesDTO> rcvLinesDTOList);

	public Object recommendArea(List<RcvLinesDTO> rcvLinesDTOList);

	public Object batchAdd(List<RcvLinesDTO> rcvLinesDTOList, RcvHeadersDTO rcvHeadersDTO, UserDTO userDTO,
			CargoChangeIn cargoChangeIn,boolean ztFlag);

	public Object excuteVaildateRcvItemLotNum(RcvLineLotInfo rcvLineLotInfo, int row);

	public Object vaildateContainer(List<RcvLinesDTO> rcvLinesDTOList);

	public List<RcvCommonLine> getConclusion(List<RcvCommonLine> rcvCommonLineList);

	public List<RcvCommonLine> getAreaCategory(List<RcvCommonLine> rcvCommonLineList);

	public List<Map<String, String>> getConclusionSingle(RcvCommonLine rcvCommonLine);

	public RcvCommonLine byConditionToAreaCategory(RcvCommonLine rcvCommonLineList);
	
	public Object rfBatchAdd(List<RcvLinesDTO> rcvLinesDTOList, RcvHeadersDTO rcvHeadersDTO, UserDTO userDTO,
			CargoChangeIn cargoChangeIn);

}
