package com.mosty.yjzl.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.yjzl.TbZdxlFgdwBddSaveDTO;
import com.mosty.base.model.dto.yjzl.TbZdxlFgdwBddUpdateDTO;
import com.mosty.base.model.entity.yjzl.zddw.TbZdxlFgdwBdd;
import com.mosty.base.model.query.yjzl.TbZdxlFgdwBddQuery;
import com.mosty.base.model.vo.yjzl.TbZdxlFgdwBddVO;

import java.util.List;

/**
 * @author zhangzhao
 * @description 指导巡逻方格点位必到点表Service
 * @modifier zhangzhao
 * @modifiedTime 2025/09/06 12:01
 * @since 2025/09/06 12:01
 */
public interface TbZdxlFgdwBddService {

    /**
     * 查询单条（根据主键ID）
     * @param id 主键ID
     * @return 实体信息
     */
    TbZdxlFgdwBdd selectById(String id);

    /**
     * 查询单条（根据必到点巡逻任务ID）
     * @param bddxlrwId 必到点巡逻任务ID
     * @return 实体信息
     */
    TbZdxlFgdwBdd selectByBddxlrwId(String bddxlrwId);

    /**
     * 查询分页
     * @param query 实体查询对象
     * @return 实体信息分页列表
     */
    IPage<TbZdxlFgdwBddVO> selectPage(TbZdxlFgdwBddQuery query);

    /**
     * 查询列表
     * @param query 实体查询对象
     * @return 实体信息列表
     */
    List<TbZdxlFgdwBddVO> selectList(TbZdxlFgdwBddQuery query);

    /**
     * 查询列表（根据ID列表）
     * @param idList ID列表
     * @return 实体信息列表
     */
    List<TbZdxlFgdwBdd> selectListByIdList(List<String> idList);

    /**
     * 查询列表（根据方格点位ID）
     * @param fgdwId 方格点位ID
     * @return 实体信息列表
     */
    List<TbZdxlFgdwBdd> selectListByFgdwId(Long fgdwId);

    /**
     * 查询列表（根据方格巡逻任务ID）
     * @param fgxlrwId 方格巡逻任务ID
     * @return 实体信息列表
     */
    List<TbZdxlFgdwBdd> selectListByFgxlrwId(String fgxlrwId);

    /**
     * 保存单条
     * @param dto 保存DTO对象
     * @return 实体主键ID
     */
    String saveEntity(TbZdxlFgdwBddSaveDTO dto);

    /**
     * 修改单条
     * @param dto 修改DTO对象
     * @return 实体主键ID
     */
    String updateEntity(TbZdxlFgdwBddUpdateDTO dto);

    /**
     * 注销单条
     * @param entity 实体信息
     * @return 注销条数
     */
    int cancelEntity(TbZdxlFgdwBdd entity);

}
