package com.mosty.yjzl.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.yjzl.TbZdxlFgdwBddxlrwJlClockInDTO;
import com.mosty.base.model.entity.yjzl.zddw.TbZdxlFgdwBddxlrw;
import com.mosty.base.model.entity.yjzl.zddw.TbZdxlFgdwBddxlrwJl;
import com.mosty.base.model.query.yjzl.BddxlrwJlQuery;
import com.mosty.base.model.vo.yjzl.TbZdxlFgdwBddxlrwJlVo;
import com.mosty.common.token.UserInfo;

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

/**
 * @author zhangzhao
 * @description 指导巡逻方格点位必到点巡逻任务记录表Service
 * @modifier zhangzhao
 * @modifiedTime 2025/09/07 19:56
 * @since 2025/09/07 19:56
 */
public interface TbZdxlFgdwBddxlrwJlService {

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

    /**
     * 查询单条（根据必到点巡逻任务ID和顺序）
     * @param bddxlrwId 必到点巡逻任务ID
     * @param dkSx 顺序
     * @return 实体信息
     */
    TbZdxlFgdwBddxlrwJl selectByBddxlrwIdAndDkSx(String bddxlrwId, int dkSx);

    /**
     * 查询列表（根据必到点巡逻任务ID）
     * @param bddxlrwId 必到点巡逻任务ID
     * @return 实体列表
     */
    List<TbZdxlFgdwBddxlrwJl> selectListByBddxlrwId(String bddxlrwId);

    /**
     * 创建列表（根据方格巡逻任务ID）
     * @param fgxlrwId 方格巡逻任务ID
     * @return 操作条数
     */
    int createListByFgxlrwId(String fgxlrwId);

    /**
     * 创建列表（根据必到点巡逻任务列表）
     * @param bddxlrwList 必到点巡逻任务列表
     * @return 操作条数
     */
    int createListByBddxlrwList(List<TbZdxlFgdwBddxlrw> bddxlrwList);

    /**
     * 打卡
     * @param baseEntity 实体信息
     * @param dto 打卡DTO对象
     * @param user 当前登录人员信息
     * @param dksj 打卡时间
     * @return 主键ID
     */
    String clockIn(TbZdxlFgdwBddxlrwJl baseEntity, TbZdxlFgdwBddxlrwJlClockInDTO dto, UserInfo user, Date dksj);

    List<TbZdxlFgdwBddxlrwJlVo> getRwjlByXfbbId(String xfbbId);

    IPage<TbZdxlFgdwBddxlrwJlVo> getPageList(BddxlrwJlQuery query);

}
