package com.yc.ship.module.trade.service.orderjzdetail;

import com.yc.ship.framework.common.pojo.PageResult;
import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailPageReqVO;
import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderJzDetailSaveReqVO;
import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderJzDetailDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 订单接站人员名单 Service 接口
 *
 * @author 管理员
 */
public interface OrderJzDetailService {

  /**
   * 创建订单接站人员名单
   *
   * @param createReqVO 创建信息
   * @return 编号
   */
  Long createOrderJzDetail(@Valid OrderJzDetailSaveReqVO createReqVO);

  Long createOrderJzDetail(List<OrderJzDetailSaveReqVO> createReqVOList);

  /**
   * 更新订单接站人员名单
   *
   * @param updateReqVO 更新信息
   */
  void updateOrderJzDetail(@Valid OrderJzDetailSaveReqVO updateReqVO);

  /**
   * 删除订单接站人员名单
   *
   * @param id 编号
   */
  void deleteOrderJzDetail(Long id);

  /**
   * 获得订单接站人员名单
   *
   * @param id 编号
   * @return 订单接站人员名单
   */
  OrderJzDetailDO getOrderJzDetail(Long id);

  /**
   * 获得订单接站人员名单分页
   *
   * @param pageReqVO 分页查询
   * @return 订单接站人员名单分页
   */
  PageResult<OrderJzDetailDO> getOrderJzDetailPage(OrderJzDetailPageReqVO pageReqVO);

  List<OrderJzDetailDO> selectPageByVoyageId(String voyageId);

  List<OrderJzDetailDO> getOrderJzDetailList(@Valid OrderJzDetailPageReqVO pageReqVO);

  Long cleanOrderJzDetail(String id);

  Long signOrderJzDetail(OrderJzDetailSaveReqVO createReqVO);

  PageResult<OrderJzDetailDO> getOrderJzDetailPage2(OrderJzDetailPageReqVO pageReqVO);
}