package com.mosty.yjzl.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.yjzl.TbZdxlFgxlrwUpdateDTO;
import com.mosty.base.model.dto.yjzl.ZdyxlFgxlrwDto;
import com.mosty.base.model.entity.yjzl.zddw.TbZdxlFgxlrw;
import com.mosty.base.model.entity.yjzl.zddw.TbZdxlFgzdyrw;
import com.mosty.base.model.query.yjzl.TbZdxlFgxlrwQuery;
import com.mosty.base.model.vo.yjzl.TbZdxlFgxlrwVO;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.Date;
import java.util.List;

/**
 * @author zhangzhao
 * @description 指导巡逻方格巡逻任务表Service
 * @modifier zhangzhao
 * @modifiedTime 2025/05/10 22:02
 * @since 2025/05/10 22:02
 */
public interface TbZdxlFgxlrwService {

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

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

    /**
     * 查询分页（需要执行的任务）
     * @param query 实体查询对象
     * @return 实体返回信息分页列表
     */
    IPage<TbZdxlFgxlrwVO> selectRwPage(TbZdxlFgxlrwQuery query);

    TbZdxlFgxlrwVO selectByBBdId(TbZdxlFgxlrwQuery query);

    /**
     * 查询列表
     * @param query 实体查询对象
     * @return 实体返回信息列表
     */
    List<TbZdxlFgxlrwVO> selectList(TbZdxlFgxlrwQuery query);

    /**
     * 查询列表（根据主键ID字符串）
     * @param ids 主键ID字符串
     * @return 实体返回信息列表
     */
    List<TbZdxlFgxlrw> selectListByIds(String ids);

    /**
     * 查询列表（根据任务日期）
     * @param rwRq 任务日期
     * @return 实体信息
     */
    List<TbZdxlFgxlrw> selectListByRwRq(Date rwRq);

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

    int updateListRwZtToYdc(List<TbZdxlFgxlrw> entityList);

    int importListByMb(List<TbZdxlFgxlrw> entityList);

    int importListByMbZdy(List<TbZdxlFgzdyrw> entityList);

    int issueList(List<TbZdxlFgxlrw> entityList);

    TbZdxlFgxlrw addZdyxlFgxlrw(ZdyxlFgxlrwDto dto);

    TbZdxlFgxlrw editZdyxlFgxlrw(ZdyxlFgxlrwDto dto);

    Boolean delZdyxlFgxlrw(ZdyxlFgxlrwDto dto);

}
