package com.qqchen.deploy.backend.workflow.repository;

import com.qqchen.deploy.backend.framework.repository.IBaseRepository;
import com.qqchen.deploy.backend.workflow.entity.FormData;
import com.qqchen.deploy.backend.workflow.enums.FormDataStatusEnums;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 表单数据Repository接口
 *
 * @author qqchen
 * @date 2025-10-24
 */
@Repository
public interface IFormDataRepository extends IBaseRepository<FormData, Long> {

    /**
     * 根据业务标识查询
     *
     * @param businessKey 业务标识
     * @return 表单数据
     */
    Optional<FormData> findByBusinessKeyAndDeletedFalse(String businessKey);

    /**
     * 根据表单标识分页查询
     *
     * @param formKey  表单标识
     * @param pageable 分页参数
     * @return 分页结果
     */
    Page<FormData> findByFormKeyAndDeletedFalse(String formKey, Pageable pageable);

    /**
     * 根据提交人分页查询
     *
     * @param submitter 提交人
     * @param pageable  分页参数
     * @return 分页结果
     */
    Page<FormData> findBySubmitterAndDeletedFalse(String submitter, Pageable pageable);

    /**
     * 根据状态分页查询
     *
     * @param status   状态
     * @param pageable 分页参数
     * @return 分页结果
     */
    Page<FormData> findByStatusAndDeletedFalse(FormDataStatusEnums status, Pageable pageable);

    /**
     * 根据表单定义ID查询列表
     *
     * @param formDefinitionId 表单定义ID
     * @return 表单数据列表
     */
    List<FormData> findByFormDefinitionIdAndDeletedFalse(Long formDefinitionId);
}

