package cn.iocoder.yudao.module.system.service.positionmap;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLinePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.positionmap.vo.PositionMapLineSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapLineDO;
import com.baomidou.mybatisplus.extension.service.IService;

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

/**
 * 仓库点位地图连线 Service 接口
 *
 * @author 芋道源码
 */
public interface PositionMapLineService extends IService<PositionMapLineDO> {

    /**
     * 删除仓库点位地图连线
     *
     * @param id 编号
     */
    void deletePositionMapLine(Long id);

    /**
     * 获得仓库点位地图连线
     *
     * @param id 编号
     * @return 仓库点位地图连线
     */
    PositionMapLineDO getPositionMapLine(Long id);

    /**
     * 获得仓库点位地图连线分页
     *
     * @param pageReqVO 分页查询
     * @return 仓库点位地图连线分页
     */
    PageResult<PositionMapLineDO> getPositionMapLinePage(PositionMapLinePageReqVO pageReqVO);

    /**
     * 创建编辑仓库点位地图连线
     *
     * @param positionMapId
     * @param createReqVO
     * @return
     */
    void createOrEditPositionMapLine(Long positionMapId, @Valid List<PositionMapLineSaveReqVO> createReqVO);

    /**
     * 根据地图id获取连线列表
     *
     * @param positionMapId
     * @return
     */
    List<PositionMapLineDO> getByMapId(Long positionMapId);

    /**
     * 疲劳新增删除编辑
     *
     * @param list
     */
    void batchSaveOrEditOrDel(List<List<PositionMapLineDO>> list);

    /**
     * 批量添加
     * @param lineList
     */
    void batchSaveLines(List<PositionMapLineDO> lineList);

    /**
     * 根据地图ID删除
     * @param id
     */
    void deleteByMapId(Long mapId);
}
