package com.fs.qw.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fs.his.domain.FsUserInformationCollectionSchedule;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 用户信息采集进度Mapper接口
 * 
 * @author fs
 * @date 2025-11-18
 */
public interface FsUserInformationCollectionScheduleMapper extends BaseMapper<FsUserInformationCollectionSchedule>{
    /**
     * 查询用户信息采集进度
     * 
     * @param id 用户信息采集进度主键
     * @return 用户信息采集进度
     */
    FsUserInformationCollectionSchedule selectFsUserInformationCollectionScheduleById(Long id);

    /**
     * 查询用户信息采集进度
     *
     * @param collectionId 用户信息采集表主键
     * @return 用户信息采集进度
     */
    FsUserInformationCollectionSchedule selectCollectionScheduleByCollectionId(Long collectionId);

    /**
     * 查询运行中的用户信息采集进度
     *
     * @param collectionId 用户信息采集表主键
     * @return 用户信息采集进度
     */
    FsUserInformationCollectionSchedule selectCollectionScheduleRunningByCollectionId(Long collectionId);

    /**
     * 查询用户信息采集进度
     *
     * @param orderCode 订单编号
     * @return 用户信息采集进度
     */
    FsUserInformationCollectionSchedule selectFsUserInformationCollectionByOrderCode(String orderCode);

    /**
     * 查询用户信息采集进度列表
     * 
     * @param fsUserInformationCollectionSchedule 用户信息采集进度
     * @return 用户信息采集进度集合
     */
    List<FsUserInformationCollectionSchedule> selectFsUserInformationCollectionScheduleList(FsUserInformationCollectionSchedule fsUserInformationCollectionSchedule);

    /**
     * 对于每条用户信息采集记录，只获取其最新的任务流程
     *
     * @param fsUserInformationCollectionSchedule 用户信息采集进度
     * @return 用户信息采集进度集合
     */
    List<FsUserInformationCollectionSchedule> getUserRecordLatestTaskProcess(FsUserInformationCollectionSchedule fsUserInformationCollectionSchedule);
    /**
     * 新增用户信息采集进度
     * 
     * @param fsUserInformationCollectionSchedule 用户信息采集进度
     * @return 结果
     */
    int insertFsUserInformationCollectionSchedule(FsUserInformationCollectionSchedule fsUserInformationCollectionSchedule);

    /**
     * 修改用户信息采集进度
     * 
     * @param fsUserInformationCollectionSchedule 用户信息采集进度
     * @return 结果
     */
    int updateFsUserInformationCollectionSchedule(FsUserInformationCollectionSchedule fsUserInformationCollectionSchedule);

    /**
     * 删除用户信息采集进度
     * 
     * @param id 用户信息采集进度主键
     * @return 结果
     */
    int deleteFsUserInformationCollectionScheduleById(Long id);

    /**
     * 批量删除用户信息采集进度
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteFsUserInformationCollectionScheduleByIds(Long[] ids);

    @Select("SELECT * FROM fs_user_information_collection_schedule WHERE collection_id = #{collectionId} AND current_step = 5 AND `status` = 1")
    FsUserInformationCollectionSchedule selectSecondConfirmScheduleByCollectionId(Long collectionId);

    /**
     * 根据订单编号列表查询用户信息采集进度列表
     * */
    List<FsUserInformationCollectionSchedule> selectCollectionScheduleListByOrderCodeList(@Param("orderCodes") List<String> orderCodes);

    @Select("SELECT * FROM fs_user_information_collection_schedule  WHERE collection_id = #{collectionId} AND `status` = 1 LIMIT 1")
    FsUserInformationCollectionSchedule selectPendingSchedule(Long collectionId);
}
