package com.storlead.sales.service.customer;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.storlead.framework.auth.vo.LoginUser;
import com.storlead.framework.common.result.Result;
import com.storlead.framework.mybatis.service.MyBaseService;
import com.storlead.sales.pojo.dto.customer.CustomerCollaboratorDTO;
import com.storlead.sales.pojo.dto.customer.CustomerSearchSearchDTO;
import com.storlead.sales.pojo.dto.customer.OrderFormAddDTO;
import com.storlead.sales.pojo.dto.customer.OrderFormSearchDTO;
import com.storlead.sales.pojo.entity.customer.OrderFormEntity;
import com.storlead.sales.pojo.vo.customer.OrderFormDetailVO;
import com.storlead.sales.pojo.vo.customer.OrderFormListVO;

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

/**
 * <p>
 * 订单表 服务类
 * </p>
 *
 * @author YPZ
 * @since 2024-05-10
 */
public interface OrderFormService extends MyBaseService<OrderFormEntity> {

    /***
      * @Description: 添加/修改订单
      * @Param:
      * @return:
      * @Author: YPZ
      * @Date: 2024/5/11 17:48
      */
    Result<?> addOrderForm(OrderFormAddDTO orderFormAddDTO);

    /***
      * @Description: 编辑订单
      * @Param:
      * @return:
      * @Author: YPZ
      * @Date: 2024/9/20 9:58
      */
    Result<?> editOrderForm(OrderFormAddDTO orderFormAddDTO);

    /***
      * @Description: 查询订单列表
      * @Param:
      * @return:
      * @Author: YPZ
      * @Date: 2024/5/13 15:07
      */
    Result<IPage<OrderFormListVO>> selectListVO(OrderFormSearchDTO orderFormSearchDTO);

    IPage<?> selectSimpleListVO(CustomerSearchSearchDTO customerSearchSearchDTO);

    /***
      * @Description: 根据id查询订单详情
      * @Param:
      * @return:
      * @Author: YPZ
      * @Date: 2024/5/13 15:07
      */
    OrderFormDetailVO getOrderFormVOById(Long id);

    /***
      * @Description: 添加协作人员
      * @Param:
      * @return:
      * @Author: YPZ
      * @Date: 2024/6/12 17:54
      */
    Result<?> collaborator(CustomerCollaboratorDTO orderFormCollaboratorDTO);

    Map<Long, OrderFormEntity> getOrderFormMap(List<Long> orderFormIdList);


}
