package com.prolog.cs.biz.outbound.resource;

import com.prolog.cs.biz.outbound.model.dto.InfTaskOutBackDTO;
import com.prolog.entity.vo.OutBoundRequestVO;
import com.prolog.framework.bz.common.print.ReportData;
import com.prolog.framework.common.message.RestMessage;
import com.prolog.upcloud.base.wh.operate.dto.ReplenishIncidentallyDTO;
import com.prolog.upcloud.base.wh.operate.vo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@FeignClient(value = "${prolog.service.operate}")
public interface OperateResource {

	/**
	 *上架/下架确认
	 * @param moveConfirmParamsVO
	 * @return
	 */
	@PostMapping("/replenish/v1/confirm")
	RestMessage confirmReplenish(@RequestBody MoveConfirmParamsVO moveConfirmParamsVO);

	/**
	 * 移库上架/下架确认
	 * @param moveConfirmParamsVO
	 * @return
	 */
	@PostMapping("/move/v1/check/eis")
	RestMessage confirmMove(@RequestBody MoveConfirmParamsVO moveConfirmParamsVO);

	//"补货取消"
	@PostMapping("/replenish/v1/cancel")
	public RestMessage cancelReplenish(@RequestBody ReplenishCancelVO replenishCancelVO);

	@PostMapping("/adjust/add")
	RestMessage<?> saveAdjust(@RequestBody WmsAdjustAddVO wmsAdjustAddVO);

	@PostMapping("/move/v1/addMoveBackPrint")
	public RestMessage<List<ReportData>> addMoveBackPrint(@RequestBody WmsMoveSaveVO saveVO);

	/**
	 * 顺带补货
	 * @param vo
	 * @return
	 */
	@PostMapping("/replenish/v1/replenishIncidentally")
	RestMessage<List<ReplenishIncidentallyDTO>> replenishIncidentally(@RequestBody ReplenishIncidentallyVO vo);

	@PostMapping("/wms/v1.0/eis/invCheckOutBack")
	public RestMessage<Object> invCheckOutBack(@RequestBody List<InfTaskOutBackDTO> backDTOList);

	@PostMapping("/replenish/v1/urgent")
	RestMessage<String> replenishUrgent(@RequestBody ReplenishUrgentSaveVO saveVO) ;

	@PostMapping("/replenish/v1/pre")
	RestMessage<Object> replenishPre(@RequestBody List<ReplenishPreVO> vos);

	@GetMapping("/replenish/v1/getRepSendEisParamsByWaveId")
	RestMessage<List<OutBoundRequestVO>> getRepSendEisParamsByWaveId(@RequestParam(value = "waveId") String waveId);
}
