package com.gci.boot.modules.gis.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gci.boot.modules.basedata.entity.TbVehicle;
import com.gci.boot.modules.gis.entity.TbGisFenceInfo;
import com.gci.boot.modules.gis.entity.TbGisFencePlan;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gci.boot.modules.gis.vo.GisProjectTreeVo;
import com.gci.boot.modules.gis.vo.GisVehicleVo;

import java.util.List;

/**
 * <p>
 * 围栏方案表 服务类
 * </p>
 *
 * @author 2464
 * @since 2023-08-30
 */
public interface ITbGisFencePlanService extends IService<TbGisFencePlan> {

    /**
     * 保存 方案及信息
     */
    void saveItem(TbGisFencePlan tbGisFencePlan);

    /**
     * 编辑 方案及信息
     */
    void updateItem(TbGisFencePlan tbGisFencePlan);

    /**
     * 保存 关联车辆
     */
    void saveVehicle(GisVehicleVo vo);

    /**
     * 删除关联车辆
     */
    void delVehicle(GisVehicleVo vo);

    /**
     * 启用方案
     * @param id
     */
    void isValid(String id);

    /**
     * 禁用方案
     * @param id
     */
    void unValid(String id);

    /**
     * 获取方案内车辆列表
     * @param id
     * @param page
     * @return
     */
    Page<TbVehicle> getPlanVehicleList(String id, Page<TbVehicle> page);

    /**
     * 获取项目内车辆列表
     * @param id
     * @return
     */
    List<GisProjectTreeVo> getProjectVehicleList(String id);

    /**
     * 获取方案内围栏列表
     * @param id
     * @return
     */
    List<TbGisFenceInfo> getPlanFenceInfoList(String id);

    /**
     * 手动更新全部围栏信息
     */
    void updateAll();
}
